@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,189 @@
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 { execSync } from "node:child_process";
11
+ import { readdir, readFile } from "node:fs/promises";
12
+ import { join } from "node:path";
13
+ import { injectable } from "@decohere/crucible/decorators";
14
+ // biome-ignore lint/style/useImportType: <DI>
15
+ import { Workspace } from "@decohere/mesh";
16
+ import { ActionResponse } from "@decohere/nexus/cli";
17
+ import { Git } from "@decohere/nexus/interop";
18
+ import { Semver, SemverError, VersionTypes } from "@decohere/nexus/semver";
19
+ import { scribe } from "@decohere/scribe";
20
+ import { ForgeError, formatUnknownError } from "../errors.js";
21
+ export const DefaultChannel = "beta";
22
+ export const DefaultReleaseType = VersionTypes.prerelease;
23
+ const DefaultVersionOptions = {
24
+ releaseType: DefaultReleaseType,
25
+ channel: DefaultChannel,
26
+ dryRun: false
27
+ };
28
+ export class Version {
29
+ workspace;
30
+ #logger = scribe.logger(Version.name);
31
+ constructor(workspace){
32
+ this.workspace = workspace;
33
+ }
34
+ async run(options) {
35
+ const response = await this.version(this.workspace, options);
36
+ const messages = response.data.flatMap((d)=>!d.succeeded && d.error ? [
37
+ d.error
38
+ ] : []).join("\n");
39
+ if (messages) {
40
+ throw new ForgeError(`There was an error versioning the workspace ${messages}`);
41
+ }
42
+ return response;
43
+ }
44
+ async version(workspace, options = DefaultVersionOptions) {
45
+ const projects = workspace.getProjects("debug");
46
+ const rootVersion = await this.resolveBaseVersion(workspace, options);
47
+ const releaseType = options.fromChangesets ? await this.resolveReleaseTypeFromChangesets() : options.releaseType ?? DefaultReleaseType;
48
+ const channel = options.channel ?? DefaultChannel;
49
+ const nextVersion = this.getNextVersion(rootVersion, releaseType, channel);
50
+ this.#logger.info(`${rootVersion} → ${nextVersion} [${releaseType}]`);
51
+ if (options.dryRun) {
52
+ this.#logger.info(`[dry-run] Would bump all packages to ${nextVersion} — skipping file writes`);
53
+ return ActionResponse.Success(Version.name, [
54
+ {
55
+ name: workspace.name,
56
+ succeeded: true
57
+ },
58
+ ...projects.map((p)=>({
59
+ name: p.name,
60
+ succeeded: true
61
+ }))
62
+ ]);
63
+ }
64
+ await workspace.persistPackageJson((await workspace.getPackageJson()).withVersion(nextVersion.toString()));
65
+ const responses = await Promise.all([
66
+ ...[
67
+ this.updatePackageJson(workspace.name, workspace, nextVersion)
68
+ ],
69
+ ...projects.map((project)=>this.updatePackageJson(project.name, project, nextVersion))
70
+ ]);
71
+ const failed = responses.filter((r)=>!r.succeeded);
72
+ if (failed.length) {
73
+ return ActionResponse.Error(Version.name, responses);
74
+ }
75
+ if (options.commit) {
76
+ const files = [
77
+ workspace.packageJsonPath,
78
+ ...projects.map((p)=>p.packageJsonPath)
79
+ ];
80
+ const message = options.message ?? `chore: version packages ${nextVersion}`;
81
+ this.#logger.info(`Committing: ${message}`);
82
+ await new Git().commit(message, {
83
+ files
84
+ });
85
+ }
86
+ return ActionResponse.Success(Version.name, responses);
87
+ }
88
+ async resolveBaseVersion(workspace, options) {
89
+ if (options.version != null && options.version.trim().length > 0) {
90
+ return options.version.trim();
91
+ }
92
+ const gitTagVersion = this.resolveVersionFromGitTag();
93
+ if (gitTagVersion != null) {
94
+ this.#logger.info(`Using latest git tag version as base: ${gitTagVersion}`);
95
+ return gitTagVersion;
96
+ }
97
+ const workspaceVersion = await workspace.getVersion();
98
+ this.#logger.info(`No semver git tags found, falling back to workspace package.json version: ${workspaceVersion}`);
99
+ return workspaceVersion;
100
+ }
101
+ resolveVersionFromGitTag() {
102
+ try {
103
+ const tags = execSync('git tag --list "v*" --sort=-version:refname', {
104
+ encoding: "utf8"
105
+ }).trim().split("\n").filter(Boolean);
106
+ if (tags.length === 0) {
107
+ return undefined;
108
+ }
109
+ return tags[0].replace(/^v/, "");
110
+ } catch {
111
+ return undefined;
112
+ }
113
+ }
114
+ /**
115
+ * Reads all pending .changeset/*.md entries and returns the highest bump type
116
+ * found across all of them. Precedence: major > minor > patch.
117
+ */ async resolveReleaseTypeFromChangesets() {
118
+ const changesetDir = join(process.cwd(), ".changeset");
119
+ let entries;
120
+ try {
121
+ entries = await readdir(changesetDir);
122
+ } catch {
123
+ throw new ForgeError("No .changeset directory found. Run `pnpm changeset` to create an entry.");
124
+ }
125
+ const files = entries.filter((e)=>e.endsWith(".md") && e !== "README.md");
126
+ if (files.length === 0) {
127
+ throw new ForgeError("No pending changeset entries found in .changeset/. Run `pnpm changeset` to create one.");
128
+ }
129
+ const precedence = {
130
+ major: 3,
131
+ minor: 2,
132
+ patch: 1,
133
+ prerelease: 0
134
+ };
135
+ let maxType = VersionTypes.patch;
136
+ let maxPrecedence = 0;
137
+ for (const file of files){
138
+ const content = await readFile(join(changesetDir, file), "utf8");
139
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
140
+ if (!match) continue;
141
+ for (const line of match[1].split("\n")){
142
+ const bumpType = line.match(/^"[^"]+"\s*:\s*(\w+)/)?.[1];
143
+ const p = bumpType != null ? precedence[bumpType] ?? -1 : -1;
144
+ if (p > maxPrecedence) {
145
+ maxType = bumpType;
146
+ maxPrecedence = p;
147
+ }
148
+ }
149
+ }
150
+ this.#logger.info(`Resolved release type from ${files.length} changeset(s): ${maxType}`);
151
+ return maxType;
152
+ }
153
+ getNextVersion(currentVersion, versionType, preid) {
154
+ try {
155
+ return new Semver(currentVersion).increment(versionType, preid);
156
+ } catch (error) {
157
+ if (error instanceof SemverError) {
158
+ throw new ForgeError(error.message);
159
+ }
160
+ throw error;
161
+ }
162
+ }
163
+ async updatePackageJson(name, hasJson, version) {
164
+ try {
165
+ const packageJson = await hasJson.getPackageJson();
166
+ await hasJson.persistPackageJson(packageJson.withVersion(version.toString()));
167
+ this.#logger.trace(name);
168
+ return {
169
+ name,
170
+ succeeded: true
171
+ };
172
+ } catch (reason) {
173
+ return {
174
+ name,
175
+ succeeded: false,
176
+ error: `${name}: ${formatUnknownError(reason)}`
177
+ };
178
+ }
179
+ }
180
+ }
181
+ Version = _ts_decorate([
182
+ injectable(),
183
+ _ts_metadata("design:type", Function),
184
+ _ts_metadata("design:paramtypes", [
185
+ typeof Workspace === "undefined" ? Object : Workspace
186
+ ])
187
+ ], Version);
188
+
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvdmVyc2lvbi5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBIYXNQYWNrYWdlSnNvbiB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiwgUmVzdWx0U3RhdHVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEdpdCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgU2VtdmVyLCBTZW12ZXJFcnJvciwgdHlwZSBWZXJzaW9uVHlwZSwgVmVyc2lvblR5cGVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9zZW12ZXJcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yLCBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25SZXNwb25zZSA9IFJlc3VsdFN0YXR1cyAmIHtcblx0bmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDaGFubmVsID0gXCJiZXRhXCI7XG5leHBvcnQgY29uc3QgRGVmYXVsdFJlbGVhc2VUeXBlID0gVmVyc2lvblR5cGVzLnByZXJlbGVhc2U7XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25PcHRpb25zID0ge1xuXHRyZWxlYXNlVHlwZT86IFZlcnNpb25UeXBlO1xuXHRjaGFubmVsPzogc3RyaW5nO1xuXHR2ZXJzaW9uPzogc3RyaW5nO1xuXHRkcnlSdW4/OiBib29sZWFuO1xuXHRjb21taXQ/OiBib29sZWFuO1xuXHRtZXNzYWdlPzogc3RyaW5nO1xuXHQvKiogUmVhZCBwZW5kaW5nIC5jaGFuZ2VzZXQgZW50cmllcyB0byBkZXRlcm1pbmUgdGhlIGhpZ2hlc3QgYnVtcCB0eXBlICovXG5cdGZyb21DaGFuZ2VzZXRzPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERlZmF1bHRWZXJzaW9uT3B0aW9uczogVmVyc2lvbk9wdGlvbnMgPSB7XG5cdHJlbGVhc2VUeXBlOiBEZWZhdWx0UmVsZWFzZVR5cGUsXG5cdGNoYW5uZWw6IERlZmF1bHRDaGFubmVsLFxuXHRkcnlSdW46IGZhbHNlLFxufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZlcnNpb24gaW1wbGVtZW50cyBBY3Rpb248VmVyc2lvbk9wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoVmVyc2lvbi5uYW1lKTtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogVmVyc2lvbk9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnZlcnNpb24odGhpcy53b3Jrc3BhY2UsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IG1lc3NhZ2VzID0gcmVzcG9uc2UuZGF0YVxuXHRcdFx0LmZsYXRNYXAoKGQpID0+ICghZC5zdWNjZWVkZWQgJiYgZC5lcnJvciA/IFtkLmVycm9yXSA6IFtdKSlcblx0XHRcdC5qb2luKFwiXFxuXCIpO1xuXHRcdGlmIChtZXNzYWdlcykge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYFRoZXJlIHdhcyBhbiBlcnJvciB2ZXJzaW9uaW5nIHRoZSB3b3Jrc3BhY2UgJHttZXNzYWdlc31gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgdmVyc2lvbihcblx0XHR3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0XHRvcHRpb25zOiBWZXJzaW9uT3B0aW9ucyA9IERlZmF1bHRWZXJzaW9uT3B0aW9ucyxcblx0KTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZTxWZXJzaW9uUmVzcG9uc2U+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB3b3Jrc3BhY2UuZ2V0UHJvamVjdHMoXCJkZWJ1Z1wiKTtcblx0XHRjb25zdCByb290VmVyc2lvbiA9IGF3YWl0IHRoaXMucmVzb2x2ZUJhc2VWZXJzaW9uKHdvcmtzcGFjZSwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgcmVsZWFzZVR5cGUgPSBvcHRpb25zLmZyb21DaGFuZ2VzZXRzXG5cdFx0XHQ/IGF3YWl0IHRoaXMucmVzb2x2ZVJlbGVhc2VUeXBlRnJvbUNoYW5nZXNldHMoKVxuXHRcdFx0OiAob3B0aW9ucy5yZWxlYXNlVHlwZSA/PyBEZWZhdWx0UmVsZWFzZVR5cGUpO1xuXHRcdGNvbnN0IGNoYW5uZWwgPSBvcHRpb25zLmNoYW5uZWwgPz8gRGVmYXVsdENoYW5uZWw7XG5cdFx0Y29uc3QgbmV4dFZlcnNpb24gPSB0aGlzLmdldE5leHRWZXJzaW9uKHJvb3RWZXJzaW9uLCByZWxlYXNlVHlwZSwgY2hhbm5lbCk7XG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYCR7cm9vdFZlcnNpb259IOKGkiAke25leHRWZXJzaW9ufSBbJHtyZWxlYXNlVHlwZX1dYCk7XG5cblx0XHRpZiAob3B0aW9ucy5kcnlSdW4pIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFxuXHRcdFx0XHRgW2RyeS1ydW5dIFdvdWxkIGJ1bXAgYWxsIHBhY2thZ2VzIHRvICR7bmV4dFZlcnNpb259IOKAlCBza2lwcGluZyBmaWxlIHdyaXRlc2AsXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoVmVyc2lvbi5uYW1lLCBbXG5cdFx0XHRcdHsgbmFtZTogd29ya3NwYWNlLm5hbWUsIHN1Y2NlZWRlZDogdHJ1ZSB9LFxuXHRcdFx0XHQuLi5wcm9qZWN0cy5tYXAoKHApID0+ICh7IG5hbWU6IHAubmFtZSwgc3VjY2VlZGVkOiB0cnVlIH0pKSxcblx0XHRcdF0pO1xuXHRcdH1cblxuXHRcdGF3YWl0IHdvcmtzcGFjZS5wZXJzaXN0UGFja2FnZUpzb24oXG5cdFx0XHQoYXdhaXQgd29ya3NwYWNlLmdldFBhY2thZ2VKc29uKCkpLndpdGhWZXJzaW9uKG5leHRWZXJzaW9uLnRvU3RyaW5nKCkpLFxuXHRcdCk7XG5cblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG5cdFx0XHQuLi5bdGhpcy51cGRhdGVQYWNrYWdlSnNvbih3b3Jrc3BhY2UubmFtZSwgd29ya3NwYWNlLCBuZXh0VmVyc2lvbildLFxuXHRcdFx0Li4ucHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiB0aGlzLnVwZGF0ZVBhY2thZ2VKc29uKHByb2plY3QubmFtZSwgcHJvamVjdCwgbmV4dFZlcnNpb24pKSxcblx0XHRdKTtcblx0XHRjb25zdCBmYWlsZWQgPSByZXNwb25zZXMuZmlsdGVyKChyKSA9PiAhci5zdWNjZWVkZWQpO1xuXHRcdGlmIChmYWlsZWQubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuRXJyb3IoVmVyc2lvbi5uYW1lLCByZXNwb25zZXMpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmNvbW1pdCkge1xuXHRcdFx0Y29uc3QgZmlsZXMgPSBbd29ya3NwYWNlLnBhY2thZ2VKc29uUGF0aCwgLi4ucHJvamVjdHMubWFwKChwKSA9PiBwLnBhY2thZ2VKc29uUGF0aCldO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZSA/PyBgY2hvcmU6IHZlcnNpb24gcGFja2FnZXMgJHtuZXh0VmVyc2lvbn1gO1xuXHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYENvbW1pdHRpbmc6ICR7bWVzc2FnZX1gKTtcblx0XHRcdGF3YWl0IG5ldyBHaXQoKS5jb21taXQobWVzc2FnZSwgeyBmaWxlcyB9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU3VjY2VzcyhWZXJzaW9uLm5hbWUsIHJlc3BvbnNlcyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHJlc29sdmVCYXNlVmVyc2lvbihcblx0XHR3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0XHRvcHRpb25zOiBWZXJzaW9uT3B0aW9ucyxcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRpZiAob3B0aW9ucy52ZXJzaW9uICE9IG51bGwgJiYgb3B0aW9ucy52ZXJzaW9uLnRyaW0oKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucy52ZXJzaW9uLnRyaW0oKTtcblx0XHR9XG5cblx0XHRjb25zdCBnaXRUYWdWZXJzaW9uID0gdGhpcy5yZXNvbHZlVmVyc2lvbkZyb21HaXRUYWcoKTtcblx0XHRpZiAoZ2l0VGFnVmVyc2lvbiAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgVXNpbmcgbGF0ZXN0IGdpdCB0YWcgdmVyc2lvbiBhcyBiYXNlOiAke2dpdFRhZ1ZlcnNpb259YCk7XG5cdFx0XHRyZXR1cm4gZ2l0VGFnVmVyc2lvbjtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VWZXJzaW9uID0gYXdhaXQgd29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHR0aGlzLiNsb2dnZXIuaW5mbyhcblx0XHRcdGBObyBzZW12ZXIgZ2l0IHRhZ3MgZm91bmQsIGZhbGxpbmcgYmFjayB0byB3b3Jrc3BhY2UgcGFja2FnZS5qc29uIHZlcnNpb246ICR7d29ya3NwYWNlVmVyc2lvbn1gLFxuXHRcdCk7XG5cdFx0cmV0dXJuIHdvcmtzcGFjZVZlcnNpb247XG5cdH1cblxuXHRwcml2YXRlIHJlc29sdmVWZXJzaW9uRnJvbUdpdFRhZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB0YWdzID0gZXhlY1N5bmMoJ2dpdCB0YWcgLS1saXN0IFwidipcIiAtLXNvcnQ9LXZlcnNpb246cmVmbmFtZScsIHtcblx0XHRcdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdFx0fSlcblx0XHRcdFx0LnRyaW0oKVxuXHRcdFx0XHQuc3BsaXQoXCJcXG5cIilcblx0XHRcdFx0LmZpbHRlcihCb29sZWFuKTtcblxuXHRcdFx0aWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0YWdzWzBdLnJlcGxhY2UoL152LywgXCJcIik7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyBhbGwgcGVuZGluZyAuY2hhbmdlc2V0LyoubWQgZW50cmllcyBhbmQgcmV0dXJucyB0aGUgaGlnaGVzdCBidW1wIHR5cGVcblx0ICogZm91bmQgYWNyb3NzIGFsbCBvZiB0aGVtLiBQcmVjZWRlbmNlOiBtYWpvciA+IG1pbm9yID4gcGF0Y2guXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIHJlc29sdmVSZWxlYXNlVHlwZUZyb21DaGFuZ2VzZXRzKCk6IFByb21pc2U8VmVyc2lvblR5cGU+IHtcblx0XHRjb25zdCBjaGFuZ2VzZXREaXIgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiLmNoYW5nZXNldFwiKTtcblx0XHRsZXQgZW50cmllczogc3RyaW5nW107XG5cdFx0dHJ5IHtcblx0XHRcdGVudHJpZXMgPSBhd2FpdCByZWFkZGlyKGNoYW5nZXNldERpcik7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihcblx0XHRcdFx0XCJObyAuY2hhbmdlc2V0IGRpcmVjdG9yeSBmb3VuZC4gUnVuIGBwbnBtIGNoYW5nZXNldGAgdG8gY3JlYXRlIGFuIGVudHJ5LlwiLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWxlcyA9IGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLmVuZHNXaXRoKFwiLm1kXCIpICYmIGUgIT09IFwiUkVBRE1FLm1kXCIpO1xuXHRcdGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBGb3JnZUVycm9yKFxuXHRcdFx0XHRcIk5vIHBlbmRpbmcgY2hhbmdlc2V0IGVudHJpZXMgZm91bmQgaW4gLmNoYW5nZXNldC8uIFJ1biBgcG5wbSBjaGFuZ2VzZXRgIHRvIGNyZWF0ZSBvbmUuXCIsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByZWNlZGVuY2U6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IG1ham9yOiAzLCBtaW5vcjogMiwgcGF0Y2g6IDEsIHByZXJlbGVhc2U6IDAgfTtcblx0XHRsZXQgbWF4VHlwZTogVmVyc2lvblR5cGUgPSBWZXJzaW9uVHlwZXMucGF0Y2g7XG5cdFx0bGV0IG1heFByZWNlZGVuY2UgPSAwO1xuXG5cdFx0Zm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG5cdFx0XHRjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoam9pbihjaGFuZ2VzZXREaXIsIGZpbGUpLCBcInV0ZjhcIik7XG5cdFx0XHRjb25zdCBtYXRjaCA9IGNvbnRlbnQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS0vKTtcblx0XHRcdGlmICghbWF0Y2gpIGNvbnRpbnVlO1xuXHRcdFx0Zm9yIChjb25zdCBsaW5lIG9mIG1hdGNoWzFdLnNwbGl0KFwiXFxuXCIpKSB7XG5cdFx0XHRcdGNvbnN0IGJ1bXBUeXBlID0gbGluZS5tYXRjaCgvXlwiW15cIl0rXCJcXHMqOlxccyooXFx3KykvKT8uWzFdIGFzIFZlcnNpb25UeXBlIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBwID0gYnVtcFR5cGUgIT0gbnVsbCA/IChwcmVjZWRlbmNlW2J1bXBUeXBlXSA/PyAtMSkgOiAtMTtcblx0XHRcdFx0aWYgKHAgPiBtYXhQcmVjZWRlbmNlKSB7XG5cdFx0XHRcdFx0bWF4VHlwZSA9IGJ1bXBUeXBlIGFzIFZlcnNpb25UeXBlO1xuXHRcdFx0XHRcdG1heFByZWNlZGVuY2UgPSBwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFJlc29sdmVkIHJlbGVhc2UgdHlwZSBmcm9tICR7ZmlsZXMubGVuZ3RofSBjaGFuZ2VzZXQocyk6ICR7bWF4VHlwZX1gKTtcblx0XHRyZXR1cm4gbWF4VHlwZTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0TmV4dFZlcnNpb24oXG5cdFx0Y3VycmVudFZlcnNpb246IHN0cmluZyxcblx0XHR2ZXJzaW9uVHlwZTogVmVyc2lvblR5cGUsXG5cdFx0cHJlaWQ6IHN0cmluZyxcblx0KTogU2VtdmVyIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIG5ldyBTZW12ZXIoY3VycmVudFZlcnNpb24pLmluY3JlbWVudCh2ZXJzaW9uVHlwZSwgcHJlaWQpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBTZW12ZXJFcnJvcikge1xuXHRcdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihlcnJvci5tZXNzYWdlKTtcblx0XHRcdH1cblxuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyB1cGRhdGVQYWNrYWdlSnNvbihcblx0XHRuYW1lOiBzdHJpbmcsXG5cdFx0aGFzSnNvbjogSGFzUGFja2FnZUpzb24sXG5cdFx0dmVyc2lvbjogU2VtdmVyLFxuXHQpOiBQcm9taXNlPFZlcnNpb25SZXNwb25zZT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IGhhc0pzb24uZ2V0UGFja2FnZUpzb24oKTtcblx0XHRcdGF3YWl0IGhhc0pzb24ucGVyc2lzdFBhY2thZ2VKc29uKHBhY2thZ2VKc29uLndpdGhWZXJzaW9uKHZlcnNpb24udG9TdHJpbmcoKSkpO1xuXHRcdFx0dGhpcy4jbG9nZ2VyLnRyYWNlKG5hbWUpO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0c3VjY2VlZGVkOiB0cnVlLFxuXHRcdFx0fTtcblx0XHR9IGNhdGNoIChyZWFzb24pIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdGVycm9yOiBgJHtuYW1lfTogJHtmb3JtYXRVbmtub3duRXJyb3IocmVhc29uKX1gLFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlYWRkaXIiLCJyZWFkRmlsZSIsImpvaW4iLCJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJHaXQiLCJTZW12ZXIiLCJTZW12ZXJFcnJvciIsIlZlcnNpb25UeXBlcyIsInNjcmliZSIsIkZvcmdlRXJyb3IiLCJmb3JtYXRVbmtub3duRXJyb3IiLCJEZWZhdWx0Q2hhbm5lbCIsIkRlZmF1bHRSZWxlYXNlVHlwZSIsInByZXJlbGVhc2UiLCJEZWZhdWx0VmVyc2lvbk9wdGlvbnMiLCJyZWxlYXNlVHlwZSIsImNoYW5uZWwiLCJkcnlSdW4iLCJWZXJzaW9uIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJyZXNwb25zZSIsInZlcnNpb24iLCJtZXNzYWdlcyIsImRhdGEiLCJmbGF0TWFwIiwiZCIsInN1Y2NlZWRlZCIsImVycm9yIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsInJvb3RWZXJzaW9uIiwicmVzb2x2ZUJhc2VWZXJzaW9uIiwiZnJvbUNoYW5nZXNldHMiLCJyZXNvbHZlUmVsZWFzZVR5cGVGcm9tQ2hhbmdlc2V0cyIsIm5leHRWZXJzaW9uIiwiZ2V0TmV4dFZlcnNpb24iLCJpbmZvIiwiU3VjY2VzcyIsIm1hcCIsInAiLCJwZXJzaXN0UGFja2FnZUpzb24iLCJnZXRQYWNrYWdlSnNvbiIsIndpdGhWZXJzaW9uIiwidG9TdHJpbmciLCJyZXNwb25zZXMiLCJQcm9taXNlIiwiYWxsIiwidXBkYXRlUGFja2FnZUpzb24iLCJwcm9qZWN0IiwiZmFpbGVkIiwiZmlsdGVyIiwiciIsImxlbmd0aCIsIkVycm9yIiwiY29tbWl0IiwiZmlsZXMiLCJwYWNrYWdlSnNvblBhdGgiLCJtZXNzYWdlIiwidHJpbSIsImdpdFRhZ1ZlcnNpb24iLCJyZXNvbHZlVmVyc2lvbkZyb21HaXRUYWciLCJ3b3Jrc3BhY2VWZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInRhZ3MiLCJlbmNvZGluZyIsInNwbGl0IiwiQm9vbGVhbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJjaGFuZ2VzZXREaXIiLCJwcm9jZXNzIiwiY3dkIiwiZW50cmllcyIsImUiLCJlbmRzV2l0aCIsInByZWNlZGVuY2UiLCJtYWpvciIsIm1pbm9yIiwicGF0Y2giLCJtYXhUeXBlIiwibWF4UHJlY2VkZW5jZSIsImZpbGUiLCJjb250ZW50IiwibWF0Y2giLCJsaW5lIiwiYnVtcFR5cGUiLCJjdXJyZW50VmVyc2lvbiIsInZlcnNpb25UeXBlIiwicHJlaWQiLCJpbmNyZW1lbnQiLCJoYXNKc29uIiwicGFja2FnZUpzb24iLCJ0cmFjZSIsInJlYXNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUSxRQUFRLHFCQUFxQjtBQUM5QyxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxtQkFBbUI7QUFDckQsU0FBU0MsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBU0MsVUFBVSxRQUFRLGdDQUFnQztBQUUzRCw4Q0FBOEM7QUFDOUMsU0FBU0MsU0FBUyxRQUFRLGlC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
@@ -0,0 +1,41 @@
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 { scribe } from "@decohere/scribe";
15
+ export class Watch {
16
+ workspace;
17
+ #logger = scribe.logger(Watch.name);
18
+ constructor(workspace){
19
+ this.workspace = workspace;
20
+ }
21
+ run = async (options)=>{
22
+ if (!options.watch) {
23
+ this.#logger.info(`Skipping ${Watch.name}`);
24
+ return ActionResponse.Skipped(Watch.name);
25
+ }
26
+ await this.workspace.watch(options.configuration);
27
+ return ActionResponse.Blocking(Watch.name);
28
+ };
29
+ [Symbol.dispose]() {
30
+ this.workspace.stopWatching();
31
+ }
32
+ }
33
+ Watch = _ts_decorate([
34
+ injectable(),
35
+ _ts_metadata("design:type", Function),
36
+ _ts_metadata("design:paramtypes", [
37
+ typeof Workspace === "undefined" ? Object : Workspace
38
+ ])
39
+ ], Watch);
40
+
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2FjdGlvbnMvd2F0Y2guYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL3VzZUltcG9ydFR5cGU6IDxEST5cbmltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcblxuZXhwb3J0IHR5cGUgV2F0Y2hPcHRpb25zID0ge1xuXHR3YXRjaDogYm9vbGVhbjtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdhdGNoIGltcGxlbWVudHMgQWN0aW9uPFdhdGNoT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihXYXRjaC5uYW1lKTtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cblx0cHVibGljIHJ1biA9IGFzeW5jIChvcHRpb25zOiBXYXRjaE9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiA9PiB7XG5cdFx0aWYgKCFvcHRpb25zLndhdGNoKSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgU2tpcHBpbmcgJHtXYXRjaC5uYW1lfWApO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlNraXBwZWQoV2F0Y2gubmFtZSk7XG5cdFx0fVxuXG5cdFx0YXdhaXQgdGhpcy53b3Jrc3BhY2Uud2F0Y2gob3B0aW9ucy5jb25maWd1cmF0aW9uKTtcblx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuQmxvY2tpbmcoV2F0Y2gubmFtZSk7XG5cdH07XG5cblx0cHVibGljIFtTeW1ib2wuZGlzcG9zZV0oKSB7XG5cdFx0dGhpcy53b3Jrc3BhY2Uuc3RvcFdhdGNoaW5nKCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJzY3JpYmUiLCJXYXRjaCIsImxvZ2dlciIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJydW4iLCJvcHRpb25zIiwid2F0Y2giLCJpbmZvIiwiU2tpcHBlZCIsImNvbmZpZ3VyYXRpb24iLCJCbG9ja2luZyIsIlN5bWJvbCIsImRpc3Bvc2UiLCJzdG9wV2F0Y2hpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFVBQVUsUUFBUSxnQ0FBZ0M7QUFDM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBUTFDLE9BQU8sTUFBTUM7O0lBQ1osQ0FBQSxNQUFPLEdBQUdELE9BQU9FLE1BQU0sQ0FBQ0QsTUFBTUUsSUFBSSxFQUFFO0lBQ3BDLFlBQW1CLEFBQWlCQyxTQUFvQixDQUFFO2FBQXRCQSxZQUFBQTtJQUF1QjtJQUVwREMsTUFBTSxPQUFPQztRQUNuQixJQUFJLENBQUNBLFFBQVFDLEtBQUssRUFBRTtZQUNuQixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRVAsTUFBTUUsSUFBSSxFQUFFO1lBQzFDLE9BQU9KLGVBQWVVLE9BQU8sQ0FBQ1IsTUFBTUUsSUFBSTtRQUN6QztRQUVBLE1BQU0sSUFBSSxDQUFDQyxTQUFTLENBQUNHLEtBQUssQ0FBQ0QsUUFBUUksYUFBYTtRQUNoRCxPQUFPWCxlQUFlWSxRQUFRLENBQUNWLE1BQU1FLElBQUk7SUFDMUMsRUFBRTtJQUVLLENBQUNTLE9BQU9DLE9BQU8sQ0FBQyxHQUFHO1FBQ3pCLElBQUksQ0FBQ1QsU0FBUyxDQUFDVSxZQUFZO0lBQzVCO0FBQ0QifQ==
@@ -0,0 +1,34 @@
1
+ import { CommandResponse, ConfigurationOption, DecohereCommand, NoCleanOptions } from "@decohere/nexus/cli";
2
+ import auto from "async/auto.js";
3
+ export class BuildCommand extends DecohereCommand {
4
+ constructor(name){
5
+ super(name ?? BuildCommand.name);
6
+ this.description("Build workspace projects");
7
+ this.addOption(new ConfigurationOption("debug"));
8
+ this.addOption(new NoCleanOptions(true));
9
+ this.option("--no-copy", "Will not copy files like package.json to outdir", true);
10
+ this.option("--watch", "Watches for changes in the source dir", false);
11
+ this.option("--file <file>", "File to build");
12
+ }
13
+ run = async (actions, options)=>{
14
+ const responses = await auto({
15
+ clean: async ()=>await actions.clean.run(options),
16
+ build: [
17
+ "clean",
18
+ async ()=>await actions.build.run(options)
19
+ ],
20
+ copy: [
21
+ "clean",
22
+ async ()=>await actions.copy.run(options)
23
+ ],
24
+ watch: [
25
+ "build",
26
+ "copy",
27
+ async ()=>await actions.watch.run(options)
28
+ ]
29
+ });
30
+ return CommandResponse.success(options, responses);
31
+ };
32
+ }
33
+
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL2J1aWxkLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXJnZU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0Q29tbWFuZFJlc3BvbnNlLFxuXHRDb25maWd1cmF0aW9uT3B0aW9uLFxuXHREZWNvaGVyZUNvbW1hbmQsXG5cdE5vQ2xlYW5PcHRpb25zLFxufSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IGF1dG8gZnJvbSBcImFzeW5jL2F1dG8uanNcIjtcbmltcG9ydCB0eXBlIHsgQnVpbGQgfSBmcm9tIFwiLi4vYWN0aW9ucy9idWlsZC5hY3Rpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQ2xlYW4gfSBmcm9tIFwiLi4vYWN0aW9ucy9jbGVhbi5hY3Rpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQ29weSB9IGZyb20gXCIuLi9hY3Rpb25zL2NvcHkuYWN0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdhdGNoIH0gZnJvbSBcIi4uL2FjdGlvbnMvd2F0Y2guYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQWN0aW9ucyA9IHsgY2xlYW46IENsZWFuOyBidWlsZDogQnVpbGQ7IHdhdGNoOiBXYXRjaDsgY29weTogQ29weSB9O1xuZXhwb3J0IGNsYXNzIEJ1aWxkQ29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZDxCdWlsZEFjdGlvbnM+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lID8/IEJ1aWxkQ29tbWFuZC5uYW1lKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiQnVpbGQgd29ya3NwYWNlIHByb2plY3RzXCIpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBDb25maWd1cmF0aW9uT3B0aW9uKFwiZGVidWdcIikpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBOb0NsZWFuT3B0aW9ucyh0cnVlKSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLW5vLWNvcHlcIiwgXCJXaWxsIG5vdCBjb3B5IGZpbGVzIGxpa2UgcGFja2FnZS5qc29uIHRvIG91dGRpclwiLCB0cnVlKTtcblx0XHR0aGlzLm9wdGlvbihcIi0td2F0Y2hcIiwgXCJXYXRjaGVzIGZvciBjaGFuZ2VzIGluIHRoZSBzb3VyY2UgZGlyXCIsIGZhbHNlKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tZmlsZSA8ZmlsZT5cIiwgXCJGaWxlIHRvIGJ1aWxkXCIpO1xuXHR9XG5cblx0cHVibGljIHJ1biA9IGFzeW5jIChcblx0XHRhY3Rpb25zOiBCdWlsZEFjdGlvbnMsXG5cdFx0b3B0aW9uczogTWVyZ2VPcHRpb25zPEJ1aWxkQWN0aW9ucz4sXG5cdCk6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPEJ1aWxkQWN0aW9ucz4+ID0+IHtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBhdXRvPEJ1aWxkQWN0aW9ucz4oe1xuXHRcdFx0Y2xlYW46IGFzeW5jICgpID0+IGF3YWl0IGFjdGlvbnMuY2xlYW4ucnVuKG9wdGlvbnMpLFxuXHRcdFx0YnVpbGQ6IFtcImNsZWFuXCIsIGFzeW5jICgpID0+IGF3YWl0IGFjdGlvbnMuYnVpbGQucnVuKG9wdGlvbnMpXSxcblx0XHRcdGNvcHk6IFtcImNsZWFuXCIsIGFzeW5jICgpID0+IGF3YWl0IGFjdGlvbnMuY29weS5ydW4ob3B0aW9ucyldLFxuXHRcdFx0d2F0Y2g6IFtcImJ1aWxkXCIsIFwiY29weVwiLCBhc3luYyAoKSA9PiBhd2FpdCBhY3Rpb25zLndhdGNoLnJ1bihvcHRpb25zKV0sXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gQ29tbWFuZFJlc3BvbnNlLnN1Y2Nlc3Mob3B0aW9ucywgcmVzcG9uc2VzKTtcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJDb21tYW5kUmVzcG9uc2UiLCJDb25maWd1cmF0aW9uT3B0aW9uIiwiRGVjb2hlcmVDb21tYW5kIiwiTm9DbGVhbk9wdGlvbnMiLCJhdXRvIiwiQnVpbGRDb21tYW5kIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkT3B0aW9uIiwib3B0aW9uIiwicnVuIiwiYWN0aW9ucyIsIm9wdGlvbnMiLCJyZXNwb25zZXMiLCJjbGVhbiIsImJ1aWxkIiwiY29weSIsIndhdGNoIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FDQ0EsZUFBZSxFQUNmQyxtQkFBbUIsRUFDbkJDLGVBQWUsRUFDZkMsY0FBYyxRQUNSLHNCQUFzQjtBQUM3QixPQUFPQyxVQUFVLGdCQUFnQjtBQU9qQyxPQUFPLE1BQU1DLHFCQUFxQkg7SUFDakMsWUFBbUJJLElBQWEsQ0FBRTtRQUNqQyxLQUFLLENBQUNBLFFBQVFELGFBQWFDLElBQUk7UUFDL0IsSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSVAsb0JBQW9CO1FBQ3ZDLElBQUksQ0FBQ08sU0FBUyxDQUFDLElBQUlMLGVBQWU7UUFDbEMsSUFBSSxDQUFDTSxNQUFNLENBQUMsYUFBYSxtREFBbUQ7UUFDNUUsSUFBSSxDQUFDQSxNQUFNLENBQUMsV0FBVyx5Q0FBeUM7UUFDaEUsSUFBSSxDQUFDQSxNQUFNLENBQUMsaUJBQWlCO0lBQzlCO0lBRU9DLE1BQU0sT0FDWkMsU0FDQUM7UUFFQSxNQUFNQyxZQUFZLE1BQU1ULEtBQW1CO1lBQzFDVSxPQUFPLFVBQVksTUFBTUgsUUFBUUcsS0FBSyxDQUFDSixHQUFHLENBQUNFO1lBQzNDRyxPQUFPO2dCQUFDO2dCQUFTLFVBQVksTUFBTUosUUFBUUksS0FBSyxDQUFDTCxHQUFHLENBQUNFO2FBQVM7WUFDOURJLE1BQU07Z0JBQUM7Z0JBQVMsVUFBWSxNQUFNTCxRQUFRSyxJQUFJLENBQUNOLEdBQUcsQ0FBQ0U7YUFBUztZQUM1REssT0FBTztnQkFBQztnQkFBUztnQkFBUSxVQUFZLE1BQU1OLFFBQVFNLEtBQUssQ0FBQ1AsR0FBRyxDQUFDRTthQUFTO1FBQ3ZFO1FBRUEsT0FBT1osZ0JBQWdCa0IsT0FBTyxDQUFDTixTQUFTQztJQUN6QyxFQUFFO0FBQ0gifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL2RlcGVuZGVuY3kuY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1hbmRIYW5kbGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IENvbW1hbmRSZXNwb25zZSwgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWl0RmlsZXNPcHRpb25zIH0gZnJvbSBcIi4uL2FjdGlvbnMvY29tbWl0LmFjdGlvbi5qc1wiO1xuaW1wb3J0IHsgQ29tbWl0RmlsZXMgfSBmcm9tIFwiLi4vYWN0aW9ucy9jb21taXQuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBSZXBvcnREZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vYWN0aW9ucy9kZXBlbmRlbmN5LXJlcG9ydC5hY3Rpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jaWVzT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL2RlcGVuZGVuY3ktc3luYy5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFN5bmNEZXBlbmRlbmNpZXMgYXMgRGVwZW5kZW5jeVN5bmMgfSBmcm9tIFwiLi4vYWN0aW9ucy9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN5bmNMb2NrRmlsZU9wdGlvbnMgfSBmcm9tIFwiLi4vYWN0aW9ucy9zeW5jLWxvY2stZmlsZS5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFN5bmNMb2NrRmlsZSB9IGZyb20gXCIuLi9hY3Rpb25zL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuaW1wb3J0IHsgUmVsZWFzZSB9IGZyb20gXCIuLi93b3Jrc3BhY2UuY29uZmlnLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmN5Q29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nLCBoYW5kbGVyPzogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihuYW1lID8/IERlcGVuZGVuY3lDb21tYW5kKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiQW5hbHl6ZSBhbmQgc3luYyB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzXCIpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBDb25maWd1cmF0aW9uT3B0aW9uKFwicmVsZWFzZVwiKSk7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoUmVwb3J0Q29tbWFuZCwgaGFuZGxlcik7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoU3luY0NvbW1hbmQsIGhhbmRsZXIpO1xuXHR9XG59XG5cbnR5cGUgU3luY0FjdGlvbnMgPSB7XG5cdHN5bmNEZXBlbmRlbmNpZXM6IERlcGVuZGVuY3lTeW5jO1xuXHRzeW5jTG9ja0ZpbGU6IFN5bmNMb2NrRmlsZTtcblx0Y29tbWl0RmlsZXM6IENvbW1pdEZpbGVzO1xufTtcblxuY2xhc3MgU3luY0NvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQ8U3luY0FjdGlvbnM+IHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbRGVwZW5kZW5jeVN5bmMsIFN5bmNMb2NrRmlsZSwgQ29tbWl0RmlsZXNdO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKFN5bmNDb21tYW5kKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiU3luYyB3b3Jrc3BhY2UgZGVwZW5kZW5jeSBtYW5pZmVzdHNcIik7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tbG9nLWRpZmZcIixcblx0XHRcdFwiTG9nIHdoYXQgY2hhbmdlZCBpbiBlYWNoIHByb2plY3QncyBkZXBlbmRlbmNpZXMgYWZ0ZXIgc3luY2luZ1wiLFxuXHRcdFx0ZmFsc2UsXG5cdFx0KTtcblx0XHR0aGlzLm9wdGlvbihcIi0tbm8tc3luY1wiLCBcIlNraXAgbG9ja2ZpbGUgc3luYyBhZnRlciBzeW5jaW5nIGRlcGVuZGVuY2llc1wiLCB0cnVlKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tY29tbWl0XCIsIFwiQ29tbWl0IHN5bmNlZCB3b3Jrc3BhY2UgbWFuaWZlc3QgY2hhbmdlc1wiLCBmYWxzZSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLW1lc3NhZ2UgPG1lc3NhZ2U+XCIsIFwiQ29tbWl0IG1lc3NhZ2UgKHVzZWQgd2l0aCAtLWNvbW1pdClcIik7XG5cdH1cblxuXHRwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgcnVuKGFjdGlvbnM6IFN5bmNBY3Rpb25zLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuXHRcdGNvbnN0IHJlc3BvbnNlczogQ29tbWFuZFJlc3BvbnNlPFN5bmNBY3Rpb25zPiA9IHt9O1xuXHRcdGNvbnN0IGNvbmZpZ3VyYXRpb24gPVxuXHRcdFx0dHlwZW9mIG9wdGlvbnMuY29uZmlndXJhdGlvbiA9PT0gXCJzdHJpbmdcIiA/IG9wdGlvbnMuY29uZmlndXJhdGlvbiA6IFJlbGVhc2UubmFtZTtcblxuXHRcdGNvbnN0IHN5bmNEZXBlbmRlbmN5T3B0aW9uczogRGVwZW5kZW5jaWVzT3B0aW9ucyA9IHtcblx0XHRcdGNvbmZpZ3VyYXRpb24sXG5cdFx0XHRsb2dEaWZmOiBvcHRpb25zLmxvZ0RpZmYgPT09IHRydWUsXG5cdFx0fTtcblxuXHRcdGNvbnN0IHN5bmNMb2NrT3B0aW9uczogU3luY0xvY2tGaWxlT3B0aW9ucyA9IHtcblx0XHRcdHN5bmM6IG9wdGlvbnMuc3luYyAhPT0gZmFsc2UsXG5cdFx0XHRkcnlSdW46IG9wdGlvbnMuZHJ5UnVuID09PSB0cnVlLFxuXHRcdH07XG5cblx0XHRjb25zdCBjb21taXRPcHRpb25zOiBDb21taXRGaWxlc09wdGlvbnMgPSB7XG5cdFx0XHRjb25maWd1cmF0aW9uLFxuXHRcdFx0Y29tbWl0OiBvcHRpb25zLmNvbW1pdCA9PT0gdHJ1ZSxcblx0XHRcdGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4gPT09IHRydWUsXG5cdFx0XHRtZXNzYWdlOiB0eXBlb2Ygb3B0aW9ucy5tZXNzYWdlID09PSBcInN0cmluZ1wiID8gb3B0aW9ucy5tZXNzYWdlIDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRyZXNwb25zZXMuc3luY0RlcGVuZGVuY2llcyA9IGF3YWl0IGFjdGlvbnMuc3luY0RlcGVuZGVuY2llcy5ydW4oc3luY0RlcGVuZGVuY3lPcHRpb25zKTtcblx0XHR0aGlzLnRocm93T25FcnJvcnMoeyBzeW5jRGVwZW5kZW5jaWVzOiByZXNwb25zZXMuc3luY0RlcGVuZGVuY2llcyB9KTtcblxuXHRcdHJlc3BvbnNlcy5zeW5jTG9ja0ZpbGUgPSBhd2FpdCBhY3Rpb25zLnN5bmNMb2NrRmlsZS5ydW4oc3luY0xvY2tPcHRpb25zKTtcblx0XHR0aGlzLnRocm93T25FcnJvcnMoeyBzeW5jTG9ja0ZpbGU6IHJlc3BvbnNlcy5zeW5jTG9ja0ZpbGUgfSk7XG5cblx0XHRyZXNwb25zZXMuY29tbWl0RmlsZXMgPSBhd2FpdCBhY3Rpb25zLmNvbW1pdEZpbGVzLnJ1bihjb21taXRPcHRpb25zKTtcblx0XHR0aGlzLnRocm93T25FcnJvcnMoeyBjb21taXRGaWxlczogcmVzcG9uc2VzLmNvbW1pdEZpbGVzIH0pO1xuXG5cdFx0cmV0dXJuIENvbW1hbmRSZXNwb25zZS5zdWNjZXNzKG9wdGlvbnMsIHJlc3BvbnNlcyk7XG5cdH1cbn1cblxuY2xhc3MgUmVwb3J0Q29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1JlcG9ydERlcGVuZGVuY2llc107XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoUmVwb3J0Q29tbWFuZCk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIlJlcG9ydCByZXNvbHZlZCBkZXBlbmRlbmNpZXMgZm9yIHdvcmtzcGFjZSBwcm9qZWN0c1wiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tZmlsZSA8ZmlsZT5cIiwgXCJPcHRpb25hbCBmaWxlIHBhdGggdG8gd3JpdGUgdGhlIHJlcG9ydCB0b1wiKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1mYWlsLW9uLWRyaWZ0XCIsXG5cdFx0XHRcIkV4aXQgd2l0aCBhbiBlcnJvciBpZiByZXNvbHZlZCBkZXBlbmRlbmNpZXMgZGlmZmVyIGZyb20gd2hhdCBpcyBkZWNsYXJlZCBpbiBwYWNrYWdlLmpzb25cIixcblx0XHRcdGZhbHNlLFxuXHRcdCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDb21tYW5kUmVzcG9uc2UiLCJDb25maWd1cmF0aW9uT3B0aW9uIiwiRGVjb2hlcmVDb21tYW5kIiwiQ29tbWl0RmlsZXMiLCJSZXBvcnREZXBlbmRlbmNpZXMiLCJTeW5jRGVwZW5kZW5jaWVzIiwiRGVwZW5kZW5jeVN5bmMiLCJTeW5jTG9ja0ZpbGUiLCJSZWxlYXNlIiwiRGVwZW5kZW5jeUNvbW1hbmQiLCJuYW1lIiwiaGFuZGxlciIsImRlc2NyaXB0aW9uIiwiYWRkT3B0aW9uIiwicmVnaXN0ZXJTdWJjb21tYW5kIiwiUmVwb3J0Q29tbWFuZCIsIlN5bmNDb21tYW5kIiwiYWN0aW9ucyIsIm9wdGlvbiIsInJ1biIsIm9wdGlvbnMiLCJyZXNwb25zZXMiLCJjb25maWd1cmF0aW9uIiwic3luY0RlcGVuZGVuY3lPcHRpb25zIiwibG9nRGlmZiIsInN5bmNMb2NrT3B0aW9ucyIsInN5bmMiLCJkcnlSdW4iLCJjb21taXRPcHRpb25zIiwiY29tbWl0IiwibWVzc2FnZSIsInVuZGVmaW5lZCIsInN5bmNEZXBlbmRlbmNpZXMiLCJ0aHJvd09uRXJyb3JzIiwic3luY0xvY2tGaWxlIiwiY29tbWl0RmlsZXMiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxlQUFlLEVBQUVDLG1CQUFtQixFQUFFQyxlQUFlLFFBQVEsc0JBQXNCO0FBRTVGLFNBQVND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
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL2ZvcmdlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBY3Rpb25zIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7XG5cdHR5cGUgQ29tbWFuZEhhbmRsZXIsXG5cdHR5cGUgQ29tbWFuZFJlc3BvbnNlLFxuXHR0eXBlIENvbW1hbmRUeXBlLFxuXHREZWNvaGVyZUNvbW1hbmQsXG59IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JnZUNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRUeXBlPiwgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihGb3JnZUNvbW1hbmQpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJSdW4gZm9yZ2Ugd29ya3NwYWNlIHdvcmtmbG93c1wiKTtcblx0XHR0aGlzLmV4aXRPdmVycmlkZSgpO1xuXHRcdHRoaXMucmVnaXN0ZXJTdWJjb21tYW5kKGNvbW1hbmRzLCBoYW5kbGVyKTtcblx0fVxuXG5cdHB1YmxpYyBydW4oX2FjdGlvbnM6IEFjdGlvbnMsIF9vcHRpb25zOiBuZXZlcik6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaGVscCgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVjb2hlcmVDb21tYW5kIiwiRm9yZ2VDb21tYW5kIiwiY29tbWFuZHMiLCJoYW5kbGVyIiwiZGVzY3JpcHRpb24iLCJleGl0T3ZlcnJpZGUiLCJyZWdpc3RlclN1YmNvbW1hbmQiLCJydW4iLCJfYWN0aW9ucyIsIl9vcHRpb25zIiwiaGVscCJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FJQ0EsZUFBZSxRQUNULHNCQUFzQjtBQUU3QixPQUFPLE1BQU1DLHFCQUFxQkQ7SUFDakMsWUFBbUJFLFFBQXFDLEVBQUVDLE9BQXVCLENBQUU7UUFDbEYsS0FBSyxDQUFDRjtRQUNOLElBQUksQ0FBQ0csV0FBVyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0MsWUFBWTtRQUNqQixJQUFJLENBQUNDLGtCQUFrQixDQUFDSixVQUFVQztJQUNuQztJQUVPSSxJQUFJQyxRQUFpQixFQUFFQyxRQUFlLEVBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDQyxJQUFJO0lBQ2pCO0FBQ0QifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcGVuZGVuY3kuY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9yZ2UuY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YWcuY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5jb21tYW5kLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyx1QkFBdUIifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL3B1Ymxpc2guY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmF0aW9uT3B0aW9uLCBEZWNvaGVyZUNvbW1hbmQsIERyeVJ1bk9wdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBQdWJsaXNoIH0gZnJvbSBcIi4uL2FjdGlvbnMvcHVibGlzaC5hY3Rpb24uanNcIjtcblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbUHVibGlzaF07XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIlB1Ymxpc2ggd29ya3NwYWNlIHBhY2thZ2VzXCIpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBDb25maWd1cmF0aW9uT3B0aW9uKFwicmVsZWFzZVwiKSk7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IERyeVJ1bk9wdGlvbihcIlJ1biBucG0gcHVibGlzaCB1c2luZyBkcnktcnVuIGZsYWdcIikpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1jaGFubmVsIDxjaGFubmVsPlwiLCBcIlRoZSByZWxlYXNlIGNoYW5uZWxcIiwgXCJiZXRhXCIpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS10b2tlbiA8dG9rZW4+XCIsIFwibnBtIGFjY2VzcyB0b2tlbiAodXNlZCBvbmx5IGZvciB0aGlzIGNvbW1hbmQpXCIpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1vdHAgPG90cD5cIiwgXCJucG0gb25lLXRpbWUgcGFzc3dvcmQgZm9yIDJGQS1wcm90ZWN0ZWQgcHVibGlzaFwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tcHJvbXB0LWF1dGhcIiwgXCJQcm9tcHQgaW50ZXJhY3RpdmVseSBmb3IgbnBtIHRva2VuIGFuZCBPVFBcIiwgZmFsc2UpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLXByb21wdC1vdHBcIixcblx0XHRcdFwiUHJvbXB0IGludGVyYWN0aXZlbHkgZm9yIG5wbSBPVFAgb25seSAodXNlIHdoZW4gYWxyZWFkeSBsb2dnZWQgaW4pXCIsXG5cdFx0XHRmYWxzZSxcblx0XHQpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiQ29uZmlndXJhdGlvbk9wdGlvbiIsIkRlY29oZXJlQ29tbWFuZCIsIkRyeVJ1bk9wdGlvbiIsIlB1Ymxpc2giLCJQdWJsaXNoQ29tbWFuZCIsImFjdGlvbnMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJhZGRPcHRpb24iLCJvcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG1CQUFtQixFQUFFQyxlQUFlLEVBQUVDLFlBQVksUUFBUSxzQkFBc0I7QUFDekYsU0FBU0MsT0FBTyxRQUFRLCtCQUErQjtBQUV2RCxPQUFPLE1BQU1DLHVCQUF1Qkg7SUFDbkMsSUFBb0JJLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtTQUFRO0lBQ2pCO0lBRUEsWUFBbUJHLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSVIsb0JBQW9CO1FBQ3ZDLElBQUksQ0FBQ1EsU0FBUyxDQUFDLElBQUlOLGFBQWE7UUFDaEMsSUFBSSxDQUFDTyxNQUFNLENBQUMsdUJBQXVCLHVCQUF1QjtRQUMxRCxJQUFJLENBQUNBLE1BQU0sQ0FBQyxtQkFBbUI7UUFDL0IsSUFBSSxDQUFDQSxNQUFNLENBQUMsZUFBZTtRQUMzQixJQUFJLENBQUNBLE1BQU0sQ0FBQyxpQkFBaUIsOENBQThDO1FBQzNFLElBQUksQ0FBQ0EsTUFBTSxDQUNWLGdCQUNBLHNFQUNBO0lBRUY7QUFDRCJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL3RhZy5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29oZXJlQ29tbWFuZCwgRHJ5UnVuT3B0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFRhZyB9IGZyb20gXCIuLi9hY3Rpb25zL3RhZy5hY3Rpb24uanNcIjtcblxuZXhwb3J0IGNsYXNzIFRhZ0NvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtUYWddO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJDcmVhdGUgYW5kIG9wdGlvbmFsbHkgcHVzaCBhIGdpdCB0YWcgZm9yIHRoZSB3b3Jrc3BhY2UgdmVyc2lvblwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tcHJlZml4IDxwcmVmaXg+XCIsIFwiVGFnIHByZWZpeFwiLCBcInZcIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLXB1c2hcIiwgXCJQdXNoIHRoZSB0YWcgYW5kIGN1cnJlbnQgYnJhbmNoIHRvIG9yaWdpbiBhZnRlciB0YWdnaW5nXCIsIGZhbHNlKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgRHJ5UnVuT3B0aW9uKFwiUHJpbnQgdGhlIHRhZyB3aXRob3V0IGNyZWF0aW5nIGl0XCIpKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRlY29oZXJlQ29tbWFuZCIsIkRyeVJ1bk9wdGlvbiIsIlRhZyIsIlRhZ0NvbW1hbmQiLCJhY3Rpb25zIiwibmFtZSIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWRkT3B0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLEVBQUVDLFlBQVksUUFBUSxzQkFBc0I7QUFDcEUsU0FBU0MsR0FBRyxRQUFRLDJCQUEyQjtBQUUvQyxPQUFPLE1BQU1DLG1CQUFtQkg7SUFDL0IsSUFBb0JJLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtTQUFJO0lBQ2I7SUFFQSxZQUFtQkcsSUFBWSxDQUFFO1FBQ2hDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLE1BQU0sQ0FBQyxxQkFBcUIsY0FBYztRQUMvQyxJQUFJLENBQUNBLE1BQU0sQ0FBQyxVQUFVLDJEQUEyRDtRQUNqRixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJUCxhQUFhO0lBQ2pDO0FBQ0QifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbW1hbmRzL3ZlcnNpb24uY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmF0aW9uT3B0aW9uLCBEZWNvaGVyZUNvbW1hbmQsIERyeVJ1bk9wdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBTeW5jTG9ja0ZpbGUgfSBmcm9tIFwiLi4vYWN0aW9ucy9zeW5jLWxvY2stZmlsZS5hY3Rpb24uanNcIjtcbmltcG9ydCB7IERlZmF1bHRDaGFubmVsLCBEZWZhdWx0UmVsZWFzZVR5cGUsIFZlcnNpb24gfSBmcm9tIFwiLi4vYWN0aW9ucy92ZXJzaW9uLmFjdGlvbi5qc1wiO1xuXG50eXBlIFZlcnNpb25BY3Rpb25zID0geyB2ZXJzaW9uOiBWZXJzaW9uOyBzeW5jTG9ja0ZpbGU6IFN5bmNMb2NrRmlsZSB9O1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQ8VmVyc2lvbkFjdGlvbnM+IHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbVmVyc2lvbiwgU3luY0xvY2tGaWxlXTtcblx0fVxuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiQnVtcCB3b3Jrc3BhY2UgcGFja2FnZSB2ZXJzaW9uc1wiKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcInJlbGVhc2VcIikpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBEcnlSdW5PcHRpb24oXCJSdW4gbnBtIHB1Ymxpc2ggdXNpbmcgZHJ5LXJ1biBmbGFnXCIpKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1yZWxlYXNlLXR5cGUgPHJlbGVhc2VUeXBlPlwiLFxuXHRcdFx0XCJUaGUgc2VtdmVyIHJlbGVhc2UgdHlwZTogbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZVwiLFxuXHRcdFx0RGVmYXVsdFJlbGVhc2VUeXBlLFxuXHRcdCk7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tY2hhbm5lbCA8Y2hhbm5lbD5cIixcblx0XHRcdFwiVGhlIHJlbGVhc2UgY2hhbm5lbCAocHJlaWQgZm9yIHByZXJlbGVhc2VzLCBkaXN0LXRhZyBmb3IgcHVibGlzaClcIixcblx0XHRcdERlZmF1bHRDaGFubmVsLFxuXHRcdCk7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tdmVyc2lvbiA8dmVyc2lvbj5cIixcblx0XHRcdFwiRXhwbGljaXQgYmFzZSB2ZXJzaW9uIHRvIGluY3JlbWVudCAob3ZlcnJpZGVzIGdpdCB0YWcgZGlzY292ZXJ5KVwiLFxuXHRcdCk7XG5cdFx0dGhpcy5vcHRpb24oXCItLW5vLXN5bmNcIiwgXCJTa2lwIGxvY2tmaWxlIHN5bmMgYWZ0ZXIgdmVyc2lvbmluZ1wiLCB0cnVlKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tY29tbWl0XCIsIFwiQ29tbWl0IHZlcnNpb25lZCBwYWNrYWdlLmpzb24gZmlsZXMgYWZ0ZXIgYnVtcGluZ1wiLCBmYWxzZSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLW1lc3NhZ2UgPG1lc3NhZ2U+XCIsIFwiQ29tbWl0IG1lc3NhZ2UgKHVzZWQgd2l0aCAtLWNvbW1pdClcIik7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tZnJvbS1jaGFuZ2VzZXRzXCIsXG5cdFx0XHRcIlJlYWQgcGVuZGluZyAuY2hhbmdlc2V0IGVudHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBoaWdoZXN0IGJ1bXAgdHlwZSAobWFqb3IgPiBtaW5vciA+IHBhdGNoKVwiLFxuXHRcdFx0ZmFsc2UsXG5cdFx0KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkNvbmZpZ3VyYXRpb25PcHRpb24iLCJEZWNvaGVyZUNvbW1hbmQiLCJEcnlSdW5PcHRpb24iLCJTeW5jTG9ja0ZpbGUiLCJEZWZhdWx0Q2hhbm5lbCIsIkRlZmF1bHRSZWxlYXNlVHlwZSIsIlZlcnNpb24iLCJWZXJzaW9uQ29tbWFuZCIsImFjdGlvbnMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJhZGRPcHRpb24iLCJvcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG1CQUFtQixFQUFFQyxlQUFlLEVBQUVDLFlBQVksUUFBUSxzQkFBc0I7QUFDekYsU0FBU0MsWUFBWSxRQUFRLHNDQUFzQztBQUNuRSxTQUFTQyxjQUFjLEVBQUVDLGtCQUFrQixFQUFFQyxPQUFPLFFBQVEsK0JBQStCO0FBSTNGLE9BQU8sTUFBTUMsdUJBQXVCTjtJQUNuQyxJQUFvQk8sVUFBVTtRQUM3QixPQUFPO1lBQUNGO1lBQVNIO1NBQWE7SUFDL0I7SUFFQSxZQUFtQk0sSUFBWSxDQUFFO1FBQ2hDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJWCxvQkFBb0I7UUFDdkMsSUFBSSxDQUFDVyxTQUFTLENBQUMsSUFBSVQsYUFBYTtRQUNoQyxJQUFJLENBQUNVLE1BQU0sQ0FDVixnQ0FDQSw0REFDQVA7UUFFRCxJQUFJLENBQUNPLE1BQU0sQ0FDVix1QkFDQSxxRUFDQVI7UUFFRCxJQUFJLENBQUNRLE1BQU0sQ0FDVix1QkFDQTtRQUVELElBQUksQ0FBQ0EsTUFBTSxDQUFDLGFBQWEsdUNBQXVDO1FBQ2hFLElBQUksQ0FBQ0EsTUFBTSxDQUFDLFlBQVkscURBQXFEO1FBQzdFLElBQUksQ0FBQ0EsTUFBTSxDQUFDLHVCQUF1QjtRQUNuQyxJQUFJLENBQUNBLE1BQU0sQ0FDVixxQkFDQSw4RkFDQTtJQUVGO0FBQ0QifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2NvbnN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTV0NfQ09ORklHID0gXCIuc3djcmNcIjtcbmV4cG9ydCBjb25zdCBOT0RFX01PRFVMRVMgPSBcIm5vZGVfbW9kdWxlc1wiO1xuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX01PRFVMRVMgPSBbXG5cdFwiYXNzZXJ0XCIsXG5cdFwiYXNzZXJ0L3N0cmljdFwiLFxuXHRcImFzeW5jX2hvb2tzXCIsXG5cdFwiYnVmZmVyXCIsXG5cdFwiY2hpbGRfcHJvY2Vzc1wiLFxuXHRcImNsdXN0ZXJcIixcblx0XCJjb25zb2xlXCIsXG5cdFwiY29uc3RhbnRzXCIsXG5cdFwiY3J5cHRvXCIsXG5cdFwiZGdyYW1cIixcblx0XCJkaWFnbm9zdGljc19jaGFubmVsXCIsXG5cdFwiZG5zXCIsXG5cdFwiZG5zL3Byb21pc2VzXCIsXG5cdFwiZG9tYWluXCIsXG5cdFwiZXZlbnRzXCIsXG5cdFwiZnNcIixcblx0XCJmcy9wcm9taXNlc1wiLFxuXHRcImh0dHBcIixcblx0XCJodHRwMlwiLFxuXHRcImh0dHBzXCIsXG5cdFwiaW5zcGVjdG9yXCIsXG5cdFwiaW5zcGVjdG9yL3Byb21pc2VzXCIsXG5cdFwibW9kdWxlXCIsXG5cdFwibmV0XCIsXG5cdFwib3NcIixcblx0XCJwYXRoXCIsXG5cdFwicGF0aC9wb3NpeFwiLFxuXHRcInBhdGgvd2luMzJcIixcblx0XCJwZXJmX2hvb2tzXCIsXG5cdFwicHJvY2Vzc1wiLFxuXHRcInB1bnljb2RlXCIsXG5cdFwicXVlcnlzdHJpbmdcIixcblx0XCJyZWFkbGluZVwiLFxuXHRcInJlYWRsaW5lL3Byb21pc2VzXCIsXG5cdFwicmVwbFwiLFxuXHRcInN0cmVhbVwiLFxuXHRcInN0cmVhbS9jb25zdW1lcnNcIixcblx0XCJzdHJlYW0vcHJvbWlzZXNcIixcblx0XCJzdHJlYW0vd2ViXCIsXG5cdFwic3RyaW5nX2RlY29kZXJcIixcblx0XCJzeXNcIixcblx0XCJ0aW1lcnNcIixcblx0XCJ0aW1lcnMvcHJvbWlzZXNcIixcblx0XCJ0bHNcIixcblx0XCJ0cmFjZV9ldmVudHNcIixcblx0XCJ0dHlcIixcblx0XCJ1cmxcIixcblx0XCJ1dGlsXCIsXG5cdFwidXRpbC90eXBlc1wiLFxuXHRcInY4XCIsXG5cdFwidm1cIixcblx0XCJ3YXNpXCIsXG5cdFwid29ya2VyX3RocmVhZHNcIixcblx0XCJ6bGliXCIsXG5dO1xuIl0sIm5hbWVzIjpbIlNXQ19DT05GSUciLCJOT0RFX01PRFVMRVMiLCJCVUlMVF9JTl9NT0RVTEVTIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLGFBQWEsU0FBUztBQUNuQyxPQUFPLE1BQU1DLGVBQWUsZUFBZTtBQUMzQyxPQUFPLE1BQU1DLG1CQUFtQjtJQUMvQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDQSxDQUFDIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2Vycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBXb3Jrc3BhY2VDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmV4cG9ydCBjbGFzcyBGb3JnZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFVua25vd25FcnJvcihyZWFzb246IHVua25vd24pOiBzdHJpbmcge1xuXHRpZiAocmVhc29uIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRyZXR1cm4gcmVhc29uLm1lc3NhZ2U7XG5cdH1cblxuXHRpZiAodHlwZW9mIHJlYXNvbiA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiByZWFzb247XG5cdH1cblxuXHR0cnkge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeShyZWFzb24pO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gXCJVbmtub3duIGVycm9yXCI7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXb3Jrc3BhY2VDb25maWd1cmF0aW9uRXJyb3IiLCJGb3JnZUVycm9yIiwiRXJyb3IiLCJmb3JtYXRVbmtub3duRXJyb3IiLCJyZWFzb24iLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsMkJBQTJCLFFBQVEsaUJBQWlCO0FBQzdELE9BQU8sTUFBTUMsbUJBQW1CQztBQUFPO0FBRXZDLE9BQU8sU0FBU0MsbUJBQW1CQyxNQUFlO0lBQ2pELElBQUlBLGtCQUFrQkYsT0FBTztRQUM1QixPQUFPRSxPQUFPQyxPQUFPO0lBQ3RCO0lBRUEsSUFBSSxPQUFPRCxXQUFXLFVBQVU7UUFDL0IsT0FBT0E7SUFDUjtJQUVBLElBQUk7UUFDSCxPQUFPRSxLQUFLQyxTQUFTLENBQUNIO0lBQ3ZCLEVBQUUsT0FBTTtRQUNQLE9BQU87SUFDUjtBQUNEIn0=