@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.
Files changed (130) hide show
  1. package/commonjs/src/actions/build.action.js +108 -0
  2. package/commonjs/src/actions/clean.action.js +55 -0
  3. package/commonjs/src/actions/commit.action.js +80 -0
  4. package/commonjs/src/actions/copy.action.js +83 -0
  5. package/commonjs/src/actions/dependency-report.action.js +142 -0
  6. package/commonjs/src/actions/dependency-sync.action.js +100 -0
  7. package/commonjs/src/actions/index.js +30 -0
  8. package/commonjs/src/actions/publish.action.js +156 -0
  9. package/commonjs/src/actions/sync-lock-file.action.js +43 -0
  10. package/commonjs/src/actions/tag.action.js +76 -0
  11. package/commonjs/src/actions/version.action.js +209 -0
  12. package/commonjs/src/actions/watch.action.js +50 -0
  13. package/commonjs/src/commands/build.command.js +49 -0
  14. package/commonjs/src/commands/dependency.command.js +88 -0
  15. package/commonjs/src/commands/forge.command.js +24 -0
  16. package/commonjs/src/commands/index.js +25 -0
  17. package/commonjs/src/commands/publish.command.js +32 -0
  18. package/commonjs/src/commands/tag.command.js +28 -0
  19. package/commonjs/src/commands/version.command.js +36 -0
  20. package/commonjs/src/const.js +81 -0
  21. package/commonjs/src/errors.js +39 -0
  22. package/commonjs/src/extensions/project.extensions.js +66 -0
  23. package/commonjs/src/factories/swc-config.factory.js +98 -0
  24. package/commonjs/src/forge.module.js +109 -0
  25. package/commonjs/src/index.js +22 -0
  26. package/commonjs/src/mixins/caches-outputs.mixin.js +42 -0
  27. package/commonjs/src/mixins/incremental-transform.mixin.js +36 -0
  28. package/commonjs/src/services/dependency-resolver.service.js +172 -0
  29. package/commonjs/src/services/file-writer.service.js +232 -0
  30. package/commonjs/src/services/swc-transpiler.js +176 -0
  31. package/commonjs/src/services/ts-program-host.js +135 -0
  32. package/commonjs/src/services/type-emission-program.js +160 -0
  33. package/commonjs/src/services/type-emitter.js +141 -0
  34. package/commonjs/src/types/build-target.type.js +17 -0
  35. package/commonjs/src/types/configuration.type.js +6 -0
  36. package/commonjs/src/types/dependency.types.js +6 -0
  37. package/commonjs/src/types/swc-config.type.js +17 -0
  38. package/commonjs/src/types/transform-response.model.js +64 -0
  39. package/commonjs/src/types/transformer.type.js +13 -0
  40. package/commonjs/src/types/workspace-config.type.js +6 -0
  41. package/commonjs/src/vitest/forge-build.plugin.js +129 -0
  42. package/commonjs/src/vitest/index.js +13 -0
  43. package/commonjs/src/workspace.config.js +73 -0
  44. package/es6/src/actions/build.action.js +100 -0
  45. package/es6/src/actions/clean.action.js +46 -0
  46. package/es6/src/actions/commit.action.js +71 -0
  47. package/es6/src/actions/copy.action.js +69 -0
  48. package/es6/src/actions/dependency-report.action.js +134 -0
  49. package/es6/src/actions/dependency-sync.action.js +92 -0
  50. package/es6/src/actions/index.js +13 -0
  51. package/es6/src/actions/publish.action.js +147 -0
  52. package/es6/src/actions/sync-lock-file.action.js +33 -0
  53. package/es6/src/actions/tag.action.js +67 -0
  54. package/es6/src/actions/version.action.js +189 -0
  55. package/es6/src/actions/watch.action.js +41 -0
  56. package/es6/src/commands/build.command.js +34 -0
  57. package/es6/src/commands/dependency.command.js +78 -0
  58. package/es6/src/commands/forge.command.js +14 -0
  59. package/es6/src/commands/index.js +8 -0
  60. package/es6/src/commands/publish.command.js +22 -0
  61. package/es6/src/commands/tag.command.js +18 -0
  62. package/es6/src/commands/version.command.js +26 -0
  63. package/es6/src/const.js +60 -0
  64. package/es6/src/errors.js +18 -0
  65. package/es6/src/extensions/project.extensions.js +51 -0
  66. package/es6/src/factories/swc-config.factory.js +83 -0
  67. package/es6/src/forge.module.js +58 -0
  68. package/es6/src/index.js +4 -0
  69. package/es6/src/mixins/caches-outputs.mixin.js +32 -0
  70. package/es6/src/mixins/incremental-transform.mixin.js +26 -0
  71. package/es6/src/services/dependency-resolver.service.js +162 -0
  72. package/es6/src/services/file-writer.service.js +217 -0
  73. package/es6/src/services/swc-transpiler.js +161 -0
  74. package/es6/src/services/ts-program-host.js +120 -0
  75. package/es6/src/services/type-emission-program.js +145 -0
  76. package/es6/src/services/type-emitter.js +134 -0
  77. package/es6/src/types/build-target.type.js +7 -0
  78. package/es6/src/types/configuration.type.js +3 -0
  79. package/es6/src/types/dependency.types.js +3 -0
  80. package/es6/src/types/swc-config.type.js +7 -0
  81. package/es6/src/types/transform-response.model.js +46 -0
  82. package/es6/src/types/transformer.type.js +3 -0
  83. package/es6/src/types/workspace-config.type.js +3 -0
  84. package/es6/src/vitest/forge-build.plugin.js +114 -0
  85. package/es6/src/vitest/index.js +3 -0
  86. package/es6/src/workspace.config.js +49 -0
  87. package/package.json +43 -0
  88. package/types/src/actions/build.action.d.ts +22 -0
  89. package/types/src/actions/clean.action.d.ts +13 -0
  90. package/types/src/actions/commit.action.d.ts +17 -0
  91. package/types/src/actions/copy.action.d.ts +14 -0
  92. package/types/src/actions/dependency-report.action.d.ts +36 -0
  93. package/types/src/actions/dependency-sync.action.d.ts +17 -0
  94. package/types/src/actions/index.d.ts +11 -0
  95. package/types/src/actions/publish.action.d.ts +34 -0
  96. package/types/src/actions/sync-lock-file.action.d.ts +10 -0
  97. package/types/src/actions/tag.action.d.ts +19 -0
  98. package/types/src/actions/version.action.d.ts +35 -0
  99. package/types/src/actions/watch.action.d.ts +14 -0
  100. package/types/src/commands/build.command.d.ts +16 -0
  101. package/types/src/commands/dependency.command.d.ts +5 -0
  102. package/types/src/commands/forge.command.d.ts +6 -0
  103. package/types/src/commands/index.d.ts +6 -0
  104. package/types/src/commands/publish.command.d.ts +6 -0
  105. package/types/src/commands/tag.command.d.ts +6 -0
  106. package/types/src/commands/version.command.d.ts +12 -0
  107. package/types/src/const.d.ts +3 -0
  108. package/types/src/errors.d.ts +4 -0
  109. package/types/src/extensions/project.extensions.d.ts +13 -0
  110. package/types/src/factories/swc-config.factory.d.ts +24 -0
  111. package/types/src/forge.module.d.ts +31 -0
  112. package/types/src/index.d.ts +4 -0
  113. package/types/src/mixins/caches-outputs.mixin.d.ts +7 -0
  114. package/types/src/mixins/incremental-transform.mixin.d.ts +13 -0
  115. package/types/src/services/dependency-resolver.service.d.ts +15 -0
  116. package/types/src/services/file-writer.service.d.ts +20 -0
  117. package/types/src/services/swc-transpiler.d.ts +28 -0
  118. package/types/src/services/ts-program-host.d.ts +22 -0
  119. package/types/src/services/type-emission-program.d.ts +22 -0
  120. package/types/src/services/type-emitter.d.ts +43 -0
  121. package/types/src/types/build-target.type.d.ts +7 -0
  122. package/types/src/types/configuration.type.d.ts +6 -0
  123. package/types/src/types/dependency.types.d.ts +39 -0
  124. package/types/src/types/swc-config.type.d.ts +9 -0
  125. package/types/src/types/transform-response.model.d.ts +54 -0
  126. package/types/src/types/transformer.type.d.ts +37 -0
  127. package/types/src/types/workspace-config.type.d.ts +13 -0
  128. package/types/src/vitest/forge-build.plugin.d.ts +18 -0
  129. package/types/src/vitest/index.d.ts +2 -0
  130. 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