@normed/bundle 2.0.2 → 2.0.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Builder } from './types';
2
+ export declare const defaultBuilders: Builder[];
3
+ export declare function getBuilder(builders: Builder[], ext: string): Builder | null;
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.getBuilder = exports.defaultBuilders = void 0;
26
+ const esbuild = __importStar(require("esbuild"));
27
+ const pug_1 = __importDefault(require("pug"));
28
+ // @ts-expect-error : untyped
29
+ const less_1 = __importDefault(require("less"));
30
+ const utils_1 = require("./utils");
31
+ const path_1 = __importDefault(require("path"));
32
+ const fs_1 = __importDefault(require("fs"));
33
+ const esbuild_plugin_pnp_1 = require("@yarnpkg/esbuild-plugin-pnp");
34
+ const es_build_plugins_1 = __importDefault(require("./es-build.plugins"));
35
+ const ts = __importStar(require("typescript"));
36
+ const log_1 = __importDefault(require("./log"));
37
+ const chalk_1 = __importDefault(require("chalk"));
38
+ chalk_1.default.level = 3;
39
+ const less = less_1.default;
40
+ const tsconfig = {
41
+ "rootDir": "src",
42
+ "outDir": "dist",
43
+ "declaration": true,
44
+ "target": ts.ScriptTarget.ES2020,
45
+ "module": ts.ModuleKind.CommonJS,
46
+ "lib": [
47
+ "lib.es2020.d.ts"
48
+ ],
49
+ "noEmitOnError": true,
50
+ "resolveJsonModule": true,
51
+ "noUncheckedIndexedAccess": true,
52
+ "noPropertyAccessFromIndexSignature": true,
53
+ "noImplicitOverride": true,
54
+ "exactOptionalPropertyTypes": true,
55
+ "allowUnreachableCode": false,
56
+ "allowUnusedLabels": false,
57
+ "moduleResolution": ts.ModuleResolutionKind.NodeJs,
58
+ "strict": true,
59
+ "preserveConstEnums": true,
60
+ "sourceMap": true,
61
+ "allowSyntheticDefaultImports": true,
62
+ "esModuleInterop": true,
63
+ "noUnusedLocals": true,
64
+ "noUnusedParameters": true,
65
+ "noImplicitReturns": true
66
+ };
67
+ function compile(fileNames, options) {
68
+ let program = ts.createProgram(fileNames, options);
69
+ let emitResult = program.emit();
70
+ let allDiagnostics = ts
71
+ .getPreEmitDiagnostics(program)
72
+ .concat(emitResult.diagnostics);
73
+ allDiagnostics.forEach(diagnostic => {
74
+ if (diagnostic.file) {
75
+ let { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
76
+ let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
77
+ log_1.default.warn(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
78
+ }
79
+ else {
80
+ log_1.default.warn(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
81
+ }
82
+ });
83
+ let exitCode = emitResult.emitSkipped ? 1 : 0;
84
+ console.log(`Process exiting with code '${exitCode}'.`);
85
+ process.exit(exitCode);
86
+ }
87
+ const pugBuilder = {
88
+ name: 'pug',
89
+ color: chalk_1.default.hex('#A86454'),
90
+ inExt: ['pug'],
91
+ outExt: 'html',
92
+ async build(entrypoints) {
93
+ await Promise.all(entrypoints.map(async ({ infile, outfile }) => {
94
+ const data = pug_1.default.compileFile(infile)();
95
+ await (0, utils_1.write)(outfile, data);
96
+ }));
97
+ }
98
+ };
99
+ const copyBuilder = {
100
+ name: 'copy',
101
+ color: chalk_1.default.hex('#CDCDCD'),
102
+ inExt: [/.*/],
103
+ outExt: null,
104
+ async build(entrypoints) {
105
+ await Promise.all(entrypoints.map(async ({ infile, outfile }) => {
106
+ (0, utils_1.copy)(infile, outfile);
107
+ }));
108
+ }
109
+ };
110
+ const typescriptBuilder = {
111
+ name: 'typescript',
112
+ color: chalk_1.default.hex('#3178C6'),
113
+ inExt: [/(t|j)sx?/],
114
+ outExt: 'js',
115
+ async build(entrypoints, extra) {
116
+ const builds = (0, utils_1.groupBy)(entrypoints, ['outbase', 'inbase', 'platform']);
117
+ await Promise.all(builds.map(async (entrypoints) => {
118
+ if (!entrypoints[0]) {
119
+ return Promise.reject(new Error(`No entrypoints provided`));
120
+ }
121
+ const { outbase, platform, inbase } = entrypoints[0];
122
+ log_1.default.debug(`inbase: ${inbase}`);
123
+ log_1.default.debug(`outbase: ${outbase}`);
124
+ if (extra.typescript.declarations) {
125
+ const config = Object.assign({}, tsconfig);
126
+ config.rootDir = inbase;
127
+ config.outDir = outbase;
128
+ compile(entrypoints.map(entrypoint => entrypoint.infile), config);
129
+ }
130
+ return esbuild.build({
131
+ plugins: [(0, esbuild_plugin_pnp_1.pnpPlugin)((0, es_build_plugins_1.default)({ inbase, outbase, platform }))],
132
+ entryPoints: entrypoints.map(({ infile }) => infile),
133
+ bundle: true,
134
+ outdir: outbase,
135
+ platform: platform === 'web' ? 'browser' : 'node',
136
+ outbase: inbase,
137
+ loader: {
138
+ ".pug": 'text'
139
+ },
140
+ external: extra.typescript.external
141
+ });
142
+ }));
143
+ await Promise.all(entrypoints.map(async ({ outfile, infile }) => {
144
+ const platformPart = (0, utils_1.getPlatformPart)(infile);
145
+ const extension = (0, utils_1.getExtension)(outfile);
146
+ const tmpOutFile = outfile.slice(0, -extension.length) + (platformPart ? platformPart + '.' : '') + extension;
147
+ return fs_1.default.promises.rename(tmpOutFile, outfile);
148
+ }));
149
+ }
150
+ };
151
+ const lessBuilder = {
152
+ name: 'less',
153
+ color: chalk_1.default.hex('#1D365D'),
154
+ inExt: ['less'],
155
+ outExt: 'css',
156
+ async build(entrypoints) {
157
+ await Promise.all(entrypoints.map(async ({ infile, outfile }) => {
158
+ const input = await fs_1.default.promises.readFile(infile, 'utf-8');
159
+ const data = await less.render(input, { paths: [path_1.default.dirname(infile)] });
160
+ await (0, utils_1.write)(outfile, data.css);
161
+ }));
162
+ }
163
+ };
164
+ const builders = {
165
+ pug: pugBuilder,
166
+ typescript: typescriptBuilder,
167
+ copy: copyBuilder,
168
+ less: lessBuilder,
169
+ };
170
+ exports.defaultBuilders = [
171
+ builders.pug,
172
+ builders.less,
173
+ builders.typescript,
174
+ builders.copy
175
+ ];
176
+ function getBuilder(builders, ext) {
177
+ for (const builder of builders) {
178
+ for (const inExt of builder.inExt) {
179
+ if (inExt instanceof RegExp && inExt.test(ext) || inExt === ext) {
180
+ return builder;
181
+ }
182
+ }
183
+ }
184
+ return null;
185
+ }
186
+ exports.getBuilder = getBuilder;
187
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import '@normed/json-types';
2
+ import { APIOptions_Bundle } from './types';
3
+ export default function bundle(options?: APIOptions_Bundle): Promise<undefined>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("@normed/json-types");
7
+ const utils_1 = require("./utils");
8
+ const errors_1 = require("./errors");
9
+ const builders_1 = require("./builders");
10
+ const log_1 = __importDefault(require("./log"));
11
+ const dirs_1 = require("./dirs");
12
+ const entrypoints_1 = __importDefault(require("./entrypoints"));
13
+ async function bundle(options = {}) {
14
+ const buildConfig = {
15
+ builders: (options.builders ?? []).concat(builders_1.defaultBuilders),
16
+ platform: options.platform ?? 'server',
17
+ dir: {
18
+ in: (0, dirs_1.getInDir)(options),
19
+ out: (0, dirs_1.getOutDir)(options),
20
+ root: (0, dirs_1.getRootDir)(options)
21
+ },
22
+ extra: {
23
+ typescript: {
24
+ external: [],
25
+ declarations: options.tscDeclarations ?? false
26
+ }
27
+ }
28
+ };
29
+ const packageJson = await (0, utils_1.readPackageJson)(buildConfig);
30
+ if (packageJson.bundle) {
31
+ const bundle = packageJson.bundle;
32
+ if (bundle.typescript) {
33
+ const typescript = bundle.typescript;
34
+ if (typescript.external) {
35
+ buildConfig.extra.typescript.external.push(...typescript.external);
36
+ }
37
+ if (typescript.declarations) {
38
+ // Prioritise CLI
39
+ if (options.tscDeclarations !== undefined) {
40
+ buildConfig.extra.typescript.declarations = true;
41
+ }
42
+ else {
43
+ buildConfig.extra.typescript.declarations = typescript.declarations;
44
+ }
45
+ }
46
+ }
47
+ }
48
+ const [entryPoints, missingBuilders] = (0, utils_1.divide)(await (0, entrypoints_1.default)(buildConfig), (v) => {
49
+ return !(v instanceof errors_1.NoMatchingBuilder);
50
+ });
51
+ log_1.default.warn(missingBuilders.map(missing => missing.message).join('\n'));
52
+ log_1.default.info(entryPoints.length + ' entrypoints');
53
+ // Group entrypoints into batches that share the same builder
54
+ const grouped = entryPoints.reduce((acc, entryPoint) => {
55
+ const index = buildConfig.builders.indexOf(entryPoint.builder);
56
+ if (!acc[index]) {
57
+ acc[index] = [];
58
+ }
59
+ acc[index]?.push(entryPoint);
60
+ return acc;
61
+ }, []);
62
+ // Pretty print the build info
63
+ for (const index in grouped) {
64
+ const group = grouped[index];
65
+ const builder = buildConfig.builders[index];
66
+ if (!builder) {
67
+ continue;
68
+ }
69
+ log_1.default.info(builder.color(`${builder.name}:\n\t${group?.map(({ inbase, outbase, infile, outfile }) => `${infile.slice(inbase.length)} => ${outfile.slice(outbase.length)}`).join('\n\t')}`));
70
+ }
71
+ // Call each builder with all of the appropriate entrypoints
72
+ const results = await Promise.all(grouped.map((entrypoints, index) => (async () => {
73
+ const start = Date.now();
74
+ await buildConfig.builders[index]?.build(entrypoints, buildConfig.extra);
75
+ const duration = Math.floor((Date.now() - start) / 10) / 100;
76
+ const builder = buildConfig.builders[index];
77
+ if (!builder) {
78
+ log_1.default.info(`Unknown builder: ${duration} seconds`);
79
+ }
80
+ else {
81
+ log_1.default.info(builder.color(`${builder.name}: ${duration} seconds`));
82
+ }
83
+ })().catch(e => e)));
84
+ const errors = results.filter((e) => e instanceof Error).concat(missingBuilders);
85
+ if (errors.length)
86
+ return Promise.reject(errors);
87
+ return;
88
+ }
89
+ exports.default = bundle;
90
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { APIOptions_Clean } from './types';
2
+ export default function clean(options?: APIOptions_Clean): Promise<void>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_extra_1 = __importDefault(require("fs-extra"));
7
+ const dirs_1 = require("./dirs");
8
+ async function clean(options = {}) {
9
+ const dir = (0, dirs_1.getOutDir)(options);
10
+ if (fs_extra_1.default.existsSync(dir)) {
11
+ fs_extra_1.default.promises.rm(dir, { recursive: true });
12
+ }
13
+ }
14
+ exports.default = clean;
15
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../src/clean.ts"],"names":[],"mappings":";;;;;AAAA,wDAA0B;AAE1B,iCAAmC;AAEpB,KAAK,UAAU,KAAK,CAAC,UAA4B,EAAE;IAChE,MAAM,GAAG,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAG,kBAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACrB,kBAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1C;AACH,CAAC;AALD,wBAKC"}
@@ -0,0 +1,9 @@
1
+ export declare function getOutDir(options: {
2
+ outdir?: string;
3
+ }): string;
4
+ export declare function getInDir(options: {
5
+ indir?: string;
6
+ }): string;
7
+ export declare function getRootDir({ indir }: {
8
+ indir?: string;
9
+ }): string;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getRootDir = exports.getInDir = exports.getOutDir = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ function resolveDir(fallback, dir) {
9
+ if (!dir) {
10
+ return path_1.default.join(process.cwd(), fallback);
11
+ }
12
+ if (path_1.default.isAbsolute(dir)) {
13
+ return dir;
14
+ }
15
+ return path_1.default.join(process.cwd(), dir);
16
+ }
17
+ function getOutDir(options) {
18
+ return resolveDir('bundles', options.outdir);
19
+ }
20
+ exports.getOutDir = getOutDir;
21
+ function getInDir(options) {
22
+ return resolveDir('src', options.indir);
23
+ }
24
+ exports.getInDir = getInDir;
25
+ function getRootDir({ indir }) {
26
+ const cwd = process.cwd();
27
+ if (!indir) {
28
+ return cwd;
29
+ }
30
+ const resolved = resolveDir('', indir);
31
+ if (resolved.startsWith(cwd)) {
32
+ return cwd;
33
+ }
34
+ return indir;
35
+ }
36
+ exports.getRootDir = getRootDir;
37
+ //# sourceMappingURL=dirs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirs.js","sourceRoot":"","sources":["../src/dirs.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,SAAS,UAAU,CAAC,QAAgB,EAAE,GAAY;IAChD,IAAG,CAAC,GAAG,EAAE;QACP,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;KAC3C;IAED,IAAG,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,SAAgB,SAAS,CAAC,OAA2B;IACnD,OAAO,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAFD,8BAEC;AAED,SAAgB,QAAQ,CAAC,OAA0B;IACjD,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAC,EAAE,KAAK,EAAsB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAG,CAAC,KAAK,EAAE;QACT,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvC,IAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC3B,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,gCAYC"}
@@ -0,0 +1,4 @@
1
+ import '@normed/json-types';
2
+ import { Entrypoint, BuildConfig } from './types';
3
+ import { NoMatchingBuilder } from './errors';
4
+ export default function getEntrypoints(buildConfig: BuildConfig): Promise<(Entrypoint | NoMatchingBuilder)[]>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const filesystem_traverse_1 = __importDefault(require("filesystem-traverse"));
8
+ require("@normed/json-types");
9
+ const utils_1 = require("./utils");
10
+ const builders_1 = require("./builders");
11
+ const errors_1 = require("./errors");
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const log_1 = __importDefault(require("./log"));
14
+ async function pathToEntrypoint(buildConfig, file) {
15
+ const infile = path_1.default.join(buildConfig.dir.in, file);
16
+ const inExt = (0, utils_1.getExtension)(file);
17
+ const infile_bare = infile.slice(0, -(inExt.length ? inExt.length + 1 : 0));
18
+ const platform = (0, utils_1.getPlatform)(file, buildConfig.platform);
19
+ const stats = await fs_1.default.promises.stat(infile);
20
+ if (stats.isDirectory()) {
21
+ // Return instead all files under this directory
22
+ const directory = infile;
23
+ const outDirectory = infile_bare;
24
+ (await Promise.all(await (0, filesystem_traverse_1.default)({
25
+ directory,
26
+ process_file: file => pathToEntrypoint(buildConfig, path_1.default.join(directory, file))
27
+ }))).flat().map(entrypoint => {
28
+ if (entrypoint instanceof errors_1.NoMatchingBuilder) {
29
+ return entrypoint;
30
+ }
31
+ return {
32
+ ...entrypoint,
33
+ outfile: entrypoint.outfile.replace(directory, outDirectory)
34
+ };
35
+ });
36
+ }
37
+ else if (!stats.isFile()) {
38
+ log_1.default.warn(`WARN: Determined ${infile} is not a file, but continuing on as though it is`);
39
+ }
40
+ const builder = (0, builders_1.getBuilder)(buildConfig.builders, inExt);
41
+ if (!builder) {
42
+ return new errors_1.NoMatchingBuilder(infile, inExt);
43
+ }
44
+ const outfile = path_1.default.join(buildConfig.dir.out, file.slice(0, -inExt.length) + (builder.outExt ?? inExt));
45
+ return [{
46
+ infile,
47
+ outfile,
48
+ builder,
49
+ inbase: buildConfig.dir.in,
50
+ platform,
51
+ outbase: buildConfig.dir.out
52
+ }];
53
+ }
54
+ /**
55
+ * Extract Entrypoints from package.json
56
+ */
57
+ async function packageJsonEntrypoints(buildConfig) {
58
+ const packageJson = await (0, utils_1.readPackageJson)(buildConfig);
59
+ if (packageJson.bundle?.entrypoints && packageJson.bundle.entrypoints.length) {
60
+ log_1.default.verbose(`Reading ${packageJson.bundle.entrypoints.length} entrypoints from package.json`);
61
+ return (await Promise.all(packageJson.bundle.entrypoints.map(filepath => pathToEntrypoint(buildConfig, filepath)))).flat();
62
+ }
63
+ else {
64
+ log_1.default.verbose(`package.json contains no entrypoints`);
65
+ }
66
+ return [];
67
+ }
68
+ async function discoveredEntrypoints(buildConfig) {
69
+ return (0, filesystem_traverse_1.default)({
70
+ directory: buildConfig.dir.in,
71
+ include_file: /[^/]+\.(static|web|node|browser|server)\.[^\.]+$/,
72
+ process_file(filepath) {
73
+ const inExt = (0, utils_1.getExtension)(filepath);
74
+ const platform = (0, utils_1.getPlatform)(filepath, buildConfig.platform);
75
+ const builder = (0, builders_1.getBuilder)(buildConfig.builders, inExt);
76
+ if (builder === null) {
77
+ return new errors_1.NoMatchingBuilder(filepath, inExt);
78
+ }
79
+ const infile = path_1.default.join(buildConfig.dir.in, filepath);
80
+ const outfile = path_1.default.join(buildConfig.dir.out, filepath.replace(/(static|web|node|browser|server)\.[^.\/]+$/, builder.outExt ?? inExt));
81
+ return {
82
+ infile,
83
+ outfile,
84
+ inbase: buildConfig.dir.in,
85
+ outbase: buildConfig.dir.out,
86
+ platform,
87
+ builder
88
+ };
89
+ },
90
+ });
91
+ }
92
+ async function getEntrypoints(buildConfig) {
93
+ return Promise.all([
94
+ packageJsonEntrypoints(buildConfig),
95
+ discoveredEntrypoints(buildConfig)
96
+ ]).then((a) => a.reduce((acc, v) => acc.concat(v)));
97
+ }
98
+ exports.default = getEntrypoints;
99
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,8EAA2C;AAC3C,8BAA4B;AAC5B,mCAAoE;AAEpE,yCAAuC;AACvC,qCAA6C;AAC7C,4CAAoB;AACpB,gDAAwB;AAExB,KAAK,UAAU,gBAAgB,CAAC,WAAwB,EAAE,IAAY;IACpE,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAExD,MAAM,KAAK,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAG,KAAK,CAAC,WAAW,EAAE,EAAE;QACtB,gDAAgD;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC;QACzB,MAAM,YAAY,GAAG,WAAW,CAAC;QAChC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,6BAAQ,EAAC;YACjC,SAAS;YACT,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAChF,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAG,UAAU,YAAY,0BAAiB,EAAE;gBAC1C,OAAO,UAAU,CAAC;aACnB;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC;aAC/C,CAAA;QACjB,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;QACzB,aAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,mDAAmD,CAAC,CAAC;KACzF;IAED,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxD,IAAG,CAAC,OAAO,EAAE;QACX,OAAO,IAAI,0BAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7C;IACD,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAA;IACxG,OAAO,CAAC;YACN,MAAM;YACN,OAAO;YACP,OAAO;YACP,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;YAC1B,QAAQ;YACR,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG;SAC7B,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CAAC,WAAwB;IAC5D,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,WAAW,CAAC,CAAC;IACvD,IAAG,WAAW,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;QAC3E,aAAG,CAAC,OAAO,CAAC,WAAW,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,gCAAgC,CAAC,CAAA;QAC7F,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAC5H;SAAM;QACL,aAAG,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAA;KACpD;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAAwB;IAC3D,OAAO,IAAA,6BAAQ,EAAC;QACd,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;QAC7B,YAAY,EAAE,kDAAkD;QAChE,YAAY,CAAC,QAAgB;YAC3B,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxD,IAAG,OAAO,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,0BAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aAC/C;YACD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,4CAA4C,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC;YACxI,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG;gBAC5B,QAAQ;gBACR,OAAO;aACR,CAAA;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAEc,KAAK,UAAU,cAAc,CAAC,WAAwB;IACnE,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,sBAAsB,CAAC,WAAW,CAAC;QACnC,qBAAqB,CAAC,WAAW,CAAC;KACnC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AALD,iCAKC"}
@@ -0,0 +1,3 @@
1
+ export declare class NoMatchingBuilder extends Error {
2
+ constructor(infile: string, inExt: string);
3
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoMatchingBuilder = void 0;
4
+ class NoMatchingBuilder extends Error {
5
+ constructor(infile, inExt) {
6
+ super(`No matching builder for extension "${inExt}" (${infile})`);
7
+ }
8
+ }
9
+ exports.NoMatchingBuilder = NoMatchingBuilder;
10
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,MAAc,EAAE,KAAa;QACvC,KAAK,CAAC,sCAAsC,KAAK,MAAM,MAAM,GAAG,CAAC,CAAC;IACpE,CAAC;CACF;AAJD,8CAIC"}
@@ -0,0 +1,11 @@
1
+ import type * as esbuild from 'esbuild';
2
+ import { Platform } from './types';
3
+ declare type Options = {
4
+ inbase: string;
5
+ outbase: string;
6
+ platform: Platform;
7
+ };
8
+ declare const plugin: (options: Options) => {
9
+ onLoad: (args: esbuild.OnLoadArgs) => Promise<esbuild.OnLoadResult>;
10
+ };
11
+ export default plugin;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const log_1 = __importDefault(require("./log"));
9
+ function toLoader(v) {
10
+ switch (v) {
11
+ case 'js':
12
+ return 'js';
13
+ case 'jsx':
14
+ return 'jsx';
15
+ case 'ts':
16
+ return 'ts';
17
+ case 'tsx':
18
+ return 'tsx';
19
+ default:
20
+ return null;
21
+ }
22
+ }
23
+ function quoteString(string) {
24
+ return string.replace(/[\\"]/g, '\\$&');
25
+ }
26
+ const filter = /.*\.(j|t)sx?$/;
27
+ const plugin = (options) => {
28
+ const name = "extraFilename";
29
+ return {
30
+ async onLoad({ path: filepath }) {
31
+ let originalContents = await fs_1.default.promises.readFile(filepath, "utf8");
32
+ if (filepath.startsWith(options.inbase) && filter.test(filepath)) {
33
+ log_1.default.verbose(`Plugin ${name} running for ${filepath}`);
34
+ const loader = toLoader(path_1.default.extname(filepath).substring(1));
35
+ if (loader === null) {
36
+ throw new Error(`Internal Error: loader and filter do not match.`);
37
+ }
38
+ const dirname = path_1.default.dirname(filepath);
39
+ const relDirname = dirname.slice(options.inbase.length);
40
+ const relFilepath = filepath.slice(options.inbase.length);
41
+ const newContents = originalContents
42
+ .replace(/__source_dirname/g, quoteString(dirname))
43
+ .replace(/__source_filename/g, quoteString(filepath))
44
+ .replace(/__source_relative_dirname/g, quoteString(relDirname))
45
+ .replace(/__source_relative_filename/g, quoteString(relFilepath));
46
+ if (newContents !== originalContents) {
47
+ log_1.default.verbose(`Plugin ${name}: Replacements occurred in file ${relFilepath}`);
48
+ }
49
+ return {
50
+ pluginName: name,
51
+ contents: newContents,
52
+ loader,
53
+ };
54
+ }
55
+ else {
56
+ return {
57
+ pluginName: name,
58
+ contents: originalContents,
59
+ loader: 'default'
60
+ };
61
+ }
62
+ }
63
+ };
64
+ };
65
+ exports.default = plugin;
66
+ //# sourceMappingURL=es-build.plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es-build.plugins.js","sourceRoot":"","sources":["../src/es-build.plugins.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,gDAAwB;AAQxB,SAAS,QAAQ,CAAC,CAAS;IACzB,QAAO,CAAC,EAAE;QACR,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,MAAM,GAAG,eAAe,CAAA;AAC9B,MAAM,MAAM,GAAG,CAAC,OAAgB,EAA2E,EAAE;IAC3G,MAAM,IAAI,GAAG,eAAe,CAAC;IAC7B,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAsB;YACjD,IAAI,gBAAgB,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpE,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAChE,aAAG,CAAC,OAAO,CAAC,UAAU,IAAI,gBAAgB,QAAQ,EAAE,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAG,MAAM,KAAK,IAAI,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;iBACpE;gBACD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAG,gBAAgB;qBACjC,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;qBAClD,OAAO,CAAC,oBAAoB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;qBACpD,OAAO,CAAC,4BAA4B,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;qBAC9D,OAAO,CAAC,6BAA6B,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;gBACnE,IAAG,WAAW,KAAK,gBAAgB,EAAE;oBACnC,aAAG,CAAC,OAAO,CAAC,UAAU,IAAI,mCAAmC,WAAW,EAAE,CAAC,CAAC;iBAC7E;gBACD,OAAO;oBACL,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,WAAW;oBACrB,MAAM;iBACP,CAAC;aACH;iBAAM;gBACL,OAAO;oBACL,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,SAAS;iBAClB,CAAA;aACF;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ import _clean from './clean';
2
+ import _bundle from './bundle';
3
+ export type { APIOptions } from './types';
4
+ export declare const clean: typeof _clean;
5
+ export declare const bundle: typeof _bundle;