@decohere/forge 0.0.1-dev.5
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/commonjs/src/actions/build.action.js +108 -0
- package/commonjs/src/actions/clean.action.js +55 -0
- package/commonjs/src/actions/commit.action.js +80 -0
- package/commonjs/src/actions/copy.action.js +83 -0
- package/commonjs/src/actions/dependency-report.action.js +142 -0
- package/commonjs/src/actions/dependency-sync.action.js +100 -0
- package/commonjs/src/actions/index.js +30 -0
- package/commonjs/src/actions/publish.action.js +156 -0
- package/commonjs/src/actions/sync-lock-file.action.js +43 -0
- package/commonjs/src/actions/tag.action.js +76 -0
- package/commonjs/src/actions/version.action.js +209 -0
- package/commonjs/src/actions/watch.action.js +50 -0
- package/commonjs/src/commands/build.command.js +49 -0
- package/commonjs/src/commands/dependency.command.js +88 -0
- package/commonjs/src/commands/forge.command.js +24 -0
- package/commonjs/src/commands/index.js +25 -0
- package/commonjs/src/commands/publish.command.js +32 -0
- package/commonjs/src/commands/tag.command.js +28 -0
- package/commonjs/src/commands/version.command.js +36 -0
- package/commonjs/src/const.js +81 -0
- package/commonjs/src/errors.js +39 -0
- package/commonjs/src/extensions/project.extensions.js +66 -0
- package/commonjs/src/factories/swc-config.factory.js +98 -0
- package/commonjs/src/forge.module.js +109 -0
- package/commonjs/src/index.js +22 -0
- package/commonjs/src/mixins/caches-outputs.mixin.js +42 -0
- package/commonjs/src/mixins/incremental-transform.mixin.js +36 -0
- package/commonjs/src/services/dependency-resolver.service.js +172 -0
- package/commonjs/src/services/file-writer.service.js +232 -0
- package/commonjs/src/services/swc-transpiler.js +176 -0
- package/commonjs/src/services/ts-program-host.js +135 -0
- package/commonjs/src/services/type-emission-program.js +160 -0
- package/commonjs/src/services/type-emitter.js +141 -0
- package/commonjs/src/types/build-target.type.js +17 -0
- package/commonjs/src/types/configuration.type.js +6 -0
- package/commonjs/src/types/dependency.types.js +6 -0
- package/commonjs/src/types/swc-config.type.js +17 -0
- package/commonjs/src/types/transform-response.model.js +64 -0
- package/commonjs/src/types/transformer.type.js +13 -0
- package/commonjs/src/types/workspace-config.type.js +6 -0
- package/commonjs/src/vitest/forge-build.plugin.js +129 -0
- package/commonjs/src/vitest/index.js +13 -0
- package/commonjs/src/workspace.config.js +73 -0
- package/es6/src/actions/build.action.js +100 -0
- package/es6/src/actions/clean.action.js +46 -0
- package/es6/src/actions/commit.action.js +71 -0
- package/es6/src/actions/copy.action.js +69 -0
- package/es6/src/actions/dependency-report.action.js +134 -0
- package/es6/src/actions/dependency-sync.action.js +92 -0
- package/es6/src/actions/index.js +13 -0
- package/es6/src/actions/publish.action.js +147 -0
- package/es6/src/actions/sync-lock-file.action.js +33 -0
- package/es6/src/actions/tag.action.js +67 -0
- package/es6/src/actions/version.action.js +189 -0
- package/es6/src/actions/watch.action.js +41 -0
- package/es6/src/commands/build.command.js +34 -0
- package/es6/src/commands/dependency.command.js +78 -0
- package/es6/src/commands/forge.command.js +14 -0
- package/es6/src/commands/index.js +8 -0
- package/es6/src/commands/publish.command.js +22 -0
- package/es6/src/commands/tag.command.js +18 -0
- package/es6/src/commands/version.command.js +26 -0
- package/es6/src/const.js +60 -0
- package/es6/src/errors.js +18 -0
- package/es6/src/extensions/project.extensions.js +51 -0
- package/es6/src/factories/swc-config.factory.js +83 -0
- package/es6/src/forge.module.js +58 -0
- package/es6/src/index.js +4 -0
- package/es6/src/mixins/caches-outputs.mixin.js +32 -0
- package/es6/src/mixins/incremental-transform.mixin.js +26 -0
- package/es6/src/services/dependency-resolver.service.js +162 -0
- package/es6/src/services/file-writer.service.js +217 -0
- package/es6/src/services/swc-transpiler.js +161 -0
- package/es6/src/services/ts-program-host.js +120 -0
- package/es6/src/services/type-emission-program.js +145 -0
- package/es6/src/services/type-emitter.js +134 -0
- package/es6/src/types/build-target.type.js +7 -0
- package/es6/src/types/configuration.type.js +3 -0
- package/es6/src/types/dependency.types.js +3 -0
- package/es6/src/types/swc-config.type.js +7 -0
- package/es6/src/types/transform-response.model.js +46 -0
- package/es6/src/types/transformer.type.js +3 -0
- package/es6/src/types/workspace-config.type.js +3 -0
- package/es6/src/vitest/forge-build.plugin.js +114 -0
- package/es6/src/vitest/index.js +3 -0
- package/es6/src/workspace.config.js +49 -0
- package/package.json +43 -0
- package/types/src/actions/build.action.d.ts +22 -0
- package/types/src/actions/clean.action.d.ts +13 -0
- package/types/src/actions/commit.action.d.ts +17 -0
- package/types/src/actions/copy.action.d.ts +14 -0
- package/types/src/actions/dependency-report.action.d.ts +36 -0
- package/types/src/actions/dependency-sync.action.d.ts +17 -0
- package/types/src/actions/index.d.ts +11 -0
- package/types/src/actions/publish.action.d.ts +34 -0
- package/types/src/actions/sync-lock-file.action.d.ts +10 -0
- package/types/src/actions/tag.action.d.ts +19 -0
- package/types/src/actions/version.action.d.ts +35 -0
- package/types/src/actions/watch.action.d.ts +14 -0
- package/types/src/commands/build.command.d.ts +16 -0
- package/types/src/commands/dependency.command.d.ts +5 -0
- package/types/src/commands/forge.command.d.ts +6 -0
- package/types/src/commands/index.d.ts +6 -0
- package/types/src/commands/publish.command.d.ts +6 -0
- package/types/src/commands/tag.command.d.ts +6 -0
- package/types/src/commands/version.command.d.ts +12 -0
- package/types/src/const.d.ts +3 -0
- package/types/src/errors.d.ts +4 -0
- package/types/src/extensions/project.extensions.d.ts +13 -0
- package/types/src/factories/swc-config.factory.d.ts +24 -0
- package/types/src/forge.module.d.ts +31 -0
- package/types/src/index.d.ts +4 -0
- package/types/src/mixins/caches-outputs.mixin.d.ts +7 -0
- package/types/src/mixins/incremental-transform.mixin.d.ts +13 -0
- package/types/src/services/dependency-resolver.service.d.ts +15 -0
- package/types/src/services/file-writer.service.d.ts +20 -0
- package/types/src/services/swc-transpiler.d.ts +28 -0
- package/types/src/services/ts-program-host.d.ts +22 -0
- package/types/src/services/type-emission-program.d.ts +22 -0
- package/types/src/services/type-emitter.d.ts +43 -0
- package/types/src/types/build-target.type.d.ts +7 -0
- package/types/src/types/configuration.type.d.ts +6 -0
- package/types/src/types/dependency.types.d.ts +39 -0
- package/types/src/types/swc-config.type.d.ts +9 -0
- package/types/src/types/transform-response.model.d.ts +54 -0
- package/types/src/types/transformer.type.d.ts +37 -0
- package/types/src/types/workspace-config.type.d.ts +13 -0
- package/types/src/vitest/forge-build.plugin.d.ts +18 -0
- package/types/src/vitest/index.d.ts +2 -0
- package/types/src/workspace.config.d.ts +6 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "forgeBuild", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return forgeBuild;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodefs = require("node:fs");
|
|
12
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
13
|
+
const _mesh = require("@decohere/mesh");
|
|
14
|
+
const _io = require("@decohere/nexus/io");
|
|
15
|
+
const _scribe = require("@decohere/scribe");
|
|
16
|
+
const _swctranspiler = require("../services/swc-transpiler.js");
|
|
17
|
+
const _buildtargettype = require("../types/build-target.type.js");
|
|
18
|
+
const _workspaceconfig = require("../workspace.config.js");
|
|
19
|
+
function _interop_require_default(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Above fatal (60) so all standard levels are nooped when logLevel is "silent"
|
|
25
|
+
const SILENT_LEVEL = 999;
|
|
26
|
+
const PLUGIN_NAME = "forge-vitest-source";
|
|
27
|
+
const TS_EXTENSIONS = [
|
|
28
|
+
".ts",
|
|
29
|
+
".tsx",
|
|
30
|
+
".mts"
|
|
31
|
+
];
|
|
32
|
+
function forgeBuild(options) {
|
|
33
|
+
const buildConfig = options?.buildConfig ?? "debug";
|
|
34
|
+
const workspaceRoot = options?.workspaceRoot ?? process.cwd();
|
|
35
|
+
const logLevel = options?.logLevel ?? "info";
|
|
36
|
+
const loggerFactory = _scribe.scribe.configure({
|
|
37
|
+
adapter: new _scribe.ConsoleAdapter(),
|
|
38
|
+
options: {
|
|
39
|
+
logLevel,
|
|
40
|
+
customLevels: {
|
|
41
|
+
silent: SILENT_LEVEL
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const logger = loggerFactory(PLUGIN_NAME);
|
|
46
|
+
const skipBuild = options?.skipBuild ?? false;
|
|
47
|
+
const transpiler = new _swctranspiler.SwcTranspiler();
|
|
48
|
+
const warmedProjects = new Set();
|
|
49
|
+
const transformCache = new Map();
|
|
50
|
+
let workspace = null;
|
|
51
|
+
const initWorkspace = async ()=>{
|
|
52
|
+
if (workspace !== null) return;
|
|
53
|
+
logger.debug(`Loading Forge workspace (buildConfig: ${buildConfig}, workspaceRoot: ${workspaceRoot})`);
|
|
54
|
+
workspace = await _mesh.WorkspaceFactory.create({
|
|
55
|
+
..._workspaceconfig.WorkspaceDefaults,
|
|
56
|
+
rootDir: workspaceRoot
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const preWarmProject = (project)=>{
|
|
60
|
+
if (warmedProjects.has(project.projectDirectory)) return;
|
|
61
|
+
warmedProjects.add(project.projectDirectory);
|
|
62
|
+
void transpiler.transformProject(project).then(()=>logger.debug(`Pre-warm complete for ${project.name}`)).catch((err)=>logger.error(`Pre-warm error for ${project.name}: ${err.message}`));
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
name: PLUGIN_NAME,
|
|
66
|
+
enforce: "pre",
|
|
67
|
+
configResolved () {
|
|
68
|
+
logger.debug("Plugin loaded");
|
|
69
|
+
},
|
|
70
|
+
resolveId (source, importer) {
|
|
71
|
+
if (importer != null && source.endsWith(".js") && source.startsWith(".")) {
|
|
72
|
+
const importerDirectory = _nodepath.default.dirname(importer);
|
|
73
|
+
const withoutExtension = source.slice(0, -3);
|
|
74
|
+
const candidates = TS_EXTENSIONS.map((ext)=>_nodepath.default.resolve(importerDirectory, `${withoutExtension}${ext}`));
|
|
75
|
+
return candidates.find((c)=>(0, _nodefs.existsSync)(c)) ?? null;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
},
|
|
79
|
+
watchChange (id) {
|
|
80
|
+
const file = new _io.FileEx({
|
|
81
|
+
fullPath: id
|
|
82
|
+
});
|
|
83
|
+
transformCache.delete(id);
|
|
84
|
+
transpiler.invalidateContentCache(file);
|
|
85
|
+
},
|
|
86
|
+
async transform (code, id) {
|
|
87
|
+
if (id.includes("node_modules") || !/[.](ts|tsx|mts|cts)$/.test(id)) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
await initWorkspace();
|
|
91
|
+
const project = await workspace?.findProject(id, buildConfig);
|
|
92
|
+
if (project != null && !skipBuild) {
|
|
93
|
+
preWarmProject(project);
|
|
94
|
+
}
|
|
95
|
+
const cached = transformCache.get(id);
|
|
96
|
+
if (cached !== undefined && cached.content === code) {
|
|
97
|
+
return cached.result;
|
|
98
|
+
}
|
|
99
|
+
const file = new _io.FileEx({
|
|
100
|
+
fullPath: id,
|
|
101
|
+
content: code
|
|
102
|
+
});
|
|
103
|
+
if (cached !== undefined) {
|
|
104
|
+
// Content changed for a previously-seen file — invalidate the transpiler's
|
|
105
|
+
// FILE_CONTENT cache so the fresh content from Vite is used.
|
|
106
|
+
// The VS Code Vitest extension disables Vite's chokidar watcher
|
|
107
|
+
// (server.watch: null) and drives re-runs via vitest.watcher.onFileChange(),
|
|
108
|
+
// bypassing watchChange entirely — so we cannot rely on watchChange alone.
|
|
109
|
+
transpiler.invalidateContentCache(file);
|
|
110
|
+
}
|
|
111
|
+
const [response] = await transpiler.transformFile(file, _buildtargettype.BuildTargets.es6, {
|
|
112
|
+
aliasPaths: true,
|
|
113
|
+
tsConfig: project ? await project.getTsConfig() : undefined
|
|
114
|
+
});
|
|
115
|
+
if (!response || response.outcome !== "success") return null;
|
|
116
|
+
const result = {
|
|
117
|
+
code: response.code,
|
|
118
|
+
map: null
|
|
119
|
+
};
|
|
120
|
+
transformCache.set(id, {
|
|
121
|
+
content: code,
|
|
122
|
+
result
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL3ZpdGVzdC9mb3JnZS1idWlsZC5wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgV29ya3NwYWNlRmFjdG9yeSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgRmlsZUV4IH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFkYXB0ZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBTd2NUcmFuc3BpbGVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3N3Yy10cmFuc3BpbGVyLmpzXCI7XG5pbXBvcnQgeyBCdWlsZFRhcmdldHMgfSBmcm9tIFwiLi4vdHlwZXMvYnVpbGQtdGFyZ2V0LnR5cGUuanNcIjtcbmltcG9ydCB7IFdvcmtzcGFjZURlZmF1bHRzIH0gZnJvbSBcIi4uL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuLy8gQWJvdmUgZmF0YWwgKDYwKSBzbyBhbGwgc3RhbmRhcmQgbGV2ZWxzIGFyZSBub29wZWQgd2hlbiBsb2dMZXZlbCBpcyBcInNpbGVudFwiXG5jb25zdCBTSUxFTlRfTEVWRUwgPSA5OTk7XG5cbmNvbnN0IFBMVUdJTl9OQU1FID0gXCJmb3JnZS12aXRlc3Qtc291cmNlXCI7XG5jb25zdCBUU19FWFRFTlNJT05TID0gW1wiLnRzXCIsIFwiLnRzeFwiLCBcIi5tdHNcIl07XG5cbmV4cG9ydCB0eXBlIEZvcmdlQnVpbGRPcHRpb25zID0ge1xuXHRidWlsZENvbmZpZz86IHN0cmluZztcblx0bG9nTGV2ZWw/OiBzdHJpbmc7XG5cdHdvcmtzcGFjZVJvb3Q/OiBzdHJpbmc7XG5cdC8qKiBTa2lwIHRoZSBidWlsZCBwcmUtd2FybSBlbnRpcmVseSAoZS5nLiB3aGVuIGEgcHJlLWJ1aWx0IGFydGlmYWN0IGlzIGFscmVhZHkgb24gZGlzaykuICovXG5cdHNraXBCdWlsZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9yZ2VCdWlsZChvcHRpb25zPzogRm9yZ2VCdWlsZE9wdGlvbnMpIHtcblx0Y29uc3QgYnVpbGRDb25maWcgPSBvcHRpb25zPy5idWlsZENvbmZpZyA/PyBcImRlYnVnXCI7XG5cdGNvbnN0IHdvcmtzcGFjZVJvb3QgPSBvcHRpb25zPy53b3Jrc3BhY2VSb290ID8/IHByb2Nlc3MuY3dkKCk7XG5cdGNvbnN0IGxvZ0xldmVsID0gb3B0aW9ucz8ubG9nTGV2ZWwgPz8gXCJpbmZvXCI7XG5cdGNvbnN0IGxvZ2dlckZhY3RvcnkgPSBzY3JpYmUuY29uZmlndXJlKHtcblx0XHRhZGFwdGVyOiBuZXcgQ29uc29sZUFkYXB0ZXIoKSxcblx0XHRvcHRpb25zOiB7IGxvZ0xldmVsLCBjdXN0b21MZXZlbHM6IHsgc2lsZW50OiBTSUxFTlRfTEVWRUwgfSB9LFxuXHR9KTtcblx0Y29uc3QgbG9nZ2VyID0gbG9nZ2VyRmFjdG9yeShQTFVHSU5fTkFNRSk7XG5cblx0Y29uc3Qgc2tpcEJ1aWxkID0gb3B0aW9ucz8uc2tpcEJ1aWxkID8/IGZhbHNlO1xuXG5cdGNvbnN0IHRyYW5zcGlsZXIgPSBuZXcgU3djVHJhbnNwaWxlcigpO1xuXHRjb25zdCB3YXJtZWRQcm9qZWN0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXHRjb25zdCB0cmFuc2Zvcm1DYWNoZSA9IG5ldyBNYXA8XG5cdFx0c3RyaW5nLFxuXHRcdHsgY29udGVudDogc3RyaW5nOyByZXN1bHQ6IHsgY29kZTogc3RyaW5nOyBtYXA6IG51bGwgfSB9XG5cdD4oKTtcblxuXHRsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2UgfCBudWxsID0gbnVsbDtcblxuXHRjb25zdCBpbml0V29ya3NwYWNlID0gYXN5bmMgKCkgPT4ge1xuXHRcdGlmICh3b3Jrc3BhY2UgIT09IG51bGwpIHJldHVybjtcblx0XHRsb2dnZXIuZGVidWcoXG5cdFx0XHRgTG9hZGluZyBGb3JnZSB3b3Jrc3BhY2UgKGJ1aWxkQ29uZmlnOiAke2J1aWxkQ29uZmlnfSwgd29ya3NwYWNlUm9vdDogJHt3b3Jrc3BhY2VSb290fSlgLFxuXHRcdCk7XG5cdFx0d29ya3NwYWNlID0gYXdhaXQgV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoe1xuXHRcdFx0Li4uV29ya3NwYWNlRGVmYXVsdHMsXG5cdFx0XHRyb290RGlyOiB3b3Jrc3BhY2VSb290LFxuXHRcdH0pO1xuXHR9O1xuXG5cdGNvbnN0IHByZVdhcm1Qcm9qZWN0ID0gKHByb2plY3Q6IFByb2plY3QpID0+IHtcblx0XHRpZiAod2FybWVkUHJvamVjdHMuaGFzKHByb2plY3QucHJvamVjdERpcmVjdG9yeSkpIHJldHVybjtcblx0XHR3YXJtZWRQcm9qZWN0cy5hZGQocHJvamVjdC5wcm9qZWN0RGlyZWN0b3J5KTtcblx0XHR2b2lkIHRyYW5zcGlsZXJcblx0XHRcdC50cmFuc2Zvcm1Qcm9qZWN0KHByb2plY3QpXG5cdFx0XHQudGhlbigoKSA9PiBsb2dnZXIuZGVidWcoYFByZS13YXJtIGNvbXBsZXRlIGZvciAke3Byb2plY3QubmFtZX1gKSlcblx0XHRcdC5jYXRjaCgoZXJyOiBFcnJvcikgPT5cblx0XHRcdFx0bG9nZ2VyLmVycm9yKGBQcmUtd2FybSBlcnJvciBmb3IgJHtwcm9qZWN0Lm5hbWV9OiAke2Vyci5tZXNzYWdlfWApLFxuXHRcdFx0KTtcblx0fTtcblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IFBMVUdJTl9OQU1FLFxuXHRcdGVuZm9yY2U6IFwicHJlXCIgYXMgY29uc3QsXG5cdFx0Y29uZmlnUmVzb2x2ZWQoKTogdm9pZCB7XG5cdFx0XHRsb2dnZXIuZGVidWcoXCJQbHVnaW4gbG9hZGVkXCIpO1xuXHRcdH0sXG5cdFx0cmVzb2x2ZUlkKHNvdXJjZTogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0XHRpZiAoaW1wb3J0ZXIgIT0gbnVsbCAmJiBzb3VyY2UuZW5kc1dpdGgoXCIuanNcIikgJiYgc291cmNlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG5cdFx0XHRcdGNvbnN0IGltcG9ydGVyRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGltcG9ydGVyKTtcblx0XHRcdFx0Y29uc3Qgd2l0aG91dEV4dGVuc2lvbiA9IHNvdXJjZS5zbGljZSgwLCAtMyk7XG5cdFx0XHRcdGNvbnN0IGNhbmRpZGF0ZXMgPSBUU19FWFRFTlNJT05TLm1hcCgoZXh0KSA9PlxuXHRcdFx0XHRcdHBhdGgucmVzb2x2ZShpbXBvcnRlckRpcmVjdG9yeSwgYCR7d2l0aG91dEV4dGVuc2lvbn0ke2V4dH1gKSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRyZXR1cm4gY2FuZGlkYXRlcy5maW5kKChjKSA9PiBleGlzdHNTeW5jKGMpKSA/PyBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHdhdGNoQ2hhbmdlKGlkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRcdGNvbnN0IGZpbGUgPSBuZXcgRmlsZUV4KHsgZnVsbFBhdGg6IGlkIH0pO1xuXHRcdFx0dHJhbnNmb3JtQ2FjaGUuZGVsZXRlKGlkKTtcblx0XHRcdHRyYW5zcGlsZXIuaW52YWxpZGF0ZUNvbnRlbnRDYWNoZShmaWxlKTtcblx0XHR9LFxuXHRcdGFzeW5jIHRyYW5zZm9ybShcblx0XHRcdGNvZGU6IHN0cmluZyxcblx0XHRcdGlkOiBzdHJpbmcsXG5cdFx0KTogUHJvbWlzZTx7IGNvZGU6IHN0cmluZzsgbWFwOiBzdHJpbmcgfCBudWxsIH0gfCBudWxsPiB7XG5cdFx0XHRpZiAoaWQuaW5jbHVkZXMoXCJub2RlX21vZHVsZXNcIikgfHwgIS9bLl0odHN8dHN4fG10c3xjdHMpJC8udGVzdChpZCkpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IGluaXRXb3Jrc3BhY2UoKTtcblx0XHRcdGNvbnN0IHByb2plY3QgPSBhd2FpdCB3b3Jrc3BhY2U/LmZpbmRQcm9qZWN0KGlkLCBidWlsZENvbmZpZyk7XG5cblx0XHRcdGlmIChwcm9qZWN0ICE9IG51bGwgJiYgIXNraXBCdWlsZCkge1xuXHRcdFx0XHRwcmVXYXJtUHJvamVjdChwcm9qZWN0KTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY2FjaGVkID0gdHJhbnNmb3JtQ2FjaGUuZ2V0KGlkKTtcblx0XHRcdGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCAmJiBjYWNoZWQuY29udGVudCA9PT0gY29kZSkge1xuXHRcdFx0XHRyZXR1cm4gY2FjaGVkLnJlc3VsdDtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZmlsZSA9IG5ldyBGaWxlRXgoeyBmdWxsUGF0aDogaWQsIGNvbnRlbnQ6IGNvZGUgfSk7XG5cdFx0XHRpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Ly8gQ29udGVudCBjaGFuZ2VkIGZvciBhIHByZXZpb3VzbHktc2VlbiBmaWxlIOKAlCBpbnZhbGlkYXRlIHRoZSB0cmFuc3BpbGVyJ3Ncblx0XHRcdFx0Ly8gRklMRV9DT05URU5UIGNhY2hlIHNvIHRoZSBmcmVzaCBjb250ZW50IGZyb20gVml0ZSBpcyB1c2VkLlxuXHRcdFx0XHQvLyBUaGUgVlMgQ29kZSBWaXRlc3QgZXh0ZW5zaW9uIGRpc2FibGVzIFZpdGUncyBjaG9raWRhciB3YXRjaGVyXG5cdFx0XHRcdC8vIChzZXJ2ZXIud2F0Y2g6IG51bGwpIGFuZCBkcml2ZXMgcmUtcnVucyB2aWEgdml0ZXN0LndhdGNoZXIub25GaWxlQ2hhbmdlKCksXG5cdFx0XHRcdC8vIGJ5cGFzc2luZyB3YXRjaENoYW5nZSBlbnRpcmVseSDigJQgc28gd2UgY2Fubm90IHJlbHkgb24gd2F0Y2hDaGFuZ2UgYWxvbmUuXG5cdFx0XHRcdHRyYW5zcGlsZXIuaW52YWxpZGF0ZUNvbnRlbnRDYWNoZShmaWxlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IFtyZXNwb25zZV0gPSBhd2FpdCB0cmFuc3BpbGVyLnRyYW5zZm9ybUZpbGUoZmlsZSwgQnVpbGRUYXJnZXRzLmVzNiwge1xuXHRcdFx0XHRhbGlhc1BhdGhzOiB0cnVlLFxuXHRcdFx0XHR0c0NvbmZpZzogcHJvamVjdCA/IGF3YWl0IHByb2plY3QuZ2V0VHNDb25maWcoKSA6IHVuZGVmaW5lZCxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5vdXRjb21lICE9PSBcInN1Y2Nlc3NcIikgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IHJlc3VsdCA9IHsgY29kZTogcmVzcG9uc2UuY29kZSwgbWFwOiBudWxsIH07XG5cdFx0XHR0cmFuc2Zvcm1DYWNoZS5zZXQoaWQsIHsgY29udGVudDogY29kZSwgcmVzdWx0IH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHR9O1xufVxuIl0sIm5hbWVzIjpbImZvcmdlQnVpbGQiLCJTSUxFTlRfTEVWRUwiLCJQTFVHSU5fTkFNRSIsIlRTX0VYVEVOU0lPTlMiLCJvcHRpb25zIiwiYnVpbGRDb25maWciLCJ3b3Jrc3BhY2VSb290IiwicHJvY2VzcyIsImN3ZCIsImxvZ0xldmVsIiwibG9nZ2VyRmFjdG9yeSIsInNjcmliZSIsImNvbmZpZ3VyZSIsImFkYXB0ZXIiLCJDb25zb2xlQWRhcHRlciIsImN1c3RvbUxldmVscyIsInNpbGVudCIsImxvZ2dlciIsInNraXBCdWlsZCIsInRyYW5zcGlsZXIiLCJTd2NUcmFuc3BpbGVyIiwid2FybWVkUHJvamVjdHMiLCJTZXQiLCJ0cmFuc2Zvcm1DYWNoZSIsIk1hcCIsIndvcmtzcGFjZSIsImluaXRXb3Jrc3BhY2UiLCJkZWJ1ZyIsIldvcmtzcGFjZUZhY3RvcnkiLCJjcmVhdGUiLCJXb3Jrc3BhY2VEZWZhdWx0cyIsInJvb3REaXIiLCJwcmVXYXJtUHJvamVjdCIsInByb2plY3QiLCJoYXMiLCJwcm9qZWN0RGlyZWN0b3J5IiwiYWRkIiwidHJhbnNmb3JtUHJvamVjdCIsInRoZW4iLCJuYW1lIiwiY2F0Y2giLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJlbmZvcmNlIiwiY29uZmlnUmVzb2x2ZWQiLCJyZXNvbHZlSWQiLCJzb3VyY2UiLCJpbXBvcnRlciIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsImltcG9ydGVyRGlyZWN0b3J5IiwicGF0aCIsImRpcm5hbWUiLCJ3aXRob3V0RXh0ZW5zaW9uIiwic2xpY2UiLCJjYW5kaWRhdGVzIiwibWFwIiwiZXh0IiwicmVzb2x2ZSIsImZpbmQiLCJjIiwiZXhpc3RzU3luYyIsIndhdGNoQ2hhbmdlIiwiaWQiLCJmaWxlIiwiRmlsZUV4IiwiZnVsbFBhdGgiLCJkZWxldGUiLCJpbnZhbGlkYXRlQ29udGVudENhY2hlIiwidHJhbnNmb3JtIiwiY29kZSIsImluY2x1ZGVzIiwidGVzdCIsImZpbmRQcm9qZWN0IiwiY2FjaGVkIiwiZ2V0IiwidW5kZWZpbmVkIiwiY29udGVudCIsInJlc3VsdCIsInJlc3BvbnNlIiwidHJhbnNmb3JtRmlsZSIsIkJ1aWxkVGFyZ2V0cyIsImVzNiIsImFsaWFzUGF0aHMiLCJ0c0NvbmZpZyIsImdldFRzQ29uZmlnIiwib3V0Y29tZSIsInNldCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF3QmdCQTs7O2VBQUFBOzs7d0JBeEJXO2lFQUNWO3NCQUVnQjtvQkFDVjt3QkFDZ0I7K0JBQ1Q7aUNBQ0Q7aUNBQ0s7Ozs7OztBQUVsQywrRUFBK0U7QUFDL0UsTUFBTUMsZUFBZTtBQUVyQixNQUFNQyxjQUFjO0FBQ3BCLE1BQU1DLGdCQUFnQjtJQUFDO0lBQU87SUFBUTtDQUFPO0FBVXRDLFNBQVNILFdBQVdJLE9BQTJCO0lBQ3JELE1BQU1DLGNBQWNELFNBQVNDLGVBQWU7SUFDNUMsTUFBTUMsZ0JBQWdCRixTQUFTRSxpQkFBaUJDLFFBQVFDLEdBQUc7SUFDM0QsTUFBTUMsV0FBV0wsU0FBU0ssWUFBWTtJQUN0QyxNQUFNQyxnQkFBZ0JDLGNBQU0sQ0FBQ0MsU0FB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "forgeBuild", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _forgebuildplugin.forgeBuild;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _forgebuildplugin = require("./forge-build.plugin.js");
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL3ZpdGVzdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEZvcmdlQnVpbGRPcHRpb25zIH0gZnJvbSBcIi4vZm9yZ2UtYnVpbGQucGx1Z2luLmpzXCI7XG5leHBvcnQgeyBmb3JnZUJ1aWxkIH0gZnJvbSBcIi4vZm9yZ2UtYnVpbGQucGx1Z2luLmpzXCI7XG4iXSwibmFtZXMiOlsiZm9yZ2VCdWlsZCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFDU0E7OztlQUFBQSw0QkFBVTs7O2tDQUFRIn0=
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get Debug () {
|
|
13
|
+
return Debug;
|
|
14
|
+
},
|
|
15
|
+
get DefaultConfigurations () {
|
|
16
|
+
return DefaultConfigurations;
|
|
17
|
+
},
|
|
18
|
+
get Release () {
|
|
19
|
+
return Release;
|
|
20
|
+
},
|
|
21
|
+
get WorkspaceDefaults () {
|
|
22
|
+
return WorkspaceDefaults;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const _mesh = require("@decohere/mesh");
|
|
26
|
+
const _const = require("./const.js");
|
|
27
|
+
const _buildtargettype = require("./types/build-target.type.js");
|
|
28
|
+
const Debug = {
|
|
29
|
+
name: "debug",
|
|
30
|
+
targets: [
|
|
31
|
+
_buildtargettype.BuildTargets.es6
|
|
32
|
+
],
|
|
33
|
+
aliasPaths: true
|
|
34
|
+
};
|
|
35
|
+
const Release = {
|
|
36
|
+
name: "release",
|
|
37
|
+
pack: true,
|
|
38
|
+
targets: [
|
|
39
|
+
_buildtargettype.BuildTargets.commonjs,
|
|
40
|
+
_buildtargettype.BuildTargets.es6,
|
|
41
|
+
_buildtargettype.BuildTargets.types
|
|
42
|
+
],
|
|
43
|
+
ignore: [
|
|
44
|
+
"**/*.spec.ts",
|
|
45
|
+
"**/*.test.ts",
|
|
46
|
+
"tests/**",
|
|
47
|
+
"e2e/**"
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
const DefaultConfigurations = [
|
|
51
|
+
Debug,
|
|
52
|
+
Release
|
|
53
|
+
];
|
|
54
|
+
const WorkspaceDefaults = {
|
|
55
|
+
rootDir: _mesh.WorkspaceDefaults.rootDir,
|
|
56
|
+
outDir: _mesh.WorkspaceDefaults.outDir,
|
|
57
|
+
includeProjects: _mesh.WorkspaceDefaults.includeProjects,
|
|
58
|
+
ignoreProjects: _mesh.WorkspaceDefaults.ignoreProjects,
|
|
59
|
+
include: [
|
|
60
|
+
"**/*.ts"
|
|
61
|
+
],
|
|
62
|
+
ignore: [
|
|
63
|
+
"**/*.d.ts",
|
|
64
|
+
`**/${_const.NODE_MODULES}/**`
|
|
65
|
+
],
|
|
66
|
+
copyFiles: [
|
|
67
|
+
"package.json",
|
|
68
|
+
"**/*.mjs"
|
|
69
|
+
],
|
|
70
|
+
configurations: DefaultConfigurations
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL3dvcmtzcGFjZS5jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ya3NwYWNlRGVmYXVsdHMgYXMgQmFzZURlZmF1bHRzIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyBOT0RFX01PRFVMRVMgfSBmcm9tIFwiLi9jb25zdC5qc1wiO1xuaW1wb3J0IHsgQnVpbGRUYXJnZXRzIH0gZnJvbSBcIi4vdHlwZXMvYnVpbGQtdGFyZ2V0LnR5cGUuanNcIjtcbmltcG9ydCB0eXBlIHsgRm9yZ2VDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vdHlwZXMvY29uZmlndXJhdGlvbi50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlcy93b3Jrc3BhY2UtY29uZmlnLnR5cGUuanNcIjtcblxuZXhwb3J0IGNvbnN0IERlYnVnOiBGb3JnZUNvbmZpZ3VyYXRpb24gPSB7XG5cdG5hbWU6IFwiZGVidWdcIixcblx0dGFyZ2V0czogW0J1aWxkVGFyZ2V0cy5lczZdLFxuXHRhbGlhc1BhdGhzOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IFJlbGVhc2U6IEZvcmdlQ29uZmlndXJhdGlvbiA9IHtcblx0bmFtZTogXCJyZWxlYXNlXCIsXG5cdHBhY2s6IHRydWUsXG5cdHRhcmdldHM6IFtCdWlsZFRhcmdldHMuY29tbW9uanMsIEJ1aWxkVGFyZ2V0cy5lczYsIEJ1aWxkVGFyZ2V0cy50eXBlc10sXG5cdGlnbm9yZTogW1wiKiovKi5zcGVjLnRzXCIsIFwiKiovKi50ZXN0LnRzXCIsIFwidGVzdHMvKipcIiwgXCJlMmUvKipcIl0sXG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdENvbmZpZ3VyYXRpb25zID0gW0RlYnVnLCBSZWxlYXNlXTtcblxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZURlZmF1bHRzOiBXb3Jrc3BhY2VPcHRpb25zID0ge1xuXHRyb290RGlyOiBCYXNlRGVmYXVsdHMucm9vdERpcixcblx0b3V0RGlyOiBCYXNlRGVmYXVsdHMub3V0RGlyLFxuXHRpbmNsdWRlUHJvamVjdHM6IEJhc2VEZWZhdWx0cy5pbmNsdWRlUHJvamVjdHMsXG5cdGlnbm9yZVByb2plY3RzOiBCYXNlRGVmYXVsdHMuaWdub3JlUHJvamVjdHMsXG5cdGluY2x1ZGU6IFtcIioqLyoudHNcIl0sXG5cdGlnbm9yZTogW1wiKiovKi5kLnRzXCIsIGAqKi8ke05PREVfTU9EVUxFU30vKipgXSxcblx0Y29weUZpbGVzOiBbXCJwYWNrYWdlLmpzb25cIiwgXCIqKi8qLm1qc1wiXSxcblx0Y29uZmlndXJhdGlvbnM6IERlZmF1bHRDb25maWd1cmF0aW9ucyxcbn07XG4iXSwibmFtZXMiOlsiRGVidWciLCJEZWZhdWx0Q29uZmlndXJhdGlvbnMiLCJSZWxlYXNlIiwiV29ya3NwYWNlRGVmYXVsdHMiLCJuYW1lIiwidGFyZ2V0cyIsIkJ1aWxkVGFyZ2V0cyIsImVzNiIsImFsaWFzUGF0aHMiLCJwYWNrIiwiY29tbW9uanMiLCJ0eXBlcyIsImlnbm9yZSIsInJvb3REaXIiLCJCYXNlRGVmYXVsdHMiLCJvdXREaXIiLCJpbmNsdWRlUHJvamVjdHMiLCJpZ25vcmVQcm9qZWN0cyIsImluY2x1ZGUiLCJOT0RFX01PRFVMRVMiLCJjb3B5RmlsZXMiLCJjb25maWd1cmF0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFNYUE7ZUFBQUE7O1FBYUFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFTQUM7ZUFBQUE7OztzQkFyQnFDO3VCQUNyQjtpQ0FDQTtBQUl0QixNQUFNSCxRQUE0QjtJQUN4Q0ksTUFBTTtJQUNOQyxTQUFTO1FBQUNDLDZCQUFZLENBQUNDLEdBQUc7S0FBQztJQUMzQkMsWUFBWTtBQUNiO0FBRU8sTUFBTU4sVUFBOEI7SUFDMUNFLE1BQU07SUFDTkssTUFBTTtJQUNOSixTQUFTO1FBQUNDLDZCQUFZLENBQUNJLFFBQVE7UUFBRUosNkJBQVksQ0FBQ0MsR0FBRztRQUFFRCw2QkFBWSxDQUFDSyxLQUFLO0tBQUM7SUFDdEVDLFFBQVE7UUFBQztRQUFnQjtRQUFnQjtRQUFZO0tBQVM7QUFDL0Q7QUFFTyxNQUFNWCx3QkFBd0I7SUFBQ0Q7SUFBT0U7Q0FBUTtBQUU5QyxNQUFNQyxvQkFBc0M7SUFDbERVLFNBQVNDLHVCQUFZLENBQUNELE9BQU87SUFDN0JFLFFBQVFELHVCQUFZLENBQUNDLE1BQU07SUFDM0JDLGlCQUFpQkYsdUJBQVksQ0FBQ0UsZUFBZTtJQUM3Q0MsZ0JBQWdCSCx1QkFBWSxDQUFDRyxjQUFjO0lBQzNDQyxTQUFTO1FBQUM7S0FBVTtJQUNwQk4sUUFBUTtRQUFDO1FBQWEsQ0FBQyxHQUFHLEVBQUVPLG1CQUFZLENBQUMsR0FBRyxDQUFDO0tBQUM7SUFDOUNDLFdBQVc7UUFBQztRQUFnQjtLQUFXO0lBQ3ZDQyxnQkFBZ0JwQjtBQUNqQiJ9
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
function _ts_metadata(k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
}
|
|
10
|
+
function _ts_param(paramIndex, decorator) {
|
|
11
|
+
return function(target, key) {
|
|
12
|
+
decorator(target, key, paramIndex);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
import { inject, injectable } from "@decohere/crucible/decorators";
|
|
16
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
17
|
+
import { Workspace } from "@decohere/mesh";
|
|
18
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
19
|
+
import { Trace } from "@decohere/nexus/diagnostics";
|
|
20
|
+
import { scribe } from "@decohere/scribe";
|
|
21
|
+
import { ForgeError } from "../errors.js";
|
|
22
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
23
|
+
import { FileWriterService } from "../services/file-writer.service.js";
|
|
24
|
+
import { TransformerKey } from "../types/transformer.type.js";
|
|
25
|
+
export class Build {
|
|
26
|
+
workspace;
|
|
27
|
+
transformers;
|
|
28
|
+
fileWriter;
|
|
29
|
+
#logger = scribe.logger(Build.name);
|
|
30
|
+
constructor(workspace, transformers, fileWriter){
|
|
31
|
+
this.workspace = workspace;
|
|
32
|
+
this.transformers = transformers;
|
|
33
|
+
this.fileWriter = fileWriter;
|
|
34
|
+
if (!transformers || transformers.length === 0) {
|
|
35
|
+
throw new ForgeError("At least one transformer is required");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
run = async (options)=>{
|
|
39
|
+
const { configuration: buildConfig } = options;
|
|
40
|
+
const projects = this.workspace.getProjects(buildConfig);
|
|
41
|
+
void this.fileWriter.warmup([
|
|
42
|
+
...projects
|
|
43
|
+
]);
|
|
44
|
+
const transformResults = await this.build(projects);
|
|
45
|
+
const errors = transformResults.filter((response)=>response.outcome === "failure");
|
|
46
|
+
if (errors.length > 0) {
|
|
47
|
+
const messages = transformResults.map((responses)=>responses.messages).join("\n");
|
|
48
|
+
throw new ForgeError(`Error building: ${messages}`);
|
|
49
|
+
}
|
|
50
|
+
for (const transformer of this.transformers){
|
|
51
|
+
if (transformer.watch && transformer.incrementalTransform$) {
|
|
52
|
+
transformer.watch(this.workspace);
|
|
53
|
+
transformer.incrementalTransform$.subscribe((responses)=>{
|
|
54
|
+
this.fileWriter.enqueueOutputs(responses);
|
|
55
|
+
void this.writeOutput();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return ActionResponse.Success(Build.name, transformResults);
|
|
60
|
+
};
|
|
61
|
+
async build(projectArrayLike) {
|
|
62
|
+
const projects = Array.isArray(projectArrayLike) ? projectArrayLike : [
|
|
63
|
+
projectArrayLike
|
|
64
|
+
];
|
|
65
|
+
for (const project of projects){
|
|
66
|
+
this.#logger.info(`Building ${project.name}`);
|
|
67
|
+
}
|
|
68
|
+
return this.runTransformers(projects);
|
|
69
|
+
}
|
|
70
|
+
async runTransformers(projects, fileFilter) {
|
|
71
|
+
// Phase 1: sequential init — runs expensive setup (e.g. TypeScript createProgram)
|
|
72
|
+
// before any transformer's parallel workload (e.g. SWC/Rayon) starts.
|
|
73
|
+
for (const transformer of this.transformers){
|
|
74
|
+
await transformer.init?.(projects, fileFilter);
|
|
75
|
+
}
|
|
76
|
+
// Phase 2: parallel transform — all transformers run concurrently now that
|
|
77
|
+
// CPU-heavy init is complete.
|
|
78
|
+
const allResponses = (await Promise.all(this.transformers.map((t)=>t.transformProject(projects, fileFilter, (response)=>{
|
|
79
|
+
this.fileWriter.enqueueOutput(response);
|
|
80
|
+
})))).flat();
|
|
81
|
+
await this.writeOutput();
|
|
82
|
+
return allResponses;
|
|
83
|
+
}
|
|
84
|
+
async writeOutput() {
|
|
85
|
+
await this.fileWriter.flush();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
Build = _ts_decorate([
|
|
89
|
+
Trace,
|
|
90
|
+
injectable(),
|
|
91
|
+
_ts_param(1, inject(TransformerKey)),
|
|
92
|
+
_ts_metadata("design:type", Function),
|
|
93
|
+
_ts_metadata("design:paramtypes", [
|
|
94
|
+
typeof Workspace === "undefined" ? Object : Workspace,
|
|
95
|
+
Array,
|
|
96
|
+
typeof FileWriterService === "undefined" ? Object : FileWriterService
|
|
97
|
+
])
|
|
98
|
+
], Build);
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvYnVpbGQuYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgRm9yZ2VFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL3VzZUltcG9ydFR5cGU6IDxEST5cbmltcG9ydCB7IEZpbGVXcml0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtUmVzcG9uc2UgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtLXJlc3BvbnNlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1lcktleSB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIEJ1aWxkT3B0aW9ucyA9IHtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xuXHRmaWxlOiBzdHJpbmc7XG59O1xuXG5AVHJhY2VcbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCdWlsZCBpbXBsZW1lbnRzIEFjdGlvbjxCdWlsZE9wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoQnVpbGQubmFtZSk7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdEBpbmplY3QoVHJhbnNmb3JtZXJLZXkpIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNmb3JtZXJzOiBUcmFuc2Zvcm1lcltdLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgZmlsZVdyaXRlcjogRmlsZVdyaXRlclNlcnZpY2UsXG5cdCkge1xuXHRcdGlmICghdHJhbnNmb3JtZXJzIHx8IHRyYW5zZm9ybWVycy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBGb3JnZUVycm9yKFwiQXQgbGVhc3Qgb25lIHRyYW5zZm9ybWVyIGlzIHJlcXVpcmVkXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBydW4gPSBhc3luYyAob3B0aW9uczogQnVpbGRPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZTxUcmFuc2Zvcm1SZXNwb25zZT4+ID0+IHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb246IGJ1aWxkQ29uZmlnIH0gPSBvcHRpb25zO1xuXHRcdGNvbnN0IHByb2plY3RzID0gdGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMoYnVpbGRDb25maWcpO1xuXHRcdHZvaWQgdGhpcy5maWxlV3JpdGVyLndhcm11cChbLi4ucHJvamVjdHNdKTtcblx0XHRjb25zdCB0cmFuc2Zvcm1SZXN1bHRzID0gYXdhaXQgdGhpcy5idWlsZChwcm9qZWN0cyk7XG5cblx0XHRjb25zdCBlcnJvcnMgPSB0cmFuc2Zvcm1SZXN1bHRzLmZpbHRlcigocmVzcG9uc2UpID0+IHJlc3BvbnNlLm91dGNvbWUgPT09IFwiZmFpbHVyZVwiKTtcblx0XHRpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VzID0gdHJhbnNmb3JtUmVzdWx0cy5tYXAoKHJlc3BvbnNlcykgPT4gcmVzcG9uc2VzLm1lc3NhZ2VzKS5qb2luKFwiXFxuXCIpO1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYEVycm9yIGJ1aWxkaW5nOiAke21lc3NhZ2VzfWApO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdGhpcy50cmFuc2Zvcm1lcnMpIHtcblx0XHRcdGlmICh0cmFuc2Zvcm1lci53YXRjaCAmJiB0cmFuc2Zvcm1lci5pbmNyZW1lbnRhbFRyYW5zZm9ybSQpIHtcblx0XHRcdFx0dHJhbnNmb3JtZXIud2F0Y2godGhpcy53b3Jrc3BhY2UpO1xuXHRcdFx0XHR0cmFuc2Zvcm1lci5pbmNyZW1lbnRhbFRyYW5zZm9ybSQuc3Vic2NyaWJlKChyZXNwb25zZXMpID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpbGVXcml0ZXIuZW5xdWV1ZU91dHB1dHMocmVzcG9uc2VzKTtcblx0XHRcdFx0XHR2b2lkIHRoaXMud3JpdGVPdXRwdXQoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoQnVpbGQubmFtZSwgdHJhbnNmb3JtUmVzdWx0cyk7XG5cdH07XG5cblx0cHVibGljIGFzeW5jIGJ1aWxkKFxuXHRcdHByb2plY3RBcnJheUxpa2U6IHJlYWRvbmx5IFByb2plY3RbXSB8IFByb2plY3QsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGNvbnN0IHByb2plY3RzOiBQcm9qZWN0W10gPSBBcnJheS5pc0FycmF5KHByb2plY3RBcnJheUxpa2UpXG5cdFx0XHQ/IHByb2plY3RBcnJheUxpa2Vcblx0XHRcdDogW3Byb2plY3RBcnJheUxpa2VdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYEJ1aWxkaW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5ydW5UcmFuc2Zvcm1lcnMocHJvamVjdHMpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5UcmFuc2Zvcm1lcnMoXG5cdFx0cHJvamVjdHM6IFByb2plY3QgfCBQcm9qZWN0W10sXG5cdFx0ZmlsZUZpbHRlcj86IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0KSB7XG5cdFx0Ly8gUGhhc2UgMTogc2VxdWVudGlhbCBpbml0IOKAlCBydW5zIGV4cGVuc2l2ZSBzZXR1cCAoZS5nLiBUeXBlU2NyaXB0IGNyZWF0ZVByb2dyYW0pXG5cdFx0Ly8gYmVmb3JlIGFueSB0cmFuc2Zvcm1lcidzIHBhcmFsbGVsIHdvcmtsb2FkIChlLmcuIFNXQy9SYXlvbikgc3RhcnRzLlxuXHRcdGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdGhpcy50cmFuc2Zvcm1lcnMpIHtcblx0XHRcdGF3YWl0IHRyYW5zZm9ybWVyLmluaXQ/Lihwcm9qZWN0cywgZmlsZUZpbHRlcik7XG5cdFx0fVxuXHRcdC8vIFBoYXNlIDI6IHBhcmFsbGVsIHRyYW5zZm9ybSDigJQgYWxsIHRyYW5zZm9ybWVycyBydW4gY29uY3VycmVudGx5IG5vdyB0aGF0XG5cdFx0Ly8gQ1BVLWhlYXZ5IGluaXQgaXMgY29tcGxldGUuXG5cdFx0Y29uc3QgYWxsUmVzcG9uc2VzID0gKFxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtZXJzLm1hcCgodCkgPT5cblx0XHRcdFx0XHR0LnRyYW5zZm9ybVByb2plY3QocHJvamVjdHMsIGZpbGVGaWx0ZXIsIChyZXNwb25zZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5maWxlV3JpdGVyLmVucXVldWVPdXRwdXQocmVzcG9uc2UpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpLFxuXHRcdFx0KVxuXHRcdCkuZmxhdCgpO1xuXHRcdGF3YWl0IHRoaXMud3JpdGVPdXRwdXQoKTtcblx0XHRyZXR1cm4gYWxsUmVzcG9uc2VzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyB3cml0ZU91dHB1dCgpIHtcblx0XHRhd2FpdCB0aGlzLmZpbGVXcml0ZXIuZmx1c2goKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbImluamVjdCIsImluamVjdGFibGUiLCJXb3Jrc3BhY2UiLCJBY3Rpb25SZXNwb25zZSIsIlRyYWNlIiwic2NyaWJlIiwiRm9yZ2VFcnJvciIsIkZpbGVXcml0ZXJTZXJ2aWNlIiwiVHJhbnNmb3JtZXJLZXkiLCJCdWlsZCIsImxvZ2dlciIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJ0cmFuc2Zvcm1lcnMiLCJmaWxlV3JpdGVyIiwibGVuZ3RoIiwicnVuIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZyIsInByb2plY3RzIiwiZ2V0UHJvamVjdHMiLCJ3YXJtdXAiLCJ0cmFuc2Zvcm1SZXN1bHRzIiwiYnVpbGQiLCJlcnJvcnMiLCJmaWx0ZXIiLCJyZXNwb25zZSIsIm91dGNvbWUiLCJtZXNzYWdlcyIsIm1hcCIsInJlc3BvbnNlcyIsImpvaW4iLCJ0cmFuc2Zvcm1lciIsIndhdGNoIiwiaW5jcmVtZW50YWxUcmFuc2Zvcm0kIiwic3Vic2NyaWJlIiwiZW5xdWV1ZU91dHB1dHMiLCJ3cml0ZU91dHB1dCIsIlN1Y2Nlc3MiLCJwcm9qZWN0QXJyYXlMaWtlIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvamVjdCIsImluZm8iLCJydW5UcmFuc2Zvcm1lcnMiLCJmaWxlRmlsdGVyIiwiaW5pdCIsImFsbFJlc3BvbnNlcyIsIlByb21pc2UiLCJhbGwiLCJ0IiwidHJhbnNmb3JtUHJvamVjdCIsImVucXVldWVPdXRwdXQiLCJmbGF0IiwiZmx1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
function _ts_metadata(k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
}
|
|
10
|
+
import { injectable } from "@decohere/crucible/decorators";
|
|
11
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
12
|
+
import { Workspace } from "@decohere/mesh";
|
|
13
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
14
|
+
import { io } from "@decohere/nexus/io";
|
|
15
|
+
import { scribe } from "@decohere/scribe";
|
|
16
|
+
export class Clean {
|
|
17
|
+
workspace;
|
|
18
|
+
#logger = scribe.logger(Clean.name);
|
|
19
|
+
constructor(workspace){
|
|
20
|
+
this.workspace = workspace;
|
|
21
|
+
}
|
|
22
|
+
run = async (options)=>{
|
|
23
|
+
if (!options.clean) {
|
|
24
|
+
this.#logger.info("Skipping clean");
|
|
25
|
+
return ActionResponse.Skipped(Clean.name);
|
|
26
|
+
}
|
|
27
|
+
await Promise.all(this.workspace.getProjects(options.configuration).map(async (proj)=>{
|
|
28
|
+
const outDir = proj.getRootOut();
|
|
29
|
+
await io.removeDir(outDir, {
|
|
30
|
+
force: true,
|
|
31
|
+
recursive: true
|
|
32
|
+
});
|
|
33
|
+
this.#logger.trace(`Cleaned ${outDir}`);
|
|
34
|
+
}));
|
|
35
|
+
return ActionResponse.Success(Clean.name);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
Clean = _ts_decorate([
|
|
39
|
+
injectable(),
|
|
40
|
+
_ts_metadata("design:type", Function),
|
|
41
|
+
_ts_metadata("design:paramtypes", [
|
|
42
|
+
typeof Workspace === "undefined" ? Object : Workspace
|
|
43
|
+
])
|
|
44
|
+
], Clean);
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvY2xlYW4uYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL3VzZUltcG9ydFR5cGU6IDxEST5cbmltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuXG5leHBvcnQgdHlwZSBDbGVhbk9wdGlvbnMgPSB7XG5cdGNsZWFuOiBib29sZWFuO1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG59O1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xlYW4gaW1wbGVtZW50cyBBY3Rpb248Q2xlYW5PcHRpb25zPiB7XG5cdCNsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENsZWFuLm5hbWUpO1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSkge31cblxuXHRwdWJsaWMgcnVuID0gYXN5bmMgKG9wdGlvbnM6IENsZWFuT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+ID0+IHtcblx0XHRpZiAoIW9wdGlvbnMuY2xlYW4pIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiU2tpcHBpbmcgY2xlYW5cIik7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU2tpcHBlZChDbGVhbi5uYW1lKTtcblx0XHR9XG5cblx0XHRhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHRoaXMud29ya3NwYWNlLmdldFByb2plY3RzKG9wdGlvbnMuY29uZmlndXJhdGlvbikubWFwKGFzeW5jIChwcm9qKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG91dERpciA9IHByb2ouZ2V0Um9vdE91dCgpO1xuXHRcdFx0XHRhd2FpdCBpby5yZW1vdmVEaXIob3V0RGlyLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG5cdFx0XHRcdHRoaXMuI2xvZ2dlci50cmFjZShgQ2xlYW5lZCAke291dERpcn1gKTtcblx0XHRcdH0pLFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU3VjY2VzcyhDbGVhbi5uYW1lKTtcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJpbyIsInNjcmliZSIsIkNsZWFuIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJjbGVhbiIsImluZm8iLCJTa2lwcGVkIiwiUHJvbWlzZSIsImFsbCIsImdldFByb2plY3RzIiwiY29uZmlndXJhdGlvbiIsIm1hcCIsInByb2oiLCJvdXREaXIiLCJnZXRSb290T3V0IiwicmVtb3ZlRGlyIiwiZm9yY2UiLCJyZWN1cnNpdmUiLCJ0cmFjZSIsIlN1Y2Nlc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFVBQVUsUUFBUSxnQ0FBZ0M7QUFDM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxFQUFFLFFBQVEscUJBQXFCO0FBQ3hDLFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFRMUMsT0FBTyxNQUFNQzs7SUFDWixDQUFBLE1BQU8sR0FBR0QsT0FBT0UsTUFBTSxDQUFDRCxNQUFNRSxJQUFJLEVBQUU7SUFDcEMsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRXBEQyxNQUFNLE9BQU9DO1FBQ25CLElBQUksQ0FBQ0EsUUFBUUMsS0FBSyxFQUFFO1lBQ25CLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCLE9BQU9WLGVBQWVXLE9BQU8sQ0FBQ1IsTUFBTUUsSUFBSTtRQUN6QztRQUVBLE1BQU1PLFFBQVFDLEdBQUcsQ0FDaEIsSUFBSSxDQUFDUCxTQUFTLENBQUNRLFdBQVcsQ0FBQ04sUUFBUU8sYUFBYSxFQUFFQyxHQUFHLENBQUMsT0FBT0M7WUFDNUQsTUFBTUMsU0FBU0QsS0FBS0UsVUFBVTtZQUM5QixNQUFNbEIsR0FBR21CLFNBQVMsQ0FBQ0YsUUFBUTtnQkFBRUcsT0FBTztnQkFBTUMsV0FBVztZQUFLO1lBQzFELElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFTCxRQUFRO1FBQ3ZDO1FBR0QsT0FBT2xCLGVBQWV3QixPQUFPLENBQUNyQixNQUFNRSxJQUFJO0lBQ3pDLEVBQUU7QUFDSCJ9
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
function _ts_metadata(k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
}
|
|
10
|
+
import { injectable } from "@decohere/crucible/decorators";
|
|
11
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
12
|
+
import { Workspace } from "@decohere/mesh";
|
|
13
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
14
|
+
import { Git } from "@decohere/nexus/interop";
|
|
15
|
+
import { scribe } from "@decohere/scribe";
|
|
16
|
+
import { formatUnknownError } from "../errors.js";
|
|
17
|
+
import { Release } from "../workspace.config.js";
|
|
18
|
+
const KnownLockFiles = [
|
|
19
|
+
"pnpm-lock.yaml"
|
|
20
|
+
];
|
|
21
|
+
export class CommitFiles {
|
|
22
|
+
workspace;
|
|
23
|
+
#logger = scribe.logger(CommitFiles.name);
|
|
24
|
+
#git = new Git();
|
|
25
|
+
constructor(workspace){
|
|
26
|
+
this.workspace = workspace;
|
|
27
|
+
}
|
|
28
|
+
async run(options) {
|
|
29
|
+
if (!options.commit) {
|
|
30
|
+
return ActionResponse.Skipped(CommitFiles.name);
|
|
31
|
+
}
|
|
32
|
+
if (options.dryRun) {
|
|
33
|
+
this.#logger.info("[dry-run] Skipping commit");
|
|
34
|
+
return ActionResponse.Skipped(CommitFiles.name);
|
|
35
|
+
}
|
|
36
|
+
const files = options.files ?? this.getDefaultFiles(options.configuration ?? Release.name);
|
|
37
|
+
if (files.length === 0) {
|
|
38
|
+
this.#logger.info("No files provided for commit, skipping");
|
|
39
|
+
return ActionResponse.Skipped(CommitFiles.name);
|
|
40
|
+
}
|
|
41
|
+
const message = options.message ?? "chore: sync workspace package manifests [skip ci]";
|
|
42
|
+
this.#logger.info(`Committing synced manifests: ${message}`);
|
|
43
|
+
try {
|
|
44
|
+
await this.#git.commit(message, {
|
|
45
|
+
files
|
|
46
|
+
});
|
|
47
|
+
return ActionResponse.Success(CommitFiles.name);
|
|
48
|
+
} catch (reason) {
|
|
49
|
+
return ActionResponse.Error(CommitFiles.name, `Failed committing files: ${formatUnknownError(reason)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
getDefaultFiles(configuration) {
|
|
53
|
+
const manifestFiles = [
|
|
54
|
+
this.workspace.packageJsonPath,
|
|
55
|
+
...this.workspace.getProjects(configuration).map((project)=>project.packageJsonPath)
|
|
56
|
+
];
|
|
57
|
+
return [
|
|
58
|
+
...manifestFiles,
|
|
59
|
+
...KnownLockFiles
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
CommitFiles = _ts_decorate([
|
|
64
|
+
injectable(),
|
|
65
|
+
_ts_metadata("design:type", Function),
|
|
66
|
+
_ts_metadata("design:paramtypes", [
|
|
67
|
+
typeof Workspace === "undefined" ? Object : Workspace
|
|
68
|
+
])
|
|
69
|
+
], CommitFiles);
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvY29tbWl0LmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEdpdCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IGZvcm1hdFVua25vd25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbmltcG9ydCB7IFJlbGVhc2UgfSBmcm9tIFwiLi4vd29ya3NwYWNlLmNvbmZpZy5qc1wiO1xuXG5leHBvcnQgdHlwZSBDb21taXRGaWxlc09wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb24/OiBzdHJpbmc7XG5cdGNvbW1pdD86IGJvb2xlYW47XG5cdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdGZpbGVzPzogc3RyaW5nW107XG5cdGRyeVJ1bj86IGJvb2xlYW47XG59O1xuXG5jb25zdCBLbm93bkxvY2tGaWxlcyA9IFtcInBucG0tbG9jay55YW1sXCJdO1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbWl0RmlsZXMgaW1wbGVtZW50cyBBY3Rpb248Q29tbWl0RmlsZXNPcHRpb25zPiB7XG5cdCNsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENvbW1pdEZpbGVzLm5hbWUpO1xuXHQjZ2l0ID0gbmV3IEdpdCgpO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogQ29tbWl0RmlsZXNPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4ge1xuXHRcdGlmICghb3B0aW9ucy5jb21taXQpIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5Ta2lwcGVkKENvbW1pdEZpbGVzLm5hbWUpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmRyeVJ1bikge1xuXHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oXCJbZHJ5LXJ1bl0gU2tpcHBpbmcgY29tbWl0XCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlNraXBwZWQoQ29tbWl0RmlsZXMubmFtZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsZXMgPSBvcHRpb25zLmZpbGVzID8/IHRoaXMuZ2V0RGVmYXVsdEZpbGVzKG9wdGlvbnMuY29uZmlndXJhdGlvbiA/PyBSZWxlYXNlLm5hbWUpO1xuXHRcdGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiTm8gZmlsZXMgcHJvdmlkZWQgZm9yIGNvbW1pdCwgc2tpcHBpbmdcIik7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU2tpcHBlZChDb21taXRGaWxlcy5uYW1lKTtcblx0XHR9XG5cblx0XHRjb25zdCBtZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlID8/IFwiY2hvcmU6IHN5bmMgd29ya3NwYWNlIHBhY2thZ2UgbWFuaWZlc3RzIFtza2lwIGNpXVwiO1xuXHRcdHRoaXMuI2xvZ2dlci5pbmZvKGBDb21taXR0aW5nIHN5bmNlZCBtYW5pZmVzdHM6ICR7bWVzc2FnZX1gKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLiNnaXQuY29tbWl0KG1lc3NhZ2UsIHsgZmlsZXMgfSk7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU3VjY2VzcyhDb21taXRGaWxlcy5uYW1lKTtcblx0XHR9IGNhdGNoIChyZWFzb24pIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihcblx0XHRcdFx0Q29tbWl0RmlsZXMubmFtZSxcblx0XHRcdFx0YEZhaWxlZCBjb21taXR0aW5nIGZpbGVzOiAke2Zvcm1hdFVua25vd25FcnJvcihyZWFzb24pfWAsXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0RGVmYXVsdEZpbGVzKGNvbmZpZ3VyYXRpb246IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBtYW5pZmVzdEZpbGVzID0gW1xuXHRcdFx0dGhpcy53b3Jrc3BhY2UucGFja2FnZUpzb25QYXRoLFxuXHRcdFx0Li4udGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMoY29uZmlndXJhdGlvbikubWFwKChwcm9qZWN0KSA9PiBwcm9qZWN0LnBhY2thZ2VKc29uUGF0aCksXG5cdFx0XTtcblxuXHRcdHJldHVybiBbLi4ubWFuaWZlc3RGaWxlcywgLi4uS25vd25Mb2NrRmlsZXNdO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiaW5qZWN0YWJsZSIsIldvcmtzcGFjZSIsIkFjdGlvblJlc3BvbnNlIiwiR2l0Iiwic2NyaWJlIiwiZm9ybWF0VW5rbm93bkVycm9yIiwiUmVsZWFzZSIsIktub3duTG9ja0ZpbGVzIiwiQ29tbWl0RmlsZXMiLCJsb2dnZXIiLCJuYW1lIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImNvbW1pdCIsIlNraXBwZWQiLCJkcnlSdW4iLCJpbmZvIiwiZmlsZXMiLCJnZXREZWZhdWx0RmlsZXMiLCJjb25maWd1cmF0aW9uIiwibGVuZ3RoIiwibWVzc2FnZSIsIlN1Y2Nlc3MiLCJyZWFzb24iLCJFcnJvciIsIm1hbmlmZXN0RmlsZXMiLCJwYWNrYWdlSnNvblBhdGgiLCJnZXRQcm9qZWN0cyIsIm1hcCIsInByb2plY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFVBQVUsUUFBUSxnQ0FBZ0M7QUFDM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxHQUFHLFFBQVEsMEJBQTBCO0FBQzlDLFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFDMUMsU0FBU0Msa0JBQWtCLFFBQVEsZUFBZTtBQUNsRCxTQUFTQyxPQUFPLFFBQVEseUJBQXlCO0FBVWpELE1BQU1DLGlCQUFpQjtJQUFDO0NBQWlCO0FBR3pDLE9BQU8sTUFBTUM7O0lBQ1osQ0FBQSxNQUFPLEdBQUdKLE9BQU9LLE1BQU0sQ0FBQ0QsWUFBWUUsSUFBSSxFQUFFO0lBQzFDLENBQUEsR0FBSSxHQUFHLElBQUlQLE1BQU07SUFFakIsWUFBbUIsQUFBaUJRLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQTJCLEVBQTJCO1FBQ3RFLElBQUksQ0FBQ0EsUUFBUUMsTUFBTSxFQUFFO1lBQ3BCLE9BQU9aLGVBQWVhLE9BQU8sQ0FBQ1AsWUFBWUUsSUFBSTtRQUMvQztRQUVBLElBQUlHLFFBQVFHLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNDLElBQUksQ0FBQztZQUNsQixPQUFPZixlQUFlYSxPQUFPLENBQUNQLFlBQVlFLElBQUk7UUFDL0M7UUFFQSxNQUFNUSxRQUFRTCxRQUFRSyxLQUFLLElBQUksSUFBSSxDQUFDQyxlQUFlLENBQUNOLFFBQVFPLGFBQWEsSUFBSWQsUUFBUUksSUFBSTtRQUN6RixJQUFJUSxNQUFNRyxNQUFNLEtBQUssR0FBRztZQUN2QixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNKLElBQUksQ0FBQztZQUNsQixPQUFPZixlQUFlYSxPQUFPLENBQUNQLFlBQVlFLElBQUk7UUFDL0M7UUFFQSxNQUFNWSxVQUFVVCxRQUFRUyxPQUFPLElBQUk7UUFDbkMsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDTCxJQUFJLENBQUMsQ0FBQyw2QkFBNkIsRUFBRUssU0FBUztRQUUzRCxJQUFJO1lBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUNSLE1BQU0sQ0FBQ1EsU0FBUztnQkFBRUo7WUFBTTtZQUN4QyxPQUFPaEIsZUFBZXFCLE9BQU8sQ0FBQ2YsWUFBWUUsSUFBSTtRQUMvQyxFQUFFLE9BQU9jLFFBQVE7WUFDaEIsT0FBT3RCLGVBQWV1QixLQUFLLENBQzFCakIsWUFBWUUsSUFBSSxFQUNoQixDQUFDLHlCQUF5QixFQUFFTCxtQkFBbUJtQixTQUFTO1FBRTFEO0lBQ0Q7SUFFUUwsZ0JBQWdCQyxhQUFxQixFQUFZO1FBQ3hELE1BQU1NLGdCQUFnQjtZQUNyQixJQUFJLENBQUNmLFNBQVMsQ0FBQ2dCLGVBQWU7ZUFDM0IsSUFBSSxDQUFDaEIsU0FBUyxDQUFDaUIsV0FBVyxDQUFDUixlQUFlUyxHQUFHLENBQUMsQ0FBQ0MsVUFBWUEsUUFBUUgsZUFBZTtTQUNyRjtRQUVELE9BQU87ZUFBSUQ7ZUFBa0JuQjtTQUFlO0lBQzdDO0FBQ0QifQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
function _ts_metadata(k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
}
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { injectable } from "@decohere/crucible/decorators";
|
|
12
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
13
|
+
import { Workspace } from "@decohere/mesh";
|
|
14
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
15
|
+
import { io } from "@decohere/nexus/io";
|
|
16
|
+
import { retry } from "@decohere/nexus/system";
|
|
17
|
+
import { scribe } from "@decohere/scribe";
|
|
18
|
+
const COPY_RETRY_ATTEMPTS = 3;
|
|
19
|
+
const COPY_RETRY_DELAY_MS = 25;
|
|
20
|
+
export class Copy {
|
|
21
|
+
workspace;
|
|
22
|
+
#logger = scribe.logger(Copy.name);
|
|
23
|
+
constructor(workspace){
|
|
24
|
+
this.workspace = workspace;
|
|
25
|
+
}
|
|
26
|
+
run = async (options)=>{
|
|
27
|
+
if (!options.copy) {
|
|
28
|
+
this.#logger.info("Skipping copy");
|
|
29
|
+
return ActionResponse.Skipped(Copy.name);
|
|
30
|
+
}
|
|
31
|
+
await Promise.all(this.workspace.getProjects(options.configuration).map(async (proj)=>{
|
|
32
|
+
const outDir = proj.getOutDir();
|
|
33
|
+
const pattern = proj.copyFiles;
|
|
34
|
+
const files = await io.findFiles(pattern, {
|
|
35
|
+
cwd: proj.projectDirectory
|
|
36
|
+
});
|
|
37
|
+
await Promise.all(files.map((file)=>this.copyFileToOut(file, outDir)));
|
|
38
|
+
}));
|
|
39
|
+
return ActionResponse.Success(Copy.name);
|
|
40
|
+
};
|
|
41
|
+
async copyFileToOut(file, outDir) {
|
|
42
|
+
const dest = path.join(outDir, file.relativePath);
|
|
43
|
+
await io.copyFile(file.fullPath, dest, {
|
|
44
|
+
mkdir: true
|
|
45
|
+
});
|
|
46
|
+
this.#logger.trace(`Copied ${file.fullPath} -> ${dest}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
_ts_decorate([
|
|
50
|
+
retry({
|
|
51
|
+
attempts: COPY_RETRY_ATTEMPTS,
|
|
52
|
+
delayMs: COPY_RETRY_DELAY_MS
|
|
53
|
+
}),
|
|
54
|
+
_ts_metadata("design:type", Function),
|
|
55
|
+
_ts_metadata("design:paramtypes", [
|
|
56
|
+
typeof FileEx === "undefined" ? Object : FileEx,
|
|
57
|
+
String
|
|
58
|
+
]),
|
|
59
|
+
_ts_metadata("design:returntype", Promise)
|
|
60
|
+
], Copy.prototype, "copyFileToOut", null);
|
|
61
|
+
Copy = _ts_decorate([
|
|
62
|
+
injectable(),
|
|
63
|
+
_ts_metadata("design:type", Function),
|
|
64
|
+
_ts_metadata("design:paramtypes", [
|
|
65
|
+
typeof Workspace === "undefined" ? Object : Workspace
|
|
66
|
+
])
|
|
67
|
+
], Copy);
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvY29weS5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyB0eXBlIEZpbGVFeCwgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvc3lzdGVtXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuXG5jb25zdCBDT1BZX1JFVFJZX0FUVEVNUFRTID0gMztcbmNvbnN0IENPUFlfUkVUUllfREVMQVlfTVMgPSAyNTtcblxuZXhwb3J0IHR5cGUgQ29weU9wdGlvbnMgPSB7XG5cdGNvcHk6IGJvb2xlYW47XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3B5IGltcGxlbWVudHMgQWN0aW9uPENvcHlPcHRpb25zPiB7XG5cdCNsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENvcHkubmFtZSk7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBydW4gPSBhc3luYyAob3B0aW9uczogQ29weU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiA9PiB7XG5cdFx0aWYgKCFvcHRpb25zLmNvcHkpIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiU2tpcHBpbmcgY29weVwiKTtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5Ta2lwcGVkKENvcHkubmFtZSk7XG5cdFx0fVxuXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHR0aGlzLndvcmtzcGFjZS5nZXRQcm9qZWN0cyhvcHRpb25zLmNvbmZpZ3VyYXRpb24pLm1hcChhc3luYyAocHJvaikgPT4ge1xuXHRcdFx0XHRjb25zdCBvdXREaXIgPSBwcm9qLmdldE91dERpcigpO1xuXHRcdFx0XHRjb25zdCBwYXR0ZXJuID0gcHJvai5jb3B5RmlsZXM7XG5cdFx0XHRcdGNvbnN0IGZpbGVzID0gYXdhaXQgaW8uZmluZEZpbGVzKHBhdHRlcm4sIHsgY3dkOiBwcm9qLnByb2plY3REaXJlY3RvcnkgfSk7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcCgoZmlsZSkgPT4gdGhpcy5jb3B5RmlsZVRvT3V0KGZpbGUsIG91dERpcikpKTtcblx0XHRcdH0pLFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU3VjY2VzcyhDb3B5Lm5hbWUpO1xuXHR9O1xuXG5cdEByZXRyeSh7IGF0dGVtcHRzOiBDT1BZX1JFVFJZX0FUVEVNUFRTLCBkZWxheU1zOiBDT1BZX1JFVFJZX0RFTEFZX01TIH0pXG5cdHByaXZhdGUgYXN5bmMgY29weUZpbGVUb091dChmaWxlOiBGaWxlRXgsIG91dERpcjogc3RyaW5nKSB7XG5cdFx0Y29uc3QgZGVzdCA9IHBhdGguam9pbihvdXREaXIsIGZpbGUucmVsYXRpdmVQYXRoKTtcblx0XHRhd2FpdCBpby5jb3B5RmlsZShmaWxlLmZ1bGxQYXRoLCBkZXN0LCB7IG1rZGlyOiB0cnVlIH0pO1xuXHRcdHRoaXMuI2xvZ2dlci50cmFjZShgQ29waWVkICR7ZmlsZS5mdWxsUGF0aH0gLT4gJHtkZXN0fWApO1xuXHR9XG59XG4iXSwibmFtZXMiOlsicGF0aCIsImluamVjdGFibGUiLCJXb3Jrc3BhY2UiLCJBY3Rpb25SZXNwb25zZSIsImlvIiwicmV0cnkiLCJzY3JpYmUiLCJDT1BZX1JFVFJZX0FUVEVNUFRTIiwiQ09QWV9SRVRSWV9ERUxBWV9NUyIsIkNvcHkiLCJsb2dnZXIiLCJuYW1lIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImNvcHkiLCJpbmZvIiwiU2tpcHBlZCIsIlByb21pc2UiLCJhbGwiLCJnZXRQcm9qZWN0cyIsImNvbmZpZ3VyYXRpb24iLCJtYXAiLCJwcm9qIiwib3V0RGlyIiwiZ2V0T3V0RGlyIiwicGF0dGVybiIsImNvcHlGaWxlcyIsImZpbGVzIiwiZmluZEZpbGVzIiwiY3dkIiwicHJvamVjdERpcmVjdG9yeSIsImZpbGUiLCJjb3B5RmlsZVRvT3V0IiwiU3VjY2VzcyIsImRlc3QiLCJqb2luIiwicmVsYXRpdmVQYXRoIiwiY29weUZpbGUiLCJmdWxsUGF0aCIsIm1rZGlyIiwidHJhY2UiLCJhdHRlbXB0cyIsImRlbGF5TXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLFVBQVUsWUFBWTtBQUM3QixTQUFTQyxVQUFVLFFBQVEsZ0NBQWdDO0FBQzNELDhDQUE4QztBQUM5QyxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDLFNBQVNDLGNBQWMsUUFBUSxzQkFBc0I7QUFDckQsU0FBc0JDLEVBQUUsUUFBUSxxQkFBcUI7QUFDckQsU0FBU0MsS0FBSyxRQUFRLHlCQUF5QjtBQUMvQyxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBRTFDLE1BQU1DLHNCQUFzQjtBQUM1QixNQUFNQyxzQkFBc0I7QUFRNUIsT0FBTyxNQUFNQzs7SUFDWixDQUFBLE1BQU8sR0FBR0gsT0FBT0ksTUFBTSxDQUFDRCxLQUFLRSxJQUFJLEVBQUU7SUFDbkMsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRXBEQyxNQUFNLE9BQU9DO1FBQ25CLElBQUksQ0FBQ0EsUUFBUUMsSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCLE9BQU9iLGVBQWVjLE9BQU8sQ0FBQ1IsS0FBS0UsSUFBSTtRQUN4QztRQUVBLE1BQU1PLFFBQVFDLEdBQUcsQ0FDaEIsSUFBSSxDQUFDUCxTQUFTLENBQUNRLFdBQVcsQ0FBQ04sUUFBUU8sYUFBYSxFQUFFQyxHQUFHLENBQUMsT0FBT0M7WUFDNUQsTUFBTUMsU0FBU0QsS0FBS0UsU0FBUztZQUM3QixNQUFNQyxVQUFVSCxLQUFLSSxTQUFTO1lBQzlCLE1BQU1DLFFBQVEsTUFBTXhCLEdBQUd5QixTQUFTLENBQUNILFNBQVM7Z0JBQUVJLEtBQUtQLEtBQUtRLGdCQUFnQjtZQUFDO1lBQ3ZFLE1BQU1iLFFBQVFDLEdBQUcsQ0FBQ1MsTUFBTU4sR0FBRyxDQUFDLENBQUNVLE9BQVMsSUFBSSxDQUFDQyxhQUFhLENBQUNELE1BQU1SO1FBQ2hFO1FBR0QsT0FBT3JCLGVBQWUrQixPQUFPLENBQUN6QixLQUFLRSxJQUFJO0lBQ3hDLEVBQUU7SUFFRixNQUNjc0IsY0FBY0QsSUFBWSxFQUFFUixNQUFjLEVBQUU7UUFDekQsTUFBTVcsT0FBT25DLEtBQUtvQyxJQUFJLENBQUNaLFFBQVFRLEtBQUtLLFlBQVk7UUFDaEQsTUFBTWpDLEdBQUdrQyxRQUFRLENBQUNOLEtBQUtPLFFBQVEsRUFBRUosTUFBTTtZQUFFSyxPQUFPO1FBQUs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUVULEtBQUtPLFFBQVEsQ0FBQyxJQUFJLEVBQUVKLE1BQU07SUFDeEQ7QUFDRDs7O1FBTlVPLFVBQVVuQztRQUFxQm9DLFNBQVNuQyJ9
|