@decohere/forge 0.0.1-dev.10
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 +87 -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 +94 -0
- package/commonjs/src/factories/swc-config.factory.js +98 -0
- package/commonjs/src/forge.module.js +109 -0
- package/commonjs/src/index.js +43 -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 +228 -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 +63 -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 +73 -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 +79 -0
- package/es6/src/factories/swc-config.factory.js +83 -0
- package/es6/src/forge.module.js +58 -0
- package/es6/src/index.js +7 -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 +213 -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 +39 -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 +17 -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 +9 -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 +34 -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,78 @@
|
|
|
1
|
+
import { CommandResponse, ConfigurationOption, DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
+
import { CommitFiles } from "../actions/commit.action.js";
|
|
3
|
+
import { ReportDependencies } from "../actions/dependency-report.action.js";
|
|
4
|
+
import { SyncDependencies as DependencySync } from "../actions/dependency-sync.action.js";
|
|
5
|
+
import { SyncLockFile } from "../actions/sync-lock-file.action.js";
|
|
6
|
+
import { Release } from "../workspace.config.js";
|
|
7
|
+
export class DependencyCommand extends DecohereCommand {
|
|
8
|
+
constructor(name, handler){
|
|
9
|
+
super(name ?? DependencyCommand);
|
|
10
|
+
this.description("Analyze and sync workspace dependencies");
|
|
11
|
+
this.addOption(new ConfigurationOption("release"));
|
|
12
|
+
this.registerSubcommand(ReportCommand, handler);
|
|
13
|
+
this.registerSubcommand(SyncCommand, handler);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class SyncCommand extends DecohereCommand {
|
|
17
|
+
get actions() {
|
|
18
|
+
return [
|
|
19
|
+
DependencySync,
|
|
20
|
+
SyncLockFile,
|
|
21
|
+
CommitFiles
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
constructor(){
|
|
25
|
+
super(SyncCommand);
|
|
26
|
+
this.description("Sync workspace dependency manifests");
|
|
27
|
+
this.option("--log-diff", "Log what changed in each project's dependencies after syncing", false);
|
|
28
|
+
this.option("--no-sync", "Skip lockfile sync after syncing dependencies", true);
|
|
29
|
+
this.option("--commit", "Commit synced workspace manifest changes", false);
|
|
30
|
+
this.option("--message <message>", "Commit message (used with --commit)");
|
|
31
|
+
}
|
|
32
|
+
async run(actions, options) {
|
|
33
|
+
const responses = {};
|
|
34
|
+
const configuration = typeof options.configuration === "string" ? options.configuration : Release.name;
|
|
35
|
+
const syncDependencyOptions = {
|
|
36
|
+
configuration,
|
|
37
|
+
logDiff: options.logDiff === true
|
|
38
|
+
};
|
|
39
|
+
const syncLockOptions = {
|
|
40
|
+
sync: options.sync !== false,
|
|
41
|
+
dryRun: options.dryRun === true
|
|
42
|
+
};
|
|
43
|
+
const commitOptions = {
|
|
44
|
+
configuration,
|
|
45
|
+
commit: options.commit === true,
|
|
46
|
+
dryRun: options.dryRun === true,
|
|
47
|
+
message: typeof options.message === "string" ? options.message : undefined
|
|
48
|
+
};
|
|
49
|
+
responses.syncDependencies = await actions.syncDependencies.run(syncDependencyOptions);
|
|
50
|
+
this.throwOnErrors({
|
|
51
|
+
syncDependencies: responses.syncDependencies
|
|
52
|
+
});
|
|
53
|
+
responses.syncLockFile = await actions.syncLockFile.run(syncLockOptions);
|
|
54
|
+
this.throwOnErrors({
|
|
55
|
+
syncLockFile: responses.syncLockFile
|
|
56
|
+
});
|
|
57
|
+
responses.commitFiles = await actions.commitFiles.run(commitOptions);
|
|
58
|
+
this.throwOnErrors({
|
|
59
|
+
commitFiles: responses.commitFiles
|
|
60
|
+
});
|
|
61
|
+
return CommandResponse.success(options, responses);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
class ReportCommand extends DecohereCommand {
|
|
65
|
+
get actions() {
|
|
66
|
+
return [
|
|
67
|
+
ReportDependencies
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
constructor(){
|
|
71
|
+
super(ReportCommand);
|
|
72
|
+
this.description("Report resolved dependencies for workspace projects");
|
|
73
|
+
this.option("--file <file>", "Optional file path to write the report to");
|
|
74
|
+
this.option("--fail-on-drift", "Exit with an error if resolved dependencies differ from what is declared in package.json", false);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9kZXBlbmRlbmN5LmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kSGFuZGxlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBDb21tYW5kUmVzcG9uc2UsIENvbmZpZ3VyYXRpb25PcHRpb24sIERlY29oZXJlQ29tbWFuZCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEZpbGVzT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL2NvbW1pdC5hY3Rpb24uanNcIjtcbmltcG9ydCB7IENvbW1pdEZpbGVzIH0gZnJvbSBcIi4uL2FjdGlvbnMvY29tbWl0LmFjdGlvbi5qc1wiO1xuaW1wb3J0IHsgUmVwb3J0RGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2FjdGlvbnMvZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IERlcGVuZGVuY2llc09wdGlvbnMgfSBmcm9tIFwiLi4vYWN0aW9ucy9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBTeW5jRGVwZW5kZW5jaWVzIGFzIERlcGVuZGVuY3lTeW5jIH0gZnJvbSBcIi4uL2FjdGlvbnMvZGVwZW5kZW5jeS1zeW5jLmFjdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTeW5jTG9ja0ZpbGVPcHRpb25zIH0gZnJvbSBcIi4uL2FjdGlvbnMvc3luYy1sb2NrLWZpbGUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBTeW5jTG9ja0ZpbGUgfSBmcm9tIFwiLi4vYWN0aW9ucy9zeW5jLWxvY2stZmlsZS5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFJlbGVhc2UgfSBmcm9tIFwiLi4vd29ya3NwYWNlLmNvbmZpZy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jeUNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZT86IHN0cmluZywgaGFuZGxlcj86IENvbW1hbmRIYW5kbGVyKSB7XG5cdFx0c3VwZXIobmFtZSA/PyBEZXBlbmRlbmN5Q29tbWFuZCk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIkFuYWx5emUgYW5kIHN5bmMgd29ya3NwYWNlIGRlcGVuZGVuY2llc1wiKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcInJlbGVhc2VcIikpO1xuXHRcdHRoaXMucmVnaXN0ZXJTdWJjb21tYW5kKFJlcG9ydENvbW1hbmQsIGhhbmRsZXIpO1xuXHRcdHRoaXMucmVnaXN0ZXJTdWJjb21tYW5kKFN5bmNDb21tYW5kLCBoYW5kbGVyKTtcblx0fVxufVxuXG50eXBlIFN5bmNBY3Rpb25zID0ge1xuXHRzeW5jRGVwZW5kZW5jaWVzOiBEZXBlbmRlbmN5U3luYztcblx0c3luY0xvY2tGaWxlOiBTeW5jTG9ja0ZpbGU7XG5cdGNvbW1pdEZpbGVzOiBDb21taXRGaWxlcztcbn07XG5cbmNsYXNzIFN5bmNDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kPFN5bmNBY3Rpb25zPiB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW0RlcGVuZGVuY3lTeW5jLCBTeW5jTG9ja0ZpbGUsIENvbW1pdEZpbGVzXTtcblx0fVxuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcihTeW5jQ29tbWFuZCk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIlN5bmMgd29ya3NwYWNlIGRlcGVuZGVuY3kgbWFuaWZlc3RzXCIpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLWxvZy1kaWZmXCIsXG5cdFx0XHRcIkxvZyB3aGF0IGNoYW5nZWQgaW4gZWFjaCBwcm9qZWN0J3MgZGVwZW5kZW5jaWVzIGFmdGVyIHN5bmNpbmdcIixcblx0XHRcdGZhbHNlLFxuXHRcdCk7XG5cdFx0dGhpcy5vcHRpb24oXCItLW5vLXN5bmNcIiwgXCJTa2lwIGxvY2tmaWxlIHN5bmMgYWZ0ZXIgc3luY2luZyBkZXBlbmRlbmNpZXNcIiwgdHJ1ZSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLWNvbW1pdFwiLCBcIkNvbW1pdCBzeW5jZWQgd29ya3NwYWNlIG1hbmlmZXN0IGNoYW5nZXNcIiwgZmFsc2UpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1tZXNzYWdlIDxtZXNzYWdlPlwiLCBcIkNvbW1pdCBtZXNzYWdlICh1c2VkIHdpdGggLS1jb21taXQpXCIpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIGFzeW5jIHJ1bihhY3Rpb25zOiBTeW5jQWN0aW9ucywgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRjb25zdCByZXNwb25zZXM6IENvbW1hbmRSZXNwb25zZTxTeW5jQWN0aW9ucz4gPSB7fTtcblx0XHRjb25zdCBjb25maWd1cmF0aW9uID1cblx0XHRcdHR5cGVvZiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT09IFwic3RyaW5nXCIgPyBvcHRpb25zLmNvbmZpZ3VyYXRpb24gOiBSZWxlYXNlLm5hbWU7XG5cblx0XHRjb25zdCBzeW5jRGVwZW5kZW5jeU9wdGlvbnM6IERlcGVuZGVuY2llc09wdGlvbnMgPSB7XG5cdFx0XHRjb25maWd1cmF0aW9uLFxuXHRcdFx0bG9nRGlmZjogb3B0aW9ucy5sb2dEaWZmID09PSB0cnVlLFxuXHRcdH07XG5cblx0XHRjb25zdCBzeW5jTG9ja09wdGlvbnM6IFN5bmNMb2NrRmlsZU9wdGlvbnMgPSB7XG5cdFx0XHRzeW5jOiBvcHRpb25zLnN5bmMgIT09IGZhbHNlLFxuXHRcdFx0ZHJ5UnVuOiBvcHRpb25zLmRyeVJ1biA9PT0gdHJ1ZSxcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29tbWl0T3B0aW9uczogQ29tbWl0RmlsZXNPcHRpb25zID0ge1xuXHRcdFx0Y29uZmlndXJhdGlvbixcblx0XHRcdGNvbW1pdDogb3B0aW9ucy5jb21taXQgPT09IHRydWUsXG5cdFx0XHRkcnlSdW46IG9wdGlvbnMuZHJ5UnVuID09PSB0cnVlLFxuXHRcdFx0bWVzc2FnZTogdHlwZW9mIG9wdGlvbnMubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG9wdGlvbnMubWVzc2FnZSA6IHVuZGVmaW5lZCxcblx0XHR9O1xuXG5cdFx0cmVzcG9uc2VzLnN5bmNEZXBlbmRlbmNpZXMgPSBhd2FpdCBhY3Rpb25zLnN5bmNEZXBlbmRlbmNpZXMucnVuKHN5bmNEZXBlbmRlbmN5T3B0aW9ucyk7XG5cdFx0dGhpcy50aHJvd09uRXJyb3JzKHsgc3luY0RlcGVuZGVuY2llczogcmVzcG9uc2VzLnN5bmNEZXBlbmRlbmNpZXMgfSk7XG5cblx0XHRyZXNwb25zZXMuc3luY0xvY2tGaWxlID0gYXdhaXQgYWN0aW9ucy5zeW5jTG9ja0ZpbGUucnVuKHN5bmNMb2NrT3B0aW9ucyk7XG5cdFx0dGhpcy50aHJvd09uRXJyb3JzKHsgc3luY0xvY2tGaWxlOiByZXNwb25zZXMuc3luY0xvY2tGaWxlIH0pO1xuXG5cdFx0cmVzcG9uc2VzLmNvbW1pdEZpbGVzID0gYXdhaXQgYWN0aW9ucy5jb21taXRGaWxlcy5ydW4oY29tbWl0T3B0aW9ucyk7XG5cdFx0dGhpcy50aHJvd09uRXJyb3JzKHsgY29tbWl0RmlsZXM6IHJlc3BvbnNlcy5jb21taXRGaWxlcyB9KTtcblxuXHRcdHJldHVybiBDb21tYW5kUmVzcG9uc2Uuc3VjY2VzcyhvcHRpb25zLCByZXNwb25zZXMpO1xuXHR9XG59XG5cbmNsYXNzIFJlcG9ydENvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtSZXBvcnREZXBlbmRlbmNpZXNdO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKFJlcG9ydENvbW1hbmQpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJSZXBvcnQgcmVzb2x2ZWQgZGVwZW5kZW5jaWVzIGZvciB3b3Jrc3BhY2UgcHJvamVjdHNcIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLWZpbGUgPGZpbGU+XCIsIFwiT3B0aW9uYWwgZmlsZSBwYXRoIHRvIHdyaXRlIHRoZSByZXBvcnQgdG9cIik7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tZmFpbC1vbi1kcmlmdFwiLFxuXHRcdFx0XCJFeGl0IHdpdGggYW4gZXJyb3IgaWYgcmVzb2x2ZWQgZGVwZW5kZW5jaWVzIGRpZmZlciBmcm9tIHdoYXQgaXMgZGVjbGFyZWQgaW4gcGFja2FnZS5qc29uXCIsXG5cdFx0XHRmYWxzZSxcblx0XHQpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiQ29tbWFuZFJlc3BvbnNlIiwiQ29uZmlndXJhdGlvbk9wdGlvbiIsIkRlY29oZXJlQ29tbWFuZCIsIkNvbW1pdEZpbGVzIiwiUmVwb3J0RGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lTeW5jIiwiU3luY0xvY2tGaWxlIiwiUmVsZWFzZSIsIkRlcGVuZGVuY3lDb21tYW5kIiwibmFtZSIsImhhbmRsZXIiLCJkZXNjcmlwdGlvbiIsImFkZE9wdGlvbiIsInJlZ2lzdGVyU3ViY29tbWFuZCIsIlJlcG9ydENvbW1hbmQiLCJTeW5jQ29tbWFuZCIsImFjdGlvbnMiLCJvcHRpb24iLCJydW4iLCJvcHRpb25zIiwicmVzcG9uc2VzIiwiY29uZmlndXJhdGlvbiIsInN5bmNEZXBlbmRlbmN5T3B0aW9ucyIsImxvZ0RpZmYiLCJzeW5jTG9ja09wdGlvbnMiLCJzeW5jIiwiZHJ5UnVuIiwiY29tbWl0T3B0aW9ucyIsImNvbW1pdCIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJzeW5jRGVwZW5kZW5jaWVzIiwidGhyb3dPbkVycm9ycyIsInN5bmNMb2NrRmlsZSIsImNvbW1pdEZpbGVzIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsZUFBZSxFQUFFQyxtQkFBbUIsRUFBRUMsZUFBZSxRQUFRLHNCQUFzQjtBQUU1RixTQUFTQyxXQUFXLFFBQVEsOEJBQThCO0FBQzFELFNBQVNDLGtCQUFrQixRQUFRLHlDQUF5QztBQUU1RSxTQUFTQyxvQkFBb0JDLGNBQWMsUUFBUSx1Q0FBdUM7QUFFMUYsU0FBU0MsWUFBWSxRQUFRLHNDQUFzQztBQUNuRSxTQUFTQyxPQUFPLFFBQVEseUJBQXlCO0FBRWpELE9BQU8sTUFBTUMsMEJBQTBCUDtJQUN0QyxZQUFtQlEsSUFBYSxFQUFFQyxPQUF3QixDQUFFO1FBQzNELEtBQUssQ0FBQ0QsUUFBUUQ7UUFDZCxJQUFJLENBQUNHLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJWixvQkFBb0I7UUFDdkMsSUFBSSxDQUFDYSxrQkFBa0IsQ0FBQ0MsZUFBZUo7UUFDdkMsSUFBSSxDQUFDRyxrQkFBa0IsQ0FBQ0UsYUFBYUw7SUFDdEM7QUFDRDtBQVFBLE1BQU1LLG9CQUFvQmQ7SUFDekIsSUFBb0JlLFVBQVU7UUFDN0IsT0FBTztZQUFDWDtZQUFnQkM7WUFBY0o7U0FBWTtJQUNuRDtJQUVBLGFBQXFCO1FBQ3BCLEtBQUssQ0FBQ2E7UUFDTixJQUFJLENBQUNKLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNNLE1BQU0sQ0FDVixjQUNBLGlFQUNBO1FBRUQsSUFBSSxDQUFDQSxNQUFNLENBQUMsYUFBYSxpREFBaUQ7UUFDMUUsSUFBSSxDQUFDQSxNQUFNLENBQUMsWUFBWSw0Q0FBNEM7UUFDcEUsSUFBSSxDQUFDQSxNQUFNLENBQUMsdUJBQXVCO0lBQ3BDO0lBRUEsTUFBc0JDLElBQUlGLE9BQW9CLEVBQUVHLE9BQWdDLEVBQUU7UUFDakYsTUFBTUMsWUFBMEMsQ0FBQztRQUNqRCxNQUFNQyxnQkFDTCxPQUFPRixRQUFRRSxhQUFhLEtBQUssV0FBV0YsUUFBUUUsYUFBYSxHQUFHZCxRQUFRRSxJQUFJO1FBRWpGLE1BQU1hLHdCQUE2QztZQUNsREQ7WUFDQUUsU0FBU0osUUFBUUksT0FBTyxLQUFLO1FBQzlCO1FBRUEsTUFBTUMsa0JBQXVDO1lBQzVDQyxNQUFNTixRQUFRTSxJQUFJLEtBQUs7WUFDdkJDLFFBQVFQLFFBQVFPLE1BQU0sS0FBSztRQUM1QjtRQUVBLE1BQU1DLGdCQUFvQztZQUN6Q047WUFDQU8sUUFBUVQsUUFBUVMsTUFBTSxLQUFLO1lBQzNCRixRQUFRUCxRQUFRTyxNQUFNLEtBQUs7WUFDM0JHLFNBQVMsT0FBT1YsUUFBUVUsT0FBTyxLQUFLLFdBQVdWLFFBQVFVLE9BQU8sR0FBR0M7UUFDbEU7UUFFQVYsVUFBVVcsZ0JBQWdCLEdBQUcsTUFBTWYsUUFBUWUsZ0JBQWdCLENBQUNiLEdBQUcsQ0FBQ0k7UUFDaEUsSUFBSSxDQUFDVSxhQUFhLENBQUM7WUFBRUQsa0JBQWtCWCxVQUFVVyxnQkFBZ0I7UUFBQztRQUVsRVgsVUFBVWEsWUFBWSxHQUFHLE1BQU1qQixRQUFRaUIsWUFBWSxDQUFDZixHQUFHLENBQUNNO1FBQ3hELElBQUksQ0FBQ1EsYUFBYSxDQUFDO1lBQUVDLGNBQWNiLFVBQVVhLFlBQVk7UUFBQztRQUUxRGIsVUFBVWMsV0FBVyxHQUFHLE1BQU1sQixRQUFRa0IsV0FBVyxDQUFDaEIsR0FBRyxDQUFDUztRQUN0RCxJQUFJLENBQUNLLGFBQWEsQ0FBQztZQUFFRSxhQUFhZCxVQUFVYyxXQUFXO1FBQUM7UUFFeEQsT0FBT25DLGdCQUFnQm9DLE9BQU8sQ0FBQ2hCLFNBQVNDO0lBQ3pDO0FBQ0Q7QUFFQSxNQUFNTixzQkFBc0JiO0lBQzNCLElBQW9CZSxVQUFVO1FBQzdCLE9BQU87WUFBQ2I7U0FBbUI7SUFDNUI7SUFFQSxhQUFxQjtRQUNwQixLQUFLLENBQUNXO1FBQ04sSUFBSSxDQUFDSCxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDTSxNQUFNLENBQUMsaUJBQWlCO1FBQzdCLElBQUksQ0FBQ0EsTUFBTSxDQUNWLG1CQUNBLDRGQUNBO0lBRUY7QUFDRCJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
+
export class ForgeCommand extends DecohereCommand {
|
|
3
|
+
constructor(commands, handler){
|
|
4
|
+
super(ForgeCommand);
|
|
5
|
+
this.description("Run forge workspace workflows");
|
|
6
|
+
this.exitOverride();
|
|
7
|
+
this.registerSubcommand(commands, handler);
|
|
8
|
+
}
|
|
9
|
+
run(_actions, _options) {
|
|
10
|
+
return this.help();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9mb3JnZS5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9ucyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQge1xuXHR0eXBlIENvbW1hbmRIYW5kbGVyLFxuXHR0eXBlIENvbW1hbmRSZXNwb25zZSxcblx0dHlwZSBDb21tYW5kVHlwZSxcblx0RGVjb2hlcmVDb21tYW5kLFxufSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuXG5leHBvcnQgY2xhc3MgRm9yZ2VDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBDb21tYW5kVHlwZT4sIGhhbmRsZXI6IENvbW1hbmRIYW5kbGVyKSB7XG5cdFx0c3VwZXIoRm9yZ2VDb21tYW5kKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiUnVuIGZvcmdlIHdvcmtzcGFjZSB3b3JrZmxvd3NcIik7XG5cdFx0dGhpcy5leGl0T3ZlcnJpZGUoKTtcblx0XHR0aGlzLnJlZ2lzdGVyU3ViY29tbWFuZChjb21tYW5kcywgaGFuZGxlcik7XG5cdH1cblxuXHRwdWJsaWMgcnVuKF9hY3Rpb25zOiBBY3Rpb25zLCBfb3B0aW9uczogbmV2ZXIpOiBQcm9taXNlPENvbW1hbmRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLmhlbHAoKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRlY29oZXJlQ29tbWFuZCIsIkZvcmdlQ29tbWFuZCIsImNvbW1hbmRzIiwiaGFuZGxlciIsImRlc2NyaXB0aW9uIiwiZXhpdE92ZXJyaWRlIiwicmVnaXN0ZXJTdWJjb21tYW5kIiwicnVuIiwiX2FjdGlvbnMiLCJfb3B0aW9ucyIsImhlbHAiXSwibWFwcGluZ3MiOiJBQUNBLFNBSUNBLGVBQWUsUUFDVCxzQkFBc0I7QUFFN0IsT0FBTyxNQUFNQyxxQkFBcUJEO0lBQ2pDLFlBQW1CRSxRQUFxQyxFQUFFQyxPQUF1QixDQUFFO1FBQ2xGLEtBQUssQ0FBQ0Y7UUFDTixJQUFJLENBQUNHLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLFlBQVk7UUFDakIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ0osVUFBVUM7SUFDbkM7SUFFT0ksSUFBSUMsUUFBaUIsRUFBRUMsUUFBZSxFQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQ0MsSUFBSTtJQUNqQjtBQUNEIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./build.command.js";
|
|
2
|
+
export * from "./dependency.command.js";
|
|
3
|
+
export * from "./forge.command.js";
|
|
4
|
+
export * from "./publish.command.js";
|
|
5
|
+
export * from "./tag.command.js";
|
|
6
|
+
export * from "./version.command.js";
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWlsZC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZvcmdlLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1Ymxpc2guY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb24uY29tbWFuZC5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsMEJBQTBCO0FBQ3hDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsdUJBQXVCIn0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ConfigurationOption, DecohereCommand, DryRunOption } from "@decohere/nexus/cli";
|
|
2
|
+
import { Publish } from "../actions/publish.action.js";
|
|
3
|
+
export class PublishCommand extends DecohereCommand {
|
|
4
|
+
get actions() {
|
|
5
|
+
return [
|
|
6
|
+
Publish
|
|
7
|
+
];
|
|
8
|
+
}
|
|
9
|
+
constructor(name){
|
|
10
|
+
super(name);
|
|
11
|
+
this.description("Publish workspace packages");
|
|
12
|
+
this.addOption(new ConfigurationOption("release"));
|
|
13
|
+
this.addOption(new DryRunOption("Run npm publish using dry-run flag"));
|
|
14
|
+
this.option("--channel <channel>", "The release channel", "beta");
|
|
15
|
+
this.option("--token <token>", "npm access token (used only for this command)");
|
|
16
|
+
this.option("--otp <otp>", "npm one-time password for 2FA-protected publish");
|
|
17
|
+
this.option("--prompt-auth", "Prompt interactively for npm token and OTP", false);
|
|
18
|
+
this.option("--prompt-otp", "Prompt interactively for npm OTP only (use when already logged in)", false);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9wdWJsaXNoLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBEcnlSdW5PcHRpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgUHVibGlzaCB9IGZyb20gXCIuLi9hY3Rpb25zL3B1Ymxpc2guYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoQ29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1B1Ymxpc2hdO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJQdWJsaXNoIHdvcmtzcGFjZSBwYWNrYWdlc1wiKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcInJlbGVhc2VcIikpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBEcnlSdW5PcHRpb24oXCJSdW4gbnBtIHB1Ymxpc2ggdXNpbmcgZHJ5LXJ1biBmbGFnXCIpKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tY2hhbm5lbCA8Y2hhbm5lbD5cIiwgXCJUaGUgcmVsZWFzZSBjaGFubmVsXCIsIFwiYmV0YVwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tdG9rZW4gPHRva2VuPlwiLCBcIm5wbSBhY2Nlc3MgdG9rZW4gKHVzZWQgb25seSBmb3IgdGhpcyBjb21tYW5kKVwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tb3RwIDxvdHA+XCIsIFwibnBtIG9uZS10aW1lIHBhc3N3b3JkIGZvciAyRkEtcHJvdGVjdGVkIHB1Ymxpc2hcIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLXByb21wdC1hdXRoXCIsIFwiUHJvbXB0IGludGVyYWN0aXZlbHkgZm9yIG5wbSB0b2tlbiBhbmQgT1RQXCIsIGZhbHNlKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1wcm9tcHQtb3RwXCIsXG5cdFx0XHRcIlByb21wdCBpbnRlcmFjdGl2ZWx5IGZvciBucG0gT1RQIG9ubHkgKHVzZSB3aGVuIGFscmVhZHkgbG9nZ2VkIGluKVwiLFxuXHRcdFx0ZmFsc2UsXG5cdFx0KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkNvbmZpZ3VyYXRpb25PcHRpb24iLCJEZWNvaGVyZUNvbW1hbmQiLCJEcnlSdW5PcHRpb24iLCJQdWJsaXNoIiwiUHVibGlzaENvbW1hbmQiLCJhY3Rpb25zIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkT3B0aW9uIiwib3B0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxtQkFBbUIsRUFBRUMsZUFBZSxFQUFFQyxZQUFZLFFBQVEsc0JBQXNCO0FBQ3pGLFNBQVNDLE9BQU8sUUFBUSwrQkFBK0I7QUFFdkQsT0FBTyxNQUFNQyx1QkFBdUJIO0lBQ25DLElBQW9CSSxVQUFVO1FBQzdCLE9BQU87WUFBQ0Y7U0FBUTtJQUNqQjtJQUVBLFlBQW1CRyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlSLG9CQUFvQjtRQUN2QyxJQUFJLENBQUNRLFNBQVMsQ0FBQyxJQUFJTixhQUFhO1FBQ2hDLElBQUksQ0FBQ08sTUFBTSxDQUFDLHVCQUF1Qix1QkFBdUI7UUFDMUQsSUFBSSxDQUFDQSxNQUFNLENBQUMsbUJBQW1CO1FBQy9CLElBQUksQ0FBQ0EsTUFBTSxDQUFDLGVBQWU7UUFDM0IsSUFBSSxDQUFDQSxNQUFNLENBQUMsaUJBQWlCLDhDQUE4QztRQUMzRSxJQUFJLENBQUNBLE1BQU0sQ0FDVixnQkFDQSxzRUFDQTtJQUVGO0FBQ0QifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DecohereCommand, DryRunOption } from "@decohere/nexus/cli";
|
|
2
|
+
import { Tag } from "../actions/tag.action.js";
|
|
3
|
+
export class TagCommand extends DecohereCommand {
|
|
4
|
+
get actions() {
|
|
5
|
+
return [
|
|
6
|
+
Tag
|
|
7
|
+
];
|
|
8
|
+
}
|
|
9
|
+
constructor(name){
|
|
10
|
+
super(name);
|
|
11
|
+
this.description("Create and optionally push a git tag for the workspace version");
|
|
12
|
+
this.option("--prefix <prefix>", "Tag prefix", "v");
|
|
13
|
+
this.option("--push", "Push the tag and current branch to origin after tagging", false);
|
|
14
|
+
this.addOption(new DryRunOption("Print the tag without creating it"));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy90YWcuY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvaGVyZUNvbW1hbmQsIERyeVJ1bk9wdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUYWcgfSBmcm9tIFwiLi4vYWN0aW9ucy90YWcuYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBUYWdDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbVGFnXTtcblx0fVxuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiQ3JlYXRlIGFuZCBvcHRpb25hbGx5IHB1c2ggYSBnaXQgdGFnIGZvciB0aGUgd29ya3NwYWNlIHZlcnNpb25cIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLXByZWZpeCA8cHJlZml4PlwiLCBcIlRhZyBwcmVmaXhcIiwgXCJ2XCIpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1wdXNoXCIsIFwiUHVzaCB0aGUgdGFnIGFuZCBjdXJyZW50IGJyYW5jaCB0byBvcmlnaW4gYWZ0ZXIgdGFnZ2luZ1wiLCBmYWxzZSk7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IERyeVJ1bk9wdGlvbihcIlByaW50IHRoZSB0YWcgd2l0aG91dCBjcmVhdGluZyBpdFwiKSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJEZWNvaGVyZUNvbW1hbmQiLCJEcnlSdW5PcHRpb24iLCJUYWciLCJUYWdDb21tYW5kIiwiYWN0aW9ucyIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImFkZE9wdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxFQUFFQyxZQUFZLFFBQVEsc0JBQXNCO0FBQ3BFLFNBQVNDLEdBQUcsUUFBUSwyQkFBMkI7QUFFL0MsT0FBTyxNQUFNQyxtQkFBbUJIO0lBQy9CLElBQW9CSSxVQUFVO1FBQzdCLE9BQU87WUFBQ0Y7U0FBSTtJQUNiO0lBRUEsWUFBbUJHLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxNQUFNLENBQUMscUJBQXFCLGNBQWM7UUFDL0MsSUFBSSxDQUFDQSxNQUFNLENBQUMsVUFBVSwyREFBMkQ7UUFDakYsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSVAsYUFBYTtJQUNqQztBQUNEIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ConfigurationOption, DecohereCommand, DryRunOption } from "@decohere/nexus/cli";
|
|
2
|
+
import { SyncLockFile } from "../actions/sync-lock-file.action.js";
|
|
3
|
+
import { DefaultChannel, DefaultReleaseType, Version } from "../actions/version.action.js";
|
|
4
|
+
export class VersionCommand extends DecohereCommand {
|
|
5
|
+
get actions() {
|
|
6
|
+
return [
|
|
7
|
+
Version,
|
|
8
|
+
SyncLockFile
|
|
9
|
+
];
|
|
10
|
+
}
|
|
11
|
+
constructor(name){
|
|
12
|
+
super(name);
|
|
13
|
+
this.description("Bump workspace package versions");
|
|
14
|
+
this.addOption(new ConfigurationOption("release"));
|
|
15
|
+
this.addOption(new DryRunOption("Run npm publish using dry-run flag"));
|
|
16
|
+
this.option("--release-type <releaseType>", "The semver release type: major, minor, patch, prerelease", DefaultReleaseType);
|
|
17
|
+
this.option("--channel <channel>", "The release channel (preid for prereleases, dist-tag for publish)", DefaultChannel);
|
|
18
|
+
this.option("--version <version>", "Explicit base version to increment (overrides git tag discovery)");
|
|
19
|
+
this.option("--no-sync", "Skip lockfile sync after versioning", true);
|
|
20
|
+
this.option("--commit", "Commit versioned package.json files after bumping", false);
|
|
21
|
+
this.option("--message <message>", "Commit message (used with --commit)");
|
|
22
|
+
this.option("--from-changesets", "Read pending .changeset entries to determine the highest bump type (major > minor > patch)", false);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy92ZXJzaW9uLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBEcnlSdW5PcHRpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgU3luY0xvY2tGaWxlIH0gZnJvbSBcIi4uL2FjdGlvbnMvc3luYy1sb2NrLWZpbGUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q2hhbm5lbCwgRGVmYXVsdFJlbGVhc2VUeXBlLCBWZXJzaW9uIH0gZnJvbSBcIi4uL2FjdGlvbnMvdmVyc2lvbi5hY3Rpb24uanNcIjtcblxudHlwZSBWZXJzaW9uQWN0aW9ucyA9IHsgdmVyc2lvbjogVmVyc2lvbjsgc3luY0xvY2tGaWxlOiBTeW5jTG9ja0ZpbGUgfTtcblxuZXhwb3J0IGNsYXNzIFZlcnNpb25Db21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kPFZlcnNpb25BY3Rpb25zPiB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1ZlcnNpb24sIFN5bmNMb2NrRmlsZV07XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIkJ1bXAgd29ya3NwYWNlIHBhY2thZ2UgdmVyc2lvbnNcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJyZWxlYXNlXCIpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgRHJ5UnVuT3B0aW9uKFwiUnVuIG5wbSBwdWJsaXNoIHVzaW5nIGRyeS1ydW4gZmxhZ1wiKSk7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tcmVsZWFzZS10eXBlIDxyZWxlYXNlVHlwZT5cIixcblx0XHRcdFwiVGhlIHNlbXZlciByZWxlYXNlIHR5cGU6IG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2VcIixcblx0XHRcdERlZmF1bHRSZWxlYXNlVHlwZSxcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLWNoYW5uZWwgPGNoYW5uZWw+XCIsXG5cdFx0XHRcIlRoZSByZWxlYXNlIGNoYW5uZWwgKHByZWlkIGZvciBwcmVyZWxlYXNlcywgZGlzdC10YWcgZm9yIHB1Ymxpc2gpXCIsXG5cdFx0XHREZWZhdWx0Q2hhbm5lbCxcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLXZlcnNpb24gPHZlcnNpb24+XCIsXG5cdFx0XHRcIkV4cGxpY2l0IGJhc2UgdmVyc2lvbiB0byBpbmNyZW1lbnQgKG92ZXJyaWRlcyBnaXQgdGFnIGRpc2NvdmVyeSlcIixcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1uby1zeW5jXCIsIFwiU2tpcCBsb2NrZmlsZSBzeW5jIGFmdGVyIHZlcnNpb25pbmdcIiwgdHJ1ZSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLWNvbW1pdFwiLCBcIkNvbW1pdCB2ZXJzaW9uZWQgcGFja2FnZS5qc29uIGZpbGVzIGFmdGVyIGJ1bXBpbmdcIiwgZmFsc2UpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1tZXNzYWdlIDxtZXNzYWdlPlwiLCBcIkNvbW1pdCBtZXNzYWdlICh1c2VkIHdpdGggLS1jb21taXQpXCIpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLWZyb20tY2hhbmdlc2V0c1wiLFxuXHRcdFx0XCJSZWFkIHBlbmRpbmcgLmNoYW5nZXNldCBlbnRyaWVzIHRvIGRldGVybWluZSB0aGUgaGlnaGVzdCBidW1wIHR5cGUgKG1ham9yID4gbWlub3IgPiBwYXRjaClcIixcblx0XHRcdGZhbHNlLFxuXHRcdCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDb25maWd1cmF0aW9uT3B0aW9uIiwiRGVjb2hlcmVDb21tYW5kIiwiRHJ5UnVuT3B0aW9uIiwiU3luY0xvY2tGaWxlIiwiRGVmYXVsdENoYW5uZWwiLCJEZWZhdWx0UmVsZWFzZVR5cGUiLCJWZXJzaW9uIiwiVmVyc2lvbkNvbW1hbmQiLCJhY3Rpb25zIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkT3B0aW9uIiwib3B0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxtQkFBbUIsRUFBRUMsZUFBZSxFQUFFQyxZQUFZLFFBQVEsc0JBQXNCO0FBQ3pGLFNBQVNDLFlBQVksUUFBUSxzQ0FBc0M7QUFDbkUsU0FBU0MsY0FBYyxFQUFFQyxrQkFBa0IsRUFBRUMsT0FBTyxRQUFRLCtCQUErQjtBQUkzRixPQUFPLE1BQU1DLHVCQUF1Qk47SUFDbkMsSUFBb0JPLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtZQUFTSDtTQUFhO0lBQy9CO0lBRUEsWUFBbUJNLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSVgsb0JBQW9CO1FBQ3ZDLElBQUksQ0FBQ1csU0FBUyxDQUFDLElBQUlULGFBQWE7UUFDaEMsSUFBSSxDQUFDVSxNQUFNLENBQ1YsZ0NBQ0EsNERBQ0FQO1FBRUQsSUFBSSxDQUFDTyxNQUFNLENBQ1YsdUJBQ0EscUVBQ0FSO1FBRUQsSUFBSSxDQUFDUSxNQUFNLENBQ1YsdUJBQ0E7UUFFRCxJQUFJLENBQUNBLE1BQU0sQ0FBQyxhQUFhLHVDQUF1QztRQUNoRSxJQUFJLENBQUNBLE1BQU0sQ0FBQyxZQUFZLHFEQUFxRDtRQUM3RSxJQUFJLENBQUNBLE1BQU0sQ0FBQyx1QkFBdUI7UUFDbkMsSUFBSSxDQUFDQSxNQUFNLENBQ1YscUJBQ0EsOEZBQ0E7SUFFRjtBQUNEIn0=
|
package/es6/src/const.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export const SWC_CONFIG = ".swcrc";
|
|
2
|
+
export const NODE_MODULES = "node_modules";
|
|
3
|
+
export const BUILT_IN_MODULES = [
|
|
4
|
+
"assert",
|
|
5
|
+
"assert/strict",
|
|
6
|
+
"async_hooks",
|
|
7
|
+
"buffer",
|
|
8
|
+
"child_process",
|
|
9
|
+
"cluster",
|
|
10
|
+
"console",
|
|
11
|
+
"constants",
|
|
12
|
+
"crypto",
|
|
13
|
+
"dgram",
|
|
14
|
+
"diagnostics_channel",
|
|
15
|
+
"dns",
|
|
16
|
+
"dns/promises",
|
|
17
|
+
"domain",
|
|
18
|
+
"events",
|
|
19
|
+
"fs",
|
|
20
|
+
"fs/promises",
|
|
21
|
+
"http",
|
|
22
|
+
"http2",
|
|
23
|
+
"https",
|
|
24
|
+
"inspector",
|
|
25
|
+
"inspector/promises",
|
|
26
|
+
"module",
|
|
27
|
+
"net",
|
|
28
|
+
"os",
|
|
29
|
+
"path",
|
|
30
|
+
"path/posix",
|
|
31
|
+
"path/win32",
|
|
32
|
+
"perf_hooks",
|
|
33
|
+
"process",
|
|
34
|
+
"punycode",
|
|
35
|
+
"querystring",
|
|
36
|
+
"readline",
|
|
37
|
+
"readline/promises",
|
|
38
|
+
"repl",
|
|
39
|
+
"stream",
|
|
40
|
+
"stream/consumers",
|
|
41
|
+
"stream/promises",
|
|
42
|
+
"stream/web",
|
|
43
|
+
"string_decoder",
|
|
44
|
+
"sys",
|
|
45
|
+
"timers",
|
|
46
|
+
"timers/promises",
|
|
47
|
+
"tls",
|
|
48
|
+
"trace_events",
|
|
49
|
+
"tty",
|
|
50
|
+
"url",
|
|
51
|
+
"util",
|
|
52
|
+
"util/types",
|
|
53
|
+
"v8",
|
|
54
|
+
"vm",
|
|
55
|
+
"wasi",
|
|
56
|
+
"worker_threads",
|
|
57
|
+
"zlib"
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb25zdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1dDX0NPTkZJRyA9IFwiLnN3Y3JjXCI7XG5leHBvcnQgY29uc3QgTk9ERV9NT0RVTEVTID0gXCJub2RlX21vZHVsZXNcIjtcbmV4cG9ydCBjb25zdCBCVUlMVF9JTl9NT0RVTEVTID0gW1xuXHRcImFzc2VydFwiLFxuXHRcImFzc2VydC9zdHJpY3RcIixcblx0XCJhc3luY19ob29rc1wiLFxuXHRcImJ1ZmZlclwiLFxuXHRcImNoaWxkX3Byb2Nlc3NcIixcblx0XCJjbHVzdGVyXCIsXG5cdFwiY29uc29sZVwiLFxuXHRcImNvbnN0YW50c1wiLFxuXHRcImNyeXB0b1wiLFxuXHRcImRncmFtXCIsXG5cdFwiZGlhZ25vc3RpY3NfY2hhbm5lbFwiLFxuXHRcImRuc1wiLFxuXHRcImRucy9wcm9taXNlc1wiLFxuXHRcImRvbWFpblwiLFxuXHRcImV2ZW50c1wiLFxuXHRcImZzXCIsXG5cdFwiZnMvcHJvbWlzZXNcIixcblx0XCJodHRwXCIsXG5cdFwiaHR0cDJcIixcblx0XCJodHRwc1wiLFxuXHRcImluc3BlY3RvclwiLFxuXHRcImluc3BlY3Rvci9wcm9taXNlc1wiLFxuXHRcIm1vZHVsZVwiLFxuXHRcIm5ldFwiLFxuXHRcIm9zXCIsXG5cdFwicGF0aFwiLFxuXHRcInBhdGgvcG9zaXhcIixcblx0XCJwYXRoL3dpbjMyXCIsXG5cdFwicGVyZl9ob29rc1wiLFxuXHRcInByb2Nlc3NcIixcblx0XCJwdW55Y29kZVwiLFxuXHRcInF1ZXJ5c3RyaW5nXCIsXG5cdFwicmVhZGxpbmVcIixcblx0XCJyZWFkbGluZS9wcm9taXNlc1wiLFxuXHRcInJlcGxcIixcblx0XCJzdHJlYW1cIixcblx0XCJzdHJlYW0vY29uc3VtZXJzXCIsXG5cdFwic3RyZWFtL3Byb21pc2VzXCIsXG5cdFwic3RyZWFtL3dlYlwiLFxuXHRcInN0cmluZ19kZWNvZGVyXCIsXG5cdFwic3lzXCIsXG5cdFwidGltZXJzXCIsXG5cdFwidGltZXJzL3Byb21pc2VzXCIsXG5cdFwidGxzXCIsXG5cdFwidHJhY2VfZXZlbnRzXCIsXG5cdFwidHR5XCIsXG5cdFwidXJsXCIsXG5cdFwidXRpbFwiLFxuXHRcInV0aWwvdHlwZXNcIixcblx0XCJ2OFwiLFxuXHRcInZtXCIsXG5cdFwid2FzaVwiLFxuXHRcIndvcmtlcl90aHJlYWRzXCIsXG5cdFwiemxpYlwiLFxuXTtcbiJdLCJuYW1lcyI6WyJTV0NfQ09ORklHIiwiTk9ERV9NT0RVTEVTIiwiQlVJTFRfSU5fTU9EVUxFUyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNQSxhQUFhLFNBQVM7QUFDbkMsT0FBTyxNQUFNQyxlQUFlLGVBQWU7QUFDM0MsT0FBTyxNQUFNQyxtQkFBbUI7SUFDL0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQyJ9
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { WorkspaceConfigurationError } from "@decohere/mesh";
|
|
2
|
+
export class ForgeError extends Error {
|
|
3
|
+
}
|
|
4
|
+
export function formatUnknownError(reason) {
|
|
5
|
+
if (reason instanceof Error) {
|
|
6
|
+
return reason.message;
|
|
7
|
+
}
|
|
8
|
+
if (typeof reason === "string") {
|
|
9
|
+
return reason;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
return JSON.stringify(reason);
|
|
13
|
+
} catch {
|
|
14
|
+
return "Unknown error";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgV29ya3NwYWNlQ29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5leHBvcnQgY2xhc3MgRm9yZ2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRVbmtub3duRXJyb3IocmVhc29uOiB1bmtub3duKTogc3RyaW5nIHtcblx0aWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0cmV0dXJuIHJlYXNvbi5tZXNzYWdlO1xuXHR9XG5cblx0aWYgKHR5cGVvZiByZWFzb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gcmVhc29uO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVhc29uKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIFwiVW5rbm93biBlcnJvclwiO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiV29ya3NwYWNlQ29uZmlndXJhdGlvbkVycm9yIiwiRm9yZ2VFcnJvciIsIkVycm9yIiwiZm9ybWF0VW5rbm93bkVycm9yIiwicmVhc29uIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLDJCQUEyQixRQUFRLGlCQUFpQjtBQUM3RCxPQUFPLE1BQU1DLG1CQUFtQkM7QUFBTztBQUV2QyxPQUFPLFNBQVNDLG1CQUFtQkMsTUFBZTtJQUNqRCxJQUFJQSxrQkFBa0JGLE9BQU87UUFDNUIsT0FBT0UsT0FBT0MsT0FBTztJQUN0QjtJQUVBLElBQUksT0FBT0QsV0FBVyxVQUFVO1FBQy9CLE9BQU9BO0lBQ1I7SUFFQSxJQUFJO1FBQ0gsT0FBT0UsS0FBS0MsU0FBUyxDQUFDSDtJQUN2QixFQUFFLE9BQU07UUFDUCxPQUFPO0lBQ1I7QUFDRCJ9
|
|
@@ -0,0 +1,79 @@
|
|
|
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 fs from "node:fs";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { Project } from "@decohere/mesh";
|
|
13
|
+
import { memoize } from "@decohere/nexus/caching";
|
|
14
|
+
import { extension } from "@decohere/nexus/extensibility";
|
|
15
|
+
import { io } from "@decohere/nexus/io";
|
|
16
|
+
import { SWC_CONFIG } from "../const.js";
|
|
17
|
+
import { SwcConfig } from "../types/swc-config.type.js";
|
|
18
|
+
export class ProjectExtensions {
|
|
19
|
+
static getForgeConfiguration(project) {
|
|
20
|
+
return project.configuration;
|
|
21
|
+
}
|
|
22
|
+
static async getSwcConfig(project) {
|
|
23
|
+
for (const configPath of ProjectExtensions.swcConfigPaths(project)){
|
|
24
|
+
if (await io.fileExists(configPath)) {
|
|
25
|
+
return new SwcConfig(await io.readJsonFile(configPath));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return new SwcConfig();
|
|
29
|
+
}
|
|
30
|
+
static getSwcConfigSync(project) {
|
|
31
|
+
for (const configPath of ProjectExtensions.swcConfigPaths(project)){
|
|
32
|
+
if (ProjectExtensions.fileExistsSync(configPath)) {
|
|
33
|
+
return new SwcConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return new SwcConfig();
|
|
37
|
+
}
|
|
38
|
+
static swcConfigPaths(project) {
|
|
39
|
+
return [
|
|
40
|
+
path.join(project.projectDirectory, SWC_CONFIG),
|
|
41
|
+
path.join(project.rootDir, SWC_CONFIG)
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
static fileExistsSync(filePath) {
|
|
45
|
+
try {
|
|
46
|
+
return fs.statSync(filePath).isFile();
|
|
47
|
+
} catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
_ts_decorate([
|
|
53
|
+
extension(Project),
|
|
54
|
+
_ts_metadata("design:type", Function),
|
|
55
|
+
_ts_metadata("design:paramtypes", [
|
|
56
|
+
typeof Project === "undefined" ? Object : Project
|
|
57
|
+
]),
|
|
58
|
+
_ts_metadata("design:returntype", typeof ForgeConfiguration === "undefined" ? Object : ForgeConfiguration)
|
|
59
|
+
], ProjectExtensions, "getForgeConfiguration", null);
|
|
60
|
+
_ts_decorate([
|
|
61
|
+
extension(Project),
|
|
62
|
+
memoize(),
|
|
63
|
+
_ts_metadata("design:type", Function),
|
|
64
|
+
_ts_metadata("design:paramtypes", [
|
|
65
|
+
typeof Project === "undefined" ? Object : Project
|
|
66
|
+
]),
|
|
67
|
+
_ts_metadata("design:returntype", Promise)
|
|
68
|
+
], ProjectExtensions, "getSwcConfig", null);
|
|
69
|
+
_ts_decorate([
|
|
70
|
+
extension(Project),
|
|
71
|
+
memoize(),
|
|
72
|
+
_ts_metadata("design:type", Function),
|
|
73
|
+
_ts_metadata("design:paramtypes", [
|
|
74
|
+
typeof Project === "undefined" ? Object : Project
|
|
75
|
+
]),
|
|
76
|
+
_ts_metadata("design:returntype", typeof SwcConfig === "undefined" ? Object : SwcConfig)
|
|
77
|
+
], ProjectExtensions, "getSwcConfigSync", null);
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IGV4dGVuc2lvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHsgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBTV0NfQ09ORklHIH0gZnJvbSBcIi4uL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZvcmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGUuanNcIjtcbmltcG9ydCB7IFN3Y0NvbmZpZyB9IGZyb20gXCIuLi90eXBlcy9zd2MtY29uZmlnLnR5cGUuanNcIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjb2hlcmUvbWVzaFwiIHtcblx0aW50ZXJmYWNlIFByb2plY3Qge1xuXHRcdGdldEZvcmdlQ29uZmlndXJhdGlvbigpOiBGb3JnZUNvbmZpZ3VyYXRpb247XG5cdFx0Z2V0U3djQ29uZmlnKCk6IFByb21pc2U8U3djQ29uZmlnPjtcblx0XHRnZXRTd2NDb25maWdTeW5jKCk6IFN3Y0NvbmZpZztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUHJvamVjdEV4dGVuc2lvbnMge1xuXHRAZXh0ZW5zaW9uKFByb2plY3QpXG5cdHB1YmxpYyBzdGF0aWMgZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKHByb2plY3Q6IFByb2plY3QpOiBGb3JnZUNvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiBwcm9qZWN0LmNvbmZpZ3VyYXRpb24gYXMgRm9yZ2VDb25maWd1cmF0aW9uO1xuXHR9XG5cblx0QGV4dGVuc2lvbihQcm9qZWN0KVxuXHRAbWVtb2l6ZSgpXG5cdHB1YmxpYyBzdGF0aWMgYXN5bmMgZ2V0U3djQ29uZmlnKHByb2plY3Q6IFByb2plY3QpOiBQcm9taXNlPFN3Y0NvbmZpZz4ge1xuXHRcdGZvciAoY29uc3QgY29uZmlnUGF0aCBvZiBQcm9qZWN0RXh0ZW5zaW9ucy5zd2NDb25maWdQYXRocyhwcm9qZWN0KSkge1xuXHRcdFx0aWYgKGF3YWl0IGlvLmZpbGVFeGlzdHMoY29uZmlnUGF0aCkpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoYXdhaXQgaW8ucmVhZEpzb25GaWxlKGNvbmZpZ1BhdGgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoKTtcblx0fVxuXG5cdEBleHRlbnNpb24oUHJvamVjdClcblx0QG1lbW9pemUoKVxuXHRwdWJsaWMgc3RhdGljIGdldFN3Y0NvbmZpZ1N5bmMocHJvamVjdDogUHJvamVjdCk6IFN3Y0NvbmZpZyB7XG5cdFx0Zm9yIChjb25zdCBjb25maWdQYXRoIG9mIFByb2plY3RFeHRlbnNpb25zLnN3Y0NvbmZpZ1BhdGhzKHByb2plY3QpKSB7XG5cdFx0XHRpZiAoUHJvamVjdEV4dGVuc2lvbnMuZmlsZUV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgXCJ1dGY4XCIpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgU3djQ29uZmlnKCk7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBzd2NDb25maWdQYXRocyhwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHRwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0RGlyZWN0b3J5LCBTV0NfQ09ORklHKSxcblx0XHRcdHBhdGguam9pbihwcm9qZWN0LnJvb3REaXIsIFNXQ19DT05GSUcpLFxuXHRcdF07XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBmaWxlRXhpc3RzU3luYyhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBmcy5zdGF0U3luYyhmaWxlUGF0aCkuaXNGaWxlKCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG4iXSwibmFtZXMiOlsiZnMiLCJwYXRoIiwiUHJvamVjdCIsIm1lbW9pemUiLCJleHRlbnNpb24iLCJpbyIsIlNXQ19DT05GSUciLCJTd2NDb25maWciLCJQcm9qZWN0RXh0ZW5zaW9ucyIsImdldEZvcmdlQ29uZmlndXJhdGlvbiIsInByb2plY3QiLCJjb25maWd1cmF0aW9uIiwiZ2V0U3djQ29uZmlnIiwiY29uZmlnUGF0aCIsInN3Y0NvbmZpZ1BhdGhzIiwiZmlsZUV4aXN0cyIsInJlYWRKc29uRmlsZSIsImdldFN3Y0NvbmZpZ1N5bmMiLCJmaWxlRXhpc3RzU3luYyIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImpvaW4iLCJwcm9qZWN0RGlyZWN0b3J5Iiwicm9vdERpciIsImZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0ZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLFFBQVEsVUFBVTtBQUN6QixPQUFPQyxVQUFVLFlBQVk7QUFDN0IsU0FBU0MsT0FBTyxRQUFRLGlCQUFpQjtBQUN6QyxTQUFTQyxPQUFPLFFBQVEsMEJBQTBCO0FBQ2xELFNBQVNDLFNBQVMsUUFBUSxnQ0FBZ0M7QUFDMUQsU0FBU0MsRUFBRSxRQUFRLHFCQUFxQjtBQUN4QyxTQUFTQyxVQUFVLFFBQVEsY0FBYztBQUV6QyxTQUFTQyxTQUFTLFFBQVEsOEJBQThCO0FBVXhELE9BQU8sTUFBTUM7SUFDWixPQUNjQyxzQkFBc0JDLE9BQWdCLEVBQXNCO1FBQ3pFLE9BQU9BLFFBQVFDLGFBQWE7SUFDN0I7SUFFQSxhQUVvQkMsYUFBYUYsT0FBZ0IsRUFBc0I7UUFDdEUsS0FBSyxNQUFNRyxjQUFjTCxrQkFBa0JNLGNBQWMsQ0FBQ0osU0FBVTtZQUNuRSxJQUFJLE1BQU1MLEdBQUdVLFVBQVUsQ0FBQ0YsYUFBYTtnQkFDcEMsT0FBTyxJQUFJTixVQUFVLE1BQU1GLEdBQUdXLFlBQVksQ0FBQ0g7WUFDNUM7UUFDRDtRQUNBLE9BQU8sSUFBSU47SUFDWjtJQUVBLE9BRWNVLGlCQUFpQlAsT0FBZ0IsRUFBYTtRQUMzRCxLQUFLLE1BQU1HLGNBQWNMLGtCQUFrQk0sY0FBYyxDQUFDSixTQUFVO1lBQ25FLElBQUlGLGtCQUFrQlUsY0FBYyxDQUFDTCxhQUFhO2dCQUNqRCxPQUFPLElBQUlOLFVBQVVZLEtBQUtDLEtBQUssQ0FBQ3BCLEdBQUdxQixZQUFZLENBQUNSLFlBQVk7WUFDN0Q7UUFDRDtRQUNBLE9BQU8sSUFBSU47SUFDWjtJQUVBLE9BQWVPLGVBQWVKLE9BQWdCLEVBQVk7UUFDekQsT0FBTztZQUNOVCxLQUFLcUIsSUFBSSxDQUFDWixRQUFRYSxnQkFBZ0IsRUFBRWpCO1lBQ3BDTCxLQUFLcUIsSUFBSSxDQUFDWixRQUFRYyxPQUFPLEVBQUVsQjtTQUMzQjtJQUNGO0lBRUEsT0FBZVksZUFBZU8sUUFBZ0IsRUFBVztRQUN4RCxJQUFJO1lBQ0gsT0FBT3pCLEdBQUcwQixRQUFRLENBQUNELFVBQVVFLE1BQU07UUFDcEMsRUFBRSxPQUFNO1lBQ1AsT0FBTztRQUNSO0lBQ0Q7QUFDRCJ9
|
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
import path from "node:path";
|
|
8
|
+
import { Trace } from "@decohere/nexus/diagnostics";
|
|
9
|
+
import { merge } from "@decohere/nexus/objects";
|
|
10
|
+
import { ForgeError } from "../errors.js";
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
jsc: {
|
|
13
|
+
parser: {
|
|
14
|
+
syntax: "typescript",
|
|
15
|
+
decorators: true
|
|
16
|
+
},
|
|
17
|
+
target: "esnext",
|
|
18
|
+
transform: {
|
|
19
|
+
decoratorMetadata: true
|
|
20
|
+
},
|
|
21
|
+
experimental: {
|
|
22
|
+
keepImportAttributes: true
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
module: {
|
|
26
|
+
resolveFully: true
|
|
27
|
+
},
|
|
28
|
+
sourceMaps: "inline"
|
|
29
|
+
};
|
|
30
|
+
export class SwcConfigFactory {
|
|
31
|
+
/**
|
|
32
|
+
* Creates a base config for a project+target combination, without a filename.
|
|
33
|
+
* Call once per (project, target) and then use createFileConfig() per file.
|
|
34
|
+
*/ createBaseConfig(buildTarget, configOptions) {
|
|
35
|
+
const { userConfig, tsConfig, aliasPaths } = configOptions;
|
|
36
|
+
const { compilerOptions } = tsConfig ?? {};
|
|
37
|
+
const paths = aliasPaths ? compilerOptions?.paths : undefined;
|
|
38
|
+
const baseUrl = SwcConfigFactory.getBaseUrl(tsConfig) ?? (paths != null ? path.resolve(".") : undefined);
|
|
39
|
+
const options = {
|
|
40
|
+
jsc: {
|
|
41
|
+
baseUrl,
|
|
42
|
+
paths
|
|
43
|
+
},
|
|
44
|
+
module: {
|
|
45
|
+
type: buildTarget
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return merge.withOptions({
|
|
49
|
+
mergeArrays: false
|
|
50
|
+
}, defaultOptions, options, userConfig ?? {});
|
|
51
|
+
}
|
|
52
|
+
/** Stamps a per-file filename onto a pre-built base config. */ createFileConfig(file, baseConfig) {
|
|
53
|
+
const config = {
|
|
54
|
+
...baseConfig,
|
|
55
|
+
filename: file.fullPath
|
|
56
|
+
};
|
|
57
|
+
this.validate(config);
|
|
58
|
+
return config;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validates SWC options against known causes of Rust/NAPI process crashes.
|
|
62
|
+
* Throws a ForgeError with a descriptive message instead of letting the
|
|
63
|
+
* NAPI layer abort the process.
|
|
64
|
+
*
|
|
65
|
+
* Known crash causes:
|
|
66
|
+
* - `jsc.baseUrl` set to a relative path (SWC requires an absolute path)
|
|
67
|
+
*/ validate(options) {
|
|
68
|
+
const baseUrl = options.jsc?.baseUrl;
|
|
69
|
+
if (baseUrl != null && !path.isAbsolute(baseUrl)) {
|
|
70
|
+
throw new ForgeError(`SWC config: jsc.baseUrl must be an absolute path to avoid a process crash, got: "${baseUrl}". Use path.resolve() to convert it.`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Resolves tsconfig baseUrl to an absolute path. Returns undefined if not set. */ static getBaseUrl(tsConfig) {
|
|
74
|
+
const baseUrl = tsConfig?.compilerOptions?.baseUrl;
|
|
75
|
+
if (baseUrl == null) return undefined;
|
|
76
|
+
return path.resolve(baseUrl);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
SwcConfigFactory = _ts_decorate([
|
|
80
|
+
Trace
|
|
81
|
+
], SwcConfigFactory);
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mYWN0b3JpZXMvc3djLWNvbmZpZy5mYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgVHNjb25maWcgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvb2JqZWN0c1wiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHsgRm9yZ2VFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNwaWxlVGFyZ2V0IH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN3Y0NvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXMvc3djLWNvbmZpZy50eXBlLmpzXCI7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuXHRqc2M6IHtcblx0XHRwYXJzZXI6IHtcblx0XHRcdHN5bnRheDogXCJ0eXBlc2NyaXB0XCIsXG5cdFx0XHRkZWNvcmF0b3JzOiB0cnVlLFxuXHRcdH0sXG5cdFx0dGFyZ2V0OiBcImVzbmV4dFwiLFxuXHRcdHRyYW5zZm9ybToge1xuXHRcdFx0ZGVjb3JhdG9yTWV0YWRhdGE6IHRydWUsXG5cdFx0fSxcblx0XHRleHBlcmltZW50YWw6IHsga2VlcEltcG9ydEF0dHJpYnV0ZXM6IHRydWUgfSxcblx0fSxcblx0bW9kdWxlOiB7XG5cdFx0cmVzb2x2ZUZ1bGx5OiB0cnVlLFxuXHR9LFxuXHRzb3VyY2VNYXBzOiBcImlubGluZVwiLFxufTtcblxuQFRyYWNlXG5leHBvcnQgY2xhc3MgU3djQ29uZmlnRmFjdG9yeSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgYmFzZSBjb25maWcgZm9yIGEgcHJvamVjdCt0YXJnZXQgY29tYmluYXRpb24sIHdpdGhvdXQgYSBmaWxlbmFtZS5cblx0ICogQ2FsbCBvbmNlIHBlciAocHJvamVjdCwgdGFyZ2V0KSBhbmQgdGhlbiB1c2UgY3JlYXRlRmlsZUNvbmZpZygpIHBlciBmaWxlLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUJhc2VDb25maWcoXG5cdFx0YnVpbGRUYXJnZXQ6IFRyYW5zcGlsZVRhcmdldCxcblx0XHRjb25maWdPcHRpb25zOiBTd2NDb25maWdPcHRpb25zLFxuXHQpOiBPcHRpb25zIHtcblx0XHRjb25zdCB7IHVzZXJDb25maWcsIHRzQ29uZmlnLCBhbGlhc1BhdGhzIH0gPSBjb25maWdPcHRpb25zO1xuXHRcdGNvbnN0IHsgY29tcGlsZXJPcHRpb25zIH0gPSB0c0NvbmZpZyA/PyB7fTtcblx0XHRjb25zdCBwYXRocyA9IGFsaWFzUGF0aHMgPyBjb21waWxlck9wdGlvbnM/LnBhdGhzIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGJhc2VVcmwgPVxuXHRcdFx0U3djQ29uZmlnRmFjdG9yeS5nZXRCYXNlVXJsKHRzQ29uZmlnKSA/PyAocGF0aHMgIT0gbnVsbCA/IHBhdGgucmVzb2x2ZShcIi5cIikgOiB1bmRlZmluZWQpO1xuXG5cdFx0Y29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHtcblx0XHRcdGpzYzoge1xuXHRcdFx0XHRiYXNlVXJsLFxuXHRcdFx0XHRwYXRocyxcblx0XHRcdH0sXG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0dHlwZTogYnVpbGRUYXJnZXQsXG5cdFx0XHR9LFxuXHRcdH07XG5cblx0XHRyZXR1cm4gbWVyZ2Uud2l0aE9wdGlvbnM8T3B0aW9ucz4oXG5cdFx0XHR7IG1lcmdlQXJyYXlzOiBmYWxzZSB9LFxuXHRcdFx0ZGVmYXVsdE9wdGlvbnMsXG5cdFx0XHRvcHRpb25zLFxuXHRcdFx0dXNlckNvbmZpZyA/PyB7fSxcblx0XHQpO1xuXHR9XG5cblx0LyoqIFN0YW1wcyBhIHBlci1maWxlIGZpbGVuYW1lIG9udG8gYSBwcmUtYnVpbHQgYmFzZSBjb25maWcuICovXG5cdHB1YmxpYyBjcmVhdGVGaWxlQ29uZmlnKGZpbGU6IEZpbGVFeCwgYmFzZUNvbmZpZzogT3B0aW9ucyk6IE9wdGlvbnMge1xuXHRcdGNvbnN0IGNvbmZpZyA9IHsgLi4uYmFzZUNvbmZpZywgZmlsZW5hbWU6IGZpbGUuZnVsbFBhdGggfTtcblx0XHR0aGlzLnZhbGlkYXRlKGNvbmZpZyk7XG5cdFx0cmV0dXJuIGNvbmZpZztcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgU1dDIG9wdGlvbnMgYWdhaW5zdCBrbm93biBjYXVzZXMgb2YgUnVzdC9OQVBJIHByb2Nlc3MgY3Jhc2hlcy5cblx0ICogVGhyb3dzIGEgRm9yZ2VFcnJvciB3aXRoIGEgZGVzY3JpcHRpdmUgbWVzc2FnZSBpbnN0ZWFkIG9mIGxldHRpbmcgdGhlXG5cdCAqIE5BUEkgbGF5ZXIgYWJvcnQgdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqIEtub3duIGNyYXNoIGNhdXNlczpcblx0ICogLSBganNjLmJhc2VVcmxgIHNldCB0byBhIHJlbGF0aXZlIHBhdGggKFNXQyByZXF1aXJlcyBhbiBhYnNvbHV0ZSBwYXRoKVxuXHQgKi9cblx0cHVibGljIHZhbGlkYXRlKG9wdGlvbnM6IE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBiYXNlVXJsID0gb3B0aW9ucy5qc2M/LmJhc2VVcmw7XG5cdFx0aWYgKGJhc2VVcmwgIT0gbnVsbCAmJiAhcGF0aC5pc0Fic29sdXRlKGJhc2VVcmwpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihcblx0XHRcdFx0YFNXQyBjb25maWc6IGpzYy5iYXNlVXJsIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCB0byBhdm9pZCBhIHByb2Nlc3MgY3Jhc2gsIGdvdDogXCIke2Jhc2VVcmx9XCIuIFVzZSBwYXRoLnJlc29sdmUoKSB0byBjb252ZXJ0IGl0LmAsXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBSZXNvbHZlcyB0c2NvbmZpZyBiYXNlVXJsIHRvIGFuIGFic29sdXRlIHBhdGguIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vdCBzZXQuICovXG5cdHByaXZhdGUgc3RhdGljIGdldEJhc2VVcmwodHNDb25maWc6IFRzY29uZmlnIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBiYXNlVXJsID0gdHNDb25maWc/LmNvbXBpbGVyT3B0aW9ucz8uYmFzZVVybDtcblx0XHRpZiAoYmFzZVVybCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRcdHJldHVybiBwYXRoLnJlc29sdmUoYmFzZVVybCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJwYXRoIiwiVHJhY2UiLCJtZXJnZSIsIkZvcmdlRXJyb3IiLCJkZWZhdWx0T3B0aW9ucyIsImpzYyIsInBhcnNlciIsInN5bnRheCIsImRlY29yYXRvcnMiLCJ0YXJnZXQiLCJ0cmFuc2Zvcm0iLCJkZWNvcmF0b3JNZXRhZGF0YSIsImV4cGVyaW1lbnRhbCIsImtlZXBJbXBvcnRBdHRyaWJ1dGVzIiwibW9kdWxlIiwicmVzb2x2ZUZ1bGx5Iiwic291cmNlTWFwcyIsIlN3Y0NvbmZpZ0ZhY3RvcnkiLCJjcmVhdGVCYXNlQ29uZmlnIiwiYnVpbGRUYXJnZXQiLCJjb25maWdPcHRpb25zIiwidXNlckNvbmZpZyIsInRzQ29uZmlnIiwiYWxpYXNQYXRocyIsImNvbXBpbGVyT3B0aW9ucyIsInBhdGhzIiwidW5kZWZpbmVkIiwiYmFzZVVybCIsImdldEJhc2VVcmwiLCJyZXNvbHZlIiwib3B0aW9ucyIsInR5cGUiLCJ3aXRoT3B0aW9ucyIsIm1lcmdlQXJyYXlzIiwiY3JlYXRlRmlsZUNvbmZpZyIsImZpbGUiLCJiYXNlQ29uZmlnIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJmdWxsUGF0aCIsInZhbGlkYXRlIiwiaXNBYnNvbHV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBT0EsVUFBVSxZQUFZO0FBRTdCLFNBQVNDLEtBQUssUUFBUSw4QkFBOEI7QUFFcEQsU0FBU0MsS0FBSyxRQUFRLDBCQUEwQjtBQUVoRCxTQUFTQyxVQUFVLFFBQVEsZUFBZTtBQUkxQyxNQUFNQyxpQkFBaUI7SUFDdEJDLEtBQUs7UUFDSkMsUUFBUTtZQUNQQyxRQUFRO1lBQ1JDLFlBQVk7UUFDYjtRQUNBQyxRQUFRO1FBQ1JDLFdBQVc7WUFDVkMsbUJBQW1CO1FBQ3BCO1FBQ0FDLGNBQWM7WUFBRUMsc0JBQXNCO1FBQUs7SUFDNUM7SUFDQUMsUUFBUTtRQUNQQyxjQUFjO0lBQ2Y7SUFDQUMsWUFBWTtBQUNiO0FBR0EsT0FBTyxNQUFNQztJQUNaOzs7RUFHQyxHQUNELEFBQU9DLGlCQUNOQyxXQUE0QixFQUM1QkMsYUFBK0IsRUFDckI7UUFDVixNQUFNLEVBQUVDLFVBQVUsRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUUsR0FBR0g7UUFDN0MsTUFBTSxFQUFFSSxlQUFlLEVBQUUsR0FBR0YsWUFBWSxDQUFDO1FBQ3pDLE1BQU1HLFFBQVFGLGFBQWFDLGlCQUFpQkMsUUFBUUM7UUFDcEQsTUFBTUMsVUFDTFYsaUJBQWlCVyxVQUFVLENBQUNOLGFBQWNHLENBQUFBLFNBQVMsT0FBT3pCLEtBQUs2QixPQUFPLENBQUMsT0FBT0gsU0FBUTtRQUV2RixNQUFNSSxVQUFtQjtZQUN4QnpCLEtBQUs7Z0JBQ0pzQjtnQkFDQUY7WUFDRDtZQUNBWCxRQUFRO2dCQUNQaUIsTUFBTVo7WUFDUDtRQUNEO1FBRUEsT0FBT2pCLE1BQU04QixXQUFXLENBQ3ZCO1lBQUVDLGFBQWE7UUFBTSxHQUNyQjdCLGdCQUNBMEIsU0FDQVQsY0FBYyxDQUFDO0lBRWpCO0lBRUEsNkRBQTZELEdBQzdELEFBQU9hLGlCQUFpQkMsSUFBWSxFQUFFQyxVQUFtQixFQUFXO1FBQ25FLE1BQU1DLFNBQVM7WUFBRSxHQUFHRCxVQUFVO1lBQUVFLFVBQVVILEtBQUtJLFFBQVE7UUFBQztRQUN4RCxJQUFJLENBQUNDLFFBQVEsQ0FBQ0g7UUFDZCxPQUFPQTtJQUNSO0lBRUE7Ozs7Ozs7RUFPQyxHQUNELEFBQU9HLFNBQVNWLE9BQWdCLEVBQVE7UUFDdkMsTUFBTUgsVUFBVUcsUUFBUXpCLEdBQUcsRUFBRXNCO1FBQzdCLElBQUlBLFdBQVcsUUFBUSxDQUFDM0IsS0FBS3lDLFVBQVUsQ0FBQ2QsVUFBVTtZQUNqRCxNQUFNLElBQUl4QixXQUNULENBQUMsaUZBQWlGLEVBQUV3QixRQUFRLG9DQUFvQyxDQUFDO1FBRW5JO0lBQ0Q7SUFFQSxpRkFBaUYsR0FDakYsT0FBZUMsV0FBV04sUUFBOEIsRUFBc0I7UUFDN0UsTUFBTUssVUFBVUwsVUFBVUUsaUJBQWlCRztRQUMzQyxJQUFJQSxXQUFXLE1BQU0sT0FBT0Q7UUFDNUIsT0FBTzFCLEtBQUs2QixPQUFPLENBQUNGO0lBQ3JCO0FBQ0QifQ==
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { UserConfigFactory, WorkspaceFactory } from "@decohere/mesh";
|
|
2
|
+
import { ModuleManifest } from "@decohere/nexus/cli";
|
|
3
|
+
import * as Actions from "./actions/index.js";
|
|
4
|
+
import * as Commands from "./commands/index.js";
|
|
5
|
+
import { DependencyResolver } from "./services/dependency-resolver.service.js";
|
|
6
|
+
import { FileWriterService } from "./services/file-writer.service.js";
|
|
7
|
+
import { SwcTranspiler } from "./services/swc-transpiler.js";
|
|
8
|
+
import { TypeEmitter } from "./services/type-emitter.js";
|
|
9
|
+
import { TransformerKey } from "./types/transformer.type.js";
|
|
10
|
+
import { DefaultConfigurations, WorkspaceDefaults } from "./workspace.config.js";
|
|
11
|
+
export class ForgeModule extends ModuleManifest {
|
|
12
|
+
id = "forge";
|
|
13
|
+
command = Commands.ForgeCommand;
|
|
14
|
+
actions = {
|
|
15
|
+
clean: Actions.Clean,
|
|
16
|
+
copy: Actions.Copy,
|
|
17
|
+
build: Actions.Build,
|
|
18
|
+
watch: Actions.Watch,
|
|
19
|
+
publish: Actions.Publish,
|
|
20
|
+
syncDependencies: Actions.SyncDependencies,
|
|
21
|
+
syncLockFile: Actions.SyncLockFile,
|
|
22
|
+
reportDependencies: Actions.ReportDependencies,
|
|
23
|
+
version: Actions.Version,
|
|
24
|
+
tag: Actions.Tag,
|
|
25
|
+
commitFiles: Actions.CommitFiles
|
|
26
|
+
};
|
|
27
|
+
commands = {
|
|
28
|
+
build: Commands.BuildCommand,
|
|
29
|
+
publish: Commands.PublishCommand,
|
|
30
|
+
dependencies: Commands.DependencyCommand,
|
|
31
|
+
version: Commands.VersionCommand,
|
|
32
|
+
tag: Commands.TagCommand
|
|
33
|
+
};
|
|
34
|
+
registerServices(builder) {
|
|
35
|
+
builder.registerSingleton(TransformerKey, SwcTranspiler);
|
|
36
|
+
builder.registerSingleton(TransformerKey, TypeEmitter);
|
|
37
|
+
builder.registerSingleton(DependencyResolver);
|
|
38
|
+
builder.registerSingleton(FileWriterService);
|
|
39
|
+
}
|
|
40
|
+
async createWorkspace(options) {
|
|
41
|
+
const { configurations: _, ...forgeDefaults } = WorkspaceDefaults;
|
|
42
|
+
const userConfig = await UserConfigFactory.getUserConfig(options.configFile);
|
|
43
|
+
// Only apply forge default configurations when user config doesn't provide any.
|
|
44
|
+
// This ensures user-defined configurations take priority while still providing
|
|
45
|
+
// sensible defaults (debug + release) when no config file is present.
|
|
46
|
+
const configurations = userConfig.configurations?.length ? undefined : DefaultConfigurations;
|
|
47
|
+
return WorkspaceFactory.create({
|
|
48
|
+
...forgeDefaults,
|
|
49
|
+
...configurations ? {
|
|
50
|
+
configurations
|
|
51
|
+
} : {},
|
|
52
|
+
configFile: options.configFile,
|
|
53
|
+
rootDir: options.rootDir ?? WorkspaceDefaults.rootDir
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0YnVpbGQ6IEFjdGlvbnMuQnVpbGQsXG5cdFx0d2F0Y2g6IEFjdGlvbnMuV2F0Y2gsXG5cdFx0cHVibGlzaDogQWN0aW9ucy5QdWJsaXNoLFxuXHRcdHN5bmNEZXBlbmRlbmNpZXM6IEFjdGlvbnMuU3luY0RlcGVuZGVuY2llcyxcblx0XHRzeW5jTG9ja0ZpbGU6IEFjdGlvbnMuU3luY0xvY2tGaWxlLFxuXHRcdHJlcG9ydERlcGVuZGVuY2llczogQWN0aW9ucy5SZXBvcnREZXBlbmRlbmNpZXMsXG5cdFx0dmVyc2lvbjogQWN0aW9ucy5WZXJzaW9uLFxuXHRcdHRhZzogQWN0aW9ucy5UYWcsXG5cdFx0Y29tbWl0RmlsZXM6IEFjdGlvbnMuQ29tbWl0RmlsZXMsXG5cdH07XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kcyA9IHtcblx0XHRidWlsZDogQ29tbWFuZHMuQnVpbGRDb21tYW5kLFxuXHRcdHB1Ymxpc2g6IENvbW1hbmRzLlB1Ymxpc2hDb21tYW5kLFxuXHRcdGRlcGVuZGVuY2llczogQ29tbWFuZHMuRGVwZW5kZW5jeUNvbW1hbmQsXG5cdFx0dmVyc2lvbjogQ29tbWFuZHMuVmVyc2lvbkNvbW1hbmQsXG5cdFx0dGFnOiBDb21tYW5kcy5UYWdDb21tYW5kLFxuXHR9O1xuXG5cdHB1YmxpYyByZWdpc3RlclNlcnZpY2VzKGJ1aWxkZXI6IENvbnRhaW5lckJ1aWxkZXIpIHtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKFRyYW5zZm9ybWVyS2V5LCBTd2NUcmFuc3BpbGVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKFRyYW5zZm9ybWVyS2V5LCBUeXBlRW1pdHRlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihEZXBlbmRlbmN5UmVzb2x2ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRmlsZVdyaXRlclNlcnZpY2UpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZVdvcmtzcGFjZShvcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucykge1xuXHRcdGNvbnN0IHsgY29uZmlndXJhdGlvbnM6IF8sIC4uLmZvcmdlRGVmYXVsdHMgfSA9IFdvcmtzcGFjZURlZmF1bHRzO1xuXHRcdGNvbnN0IHVzZXJDb25maWcgPSBhd2FpdCBVc2VyQ29uZmlnRmFjdG9yeS5nZXRVc2VyQ29uZmlnKG9wdGlvbnMuY29uZmlnRmlsZSk7XG5cdFx0Ly8gT25seSBhcHBseSBmb3JnZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHdoZW4gdXNlciBjb25maWcgZG9lc24ndCBwcm92aWRlIGFueS5cblx0XHQvLyBUaGlzIGVuc3VyZXMgdXNlci1kZWZpbmVkIGNvbmZpZ3VyYXRpb25zIHRha2UgcHJpb3JpdHkgd2hpbGUgc3RpbGwgcHJvdmlkaW5nXG5cdFx0Ly8gc2Vuc2libGUgZGVmYXVsdHMgKGRlYnVnICsgcmVsZWFzZSkgd2hlbiBubyBjb25maWcgZmlsZSBpcyBwcmVzZW50LlxuXHRcdGNvbnN0IGNvbmZpZ3VyYXRpb25zID0gdXNlckNvbmZpZy5jb25maWd1cmF0aW9ucz8ubGVuZ3RoXG5cdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0OiBEZWZhdWx0Q29uZmlndXJhdGlvbnM7XG5cdFx0cmV0dXJuIFdvcmtzcGFjZUZhY3RvcnkuY3JlYXRlKHtcblx0XHRcdC4uLmZvcmdlRGVmYXVsdHMsXG5cdFx0XHQuLi4oY29uZmlndXJhdGlvbnMgPyB7IGNvbmZpZ3VyYXRpb25zIH0gOiB7fSksXG5cdFx0XHRjb25maWdGaWxlOiBvcHRpb25zLmNvbmZpZ0ZpbGUsXG5cdFx0XHRyb290RGlyOiBvcHRpb25zLnJvb3REaXIgPz8gV29ya3NwYWNlRGVmYXVsdHMucm9vdERpcixcblx0XHR9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlVzZXJDb25maWdGYWN0b3J5IiwiV29ya3NwYWNlRmFjdG9yeSIsIk1vZHVsZU1hbmlmZXN0IiwiQWN0aW9ucyIsIkNvbW1hbmRzIiwiRGVwZW5kZW5jeVJlc29sdmVyIiwiRmlsZVdyaXRlclNlcnZpY2UiLCJTd2NUcmFuc3BpbGVyIiwiVHlwZUVtaXR0ZXIiLCJUcmFuc2Zvcm1lcktleSIsIkRlZmF1bHRDb25maWd1cmF0aW9ucyIsIldvcmtzcGFjZURlZmF1bHRzIiwiRm9yZ2VNb2R1bGUiLCJpZCIsImNvbW1hbmQiLCJGb3JnZUNvbW1hbmQiLCJhY3Rpb25zIiwiY2xlYW4iLCJDbGVhbiIsImNvcHkiLCJDb3B5IiwiYnVpbGQiLCJCdWlsZCIsIndhdGNoIiwiV2F0Y2giLCJwdWJsaXNoIiwiUHVibGlzaCIsInN5bmNEZXBlbmRlbmNpZXMiLCJTeW5jRGVwZW5kZW5jaWVzIiwic3luY0xvY2tGaWxlIiwiU3luY0xvY2tGaWxlIiwicmVwb3J0RGVwZW5kZW5jaWVzIiwiUmVwb3J0RGVwZW5kZW5jaWVzIiwidmVyc2lvbiIsIlZlcnNpb24iLCJ0YWciLCJUYWciLCJjb21taXRGaWxlcyIsIkNvbW1pdEZpbGVzIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiVmVyc2lvbkNvbW1hbmQiLCJUYWdDb21tYW5kIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjb25maWd1cmF0aW9ucyIsIl8iLCJmb3JnZURlZmF1bHRzIiwidXNlckNvbmZpZyIsImdldFVzZXJDb25maWciLCJjb25maWdGaWxlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY3JlYXRlIiwicm9vdERpciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLGdCQUFnQixRQUFRLGlCQUFpQjtBQUVyRSxTQUFTQyxjQUFjLFFBQVEsc0JBQXNCO0FBRXJELFlBQVlDLGFBQWEscUJBQXFCO0FBQzlDLFlBQVlDLGNBQWMsc0JBQXNCO0FBQ2hELFNBQVNDLGtCQUFrQixRQUFRLDRDQUE0QztBQUMvRSxTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBb0M7QUFDdEUsU0FBU0MsYUFBYSxRQUFRLCtCQUErQjtBQUM3RCxTQUFTQyxXQUFXLFFBQVEsNkJBQTZCO0FBQ3pELFNBQVNDLGNBQWMsUUFBUSw4QkFBOEI7QUFDN0QsU0FBU0MscUJBQXFCLEVBQUVDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUVqRixPQUFPLE1BQU1DLG9CQUFvQlY7SUFDaEJXLEtBQUssUUFBUTtJQUNiQyxVQUFVVixTQUFTVyxZQUFZLENBQUM7SUFDaENDLFVBQVU7UUFDekJDLE9BQU9kLFFBQVFlLEtBQUs7UUFDcEJDLE1BQU1oQixRQUFRaUIsSUFBSTtRQUNsQkMsT0FBT2xCLFFBQVFtQixLQUFLO1FBQ3BCQyxPQUFPcEIsUUFBUXFCLEtBQUs7UUFDcEJDLFNBQVN0QixRQUFRdUIsT0FBTztRQUN4QkMsa0JBQWtCeEIsUUFBUXlCLGdCQUFnQjtRQUMxQ0MsY0FBYzFCLFFBQVEyQixZQUFZO1FBQ2xDQyxvQkFBb0I1QixRQUFRNkIsa0JBQWtCO1FBQzlDQyxTQUFTOUIsUUFBUStCLE9BQU87UUFDeEJDLEtBQUtoQyxRQUFRaUMsR0FBRztRQUNoQkMsYUFBYWxDLFFBQVFtQyxXQUFXO0lBQ2pDLEVBQUU7SUFDY0MsV0FBVztRQUMxQmxCLE9BQU9qQixTQUFTb0MsWUFBWTtRQUM1QmYsU0FBU3JCLFNBQVNxQyxjQUFjO1FBQ2hDQyxjQUFjdEMsU0FBU3VDLGlCQUFpQjtRQUN4Q1YsU0FBUzdCLFNBQVN3QyxjQUFjO1FBQ2hDVCxLQUFLL0IsU0FBU3lDLFVBQVU7SUFDekIsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDdkMsZ0JBQWdCRjtRQUMxQ3dDLFFBQVFDLGlCQUFpQixDQUFDdkMsZ0JBQWdCRDtRQUMxQ3VDLFFBQVFDLGlCQUFpQixDQUFDM0M7UUFDMUIwQyxRQUFRQyxpQkFBaUIsQ0FBQzFDO0lBQzNCO0lBRUEsTUFBc0IyQyxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDdkUsTUFBTSxFQUFFQyxnQkFBZ0JDLENBQUMsRUFBRSxHQUFHQyxlQUFlLEdBQUcxQztRQUNoRCxNQUFNMkMsYUFBYSxNQUFNdEQsa0JBQWtCdUQsYUFBYSxDQUFDTCxRQUFRTSxVQUFVO1FBQzNFLGdGQUFnRjtRQUNoRiwrRUFBK0U7UUFDL0Usc0VBQXNFO1FBQ3RFLE1BQU1MLGlCQUFpQkcsV0FBV0gsY0FBYyxFQUFFTSxTQUMvQ0MsWUFDQWhEO1FBQ0gsT0FBT1QsaUJBQWlCMEQsTUFBTSxDQUFDO1lBQzlCLEdBQUdOLGFBQWE7WUFDaEIsR0FBSUYsaUJBQWlCO2dCQUFFQTtZQUFlLElBQUksQ0FBQyxDQUFDO1lBQzVDSyxZQUFZTixRQUFRTSxVQUFVO1lBQzlCSSxTQUFTVixRQUFRVSxPQUFPLElBQUlqRCxrQkFBa0JpRCxPQUFPO1FBQ3REO0lBQ0Q7QUFDRCJ9
|
package/es6/src/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ForgeError } from "./errors.js";
|
|
2
|
+
export { ForgeModule } from "./forge.module.js";
|
|
3
|
+
export { SwcTranspiler } from "./services/swc-transpiler.js";
|
|
4
|
+
export { BuildTargets } from "./types/build-target.type.js";
|
|
5
|
+
export { Debug as DebugConfiguration, DefaultConfigurations, Release as ReleaseConfiguration, WorkspaceDefaults } from "./workspace.config.js";
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGb3JnZUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgeyBGb3JnZU1vZHVsZSB9IGZyb20gXCIuL2ZvcmdlLm1vZHVsZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBUcmFuc3BpbGVPcHRpb25zIH0gZnJvbSBcIi4vc2VydmljZXMvc3djLXRyYW5zcGlsZXIuanNcIjtcbmV4cG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZFRhcmdldCwgVHJhbnNwaWxlVGFyZ2V0IH0gZnJvbSBcIi4vdHlwZXMvYnVpbGQtdGFyZ2V0LnR5cGUuanNcIjtcbmV4cG9ydCB7IEJ1aWxkVGFyZ2V0cyB9IGZyb20gXCIuL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5leHBvcnQgdHlwZSB7IEZvcmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXMvd29ya3NwYWNlLWNvbmZpZy50eXBlLmpzXCI7XG5leHBvcnQge1xuXHREZWJ1ZyBhcyBEZWJ1Z0NvbmZpZ3VyYXRpb24sXG5cdERlZmF1bHRDb25maWd1cmF0aW9ucyxcblx0UmVsZWFzZSBhcyBSZWxlYXNlQ29uZmlndXJhdGlvbixcblx0V29ya3NwYWNlRGVmYXVsdHMsXG59IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcbiJdLCJuYW1lcyI6WyJGb3JnZUVycm9yIiwiRm9yZ2VNb2R1bGUiLCJTd2NUcmFuc3BpbGVyIiwiQnVpbGRUYXJnZXRzIiwiRGVidWciLCJEZWJ1Z0NvbmZpZ3VyYXRpb24iLCJEZWZhdWx0Q29uZmlndXJhdGlvbnMiLCJSZWxlYXNlIiwiUmVsZWFzZUNvbmZpZ3VyYXRpb24iLCJXb3Jrc3BhY2VEZWZhdWx0cyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLGNBQWM7QUFDekMsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUVoRCxTQUFTQyxhQUFhLFFBQVEsK0JBQStCO0FBRTdELFNBQVNDLFlBQVksUUFBUSwrQkFBK0I7QUFHNUQsU0FDQ0MsU0FBU0Msa0JBQWtCLEVBQzNCQyxxQkFBcUIsRUFDckJDLFdBQVdDLG9CQUFvQixFQUMvQkMsaUJBQWlCLFFBQ1gsd0JBQXdCIn0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { io } from "@decohere/nexus/io";
|
|
2
|
+
export class CachesOutputs {
|
|
3
|
+
/** Maps source file fullPath -> output TransformResponses for cleanup in watch mode. */ get outputCache() {
|
|
4
|
+
const self = this;
|
|
5
|
+
if (self.__outputCache == null) {
|
|
6
|
+
self.__outputCache = new Map();
|
|
7
|
+
}
|
|
8
|
+
return self.__outputCache;
|
|
9
|
+
}
|
|
10
|
+
cacheOutputs(responses) {
|
|
11
|
+
for (const response of responses){
|
|
12
|
+
if (response.outcome !== "success") continue;
|
|
13
|
+
const existing = this.outputCache.get(response.file.fullPath) ?? [];
|
|
14
|
+
this.outputCache.set(response.file.fullPath, [
|
|
15
|
+
...existing,
|
|
16
|
+
response
|
|
17
|
+
]);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
deleteCachedOutputs(filePath) {
|
|
21
|
+
const outputs = this.outputCache.get(filePath);
|
|
22
|
+
if (outputs == null) return;
|
|
23
|
+
for (const response of outputs){
|
|
24
|
+
if (response.outputPath != null) {
|
|
25
|
+
void io.deleteFile(response.outputPath);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
this.outputCache.delete(filePath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9taXhpbnMvY2FjaGVzLW91dHB1dHMubWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FjaGVzT3V0cHV0cyB7XG5cdC8qKiBNYXBzIHNvdXJjZSBmaWxlIGZ1bGxQYXRoIC0+IG91dHB1dCBUcmFuc2Zvcm1SZXNwb25zZXMgZm9yIGNsZWFudXAgaW4gd2F0Y2ggbW9kZS4gKi9cblx0cHJvdGVjdGVkIGdldCBvdXRwdXRDYWNoZSgpOiBNYXA8c3RyaW5nLCBUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXMgYXMgeyBfX291dHB1dENhY2hlPzogTWFwPHN0cmluZywgVHJhbnNmb3JtUmVzcG9uc2VbXT4gfTtcblx0XHRpZiAoc2VsZi5fX291dHB1dENhY2hlID09IG51bGwpIHtcblx0XHRcdHNlbGYuX19vdXRwdXRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBUcmFuc2Zvcm1SZXNwb25zZVtdPigpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2VsZi5fX291dHB1dENhY2hlO1xuXHR9XG5cblx0cHJvdGVjdGVkIGNhY2hlT3V0cHV0cyhyZXNwb25zZXM6IFRyYW5zZm9ybVJlc3BvbnNlW10pOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IHJlc3BvbnNlIG9mIHJlc3BvbnNlcykge1xuXHRcdFx0aWYgKHJlc3BvbnNlLm91dGNvbWUgIT09IFwic3VjY2Vzc1wiKSBjb250aW51ZTtcblx0XHRcdGNvbnN0IGV4aXN0aW5nID0gdGhpcy5vdXRwdXRDYWNoZS5nZXQocmVzcG9uc2UuZmlsZS5mdWxsUGF0aCkgPz8gW107XG5cdFx0XHR0aGlzLm91dHB1dENhY2hlLnNldChyZXNwb25zZS5maWxlLmZ1bGxQYXRoLCBbLi4uZXhpc3RpbmcsIHJlc3BvbnNlXSk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGRlbGV0ZUNhY2hlZE91dHB1dHMoZmlsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG91dHB1dHMgPSB0aGlzLm91dHB1dENhY2hlLmdldChmaWxlUGF0aCk7XG5cdFx0aWYgKG91dHB1dHMgPT0gbnVsbCkgcmV0dXJuO1xuXHRcdGZvciAoY29uc3QgcmVzcG9uc2Ugb2Ygb3V0cHV0cykge1xuXHRcdFx0aWYgKHJlc3BvbnNlLm91dHB1dFBhdGggIT0gbnVsbCkge1xuXHRcdFx0XHR2b2lkIGlvLmRlbGV0ZUZpbGUocmVzcG9uc2Uub3V0cHV0UGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMub3V0cHV0Q2FjaGUuZGVsZXRlKGZpbGVQYXRoKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbImlvIiwiQ2FjaGVzT3V0cHV0cyIsIm91dHB1dENhY2hlIiwic2VsZiIsIl9fb3V0cHV0Q2FjaGUiLCJNYXAiLCJjYWNoZU91dHB1dHMiLCJyZXNwb25zZXMiLCJyZXNwb25zZSIsIm91dGNvbWUiLCJleGlzdGluZyIsImdldCIsImZpbGUiLCJmdWxsUGF0aCIsInNldCIsImRlbGV0ZUNhY2hlZE91dHB1dHMiLCJmaWxlUGF0aCIsIm91dHB1dHMiLCJvdXRwdXRQYXRoIiwiZGVsZXRlRmlsZSIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsRUFBRSxRQUFRLHFCQUFxQjtBQUd4QyxPQUFPLE1BQWVDO0lBQ3JCLHNGQUFzRixHQUN0RixJQUFjQyxjQUFnRDtRQUM3RCxNQUFNQyxPQUFPLElBQUk7UUFDakIsSUFBSUEsS0FBS0MsYUFBYSxJQUFJLE1BQU07WUFDL0JELEtBQUtDLGFBQWEsR0FBRyxJQUFJQztRQUMxQjtRQUNBLE9BQU9GLEtBQUtDLGFBQWE7SUFDMUI7SUFFVUUsYUFBYUMsU0FBOEIsRUFBUTtRQUM1RCxLQUFLLE1BQU1DLFlBQVlELFVBQVc7WUFDakMsSUFBSUMsU0FBU0MsT0FBTyxLQUFLLFdBQVc7WUFDcEMsTUFBTUMsV0FBVyxJQUFJLENBQUNSLFdBQVcsQ0FBQ1MsR0FBRyxDQUFDSCxTQUFTSSxJQUFJLENBQUNDLFFBQVEsS0FBSyxFQUFFO1lBQ25FLElBQUksQ0FBQ1gsV0FBVyxDQUFDWSxHQUFHLENBQUNOLFNBQVNJLElBQUksQ0FBQ0MsUUFBUSxFQUFFO21CQUFJSDtnQkFBVUY7YUFBUztRQUNyRTtJQUNEO0lBRVVPLG9CQUFvQkMsUUFBZ0IsRUFBUTtRQUNyRCxNQUFNQyxVQUFVLElBQUksQ0FBQ2YsV0FBVyxDQUFDUyxHQUFHLENBQUNLO1FBQ3JDLElBQUlDLFdBQVcsTUFBTTtRQUNyQixLQUFLLE1BQU1ULFlBQVlTLFFBQVM7WUFDL0IsSUFBSVQsU0FBU1UsVUFBVSxJQUFJLE1BQU07Z0JBQ2hDLEtBQUtsQixHQUFHbUIsVUFBVSxDQUFDWCxTQUFTVSxVQUFVO1lBQ3ZDO1FBQ0Q7UUFDQSxJQUFJLENBQUNoQixXQUFXLENBQUNrQixNQUFNLENBQUNKO0lBQ3pCO0FBQ0QifQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Subject } from "rxjs";
|
|
2
|
+
// WeakMap avoids the private-field-in-mixin problem: private class fields (#x)
|
|
3
|
+
// are not accessible when methods are copied onto a different class prototype.
|
|
4
|
+
const subjects = new WeakMap();
|
|
5
|
+
function getSubject(instance) {
|
|
6
|
+
let subject = subjects.get(instance);
|
|
7
|
+
if (subject == null) {
|
|
8
|
+
subject = new Subject();
|
|
9
|
+
subjects.set(instance, subject);
|
|
10
|
+
}
|
|
11
|
+
return subject;
|
|
12
|
+
}
|
|
13
|
+
export class IncrementalTransform {
|
|
14
|
+
get incrementalTransform$() {
|
|
15
|
+
return getSubject(this).asObservable();
|
|
16
|
+
}
|
|
17
|
+
watch(workspace) {
|
|
18
|
+
workspace.projectFileChanged$.subscribe((evt)=>{
|
|
19
|
+
void this.onIncrementalFileEvent(evt).then((responses)=>{
|
|
20
|
+
getSubject(this).next(responses);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9taXhpbnMvaW5jcmVtZW50YWwtdHJhbnNmb3JtLm1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvamVjdEZpbGVFdmVudCwgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuXG4vLyBXZWFrTWFwIGF2b2lkcyB0aGUgcHJpdmF0ZS1maWVsZC1pbi1taXhpbiBwcm9ibGVtOiBwcml2YXRlIGNsYXNzIGZpZWxkcyAoI3gpXG4vLyBhcmUgbm90IGFjY2Vzc2libGUgd2hlbiBtZXRob2RzIGFyZSBjb3BpZWQgb250byBhIGRpZmZlcmVudCBjbGFzcyBwcm90b3R5cGUuXG5jb25zdCBzdWJqZWN0cyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgU3ViamVjdDxUcmFuc2Zvcm1SZXNwb25zZVtdPj4oKTtcblxuZnVuY3Rpb24gZ2V0U3ViamVjdChpbnN0YW5jZTogb2JqZWN0KTogU3ViamVjdDxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdGxldCBzdWJqZWN0ID0gc3ViamVjdHMuZ2V0KGluc3RhbmNlKTtcblx0aWYgKHN1YmplY3QgPT0gbnVsbCkge1xuXHRcdHN1YmplY3QgPSBuZXcgU3ViamVjdDxUcmFuc2Zvcm1SZXNwb25zZVtdPigpO1xuXHRcdHN1YmplY3RzLnNldChpbnN0YW5jZSwgc3ViamVjdCk7XG5cdH1cblx0cmV0dXJuIHN1YmplY3Q7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbmNyZW1lbnRhbFRyYW5zZm9ybSB7XG5cdHB1YmxpYyBnZXQgaW5jcmVtZW50YWxUcmFuc2Zvcm0kKCk6IE9ic2VydmFibGU8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdHJldHVybiBnZXRTdWJqZWN0KHRoaXMpLmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0cHVibGljIHdhdGNoKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XG5cdFx0d29ya3NwYWNlLnByb2plY3RGaWxlQ2hhbmdlZCQuc3Vic2NyaWJlKChldnQpID0+IHtcblx0XHRcdHZvaWQgdGhpcy5vbkluY3JlbWVudGFsRmlsZUV2ZW50KGV2dCkudGhlbigocmVzcG9uc2VzKSA9PiB7XG5cdFx0XHRcdGdldFN1YmplY3QodGhpcykubmV4dChyZXNwb25zZXMpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGZvciBldmVyeSB3b3Jrc3BhY2UgZmlsZSBjaGFuZ2UuIEltcGxlbWVudGF0aW9ucyBzaG91bGQgaW52YWxpZGF0ZVxuXHQgKiBhbnkgaW50ZXJuYWwgY2FjaGVzLCBwZXJmb3JtIHRoZSBpbmNyZW1lbnRhbCB0cmFuc2Zvcm0sIGFuZCByZXR1cm4gdGhlIHJlc3VsdHMuXG5cdCAqIFJldHVybiBhbiBlbXB0eSBhcnJheSBmb3IgZGVsZXRpb25zIG9yIHdoZW4gbm8gb3V0cHV0IGlzIHByb2R1Y2VkLlxuXHQgKi9cblx0cHJvdGVjdGVkIGFic3RyYWN0IG9uSW5jcmVtZW50YWxGaWxlRXZlbnQoXG5cdFx0ZXZ0OiBQcm9qZWN0RmlsZUV2ZW50LFxuXHQpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3BvbnNlW10+O1xufVxuIl0sIm5hbWVzIjpbIlN1YmplY3QiLCJzdWJqZWN0cyIsIldlYWtNYXAiLCJnZXRTdWJqZWN0IiwiaW5zdGFuY2UiLCJzdWJqZWN0IiwiZ2V0Iiwic2V0IiwiSW5jcmVtZW50YWxUcmFuc2Zvcm0iLCJpbmNyZW1lbnRhbFRyYW5zZm9ybSQiLCJhc09ic2VydmFibGUiLCJ3YXRjaCIsIndvcmtzcGFjZSIsInByb2plY3RGaWxlQ2hhbmdlZCQiLCJzdWJzY3JpYmUiLCJldnQiLCJvbkluY3JlbWVudGFsRmlsZUV2ZW50IiwidGhlbiIsInJlc3BvbnNlcyIsIm5leHQiXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLE9BQU8sUUFBUSxPQUFPO0FBRy9CLCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsTUFBTUMsV0FBVyxJQUFJQztBQUVyQixTQUFTQyxXQUFXQyxRQUFnQjtJQUNuQyxJQUFJQyxVQUFVSixTQUFTSyxHQUFHLENBQUNGO0lBQzNCLElBQUlDLFdBQVcsTUFBTTtRQUNwQkEsVUFBVSxJQUFJTDtRQUNkQyxTQUFTTSxHQUFHLENBQUNILFVBQVVDO0lBQ3hCO0lBQ0EsT0FBT0E7QUFDUjtBQUVBLE9BQU8sTUFBZUc7SUFDckIsSUFBV0Msd0JBQXlEO1FBQ25FLE9BQU9OLFdBQVcsSUFBSSxFQUFFTyxZQUFZO0lBQ3JDO0lBRU9DLE1BQU1DLFNBQW9CLEVBQVE7UUFDeENBLFVBQVVDLG1CQUFtQixDQUFDQyxTQUFTLENBQUMsQ0FBQ0M7WUFDeEMsS0FBSyxJQUFJLENBQUNDLHNCQUFzQixDQUFDRCxLQUFLRSxJQUFJLENBQUMsQ0FBQ0M7Z0JBQzNDZixXQUFXLElBQUksRUFBRWdCLElBQUksQ0FBQ0Q7WUFDdkI7UUFDRDtJQUNEO0FBVUQifQ==
|