@decohere/forge 0.0.1-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commonjs/src/actions/build.action.js +108 -0
- package/commonjs/src/actions/clean.action.js +55 -0
- package/commonjs/src/actions/commit.action.js +80 -0
- package/commonjs/src/actions/copy.action.js +83 -0
- package/commonjs/src/actions/dependency-report.action.js +142 -0
- package/commonjs/src/actions/dependency-sync.action.js +100 -0
- package/commonjs/src/actions/index.js +30 -0
- package/commonjs/src/actions/publish.action.js +156 -0
- package/commonjs/src/actions/sync-lock-file.action.js +43 -0
- package/commonjs/src/actions/tag.action.js +76 -0
- package/commonjs/src/actions/version.action.js +209 -0
- package/commonjs/src/actions/watch.action.js +50 -0
- package/commonjs/src/commands/build.command.js +49 -0
- package/commonjs/src/commands/dependency.command.js +88 -0
- package/commonjs/src/commands/forge.command.js +24 -0
- package/commonjs/src/commands/index.js +25 -0
- package/commonjs/src/commands/publish.command.js +32 -0
- package/commonjs/src/commands/tag.command.js +28 -0
- package/commonjs/src/commands/version.command.js +36 -0
- package/commonjs/src/const.js +81 -0
- package/commonjs/src/errors.js +39 -0
- package/commonjs/src/extensions/project.extensions.js +66 -0
- package/commonjs/src/factories/swc-config.factory.js +98 -0
- package/commonjs/src/forge.module.js +109 -0
- package/commonjs/src/index.js +22 -0
- package/commonjs/src/mixins/caches-outputs.mixin.js +42 -0
- package/commonjs/src/mixins/incremental-transform.mixin.js +36 -0
- package/commonjs/src/services/dependency-resolver.service.js +172 -0
- package/commonjs/src/services/file-writer.service.js +232 -0
- package/commonjs/src/services/swc-transpiler.js +176 -0
- package/commonjs/src/services/ts-program-host.js +135 -0
- package/commonjs/src/services/type-emission-program.js +160 -0
- package/commonjs/src/services/type-emitter.js +141 -0
- package/commonjs/src/types/build-target.type.js +17 -0
- package/commonjs/src/types/configuration.type.js +6 -0
- package/commonjs/src/types/dependency.types.js +6 -0
- package/commonjs/src/types/swc-config.type.js +17 -0
- package/commonjs/src/types/transform-response.model.js +64 -0
- package/commonjs/src/types/transformer.type.js +13 -0
- package/commonjs/src/types/workspace-config.type.js +6 -0
- package/commonjs/src/vitest/forge-build.plugin.js +129 -0
- package/commonjs/src/vitest/index.js +13 -0
- package/commonjs/src/workspace.config.js +73 -0
- package/es6/src/actions/build.action.js +100 -0
- package/es6/src/actions/clean.action.js +46 -0
- package/es6/src/actions/commit.action.js +71 -0
- package/es6/src/actions/copy.action.js +69 -0
- package/es6/src/actions/dependency-report.action.js +134 -0
- package/es6/src/actions/dependency-sync.action.js +92 -0
- package/es6/src/actions/index.js +13 -0
- package/es6/src/actions/publish.action.js +147 -0
- package/es6/src/actions/sync-lock-file.action.js +33 -0
- package/es6/src/actions/tag.action.js +67 -0
- package/es6/src/actions/version.action.js +189 -0
- package/es6/src/actions/watch.action.js +41 -0
- package/es6/src/commands/build.command.js +34 -0
- package/es6/src/commands/dependency.command.js +78 -0
- package/es6/src/commands/forge.command.js +14 -0
- package/es6/src/commands/index.js +8 -0
- package/es6/src/commands/publish.command.js +22 -0
- package/es6/src/commands/tag.command.js +18 -0
- package/es6/src/commands/version.command.js +26 -0
- package/es6/src/const.js +60 -0
- package/es6/src/errors.js +18 -0
- package/es6/src/extensions/project.extensions.js +51 -0
- package/es6/src/factories/swc-config.factory.js +83 -0
- package/es6/src/forge.module.js +58 -0
- package/es6/src/index.js +4 -0
- package/es6/src/mixins/caches-outputs.mixin.js +32 -0
- package/es6/src/mixins/incremental-transform.mixin.js +26 -0
- package/es6/src/services/dependency-resolver.service.js +162 -0
- package/es6/src/services/file-writer.service.js +217 -0
- package/es6/src/services/swc-transpiler.js +161 -0
- package/es6/src/services/ts-program-host.js +120 -0
- package/es6/src/services/type-emission-program.js +145 -0
- package/es6/src/services/type-emitter.js +134 -0
- package/es6/src/types/build-target.type.js +7 -0
- package/es6/src/types/configuration.type.js +3 -0
- package/es6/src/types/dependency.types.js +3 -0
- package/es6/src/types/swc-config.type.js +7 -0
- package/es6/src/types/transform-response.model.js +46 -0
- package/es6/src/types/transformer.type.js +3 -0
- package/es6/src/types/workspace-config.type.js +3 -0
- package/es6/src/vitest/forge-build.plugin.js +114 -0
- package/es6/src/vitest/index.js +3 -0
- package/es6/src/workspace.config.js +49 -0
- package/package.json +43 -0
- package/types/src/actions/build.action.d.ts +22 -0
- package/types/src/actions/clean.action.d.ts +13 -0
- package/types/src/actions/commit.action.d.ts +17 -0
- package/types/src/actions/copy.action.d.ts +14 -0
- package/types/src/actions/dependency-report.action.d.ts +36 -0
- package/types/src/actions/dependency-sync.action.d.ts +17 -0
- package/types/src/actions/index.d.ts +11 -0
- package/types/src/actions/publish.action.d.ts +34 -0
- package/types/src/actions/sync-lock-file.action.d.ts +10 -0
- package/types/src/actions/tag.action.d.ts +19 -0
- package/types/src/actions/version.action.d.ts +35 -0
- package/types/src/actions/watch.action.d.ts +14 -0
- package/types/src/commands/build.command.d.ts +16 -0
- package/types/src/commands/dependency.command.d.ts +5 -0
- package/types/src/commands/forge.command.d.ts +6 -0
- package/types/src/commands/index.d.ts +6 -0
- package/types/src/commands/publish.command.d.ts +6 -0
- package/types/src/commands/tag.command.d.ts +6 -0
- package/types/src/commands/version.command.d.ts +12 -0
- package/types/src/const.d.ts +3 -0
- package/types/src/errors.d.ts +4 -0
- package/types/src/extensions/project.extensions.d.ts +13 -0
- package/types/src/factories/swc-config.factory.d.ts +24 -0
- package/types/src/forge.module.d.ts +31 -0
- package/types/src/index.d.ts +4 -0
- package/types/src/mixins/caches-outputs.mixin.d.ts +7 -0
- package/types/src/mixins/incremental-transform.mixin.d.ts +13 -0
- package/types/src/services/dependency-resolver.service.d.ts +15 -0
- package/types/src/services/file-writer.service.d.ts +20 -0
- package/types/src/services/swc-transpiler.d.ts +28 -0
- package/types/src/services/ts-program-host.d.ts +22 -0
- package/types/src/services/type-emission-program.d.ts +22 -0
- package/types/src/services/type-emitter.d.ts +43 -0
- package/types/src/types/build-target.type.d.ts +7 -0
- package/types/src/types/configuration.type.d.ts +6 -0
- package/types/src/types/dependency.types.d.ts +39 -0
- package/types/src/types/swc-config.type.d.ts +9 -0
- package/types/src/types/transform-response.model.d.ts +54 -0
- package/types/src/types/transformer.type.d.ts +37 -0
- package/types/src/types/workspace-config.type.d.ts +13 -0
- package/types/src/vitest/forge-build.plugin.d.ts +18 -0
- package/types/src/vitest/index.d.ts +2 -0
- package/types/src/workspace.config.d.ts +6 -0
|
@@ -0,0 +1,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/PyAtMSkgOiAtMTtcblx0XHRcdFx0aWYgKHAgPiBtYXhQcmVjZWRlbmNlKSB7XG5cdFx0XHRcdFx0bWF4VHlwZSA9IGJ1bXBUeXBlIGFzIFZlcnNpb25UeXBlO1xuXHRcdFx0XHRcdG1heFByZWNlZGVuY2UgPSBwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFJlc29sdmVkIHJlbGVhc2UgdHlwZSBmcm9tICR7ZmlsZXMubGVuZ3RofSBjaGFuZ2VzZXQocyk6ICR7bWF4VHlwZX1gKTtcblx0XHRyZXR1cm4gbWF4VHlwZTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0TmV4dFZlcnNpb24oXG5cdFx0Y3VycmVudFZlcnNpb246IHN0cmluZyxcblx0XHR2ZXJzaW9uVHlwZTogVmVyc2lvblR5cGUsXG5cdFx0cHJlaWQ6IHN0cmluZyxcblx0KTogU2VtdmVyIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIG5ldyBTZW12ZXIoY3VycmVudFZlcnNpb24pLmluY3JlbWVudCh2ZXJzaW9uVHlwZSwgcHJlaWQpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBTZW12ZXJFcnJvcikge1xuXHRcdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihlcnJvci5tZXNzYWdlKTtcblx0XHRcdH1cblxuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyB1cGRhdGVQYWNrYWdlSnNvbihcblx0XHRuYW1lOiBzdHJpbmcsXG5cdFx0aGFzSnNvbjogSGFzUGFja2FnZUpzb24sXG5cdFx0dmVyc2lvbjogU2VtdmVyLFxuXHQpOiBQcm9taXNlPFZlcnNpb25SZXNwb25zZT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IGhhc0pzb24uZ2V0UGFja2FnZUpzb24oKTtcblx0XHRcdGF3YWl0IGhhc0pzb24ucGVyc2lzdFBhY2thZ2VKc29uKHBhY2thZ2VKc29uLndpdGhWZXJzaW9uKHZlcnNpb24udG9TdHJpbmcoKSkpO1xuXHRcdFx0dGhpcy4jbG9nZ2VyLnRyYWNlKG5hbWUpO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0c3VjY2VlZGVkOiB0cnVlLFxuXHRcdFx0fTtcblx0XHR9IGNhdGNoIChyZWFzb24pIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdGVycm9yOiBgJHtuYW1lfTogJHtmb3JtYXRVbmtub3duRXJyb3IocmVhc29uKX1gLFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlYWRkaXIiLCJyZWFkRmlsZSIsImpvaW4iLCJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJHaXQiLCJTZW12ZXIiLCJTZW12ZXJFcnJvciIsIlZlcnNpb25UeXBlcyIsInNjcmliZSIsIkZvcmdlRXJyb3IiLCJmb3JtYXRVbmtub3duRXJyb3IiLCJEZWZhdWx0Q2hhbm5lbCIsIkRlZmF1bHRSZWxlYXNlVHlwZSIsInByZXJlbGVhc2UiLCJEZWZhdWx0VmVyc2lvbk9wdGlvbnMiLCJyZWxlYXNlVHlwZSIsImNoYW5uZWwiLCJkcnlSdW4iLCJWZXJzaW9uIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJyZXNwb25zZSIsInZlcnNpb24iLCJtZXNzYWdlcyIsImRhdGEiLCJmbGF0TWFwIiwiZCIsInN1Y2NlZWRlZCIsImVycm9yIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsInJvb3RWZXJzaW9uIiwicmVzb2x2ZUJhc2VWZXJzaW9uIiwiZnJvbUNoYW5nZXNldHMiLCJyZXNvbHZlUmVsZWFzZVR5cGVGcm9tQ2hhbmdlc2V0cyIsIm5leHRWZXJzaW9uIiwiZ2V0TmV4dFZlcnNpb24iLCJpbmZvIiwiU3VjY2VzcyIsIm1hcCIsInAiLCJwZXJzaXN0UGFja2FnZUpzb24iLCJnZXRQYWNrYWdlSnNvbiIsIndpdGhWZXJzaW9uIiwidG9TdHJpbmciLCJyZXNwb25zZXMiLCJQcm9taXNlIiwiYWxsIiwidXBkYXRlUGFja2FnZUpzb24iLCJwcm9qZWN0IiwiZmFpbGVkIiwiZmlsdGVyIiwiciIsImxlbmd0aCIsIkVycm9yIiwiY29tbWl0IiwiZmlsZXMiLCJwYWNrYWdlSnNvblBhdGgiLCJtZXNzYWdlIiwidHJpbSIsImdpdFRhZ1ZlcnNpb24iLCJyZXNvbHZlVmVyc2lvbkZyb21HaXRUYWciLCJ3b3Jrc3BhY2VWZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInRhZ3MiLCJlbmNvZGluZyIsInNwbGl0IiwiQm9vbGVhbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJjaGFuZ2VzZXREaXIiLCJwcm9jZXNzIiwiY3dkIiwiZW50cmllcyIsImUiLCJlbmRzV2l0aCIsInByZWNlZGVuY2UiLCJtYWpvciIsIm1pbm9yIiwicGF0Y2giLCJtYXhUeXBlIiwibWF4UHJlY2VkZW5jZSIsImZpbGUiLCJjb250ZW50IiwibWF0Y2giLCJsaW5lIiwiYnVtcFR5cGUiLCJjdXJyZW50VmVyc2lvbiIsInZlcnNpb25UeXBlIiwicHJlaWQiLCJpbmNyZW1lbnQiLCJoYXNKc29uIiwicGFja2FnZUpzb24iLCJ0cmFjZSIsInJlYXNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUSxRQUFRLHFCQUFxQjtBQUM5QyxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxtQkFBbUI7QUFDckQsU0FBU0MsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBU0MsVUFBVSxRQUFRLGdDQUFnQztBQUUzRCw4Q0FBOEM7QUFDOUMsU0FBU0MsU0FBUyxRQUFRLGlCQUFpQjtBQUUzQyxTQUFTQyxjQUFjLFFBQVEsc0JBQXNCO0FBQ3JELFNBQVNDLEdBQUcsUUFBUSwwQkFBMEI7QUFDOUMsU0FBU0MsTUFBTSxFQUFFQyxXQUFXLEVBQW9CQyxZQUFZLFFBQVEseUJBQXlCO0FBQzdGLFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFDMUMsU0FBU0MsVUFBVSxFQUFFQyxrQkFBa0IsUUFBUSxlQUFlO0FBTTlELE9BQU8sTUFBTUMsaUJBQWlCLE9BQU87QUFDckMsT0FBTyxNQUFNQyxxQkFBcUJMLGFBQWFNLFVBQVUsQ0FBQztBQWExRCxNQUFNQyx3QkFBd0M7SUFDN0NDLGFBQWFIO0lBQ2JJLFNBQVNMO0lBQ1RNLFFBQVE7QUFDVDtBQUdBLE9BQU8sTUFBTUM7O0lBQ1osQ0FBQSxNQUFPLEdBQUdWLE9BQU9XLE1BQU0sQ0FBQ0QsUUFBUUUsSUFBSSxFQUFFO0lBQ3RDLFlBQW1CLEFBQWlCQyxTQUFvQixDQUFFO2FBQXRCQSxZQUFBQTtJQUF1QjtJQUMzRCxNQUFhQyxJQUFJQyxPQUF1QixFQUEyQjtRQUNsRSxNQUFNQyxXQUFXLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDSixTQUFTLEVBQUVFO1FBQ3BELE1BQU1HLFdBQVdGLFNBQVNHLElBQUksQ0FDNUJDLE9BQU8sQ0FBQyxDQUFDQyxJQUFPLENBQUNBLEVBQUVDLFNBQVMsSUFBSUQsRUFBRUUsS0FBSyxHQUFHO2dCQUFDRixFQUFFRSxLQUFLO2FBQUMsR0FBRyxFQUFFLEVBQ3hEL0IsSUFBSSxDQUFDO1FBQ1AsSUFBSTBCLFVBQVU7WUFDYixNQUFNLElBQUlqQixXQUFXLENBQUMsNENBQTRDLEVBQUVpQixVQUFVO1FBQy9FO1FBRUEsT0FBT0Y7SUFDUjtJQUVBLE1BQWFDLFFBQ1pKLFNBQW9CLEVBQ3BCRSxVQUEwQlQscUJBQXFCLEVBQ0o7UUFDM0MsTUFBTWtCLFdBQVdYLFVBQVVZLFdBQVcsQ0FBQztRQUN2QyxNQUFNQyxjQUFjLE1BQU0sSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ2QsV0FBV0U7UUFDN0QsTUFBTVIsY0FBY1EsUUFBUWEsY0FBYyxHQUN2QyxNQUFNLElBQUksQ0FBQ0MsZ0NBQWdDLEtBQzFDZCxRQUFRUixXQUFXLElBQUlIO1FBQzNCLE1BQU1JLFVBQVVPLFFBQVFQLE9BQU8sSUFBSUw7UUFDbkMsTUFBTTJCLGNBQWMsSUFBSSxDQUFDQyxjQUFjLENBQUNMLGFBQWFuQixhQUFhQztRQUNsRSxJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUN3QixJQUFJLENBQUMsR0FBR04sWUFBWSxHQUFHLEVBQUVJLFlBQVksRUFBRSxFQUFFdkIsWUFBWSxDQUFDLENBQUM7UUFFcEUsSUFBSVEsUUFBUU4sTUFBTSxFQUFFO1lBQ25CLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ3VCLElBQUksQ0FDaEIsQ0FBQyxxQ0FBcUMsRUFBRUYsWUFBWSx1QkFBdUIsQ0FBQztZQUU3RSxPQUFPbkMsZUFBZXNDLE9BQU8sQ0FBQ3ZCLFFBQVFFLElBQUksRUFBRTtnQkFDM0M7b0JBQUVBLE1BQU1DLFVBQVVELElBQUk7b0JBQUVVLFdBQVc7Z0JBQUs7bUJBQ3JDRSxTQUFTVSxHQUFHLENBQUMsQ0FBQ0MsSUFBTyxDQUFBO3dCQUFFdkIsTUFBTXVCLEVBQUV2QixJQUFJO3dCQUFFVSxXQUFXO29CQUFLLENBQUE7YUFDeEQ7UUFDRjtRQUVBLE1BQU1ULFVBQVV1QixrQkFBa0IsQ0FDakMsQUFBQyxDQUFBLE1BQU12QixVQUFVd0IsY0FBYyxFQUFDLEVBQUdDLFdBQVcsQ0FBQ1IsWUFBWVMsUUFBUTtRQUdwRSxNQUFNQyxZQUFZLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQztlQUNoQztnQkFBQyxJQUFJLENBQUNDLGlCQUFpQixDQUFDOUIsVUFBVUQsSUFBSSxFQUFFQyxXQUFXaUI7YUFBYTtlQUNoRU4sU0FBU1UsR0FBRyxDQUFDLENBQUNVLFVBQVksSUFBSSxDQUFDRCxpQkFBaUIsQ0FBQ0MsUUFBUWhDLElBQUksRUFBRWdDLFNBQVNkO1NBQzNFO1FBQ0QsTUFBTWUsU0FBU0wsVUFBVU0sTUFBTSxDQUFDLENBQUNDLElBQU0sQ0FBQ0EsRUFBRXpCLFNBQVM7UUFDbkQsSUFBSXVCLE9BQU9HLE1BQU0sRUFBRTtZQUNsQixPQUFPckQsZUFBZXNELEtBQUssQ0FBQ3ZDLFFBQVFFLElBQUksRUFBRTRCO1FBQzNDO1FBRUEsSUFBSXpCLFFBQVFtQyxNQUFNLEVBQUU7WUFDbkIsTUFBTUMsUUFBUTtnQkFBQ3RDLFVBQVV1QyxlQUFlO21CQUFLNUIsU0FBU1UsR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVpQixlQUFlO2FBQUU7WUFDcEYsTUFBTUMsVUFBVXRDLFFBQVFzQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRXZCLGFBQWE7WUFDM0UsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDRSxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUVxQixTQUFTO1lBQzFDLE1BQU0sSUFBSXpELE1BQU1zRCxNQUFNLENBQUNHLFNBQVM7Z0JBQUVGO1lBQU07UUFDekM7UUFFQSxPQUFPeEQsZUFBZXNDLE9BQU8sQ0FBQ3ZCLFFBQVFFLElBQUksRUFBRTRCO0lBQzdDO0lBRUEsTUFBY2IsbUJBQ2JkLFNBQW9CLEVBQ3BCRSxPQUF1QixFQUNMO1FBQ2xCLElBQUlBLFFBQVFFLE9BQU8sSUFBSSxRQUFRRixRQUFRRSxPQUFPLENBQUNxQyxJQUFJLEdBQUdOLE1BQU0sR0FBRyxHQUFHO1lBQ2pFLE9BQU9qQyxRQUFRRSxPQUFPLENBQUNxQyxJQUFJO1FBQzVCO1FBRUEsTUFBTUMsZ0JBQWdCLElBQUksQ0FBQ0Msd0JBQXdCO1FBQ25ELElBQUlELGlCQUFpQixNQUFNO1lBQzFCLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ3ZCLElBQUksQ0FBQyxDQUFDLHNDQUFzQyxFQUFFdUIsZUFBZTtZQUMxRSxPQUFPQTtRQUNSO1FBRUEsTUFBTUUsbUJBQW1CLE1BQU01QyxVQUFVNkMsVUFBVTtRQUNuRCxJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUMxQixJQUFJLENBQ2hCLENBQUMsMEVBQTBFLEVBQUV5QixrQkFBa0I7UUFFaEcsT0FBT0E7SUFDUjtJQUVRRCwyQkFBK0M7UUFDdEQsSUFBSTtZQUNILE1BQU1HLE9BQU90RSxTQUFTLCtDQUErQztnQkFDcEV1RSxVQUFVO1lBQ1gsR0FDRU4sSUFBSSxHQUNKTyxLQUFLLENBQUMsTUFDTmYsTUFBTSxDQUFDZ0I7WUFFVCxJQUFJSCxLQUFLWCxNQUFNLEtBQUssR0FBRztnQkFDdEIsT0FBT2U7WUFDUjtZQUVBLE9BQU9KLElBQUksQ0FBQyxFQUFFLENBQUNLLE9BQU8sQ0FBQyxNQUFNO1FBQzlCLEVBQUUsT0FBTTtZQUNQLE9BQU9EO1FBQ1I7SUFDRDtJQUVBOzs7RUFHQyxHQUNELE1BQWNsQyxtQ0FBeUQ7UUFDdEUsTUFBTW9DLGVBQWV6RSxLQUFLMEUsUUFBUUMsR0FBRyxJQUFJO1FBQ3pDLElBQUlDO1FBQ0osSUFBSTtZQUNIQSxVQUFVLE1BQU05RSxRQUFRMkU7UUFDekIsRUFBRSxPQUFNO1lBQ1AsTUFBTSxJQUFJaEUsV0FDVDtRQUVGO1FBRUEsTUFBTWtELFFBQVFpQixRQUFRdEIsTUFBTSxDQUFDLENBQUN1QixJQUFNQSxFQUFFQyxRQUFRLENBQUMsVUFBVUQsTUFBTTtRQUMvRCxJQUFJbEIsTUFBTUgsTUFBTSxLQUFLLEdBQUc7WUFDdkIsTUFBTSxJQUFJL0MsV0FDVDtRQUVGO1FBRUEsTUFBTXNFLGFBQXFDO1lBQUVDLE9BQU87WUFBR0MsT0FBTztZQUFHQyxPQUFPO1lBQUdyRSxZQUFZO1FBQUU7UUFDekYsSUFBSXNFLFVBQXVCNUUsYUFBYTJFLEtBQUs7UUFDN0MsSUFBSUUsZ0JBQWdCO1FBRXBCLEtBQUssTUFBTUMsUUFBUTFCLE1BQU87WUFDekIsTUFBTTJCLFVBQVUsTUFBTXZGLFNBQVNDLEtBQUt5RSxjQUFjWSxPQUFPO1lBQ3pELE1BQU1FLFFBQVFELFFBQVFDLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUNBLE9BQU87WUFDWixLQUFLLE1BQU1DLFFBQVFELEtBQUssQ0FBQyxFQUFFLENBQUNsQixLQUFLLENBQUMsTUFBTztnQkFDeEMsTUFBTW9CLFdBQVdELEtBQUtELEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO2dCQUN4RCxNQUFNNUMsSUFBSThDLFlBQVksT0FBUVYsVUFBVSxDQUFDVSxTQUFTLElBQUksQ0FBQyxJQUFLLENBQUM7Z0JBQzdELElBQUk5QyxJQUFJeUMsZUFBZTtvQkFDdEJELFVBQVVNO29CQUNWTCxnQkFBZ0J6QztnQkFDakI7WUFDRDtRQUNEO1FBRUEsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDSCxJQUFJLENBQUMsQ0FBQywyQkFBMkIsRUFBRW1CLE1BQU1ILE1BQU0sQ0FBQyxlQUFlLEVBQUUyQixTQUFTO1FBQ3ZGLE9BQU9BO0lBQ1I7SUFFUTVDLGVBQ1BtRCxjQUFzQixFQUN0QkMsV0FBd0IsRUFDeEJDLEtBQWEsRUFDSjtRQUNULElBQUk7WUFDSCxPQUFPLElBQUl2RixPQUFPcUYsZ0JBQWdCRyxTQUFTLENBQUNGLGFBQWFDO1FBQzFELEVBQUUsT0FBTzdELE9BQU87WUFDZixJQUFJQSxpQkFBaUJ6QixhQUFhO2dCQUNqQyxNQUFNLElBQUlHLFdBQVdzQixNQUFNOEIsT0FBTztZQUNuQztZQUVBLE1BQU05QjtRQUNQO0lBQ0Q7SUFFQSxNQUFjb0Isa0JBQ2IvQixJQUFZLEVBQ1owRSxPQUF1QixFQUN2QnJFLE9BQWUsRUFDWTtRQUMzQixJQUFJO1lBQ0gsTUFBTXNFLGNBQWMsTUFBTUQsUUFBUWpELGNBQWM7WUFDaEQsTUFBTWlELFFBQVFsRCxrQkFBa0IsQ0FBQ21ELFlBQVlqRCxXQUFXLENBQUNyQixRQUFRc0IsUUFBUTtZQUN6RSxJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNpRCxLQUFLLENBQUM1RTtZQUNuQixPQUFPO2dCQUNOQTtnQkFDQVUsV0FBVztZQUNaO1FBQ0QsRUFBRSxPQUFPbUUsUUFBUTtZQUNoQixPQUFPO2dCQUNON0U7Z0JBQ0FVLFdBQVc7Z0JBQ1hDLE9BQU8sR0FBR1gsS0FBSyxFQUFFLEVBQUVWLG1CQUFtQnVGLFNBQVM7WUFDaEQ7UUFDRDtJQUNEO0FBQ0QifQ==
|
|
@@ -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==
|
package/es6/src/const.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export const SWC_CONFIG = ".swcrc";
|
|
2
|
+
export const NODE_MODULES = "node_modules";
|
|
3
|
+
export const BUILT_IN_MODULES = [
|
|
4
|
+
"assert",
|
|
5
|
+
"assert/strict",
|
|
6
|
+
"async_hooks",
|
|
7
|
+
"buffer",
|
|
8
|
+
"child_process",
|
|
9
|
+
"cluster",
|
|
10
|
+
"console",
|
|
11
|
+
"constants",
|
|
12
|
+
"crypto",
|
|
13
|
+
"dgram",
|
|
14
|
+
"diagnostics_channel",
|
|
15
|
+
"dns",
|
|
16
|
+
"dns/promises",
|
|
17
|
+
"domain",
|
|
18
|
+
"events",
|
|
19
|
+
"fs",
|
|
20
|
+
"fs/promises",
|
|
21
|
+
"http",
|
|
22
|
+
"http2",
|
|
23
|
+
"https",
|
|
24
|
+
"inspector",
|
|
25
|
+
"inspector/promises",
|
|
26
|
+
"module",
|
|
27
|
+
"net",
|
|
28
|
+
"os",
|
|
29
|
+
"path",
|
|
30
|
+
"path/posix",
|
|
31
|
+
"path/win32",
|
|
32
|
+
"perf_hooks",
|
|
33
|
+
"process",
|
|
34
|
+
"punycode",
|
|
35
|
+
"querystring",
|
|
36
|
+
"readline",
|
|
37
|
+
"readline/promises",
|
|
38
|
+
"repl",
|
|
39
|
+
"stream",
|
|
40
|
+
"stream/consumers",
|
|
41
|
+
"stream/promises",
|
|
42
|
+
"stream/web",
|
|
43
|
+
"string_decoder",
|
|
44
|
+
"sys",
|
|
45
|
+
"timers",
|
|
46
|
+
"timers/promises",
|
|
47
|
+
"tls",
|
|
48
|
+
"trace_events",
|
|
49
|
+
"tty",
|
|
50
|
+
"url",
|
|
51
|
+
"util",
|
|
52
|
+
"util/types",
|
|
53
|
+
"v8",
|
|
54
|
+
"vm",
|
|
55
|
+
"wasi",
|
|
56
|
+
"worker_threads",
|
|
57
|
+
"zlib"
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,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=
|