@git.zone/tsbundle 2.11.4 → 2.12.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/interfaces/index.d.ts +1 -0
- package/dist_ts/mod_custom/index.d.ts +10 -3
- package/dist_ts/mod_custom/index.js +277 -86
- package/dist_ts/mod_esbuild/index.child.d.ts +4 -8
- package/dist_ts/mod_esbuild/index.child.js +51 -44
- package/dist_ts/mod_esbuild/plugins.d.ts +5 -2
- package/dist_ts/mod_esbuild/plugins.js +5 -3
- package/dist_ts/mod_esbuild/workerplugin.d.ts +12 -0
- package/dist_ts/mod_esbuild/workerplugin.js +254 -0
- package/dist_ts/mod_output/artifactpublisher.d.ts +43 -0
- package/dist_ts/mod_output/artifactpublisher.js +925 -0
- package/dist_ts/mod_output/index.d.ts +1 -0
- package/dist_ts/mod_output/index.js +11 -3
- package/dist_ts/mod_rolldown/index.child.d.ts +4 -2
- package/dist_ts/mod_rolldown/index.child.js +47 -36
- package/dist_ts/mod_rspack/index.child.d.ts +4 -2
- package/dist_ts/mod_rspack/index.child.js +73 -115
- package/dist_ts/plugins.d.ts +3 -1
- package/dist_ts/plugins.js +4 -2
- package/dist_ts/tsbundle.class.tsbundle.js +98 -16
- package/package.json +7 -5
- package/readme.hints.md +20 -4
- package/readme.md +23 -6
- package/third-party-notices.md +29 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/interfaces/index.ts +1 -0
- package/ts/mod_custom/index.ts +347 -96
- package/ts/mod_esbuild/index.child.ts +78 -47
- package/ts/mod_esbuild/plugins.ts +9 -2
- package/ts/mod_esbuild/workerplugin.ts +328 -0
- package/ts/mod_output/artifactpublisher.ts +1185 -0
- package/ts/mod_output/index.ts +10 -2
- package/ts/mod_rolldown/index.child.ts +65 -42
- package/ts/mod_rspack/index.child.ts +95 -127
- package/ts/plugins.ts +3 -1
- package/ts/tsbundle.class.tsbundle.ts +102 -14
|
@@ -1,12 +1,8 @@
|
|
|
1
|
+
import * as interfaces from '../interfaces/index.js';
|
|
1
2
|
export declare class TsBundleProcess {
|
|
2
3
|
constructor();
|
|
3
4
|
getAliases(): Promise<Record<string, string>>;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
buildTest(fromArg: string, toArg: string, argvArg: any): Promise<void>;
|
|
8
|
-
/**
|
|
9
|
-
* creates a bundle for the production environment
|
|
10
|
-
*/
|
|
11
|
-
buildProduction(fromArg: string, toArg: string, argvArg: any): Promise<void>;
|
|
5
|
+
private build;
|
|
6
|
+
buildTest(fromArg: string, toArg: string, argvArg: interfaces.ICliOptions): Promise<void>;
|
|
7
|
+
buildProduction(fromArg: string, toArg: string, argvArg: interfaces.ICliOptions): Promise<void>;
|
|
12
8
|
}
|
|
@@ -2,6 +2,8 @@ import * as plugins from './plugins.js';
|
|
|
2
2
|
import * as paths from '../paths.js';
|
|
3
3
|
import * as interfaces from '../interfaces/index.js';
|
|
4
4
|
import { logger } from '../tsbundle.logging.js';
|
|
5
|
+
import { workerPlugin } from './workerplugin.js';
|
|
6
|
+
import { cleanupBuildStage, createBuildStage, getChunkNamespace, publishGeneratedArtifacts, } from '../mod_output/artifactpublisher.js';
|
|
5
7
|
export class TsBundleProcess {
|
|
6
8
|
constructor() {
|
|
7
9
|
// Nothing here
|
|
@@ -24,54 +26,56 @@ export class TsBundleProcess {
|
|
|
24
26
|
}
|
|
25
27
|
return aliasObject;
|
|
26
28
|
}
|
|
27
|
-
catch
|
|
29
|
+
catch {
|
|
28
30
|
return {};
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
async build(fromArg, toArg, argvArg, productionArg) {
|
|
34
|
+
const logicalOutputName = plugins.path.basename(argvArg.chunkOwner || toArg);
|
|
35
|
+
const chunkNamespace = getChunkNamespace(logicalOutputName);
|
|
36
|
+
const outputDirectory = plugins.path.dirname(toArg);
|
|
37
|
+
const stage = createBuildStage(outputDirectory);
|
|
38
|
+
const stageMainPath = plugins.path.join(stage.stageDirectory, plugins.path.basename(toArg));
|
|
39
|
+
try {
|
|
40
|
+
await plugins.esbuild.build({
|
|
41
|
+
absWorkingDir: process.cwd(),
|
|
42
|
+
entryPoints: [fromArg],
|
|
43
|
+
bundle: true,
|
|
44
|
+
sourcemap: argvArg.sourcemap !== false,
|
|
45
|
+
format: 'esm',
|
|
46
|
+
target: 'es2022',
|
|
47
|
+
minify: productionArg,
|
|
48
|
+
keepNames: true,
|
|
49
|
+
entryNames: plugins.path.parse(toArg).name,
|
|
50
|
+
outdir: stage.stageDirectory,
|
|
51
|
+
tsconfig: paths.tsconfigPath,
|
|
52
|
+
splitting: false,
|
|
53
|
+
treeShaking: false,
|
|
54
|
+
chunkNames: `chunks/${chunkNamespace}/[name]-[hash]`,
|
|
55
|
+
alias: await this.getAliases(),
|
|
56
|
+
plugins: [workerPlugin()],
|
|
57
|
+
});
|
|
58
|
+
await publishGeneratedArtifacts({
|
|
59
|
+
sourceDirectory: stage.stageDirectory,
|
|
60
|
+
sourceMainPath: stageMainPath,
|
|
61
|
+
targetPath: toArg,
|
|
62
|
+
logicalOutputName,
|
|
63
|
+
chunkNamespace,
|
|
64
|
+
sourceMapsEnabled: argvArg.sourcemap !== false,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
cleanupBuildStage(stage.stageDirectory, outputDirectory, stage.marker);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
34
71
|
async buildTest(fromArg, toArg, argvArg) {
|
|
35
|
-
|
|
36
|
-
const esbuild = await plugins.esbuild.build({
|
|
37
|
-
entryPoints: [fromArg],
|
|
38
|
-
bundle: true,
|
|
39
|
-
sourcemap: argvArg.sourcemap !== false,
|
|
40
|
-
format: 'esm',
|
|
41
|
-
target: 'es2022',
|
|
42
|
-
keepNames: true,
|
|
43
|
-
entryNames: plugins.path.parse(toArg).name,
|
|
44
|
-
outdir: plugins.path.parse(toArg).dir,
|
|
45
|
-
splitting: false,
|
|
46
|
-
treeShaking: false,
|
|
47
|
-
tsconfig: paths.tsconfigPath,
|
|
48
|
-
alias: await this.getAliases(),
|
|
49
|
-
});
|
|
72
|
+
await this.build(fromArg, toArg, argvArg, false);
|
|
50
73
|
}
|
|
51
|
-
/**
|
|
52
|
-
* creates a bundle for the production environment
|
|
53
|
-
*/
|
|
54
74
|
async buildProduction(fromArg, toArg, argvArg) {
|
|
55
|
-
// create a bundle
|
|
56
75
|
console.log('esbuild specific:');
|
|
57
76
|
console.log(`from: ${fromArg}`);
|
|
58
77
|
console.log(`to: ${toArg}`);
|
|
59
|
-
|
|
60
|
-
entryPoints: [fromArg],
|
|
61
|
-
bundle: true,
|
|
62
|
-
sourcemap: argvArg.sourcemap !== false,
|
|
63
|
-
format: 'esm',
|
|
64
|
-
target: 'es2022',
|
|
65
|
-
minify: true,
|
|
66
|
-
keepNames: true,
|
|
67
|
-
entryNames: plugins.path.parse(toArg).name,
|
|
68
|
-
outdir: plugins.path.parse(toArg).dir,
|
|
69
|
-
tsconfig: paths.tsconfigPath,
|
|
70
|
-
splitting: false,
|
|
71
|
-
treeShaking: false,
|
|
72
|
-
chunkNames: 'chunks/[name]-[hash]',
|
|
73
|
-
alias: await this.getAliases(),
|
|
74
|
-
});
|
|
78
|
+
await this.build(fromArg, toArg, argvArg, true);
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
const run = async () => {
|
|
@@ -101,10 +105,13 @@ const run = async () => {
|
|
|
101
105
|
console.error('\n\x1b[31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m');
|
|
102
106
|
console.error('\x1b[31m❌ BUILD FAILED\x1b[0m');
|
|
103
107
|
console.error('\x1b[31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\n');
|
|
104
|
-
|
|
108
|
+
const errorData = typeof error === 'object' && error !== null
|
|
109
|
+
? error
|
|
110
|
+
: undefined;
|
|
111
|
+
if (Array.isArray(errorData?.errors)) {
|
|
105
112
|
// esbuild errors - format them nicely
|
|
106
|
-
console.error(`Found ${
|
|
107
|
-
for (const err of
|
|
113
|
+
console.error(`Found ${errorData.errors.length} error(s):\n`);
|
|
114
|
+
for (const err of errorData.errors) {
|
|
108
115
|
const file = err.location?.file || 'unknown';
|
|
109
116
|
const line = err.location?.line || '?';
|
|
110
117
|
const column = err.location?.column || '?';
|
|
@@ -113,11 +120,11 @@ const run = async () => {
|
|
|
113
120
|
}
|
|
114
121
|
}
|
|
115
122
|
else {
|
|
116
|
-
console.error(
|
|
123
|
+
console.error(errorData?.message || error);
|
|
117
124
|
}
|
|
118
125
|
console.error('\x1b[31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\n');
|
|
119
126
|
process.exit(1);
|
|
120
127
|
}
|
|
121
128
|
};
|
|
122
129
|
run();
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2hpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZXNidWlsZC9pbmRleC5jaGlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHlCQUF5QixHQUMxQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE1BQU0sT0FBTyxlQUFlO0lBQzFCO1FBQ0UsZUFBZTtJQUNqQixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLEVBQUU7aUJBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQ2xCLFFBQVEsQ0FBQyxNQUFNLENBQUM7aUJBQ2hCLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUF5QixDQUFDLENBQUM7WUFDNUQsSUFDRSxhQUFhLENBQUMsZUFBZTtnQkFDN0IsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQ25DLENBQUM7Z0JBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckUsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsS0FBSyxDQUNqQixPQUFlLEVBQ2YsS0FBYSxFQUNiLE9BQStCLEVBQy9CLGFBQXNCO1FBRXRCLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUM3RSxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUMxQixhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSTtnQkFDWixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLO2dCQUN0QyxNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsTUFBTSxFQUFFLGFBQWE7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUMxQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGNBQWM7Z0JBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDNUIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixVQUFVLEVBQUUsVUFBVSxjQUFjLGdCQUFnQjtnQkFDcEQsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDOUIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDMUIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSx5QkFBeUIsQ0FBQztnQkFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxjQUFjO2dCQUNyQyxjQUFjLEVBQUUsYUFBYTtnQkFDN0IsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLGlCQUFpQjtnQkFDakIsY0FBYztnQkFDZCxpQkFBaUIsRUFBRSxPQUFPLENBQUMsU0FBUyxLQUFLLEtBQUs7YUFDL0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FDcEIsT0FBZSxFQUNmLEtBQWEsRUFDYixPQUErQjtRQUUvQixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQzFCLE9BQWUsRUFDZixLQUFhLEVBQ2IsT0FBK0I7UUFFL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtJQUNyQixJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBb0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLHVCQUF1QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdEQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sdUJBQXVCLENBQUMsU0FBUyxDQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQ3RDLGdCQUFnQixDQUFDLElBQUksRUFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUNkLEVBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN0QyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FDZCxFQUNELGdCQUFnQixDQUFDLElBQUksQ0FDdEIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sdUJBQXVCLENBQUMsZUFBZSxDQUMzQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQ3RDLGdCQUFnQixDQUFDLElBQUksRUFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUNkLEVBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN0QyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FDZCxFQUNELGdCQUFnQixDQUFDLElBQUksQ0FDdEIsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUMvRixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBRS9GLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUMzRCxDQUFDLENBQUMsS0FNQztZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckMsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7WUFDOUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQztnQkFDN0MsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDO2dCQUN2QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxHQUFHLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLG1CQUFtQixJQUFJLG1CQUFtQixNQUFNLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7UUFDL0YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsR0FBRyxFQUFFLENBQUMifQ==
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from '../plugins.js';
|
|
2
|
-
import esbuild from 'esbuild';
|
|
3
|
-
|
|
2
|
+
import esbuild, { type BuildOptions, type Loader, type Plugin } from 'esbuild';
|
|
3
|
+
import MagicString from 'magic-string';
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
export { esbuild, MagicString, ts };
|
|
6
|
+
export type { BuildOptions, Loader, Plugin };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from '../plugins.js';
|
|
2
|
-
import esbuild from 'esbuild';
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import esbuild, {} from 'esbuild';
|
|
3
|
+
import MagicString from 'magic-string';
|
|
4
|
+
import ts from 'typescript';
|
|
5
|
+
export { esbuild, MagicString, ts };
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9lc2J1aWxkL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFFOUIsT0FBTyxPQUFPLEVBQUUsRUFJZixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
interface IWorkerPluginOptions {
|
|
3
|
+
constructors?: string[];
|
|
4
|
+
}
|
|
5
|
+
interface IWorkerBuildState {
|
|
6
|
+
dependencyGraph: Map<string, Set<string>>;
|
|
7
|
+
emittedWorkers: Map<string, Promise<string>>;
|
|
8
|
+
parentKey: string;
|
|
9
|
+
parentOutputDirectory: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const workerPlugin: ({ constructors, }?: IWorkerPluginOptions, stateArg?: IWorkerBuildState) => plugins.Plugin;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Derived from @chialab/esbuild-plugin-worker 0.19.2.
|
|
3
|
+
* Copyright (c) 2021 Chialab. Licensed under the MIT License.
|
|
4
|
+
* See third-party-notices.md in the published package.
|
|
5
|
+
*/
|
|
6
|
+
import * as plugins from './plugins.js';
|
|
7
|
+
const rootWorkerKey = 'tsbundle:main';
|
|
8
|
+
const hasDependencyPath = (graphArg, fromKeyArg, targetKeyArg, visitedArg = new Set()) => {
|
|
9
|
+
if (fromKeyArg === targetKeyArg) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
if (visitedArg.has(fromKeyArg)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
visitedArg.add(fromKeyArg);
|
|
16
|
+
for (const dependencyKey of graphArg.get(fromKeyArg) || []) {
|
|
17
|
+
if (hasDependencyPath(graphArg, dependencyKey, targetKeyArg, visitedArg)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
const addWorkerDependency = (graphArg, parentKeyArg, childKeyArg) => {
|
|
24
|
+
if (hasDependencyPath(graphArg, childKeyArg, parentKeyArg)) {
|
|
25
|
+
throw new Error(`Cyclic module-worker dependency detected: ${parentKeyArg} -> ${childKeyArg}`);
|
|
26
|
+
}
|
|
27
|
+
const dependencies = graphArg.get(parentKeyArg) || new Set();
|
|
28
|
+
dependencies.add(childKeyArg);
|
|
29
|
+
graphArg.set(parentKeyArg, dependencies);
|
|
30
|
+
};
|
|
31
|
+
const getLoader = (filePathArg) => {
|
|
32
|
+
switch (plugins.path.extname(filePathArg)) {
|
|
33
|
+
case '.tsx':
|
|
34
|
+
return 'tsx';
|
|
35
|
+
case '.jsx':
|
|
36
|
+
return 'jsx';
|
|
37
|
+
case '.ts':
|
|
38
|
+
case '.mts':
|
|
39
|
+
case '.cts':
|
|
40
|
+
return 'ts';
|
|
41
|
+
default:
|
|
42
|
+
return 'js';
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const getScriptKind = (filePathArg) => {
|
|
46
|
+
switch (plugins.path.extname(filePathArg)) {
|
|
47
|
+
case '.tsx':
|
|
48
|
+
return plugins.ts.ScriptKind.TSX;
|
|
49
|
+
case '.jsx':
|
|
50
|
+
return plugins.ts.ScriptKind.JSX;
|
|
51
|
+
case '.ts':
|
|
52
|
+
case '.mts':
|
|
53
|
+
case '.cts':
|
|
54
|
+
return plugins.ts.ScriptKind.TS;
|
|
55
|
+
default:
|
|
56
|
+
return plugins.ts.ScriptKind.JS;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const isImportMetaUrl = (nodeArg) => {
|
|
60
|
+
return plugins.ts.isPropertyAccessExpression(nodeArg)
|
|
61
|
+
&& nodeArg.name.text === 'url'
|
|
62
|
+
&& plugins.ts.isMetaProperty(nodeArg.expression)
|
|
63
|
+
&& nodeArg.expression.keywordToken === plugins.ts.SyntaxKind.ImportKeyword
|
|
64
|
+
&& nodeArg.expression.name.text === 'meta';
|
|
65
|
+
};
|
|
66
|
+
const getWorkerConstructorName = (nodeArg) => {
|
|
67
|
+
if (plugins.ts.isIdentifier(nodeArg)) {
|
|
68
|
+
return nodeArg.text;
|
|
69
|
+
}
|
|
70
|
+
if (plugins.ts.isPropertyAccessExpression(nodeArg)
|
|
71
|
+
&& plugins.ts.isIdentifier(nodeArg.expression)
|
|
72
|
+
&& ['window', 'globalThis', 'self', 'global'].includes(nodeArg.expression.text)) {
|
|
73
|
+
return nodeArg.name.text;
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
};
|
|
77
|
+
const isModuleWorker = (optionsArg) => {
|
|
78
|
+
if (!optionsArg || !plugins.ts.isObjectLiteralExpression(optionsArg)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return optionsArg.properties.some((property) => (plugins.ts.isPropertyAssignment(property)
|
|
82
|
+
&& property.name.getText() === 'type'
|
|
83
|
+
&& plugins.ts.isStringLiteral(property.initializer)
|
|
84
|
+
&& property.initializer.text === 'module'));
|
|
85
|
+
};
|
|
86
|
+
export const workerPlugin = ({ constructors = ['Worker', 'SharedWorker'], } = {}, stateArg) => {
|
|
87
|
+
const state = stateArg || {
|
|
88
|
+
dependencyGraph: new Map(),
|
|
89
|
+
emittedWorkers: new Map(),
|
|
90
|
+
parentKey: rootWorkerKey,
|
|
91
|
+
parentOutputDirectory: '',
|
|
92
|
+
};
|
|
93
|
+
const plugin = {
|
|
94
|
+
name: 'tsbundle-worker',
|
|
95
|
+
setup(pluginBuild) {
|
|
96
|
+
pluginBuild.onLoad({
|
|
97
|
+
filter: /\.[cm]?[jt]sx?$/,
|
|
98
|
+
namespace: 'file',
|
|
99
|
+
}, async (args) => {
|
|
100
|
+
const code = await plugins.fsPromises.readFile(args.path, 'utf8');
|
|
101
|
+
if (!constructors.some((constructorName) => code.includes(`new ${constructorName}`))) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
const sourceFile = plugins.ts.createSourceFile(args.path, code, plugins.ts.ScriptTarget.Latest, true, getScriptKind(args.path));
|
|
105
|
+
const localClasses = new Set();
|
|
106
|
+
const symbols = new Map();
|
|
107
|
+
const references = [];
|
|
108
|
+
const collectDeclarations = (node) => {
|
|
109
|
+
if (plugins.ts.isClassDeclaration(node) && node.name) {
|
|
110
|
+
localClasses.add(node.name.text);
|
|
111
|
+
}
|
|
112
|
+
else if (plugins.ts.isVariableDeclaration(node)
|
|
113
|
+
&& plugins.ts.isIdentifier(node.name)
|
|
114
|
+
&& node.initializer
|
|
115
|
+
&& plugins.ts.isStringLiteral(node.initializer)) {
|
|
116
|
+
symbols.set(node.name.text, node.initializer.text);
|
|
117
|
+
}
|
|
118
|
+
plugins.ts.forEachChild(node, collectDeclarations);
|
|
119
|
+
};
|
|
120
|
+
collectDeclarations(sourceFile);
|
|
121
|
+
const collectReferences = (node) => {
|
|
122
|
+
if (plugins.ts.isNewExpression(node)) {
|
|
123
|
+
const constructorName = getWorkerConstructorName(node.expression);
|
|
124
|
+
const argument = node.arguments?.[0];
|
|
125
|
+
if (constructorName
|
|
126
|
+
&& constructors.includes(constructorName)
|
|
127
|
+
&& !localClasses.has(constructorName)
|
|
128
|
+
&& argument
|
|
129
|
+
&& plugins.ts.isNewExpression(argument)
|
|
130
|
+
&& plugins.ts.isIdentifier(argument.expression)
|
|
131
|
+
&& argument.expression.text === 'URL'
|
|
132
|
+
&& argument.arguments?.length === 2
|
|
133
|
+
&& isImportMetaUrl(argument.arguments[1])) {
|
|
134
|
+
const reference = argument.arguments[0];
|
|
135
|
+
const value = plugins.ts.isStringLiteral(reference)
|
|
136
|
+
? reference.text
|
|
137
|
+
: plugins.ts.isIdentifier(reference)
|
|
138
|
+
? symbols.get(reference.text)
|
|
139
|
+
: undefined;
|
|
140
|
+
if (value) {
|
|
141
|
+
references.push({
|
|
142
|
+
argument,
|
|
143
|
+
module: isModuleWorker(node.arguments?.[1]),
|
|
144
|
+
value,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
plugins.ts.forEachChild(node, collectReferences);
|
|
150
|
+
};
|
|
151
|
+
collectReferences(sourceFile);
|
|
152
|
+
if (references.length === 0) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
const outdir = pluginBuild.initialOptions.outdir;
|
|
156
|
+
const chunkNames = pluginBuild.initialOptions.chunkNames;
|
|
157
|
+
if (!outdir || !chunkNames) {
|
|
158
|
+
throw new Error('Module workers require esbuild outdir and chunkNames options.');
|
|
159
|
+
}
|
|
160
|
+
const workerEntryPattern = chunkNames.replace('[name]', 'worker');
|
|
161
|
+
const workerOutputDirectoryRaw = plugins.path.dirname(workerEntryPattern);
|
|
162
|
+
const workerOutputDirectory = workerOutputDirectoryRaw === '.'
|
|
163
|
+
? ''
|
|
164
|
+
: workerOutputDirectoryRaw;
|
|
165
|
+
if (plugins.path.isAbsolute(workerOutputDirectory)
|
|
166
|
+
|| workerOutputDirectory === '..'
|
|
167
|
+
|| workerOutputDirectory.startsWith(`..${plugins.path.sep}`)
|
|
168
|
+
|| /\[[^\]]+\]/.test(workerOutputDirectory)) {
|
|
169
|
+
throw new Error(`Module-worker output directory must stay fixed within esbuild outdir: ${chunkNames}`);
|
|
170
|
+
}
|
|
171
|
+
const magicString = new plugins.MagicString(code);
|
|
172
|
+
const watchFiles = new Set([args.path]);
|
|
173
|
+
for (const reference of references) {
|
|
174
|
+
const resolved = await pluginBuild.resolve(reference.value, {
|
|
175
|
+
kind: 'dynamic-import',
|
|
176
|
+
importer: args.path,
|
|
177
|
+
namespace: 'file',
|
|
178
|
+
resolveDir: plugins.path.dirname(args.path),
|
|
179
|
+
});
|
|
180
|
+
if (resolved.external) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (!resolved.path) {
|
|
184
|
+
throw new Error(`Unable to resolve worker entry '${reference.value}' from ${args.path}.`);
|
|
185
|
+
}
|
|
186
|
+
watchFiles.add(resolved.path);
|
|
187
|
+
const canonicalWorkerPath = await plugins.fsPromises.realpath(resolved.path);
|
|
188
|
+
const cacheKey = `${reference.module ? 'module' : 'classic'}:${canonicalWorkerPath}`;
|
|
189
|
+
addWorkerDependency(state.dependencyGraph, state.parentKey, cacheKey);
|
|
190
|
+
let emittedWorkerPromise = state.emittedWorkers.get(cacheKey);
|
|
191
|
+
if (!emittedWorkerPromise) {
|
|
192
|
+
emittedWorkerPromise = (async () => {
|
|
193
|
+
const initialOptions = pluginBuild.initialOptions;
|
|
194
|
+
const workerResult = await plugins.esbuild.build({
|
|
195
|
+
...initialOptions,
|
|
196
|
+
entryPoints: [resolved.path],
|
|
197
|
+
stdin: undefined,
|
|
198
|
+
outfile: undefined,
|
|
199
|
+
outdir,
|
|
200
|
+
entryNames: workerEntryPattern,
|
|
201
|
+
bundle: true,
|
|
202
|
+
format: reference.module ? 'esm' : 'iife',
|
|
203
|
+
platform: initialOptions.platform || 'browser',
|
|
204
|
+
splitting: false,
|
|
205
|
+
metafile: true,
|
|
206
|
+
write: true,
|
|
207
|
+
plugins: [workerPlugin({ constructors }, {
|
|
208
|
+
dependencyGraph: state.dependencyGraph,
|
|
209
|
+
emittedWorkers: state.emittedWorkers,
|
|
210
|
+
parentKey: cacheKey,
|
|
211
|
+
parentOutputDirectory: workerOutputDirectory,
|
|
212
|
+
})],
|
|
213
|
+
});
|
|
214
|
+
const outputEntry = Object.entries(workerResult.metafile.outputs).find(([, output]) => (!!output.entryPoint && !output.cssBundle));
|
|
215
|
+
if (!outputEntry) {
|
|
216
|
+
throw new Error(`Worker build produced no JavaScript output for ${resolved.path}.`);
|
|
217
|
+
}
|
|
218
|
+
const outputPath = plugins.path.isAbsolute(outputEntry[0])
|
|
219
|
+
? outputEntry[0]
|
|
220
|
+
: plugins.path.resolve(initialOptions.absWorkingDir || process.cwd(), outputEntry[0]);
|
|
221
|
+
const relativeOutputPath = plugins.path.relative(outdir, outputPath);
|
|
222
|
+
if (relativeOutputPath === '..'
|
|
223
|
+
|| relativeOutputPath.startsWith(`..${plugins.path.sep}`)
|
|
224
|
+
|| plugins.path.isAbsolute(relativeOutputPath)) {
|
|
225
|
+
throw new Error(`Worker output escaped esbuild outdir: ${outputPath}`);
|
|
226
|
+
}
|
|
227
|
+
return relativeOutputPath;
|
|
228
|
+
})();
|
|
229
|
+
state.emittedWorkers.set(cacheKey, emittedWorkerPromise);
|
|
230
|
+
}
|
|
231
|
+
const emittedWorker = await emittedWorkerPromise;
|
|
232
|
+
const relativeWorkerPath = plugins.path.relative(state.parentOutputDirectory || '.', emittedWorker).split(plugins.path.sep).join('/');
|
|
233
|
+
const workerUrl = relativeWorkerPath.startsWith('.')
|
|
234
|
+
? relativeWorkerPath
|
|
235
|
+
: `./${relativeWorkerPath}`;
|
|
236
|
+
magicString.overwrite(reference.argument.getStart(sourceFile), reference.argument.end, `new URL('${workerUrl}', import.meta.url).href`);
|
|
237
|
+
}
|
|
238
|
+
const sourceMap = magicString.generateMap({
|
|
239
|
+
source: plugins.path.basename(args.path),
|
|
240
|
+
includeContent: true,
|
|
241
|
+
hires: true,
|
|
242
|
+
});
|
|
243
|
+
return {
|
|
244
|
+
contents: `${magicString.toString()}\n//# sourceMappingURL=${sourceMap.toUrl()}`,
|
|
245
|
+
loader: getLoader(args.path),
|
|
246
|
+
resolveDir: plugins.path.dirname(args.path),
|
|
247
|
+
watchFiles: [...watchFiles],
|
|
248
|
+
};
|
|
249
|
+
});
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
return plugin;
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VycGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2VzYnVpbGQvd29ya2VycGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQW1CeEMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBRXRDLE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsUUFBa0MsRUFDbEMsVUFBa0IsRUFDbEIsWUFBb0IsRUFDcEIsYUFBYSxJQUFJLEdBQUcsRUFBVSxFQUNyQixFQUFFO0lBQ1gsSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQixLQUFLLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDM0QsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsUUFBa0MsRUFDbEMsWUFBb0IsRUFDcEIsV0FBbUIsRUFDYixFQUFFO0lBQ1IsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsWUFBWSxPQUFPLFdBQVcsRUFBRSxD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
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const chunkManifestFile = ".tsbundle-artifacts.json";
|
|
2
|
+
export interface IProcessOwnership {
|
|
3
|
+
leaseManaged?: boolean;
|
|
4
|
+
processId: number;
|
|
5
|
+
processIdentity?: string;
|
|
6
|
+
}
|
|
7
|
+
interface IBuildStageMarker extends IProcessOwnership {
|
|
8
|
+
owner: string;
|
|
9
|
+
kind: string;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
invocationId: string;
|
|
12
|
+
schemaVersion: 1;
|
|
13
|
+
}
|
|
14
|
+
export interface IAdditionalArtifact {
|
|
15
|
+
sourcePath: string;
|
|
16
|
+
targetPath: string;
|
|
17
|
+
}
|
|
18
|
+
interface IPublishGeneratedArtifactsOptions {
|
|
19
|
+
additionalArtifacts?: IAdditionalArtifact[];
|
|
20
|
+
chunkNamespace: string;
|
|
21
|
+
lockTargetPath?: string;
|
|
22
|
+
logicalOutputName: string;
|
|
23
|
+
sourceDirectory: string;
|
|
24
|
+
sourceMainPath: string;
|
|
25
|
+
sourceMapsEnabled: boolean;
|
|
26
|
+
targetPath: string;
|
|
27
|
+
}
|
|
28
|
+
export declare const getProcessIdentity: (processIdArg: number) => string | undefined;
|
|
29
|
+
export declare const createProcessOwnership: () => Required<IProcessOwnership>;
|
|
30
|
+
export declare const isProcessOwnershipActive: (ownershipArg: IProcessOwnership, markerPathArg: string, leaseTimeoutMsArg: number) => boolean;
|
|
31
|
+
export declare const startOwnershipHeartbeat: (markerPathArg: string) => (() => void);
|
|
32
|
+
export declare const withArtifactPublicationLock: <T>(targetPathArg: string, callbackArg: () => Promise<T>) => Promise<T>;
|
|
33
|
+
export declare const withArtifactPublicationLocks: <T>(targetPathArg: string, callbackArg: () => Promise<T>, additionalTargetPathsArg?: string[]) => Promise<T>;
|
|
34
|
+
export declare const writeFileAtomically: (targetPathArg: string, contentArg: string | Buffer, modeArg?: number) => void;
|
|
35
|
+
export declare const getChunkNamespace: (logicalOutputNameArg: string) => string;
|
|
36
|
+
export declare const publishGeneratedArtifacts: (optionsArg: IPublishGeneratedArtifactsOptions) => Promise<void>;
|
|
37
|
+
export declare const cleanupStaleBuildStages: (outputDirectoryArg: string) => void;
|
|
38
|
+
export declare const createBuildStage: (outputDirectoryArg: string) => {
|
|
39
|
+
marker: IBuildStageMarker;
|
|
40
|
+
stageDirectory: string;
|
|
41
|
+
};
|
|
42
|
+
export declare const cleanupBuildStage: (stageDirectoryArg: string, outputDirectoryArg: string, expectedMarkerArg: IBuildStageMarker) => void;
|
|
43
|
+
export {};
|