UNPKG

4.4 kBJavaScriptView Raw
1var __create = Object.create;
2var __defProp = Object.defineProperty;
3var __getProtoOf = Object.getPrototypeOf;
4var __hasOwnProp = Object.prototype.hasOwnProperty;
5var __getOwnPropNames = Object.getOwnPropertyNames;
6var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8var __exportStar = (target, module3, desc) => {
9 __markAsModule(target);
10 if (module3 && typeof module3 === "object" || typeof module3 === "function") {
11 for (let key of __getOwnPropNames(module3))
12 if (!__hasOwnProp.call(target, key) && key !== "default")
13 __defProp(target, key, {get: () => module3[key], enumerable: !(desc = __getOwnPropDesc(module3, key)) || desc.enumerable});
14 }
15 return target;
16};
17var __toModule = (module3) => {
18 if (module3 && module3.__esModule)
19 return module3;
20 return __exportStar(__defProp(module3 != null ? __create(__getProtoOf(module3)) : {}, "default", {value: module3, enumerable: true}), module3);
21};
22
23// src/register.ts
24var source_map_support = __toModule(require("source-map-support"));
25
26// src/hook.ts
27var module2 = __toModule(require("module"));
28
29// src/esbuild.ts
30var esbuild = __toModule(require("esbuild"));
31var fs = __toModule(require("fs"));
32var path = __toModule(require("path"));
33var pkgPath = path.default.resolve(".", "package.json");
34var externals = [];
35var _a, _b;
36if (fs.default.existsSync(pkgPath)) {
37 const pkg = JSON.parse(fs.default.readFileSync(pkgPath, {encoding: "utf-8"}));
38 externals = [
39 ...Object.keys((_a = pkg.dependencies) != null ? _a : {}),
40 ...Object.keys((_b = pkg.devDependencies) != null ? _b : {})
41 ];
42}
43var loaders = {
44 ".mjs": "js",
45 ".cjs": "js",
46 ".jsx": "jsx",
47 ".ts": "ts",
48 ".tsx": "tsx",
49 ".json": "json"
50};
51function supports(filename) {
52 if (filename.includes("node_modules"))
53 return false;
54 return path.default.extname(filename) in loaders;
55}
56function _transform(code, filename) {
57 const ret = esbuild.transformSync(code, {
58 loader: loaders[path.default.extname(filename)],
59 format: "cjs",
60 logLevel: "error",
61 target: [`node${process.version.slice(1)}`],
62 minify: false,
63 sourcemap: "inline",
64 sourcefile: filename
65 });
66 return ret.code;
67}
68function _bundle(code, filename) {
69 const ext = path.default.extname(filename);
70 return esbuild.buildSync({
71 loader: loaders,
72 bundle: true,
73 platform: "node",
74 logLevel: "error",
75 stdin: {
76 sourcefile: filename,
77 contents: code,
78 resolveDir: path.default.dirname(filename),
79 loader: loaders[ext]
80 },
81 external: externals,
82 format: "cjs",
83 target: [`node${process.version.slice(1)}`],
84 minify: false,
85 sourcemap: "inline",
86 write: false
87 }).outputFiles.map((f) => f.text).join("\n");
88}
89function _transpile(code, filename, options) {
90 return options.bundle ? _bundle(code, filename) : _transform(code, filename);
91}
92function transpile(code, filename, options = {cache: false, bundle: true}) {
93 if (options.cache) {
94 const compiledPath = path.default.resolve(".", ".build", path.default.relative(path.default.resolve("."), filename));
95 if (!fs.default.existsSync(compiledPath) || fs.default.statSync(compiledPath).mtime < fs.default.statSync(filename).mtime) {
96 code = _transpile(code, filename, options);
97 const compiledDir = path.default.dirname(compiledPath);
98 if (!fs.default.existsSync(compiledDir))
99 fs.default.mkdirSync(compiledDir, {recursive: true});
100 fs.default.writeFileSync(compiledPath, code, {encoding: "utf-8"});
101 return code;
102 }
103 return fs.default.readFileSync(compiledPath, {encoding: "utf-8"});
104 } else {
105 return _transpile(code, filename, options);
106 }
107}
108
109// src/hook.ts
110var Module = module2.default;
111function install() {
112 const defaultLoaderJS = Module._extensions[".js"];
113 for (const ext in loaders) {
114 const defaultLoader = Module._extensions[ext] || defaultLoaderJS;
115 Module._extensions[ext] = (mod, filename) => {
116 if (supports(filename)) {
117 const defaultCompile = mod._compile;
118 mod._compile = (code) => {
119 mod._compile = defaultCompile;
120 return mod._compile(transpile(code, filename, {bundle: true, cache: false}), filename);
121 };
122 }
123 defaultLoader(mod, filename);
124 };
125 }
126}
127
128// src/register.ts
129source_map_support.install({hookRequire: true});
130install();