esbuild-auto-path-plugin 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/lib/cjs/index.cjs +94 -0
- package/lib/cjs/index.cjs.map +7 -0
- package/lib/esm/index.mjs +70 -0
- package/lib/esm/index.mjs.map +7 -0
- package/package.json +20 -8
- package/src/index.ts +32 -37
- package/lib/index.d.ts +0 -6
- package/lib/index.js +0 -74
- package/lib/index.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/index.ts
|
|
20
|
+
var src_exports = {};
|
|
21
|
+
__export(src_exports, {
|
|
22
|
+
autoPathPlugin: () => autoPathPlugin
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(src_exports);
|
|
25
|
+
var import_promises = require("fs/promises");
|
|
26
|
+
var import_path = require("path");
|
|
27
|
+
var fallbackExtensions = [
|
|
28
|
+
".png",
|
|
29
|
+
".svg",
|
|
30
|
+
".jpg",
|
|
31
|
+
".jpeg",
|
|
32
|
+
".webp",
|
|
33
|
+
".mp4",
|
|
34
|
+
".mp3",
|
|
35
|
+
".ogg",
|
|
36
|
+
".wav",
|
|
37
|
+
".ogv",
|
|
38
|
+
".wasm",
|
|
39
|
+
".gif"
|
|
40
|
+
];
|
|
41
|
+
function makeExtensions(extensions = fallbackExtensions) {
|
|
42
|
+
return extensions.reduce((obj, ext) => {
|
|
43
|
+
obj[ext] = "file";
|
|
44
|
+
return obj;
|
|
45
|
+
}, {});
|
|
46
|
+
}
|
|
47
|
+
var autoPathPlugin = (options = {}) => ({
|
|
48
|
+
name: "auto-path-plugin",
|
|
49
|
+
setup(build) {
|
|
50
|
+
const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;
|
|
51
|
+
const extensions = [];
|
|
52
|
+
for (const ext of Object.keys(loader)) {
|
|
53
|
+
const l = loader[ext];
|
|
54
|
+
if (l === "file") {
|
|
55
|
+
extensions.push(ext);
|
|
56
|
+
delete loader[ext];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const filter = new RegExp(`(${extensions.map((ext) => `\\${ext}`).join("|")})$`);
|
|
60
|
+
build.onResolve({ filter }, (args) => {
|
|
61
|
+
if (args.namespace === "ref-stub") {
|
|
62
|
+
return {
|
|
63
|
+
path: args.path,
|
|
64
|
+
namespace: "ref-binary"
|
|
65
|
+
};
|
|
66
|
+
} else if (args.resolveDir !== "") {
|
|
67
|
+
return {
|
|
68
|
+
path: (0, import_path.isAbsolute)(args.path) ? args.path : (0, import_path.join)(args.resolveDir, args.path),
|
|
69
|
+
// for CSS we'll just use the path; no intermediate module needed
|
|
70
|
+
namespace: args.kind === "url-token" ? "ref-binary" : "ref-stub"
|
|
71
|
+
};
|
|
72
|
+
} else {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
build.onLoad({ filter: /.*/, namespace: "ref-stub" }, async (args) => ({
|
|
77
|
+
resolveDir: (0, import_path.resolve)(__dirname),
|
|
78
|
+
contents: [
|
|
79
|
+
`import path from ${JSON.stringify(args.path)}`,
|
|
80
|
+
`import { __bundleUrl__ } from ${JSON.stringify("../set-path.js")}`,
|
|
81
|
+
`export default __bundleUrl__ + path;`
|
|
82
|
+
].join("\n")
|
|
83
|
+
}));
|
|
84
|
+
build.onLoad({ filter: /.*/, namespace: "ref-binary" }, async (args) => ({
|
|
85
|
+
contents: await (0, import_promises.readFile)(args.path),
|
|
86
|
+
loader: "file"
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
91
|
+
0 && (module.exports = {
|
|
92
|
+
autoPathPlugin
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { Plugin } from 'esbuild';\nimport { readFile } from 'fs/promises';\nimport { isAbsolute, join, resolve } from 'path';\n\nconst fallbackExtensions = [\n '.png',\n '.svg',\n '.jpg',\n '.jpeg',\n '.webp',\n '.mp4',\n '.mp3',\n '.ogg',\n '.wav',\n '.ogv',\n '.wasm',\n '.gif',\n];\n\ninterface AutoPathPluginOptions {\n defaultExtensions?: Array<string>;\n}\n\nfunction makeExtensions(extensions = fallbackExtensions) {\n return extensions.reduce((obj, ext) => {\n obj[ext] = 'file';\n return obj;\n }, {} as Record<string, 'file'>);\n}\n\nexport const autoPathPlugin = (options: AutoPathPluginOptions = {}): Plugin => ({\n name: 'auto-path-plugin',\n setup(build) {\n const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;\n const extensions: Array<string> = [];\n\n for (const ext of Object.keys(loader)) {\n const l = loader[ext];\n\n if (l === 'file') {\n extensions.push(ext);\n delete loader[ext];\n }\n }\n\n const filter = new RegExp(`(${extensions.map((ext) => `\\\\${ext}`).join('|')})$`);\n\n build.onResolve({ filter }, (args) => {\n if (args.namespace === 'ref-stub') {\n return {\n path: args.path,\n namespace: 'ref-binary',\n };\n } else if (args.resolveDir !== '') {\n return {\n path: isAbsolute(args.path) ? args.path : join(args.resolveDir, args.path),\n // for CSS we'll just use the path; no intermediate module needed\n namespace: args.kind === 'url-token' ? 'ref-binary' : 'ref-stub',\n };\n } else {\n return; // Ignore unresolvable paths\n }\n });\n\n build.onLoad({ filter: /.*/, namespace: 'ref-stub' }, async (args) => ({\n resolveDir: resolve(__dirname),\n contents: [\n `import path from ${JSON.stringify(args.path)}`,\n `import { __bundleUrl__ } from ${JSON.stringify('../set-path.js')}`,\n `export default __bundleUrl__ + path;`,\n ].join('\\n'),\n }));\n\n build.onLoad({ filter: /.*/, namespace: 'ref-binary' }, async (args) => ({\n contents: (await readFile(args.path)) as unknown as Uint8Array,\n loader: 'file',\n }));\n },\n});\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAyB;AACzB,kBAA0C;AAE1C,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMA,SAAS,eAAe,aAAa,oBAAoB;AACvD,SAAO,WAAW,OAAO,CAAC,KAAK,QAAQ;AACrC,QAAI,GAAG,IAAI;AACX,WAAO;AAAA,EACT,GAAG,CAAC,CAA2B;AACjC;AAEO,IAAM,iBAAiB,CAAC,UAAiC,CAAC,OAAe;AAAA,EAC9E,MAAM;AAAA,EACN,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,eAAe,QAAQ,iBAAiB,EAAE,IAAI,MAAM;AACrE,UAAM,aAA4B,CAAC;AAEnC,eAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,YAAM,IAAI,OAAO,GAAG;AAEpB,UAAI,MAAM,QAAQ;AAChB,mBAAW,KAAK,GAAG;AACnB,eAAO,OAAO,GAAG;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAAI;AAE/E,UAAM,UAAU,EAAE,OAAO,GAAG,CAAC,SAAS;AACpC,UAAI,KAAK,cAAc,YAAY;AACjC,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,WAAW;AAAA,QACb;AAAA,MACF,WAAW,KAAK,eAAe,IAAI;AACjC,eAAO;AAAA,UACL,UAAM,wBAAW,KAAK,IAAI,IAAI,KAAK,WAAO,kBAAK,KAAK,YAAY,KAAK,IAAI;AAAA;AAAA,UAEzE,WAAW,KAAK,SAAS,cAAc,eAAe;AAAA,QACxD;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,OAAO,EAAE,QAAQ,MAAM,WAAW,WAAW,GAAG,OAAO,UAAU;AAAA,MACrE,gBAAY,qBAAQ,SAAS;AAAA,MAC7B,UAAU;AAAA,QACR,oBAAoB,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,QAC7C,iCAAiC,KAAK,UAAU,gBAAgB,CAAC;AAAA,QACjE;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb,EAAE;AAEF,UAAM,OAAO,EAAE,QAAQ,MAAM,WAAW,aAAa,GAAG,OAAO,UAAU;AAAA,MACvE,UAAW,UAAM,0BAAS,KAAK,IAAI;AAAA,MACnC,QAAQ;AAAA,IACV,EAAE;AAAA,EACJ;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { isAbsolute, join, resolve } from "path";
|
|
4
|
+
var fallbackExtensions = [
|
|
5
|
+
".png",
|
|
6
|
+
".svg",
|
|
7
|
+
".jpg",
|
|
8
|
+
".jpeg",
|
|
9
|
+
".webp",
|
|
10
|
+
".mp4",
|
|
11
|
+
".mp3",
|
|
12
|
+
".ogg",
|
|
13
|
+
".wav",
|
|
14
|
+
".ogv",
|
|
15
|
+
".wasm",
|
|
16
|
+
".gif"
|
|
17
|
+
];
|
|
18
|
+
function makeExtensions(extensions = fallbackExtensions) {
|
|
19
|
+
return extensions.reduce((obj, ext) => {
|
|
20
|
+
obj[ext] = "file";
|
|
21
|
+
return obj;
|
|
22
|
+
}, {});
|
|
23
|
+
}
|
|
24
|
+
var autoPathPlugin = (options = {}) => ({
|
|
25
|
+
name: "auto-path-plugin",
|
|
26
|
+
setup(build) {
|
|
27
|
+
const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;
|
|
28
|
+
const extensions = [];
|
|
29
|
+
for (const ext of Object.keys(loader)) {
|
|
30
|
+
const l = loader[ext];
|
|
31
|
+
if (l === "file") {
|
|
32
|
+
extensions.push(ext);
|
|
33
|
+
delete loader[ext];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const filter = new RegExp(`(${extensions.map((ext) => `\\${ext}`).join("|")})$`);
|
|
37
|
+
build.onResolve({ filter }, (args) => {
|
|
38
|
+
if (args.namespace === "ref-stub") {
|
|
39
|
+
return {
|
|
40
|
+
path: args.path,
|
|
41
|
+
namespace: "ref-binary"
|
|
42
|
+
};
|
|
43
|
+
} else if (args.resolveDir !== "") {
|
|
44
|
+
return {
|
|
45
|
+
path: isAbsolute(args.path) ? args.path : join(args.resolveDir, args.path),
|
|
46
|
+
// for CSS we'll just use the path; no intermediate module needed
|
|
47
|
+
namespace: args.kind === "url-token" ? "ref-binary" : "ref-stub"
|
|
48
|
+
};
|
|
49
|
+
} else {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
build.onLoad({ filter: /.*/, namespace: "ref-stub" }, async (args) => ({
|
|
54
|
+
resolveDir: resolve(__dirname),
|
|
55
|
+
contents: [
|
|
56
|
+
`import path from ${JSON.stringify(args.path)}`,
|
|
57
|
+
`import { __bundleUrl__ } from ${JSON.stringify("../set-path.js")}`,
|
|
58
|
+
`export default __bundleUrl__ + path;`
|
|
59
|
+
].join("\n")
|
|
60
|
+
}));
|
|
61
|
+
build.onLoad({ filter: /.*/, namespace: "ref-binary" }, async (args) => ({
|
|
62
|
+
contents: await readFile(args.path),
|
|
63
|
+
loader: "file"
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
export {
|
|
68
|
+
autoPathPlugin
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { Plugin } from 'esbuild';\nimport { readFile } from 'fs/promises';\nimport { isAbsolute, join, resolve } from 'path';\n\nconst fallbackExtensions = [\n '.png',\n '.svg',\n '.jpg',\n '.jpeg',\n '.webp',\n '.mp4',\n '.mp3',\n '.ogg',\n '.wav',\n '.ogv',\n '.wasm',\n '.gif',\n];\n\ninterface AutoPathPluginOptions {\n defaultExtensions?: Array<string>;\n}\n\nfunction makeExtensions(extensions = fallbackExtensions) {\n return extensions.reduce((obj, ext) => {\n obj[ext] = 'file';\n return obj;\n }, {} as Record<string, 'file'>);\n}\n\nexport const autoPathPlugin = (options: AutoPathPluginOptions = {}): Plugin => ({\n name: 'auto-path-plugin',\n setup(build) {\n const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;\n const extensions: Array<string> = [];\n\n for (const ext of Object.keys(loader)) {\n const l = loader[ext];\n\n if (l === 'file') {\n extensions.push(ext);\n delete loader[ext];\n }\n }\n\n const filter = new RegExp(`(${extensions.map((ext) => `\\\\${ext}`).join('|')})$`);\n\n build.onResolve({ filter }, (args) => {\n if (args.namespace === 'ref-stub') {\n return {\n path: args.path,\n namespace: 'ref-binary',\n };\n } else if (args.resolveDir !== '') {\n return {\n path: isAbsolute(args.path) ? args.path : join(args.resolveDir, args.path),\n // for CSS we'll just use the path; no intermediate module needed\n namespace: args.kind === 'url-token' ? 'ref-binary' : 'ref-stub',\n };\n } else {\n return; // Ignore unresolvable paths\n }\n });\n\n build.onLoad({ filter: /.*/, namespace: 'ref-stub' }, async (args) => ({\n resolveDir: resolve(__dirname),\n contents: [\n `import path from ${JSON.stringify(args.path)}`,\n `import { __bundleUrl__ } from ${JSON.stringify('../set-path.js')}`,\n `export default __bundleUrl__ + path;`,\n ].join('\\n'),\n }));\n\n build.onLoad({ filter: /.*/, namespace: 'ref-binary' }, async (args) => ({\n contents: (await readFile(args.path)) as unknown as Uint8Array,\n loader: 'file',\n }));\n },\n});\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,gBAAgB;AACzB,SAAS,YAAY,MAAM,eAAe;AAE1C,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMA,SAAS,eAAe,aAAa,oBAAoB;AACvD,SAAO,WAAW,OAAO,CAAC,KAAK,QAAQ;AACrC,QAAI,GAAG,IAAI;AACX,WAAO;AAAA,EACT,GAAG,CAAC,CAA2B;AACjC;AAEO,IAAM,iBAAiB,CAAC,UAAiC,CAAC,OAAe;AAAA,EAC9E,MAAM;AAAA,EACN,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,eAAe,QAAQ,iBAAiB,EAAE,IAAI,MAAM;AACrE,UAAM,aAA4B,CAAC;AAEnC,eAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,YAAM,IAAI,OAAO,GAAG;AAEpB,UAAI,MAAM,QAAQ;AAChB,mBAAW,KAAK,GAAG;AACnB,eAAO,OAAO,GAAG;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAAI;AAE/E,UAAM,UAAU,EAAE,OAAO,GAAG,CAAC,SAAS;AACpC,UAAI,KAAK,cAAc,YAAY;AACjC,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,WAAW;AAAA,QACb;AAAA,MACF,WAAW,KAAK,eAAe,IAAI;AACjC,eAAO;AAAA,UACL,MAAM,WAAW,KAAK,IAAI,IAAI,KAAK,OAAO,KAAK,KAAK,YAAY,KAAK,IAAI;AAAA;AAAA,UAEzE,WAAW,KAAK,SAAS,cAAc,eAAe;AAAA,QACxD;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,OAAO,EAAE,QAAQ,MAAM,WAAW,WAAW,GAAG,OAAO,UAAU;AAAA,MACrE,YAAY,QAAQ,SAAS;AAAA,MAC7B,UAAU;AAAA,QACR,oBAAoB,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,QAC7C,iCAAiC,KAAK,UAAU,gBAAgB,CAAC;AAAA,QACjE;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb,EAAE;AAEF,UAAM,OAAO,EAAE,QAAQ,MAAM,WAAW,aAAa,GAAG,OAAO,UAAU;AAAA,MACvE,UAAW,MAAM,SAAS,KAAK,IAAI;AAAA,MACnC,QAAQ;AAAA,IACV,EAAE;AAAA,EACJ;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "esbuild-auto-path-plugin",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Plugin for transforming bundles to use an auto path for assets.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plugin",
|
|
@@ -11,10 +11,20 @@
|
|
|
11
11
|
"author": "smapiot",
|
|
12
12
|
"homepage": "https://piral.io",
|
|
13
13
|
"license": "MIT",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"type": "module",
|
|
15
|
+
"main": "lib/cjs/index.cjs",
|
|
16
|
+
"module": "lib/esm/index.mjs",
|
|
17
|
+
"typings": "src/index.ts",
|
|
16
18
|
"engines": {
|
|
17
|
-
"node": ">=
|
|
19
|
+
"node": ">=16.0"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": "./lib/esm/index.mjs",
|
|
24
|
+
"require": "./lib/cjs/index.cjs",
|
|
25
|
+
"types": "./src/index.ts"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
18
28
|
},
|
|
19
29
|
"files": [
|
|
20
30
|
"lib",
|
|
@@ -33,11 +43,13 @@
|
|
|
33
43
|
"url": "https://github.com/smapiot/piral-cli-esbuild/issues"
|
|
34
44
|
},
|
|
35
45
|
"scripts": {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
46
|
+
"test": "tsc --noEmit",
|
|
47
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
48
|
+
"build:cjs": "esbuild 'src/index.ts' --sourcemap --bundle --packages=external --platform=node --format=cjs --out-extension:.js=.cjs --outdir=lib/cjs",
|
|
49
|
+
"build:esm": "esbuild 'src/index.ts' --sourcemap --bundle --packages=external --platform=node --format=esm --out-extension:.js=.mjs --outdir=lib/esm --define:__filename=import.meta.url"
|
|
38
50
|
},
|
|
39
51
|
"devDependencies": {
|
|
40
|
-
"esbuild": "^0.
|
|
52
|
+
"esbuild": "^0.24.0"
|
|
41
53
|
},
|
|
42
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "4f8ea90f5c572c1fa901da3947a1307dc0958bf6"
|
|
43
55
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { Plugin } from
|
|
2
|
-
import { readFile } from
|
|
3
|
-
import { isAbsolute, join, resolve } from
|
|
1
|
+
import { Plugin } from 'esbuild';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'path';
|
|
4
4
|
|
|
5
5
|
const fallbackExtensions = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
'.png',
|
|
7
|
+
'.svg',
|
|
8
|
+
'.jpg',
|
|
9
|
+
'.jpeg',
|
|
10
|
+
'.webp',
|
|
11
|
+
'.mp4',
|
|
12
|
+
'.mp3',
|
|
13
|
+
'.ogg',
|
|
14
|
+
'.wav',
|
|
15
|
+
'.ogv',
|
|
16
|
+
'.wasm',
|
|
17
|
+
'.gif',
|
|
18
18
|
];
|
|
19
19
|
|
|
20
20
|
interface AutoPathPluginOptions {
|
|
@@ -23,62 +23,57 @@ interface AutoPathPluginOptions {
|
|
|
23
23
|
|
|
24
24
|
function makeExtensions(extensions = fallbackExtensions) {
|
|
25
25
|
return extensions.reduce((obj, ext) => {
|
|
26
|
-
obj[ext] =
|
|
26
|
+
obj[ext] = 'file';
|
|
27
27
|
return obj;
|
|
28
|
-
}, {} as Record<string,
|
|
28
|
+
}, {} as Record<string, 'file'>);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export const autoPathPlugin = (options: AutoPathPluginOptions = {}): Plugin => ({
|
|
32
|
-
name:
|
|
32
|
+
name: 'auto-path-plugin',
|
|
33
33
|
setup(build) {
|
|
34
|
-
const { loader = makeExtensions(options.defaultExtensions) } =
|
|
35
|
-
build.initialOptions;
|
|
34
|
+
const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;
|
|
36
35
|
const extensions: Array<string> = [];
|
|
37
36
|
|
|
38
37
|
for (const ext of Object.keys(loader)) {
|
|
39
38
|
const l = loader[ext];
|
|
40
39
|
|
|
41
|
-
if (l ===
|
|
40
|
+
if (l === 'file') {
|
|
42
41
|
extensions.push(ext);
|
|
43
42
|
delete loader[ext];
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
const filter = new RegExp(
|
|
48
|
-
`(${extensions.map((ext) => `\\${ext}`).join("|")})$`
|
|
49
|
-
);
|
|
46
|
+
const filter = new RegExp(`(${extensions.map((ext) => `\\${ext}`).join('|')})$`);
|
|
50
47
|
|
|
51
48
|
build.onResolve({ filter }, (args) => {
|
|
52
|
-
if (args.namespace ===
|
|
49
|
+
if (args.namespace === 'ref-stub') {
|
|
53
50
|
return {
|
|
54
51
|
path: args.path,
|
|
55
|
-
namespace:
|
|
52
|
+
namespace: 'ref-binary',
|
|
56
53
|
};
|
|
57
|
-
} else if (args.resolveDir !==
|
|
54
|
+
} else if (args.resolveDir !== '') {
|
|
58
55
|
return {
|
|
59
|
-
path: isAbsolute(args.path)
|
|
60
|
-
? args.path
|
|
61
|
-
: join(args.resolveDir, args.path),
|
|
56
|
+
path: isAbsolute(args.path) ? args.path : join(args.resolveDir, args.path),
|
|
62
57
|
// for CSS we'll just use the path; no intermediate module needed
|
|
63
|
-
namespace: args.kind ===
|
|
58
|
+
namespace: args.kind === 'url-token' ? 'ref-binary' : 'ref-stub',
|
|
64
59
|
};
|
|
65
60
|
} else {
|
|
66
61
|
return; // Ignore unresolvable paths
|
|
67
62
|
}
|
|
68
63
|
});
|
|
69
64
|
|
|
70
|
-
build.onLoad({ filter: /.*/, namespace:
|
|
65
|
+
build.onLoad({ filter: /.*/, namespace: 'ref-stub' }, async (args) => ({
|
|
71
66
|
resolveDir: resolve(__dirname),
|
|
72
67
|
contents: [
|
|
73
68
|
`import path from ${JSON.stringify(args.path)}`,
|
|
74
|
-
`import { __bundleUrl__ } from ${JSON.stringify(
|
|
69
|
+
`import { __bundleUrl__ } from ${JSON.stringify('../set-path.js')}`,
|
|
75
70
|
`export default __bundleUrl__ + path;`,
|
|
76
|
-
].join(
|
|
71
|
+
].join('\n'),
|
|
77
72
|
}));
|
|
78
73
|
|
|
79
|
-
build.onLoad({ filter: /.*/, namespace:
|
|
80
|
-
contents: await readFile(args.path),
|
|
81
|
-
loader:
|
|
74
|
+
build.onLoad({ filter: /.*/, namespace: 'ref-binary' }, async (args) => ({
|
|
75
|
+
contents: (await readFile(args.path)) as unknown as Uint8Array,
|
|
76
|
+
loader: 'file',
|
|
82
77
|
}));
|
|
83
78
|
},
|
|
84
79
|
});
|
package/lib/index.d.ts
DELETED
package/lib/index.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.autoPathPlugin = void 0;
|
|
4
|
-
const promises_1 = require("fs/promises");
|
|
5
|
-
const path_1 = require("path");
|
|
6
|
-
const fallbackExtensions = [
|
|
7
|
-
".png",
|
|
8
|
-
".svg",
|
|
9
|
-
".jpg",
|
|
10
|
-
".jpeg",
|
|
11
|
-
".webp",
|
|
12
|
-
".mp4",
|
|
13
|
-
".mp3",
|
|
14
|
-
".ogg",
|
|
15
|
-
".wav",
|
|
16
|
-
".ogv",
|
|
17
|
-
".wasm",
|
|
18
|
-
".gif",
|
|
19
|
-
];
|
|
20
|
-
function makeExtensions(extensions = fallbackExtensions) {
|
|
21
|
-
return extensions.reduce((obj, ext) => {
|
|
22
|
-
obj[ext] = "file";
|
|
23
|
-
return obj;
|
|
24
|
-
}, {});
|
|
25
|
-
}
|
|
26
|
-
const autoPathPlugin = (options = {}) => ({
|
|
27
|
-
name: "auto-path-plugin",
|
|
28
|
-
setup(build) {
|
|
29
|
-
const { loader = makeExtensions(options.defaultExtensions) } = build.initialOptions;
|
|
30
|
-
const extensions = [];
|
|
31
|
-
for (const ext of Object.keys(loader)) {
|
|
32
|
-
const l = loader[ext];
|
|
33
|
-
if (l === "file") {
|
|
34
|
-
extensions.push(ext);
|
|
35
|
-
delete loader[ext];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const filter = new RegExp(`(${extensions.map((ext) => `\\${ext}`).join("|")})$`);
|
|
39
|
-
build.onResolve({ filter }, (args) => {
|
|
40
|
-
if (args.namespace === "ref-stub") {
|
|
41
|
-
return {
|
|
42
|
-
path: args.path,
|
|
43
|
-
namespace: "ref-binary",
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
else if (args.resolveDir !== "") {
|
|
47
|
-
return {
|
|
48
|
-
path: (0, path_1.isAbsolute)(args.path)
|
|
49
|
-
? args.path
|
|
50
|
-
: (0, path_1.join)(args.resolveDir, args.path),
|
|
51
|
-
// for CSS we'll just use the path; no intermediate module needed
|
|
52
|
-
namespace: args.kind === "url-token" ? "ref-binary" : "ref-stub",
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
return; // Ignore unresolvable paths
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
build.onLoad({ filter: /.*/, namespace: "ref-stub" }, async (args) => ({
|
|
60
|
-
resolveDir: (0, path_1.resolve)(__dirname),
|
|
61
|
-
contents: [
|
|
62
|
-
`import path from ${JSON.stringify(args.path)}`,
|
|
63
|
-
`import { __bundleUrl__ } from ${JSON.stringify("../set-path.js")}`,
|
|
64
|
-
`export default __bundleUrl__ + path;`,
|
|
65
|
-
].join("\n"),
|
|
66
|
-
}));
|
|
67
|
-
build.onLoad({ filter: /.*/, namespace: "ref-binary" }, async (args) => ({
|
|
68
|
-
contents: await (0, promises_1.readFile)(args.path),
|
|
69
|
-
loader: "file",
|
|
70
|
-
}));
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
exports.autoPathPlugin = autoPathPlugin;
|
|
74
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|