@roster-lock/config-editor-cli 0.0.1
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/.claude-plugin/plugin.json +6 -0
- package/LICENSE.md +11 -0
- package/README.md +40 -0
- package/dist/commands/draft/from-lock.js +31 -0
- package/dist/commands/draft/from-lock.js.map +1 -0
- package/dist/commands/draft/index.js +22 -0
- package/dist/commands/draft/index.js.map +1 -0
- package/dist/commands/draft/init.js +25 -0
- package/dist/commands/draft/init.js.map +1 -0
- package/dist/commands/draft/promote.js +24 -0
- package/dist/commands/draft/promote.js.map +1 -0
- package/dist/commands/draft/publish.js +26 -0
- package/dist/commands/draft/publish.js.map +1 -0
- package/dist/commands/draft/validate.js +30 -0
- package/dist/commands/draft/validate.js.map +1 -0
- package/dist/commands/engine/add-asset.js +44 -0
- package/dist/commands/engine/add-asset.js.map +1 -0
- package/dist/commands/engine/add-piece-type.js +47 -0
- package/dist/commands/engine/add-piece-type.js.map +1 -0
- package/dist/commands/engine/edit-definition.js +49 -0
- package/dist/commands/engine/edit-definition.js.map +1 -0
- package/dist/commands/engine/index.js +24 -0
- package/dist/commands/engine/index.js.map +1 -0
- package/dist/commands/engine/remove-asset.js +27 -0
- package/dist/commands/engine/remove-asset.js.map +1 -0
- package/dist/commands/engine/remove-piece-type.js +28 -0
- package/dist/commands/engine/remove-piece-type.js.map +1 -0
- package/dist/commands/engine/set-info.js +22 -0
- package/dist/commands/engine/set-info.js.map +1 -0
- package/dist/commands/engine/show.js +23 -0
- package/dist/commands/engine/show.js.map +1 -0
- package/dist/commands/piece-meta/index.js +19 -0
- package/dist/commands/piece-meta/index.js.map +1 -0
- package/dist/commands/piece-meta/set.js +27 -0
- package/dist/commands/piece-meta/set.js.map +1 -0
- package/dist/commands/piece-meta/show.js +15 -0
- package/dist/commands/piece-meta/show.js.map +1 -0
- package/dist/commands/roster/add-piece.js +93 -0
- package/dist/commands/roster/add-piece.js.map +1 -0
- package/dist/commands/roster/edit-piece.js +92 -0
- package/dist/commands/roster/edit-piece.js.map +1 -0
- package/dist/commands/roster/import-piece.js +83 -0
- package/dist/commands/roster/import-piece.js.map +1 -0
- package/dist/commands/roster/index.js +24 -0
- package/dist/commands/roster/index.js.map +1 -0
- package/dist/commands/roster/list.js +24 -0
- package/dist/commands/roster/list.js.map +1 -0
- package/dist/commands/roster/remove-piece.js +30 -0
- package/dist/commands/roster/remove-piece.js.map +1 -0
- package/dist/commands/roster/rescan.js +55 -0
- package/dist/commands/roster/rescan.js.map +1 -0
- package/dist/commands/roster/test-download.js +72 -0
- package/dist/commands/roster/test-download.js.map +1 -0
- package/dist/commands/selection/add-script.js +43 -0
- package/dist/commands/selection/add-script.js.map +1 -0
- package/dist/commands/selection/index.js +21 -0
- package/dist/commands/selection/index.js.map +1 -0
- package/dist/commands/selection/run-script.js +27 -0
- package/dist/commands/selection/run-script.js.map +1 -0
- package/dist/commands/selection/set.js +41 -0
- package/dist/commands/selection/set.js.map +1 -0
- package/dist/commands/selection/show.js +15 -0
- package/dist/commands/selection/show.js.map +1 -0
- package/dist/commands/show.js +15 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/validate.js +31 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cli-options.js +7 -0
- package/dist/lib/cli-options.js.map +1 -0
- package/dist/lib/draft-io.js +38 -0
- package/dist/lib/draft-io.js.map +1 -0
- package/dist/lib/errors.js +32 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/fs-walk.js +28 -0
- package/dist/lib/fs-walk.js.map +1 -0
- package/dist/lib/json-input.js +16 -0
- package/dist/lib/json-input.js.map +1 -0
- package/dist/lib/lock-io.js +20 -0
- package/dist/lib/lock-io.js.map +1 -0
- package/dist/lib/parse.js +52 -0
- package/dist/lib/parse.js.map +1 -0
- package/dist/lib/piece-scan.js +12 -0
- package/dist/lib/piece-scan.js.map +1 -0
- package/dist/lib/schema-help.js +38 -0
- package/dist/lib/schema-help.js.map +1 -0
- package/dist/lib/schemas.js +71 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/semver-report.js +13 -0
- package/dist/lib/semver-report.js.map +1 -0
- package/dist/lib/slugify.js +13 -0
- package/dist/lib/slugify.js.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
- package/scripts/bundle.js +15 -0
- package/scripts/generate-version.js +14 -0
- package/skills/rosterlock-config-editor/SKILL.md +151 -0
- package/src/commands/draft/from-lock.ts +34 -0
- package/src/commands/draft/index.ts +5 -0
- package/src/commands/draft/init.ts +21 -0
- package/src/commands/draft/promote.ts +24 -0
- package/src/commands/draft/publish.ts +26 -0
- package/src/commands/draft/validate.ts +30 -0
- package/src/commands/engine/add-asset.ts +46 -0
- package/src/commands/engine/add-piece-type.ts +56 -0
- package/src/commands/engine/edit-definition.ts +58 -0
- package/src/commands/engine/index.ts +7 -0
- package/src/commands/engine/remove-asset.ts +25 -0
- package/src/commands/engine/remove-piece-type.ts +27 -0
- package/src/commands/engine/set-info.ts +17 -0
- package/src/commands/engine/show.ts +20 -0
- package/src/commands/piece-meta/index.ts +2 -0
- package/src/commands/piece-meta/set.ts +29 -0
- package/src/commands/piece-meta/show.ts +12 -0
- package/src/commands/roster/add-piece.ts +109 -0
- package/src/commands/roster/edit-piece.ts +99 -0
- package/src/commands/roster/import-piece.ts +112 -0
- package/src/commands/roster/index.ts +7 -0
- package/src/commands/roster/list.ts +23 -0
- package/src/commands/roster/remove-piece.ts +28 -0
- package/src/commands/roster/rescan.ts +63 -0
- package/src/commands/roster/test-download.ts +76 -0
- package/src/commands/selection/add-script.ts +44 -0
- package/src/commands/selection/index.ts +4 -0
- package/src/commands/selection/run-script.ts +30 -0
- package/src/commands/selection/set.ts +54 -0
- package/src/commands/selection/show.ts +12 -0
- package/src/commands/show.ts +12 -0
- package/src/commands/validate.ts +26 -0
- package/src/index.ts +85 -0
- package/src/lib/cli-options.ts +8 -0
- package/src/lib/draft-io.ts +41 -0
- package/src/lib/errors.ts +30 -0
- package/src/lib/fs-walk.ts +31 -0
- package/src/lib/json-input.ts +21 -0
- package/src/lib/lock-io.ts +18 -0
- package/src/lib/parse.ts +42 -0
- package/src/lib/piece-scan.ts +19 -0
- package/src/lib/schema-help.ts +44 -0
- package/src/lib/schemas.ts +100 -0
- package/src/lib/semver-report.ts +11 -0
- package/src/lib/slugify.ts +9 -0
- package/test.rosterlock.draft.json +62 -0
- package/tests/commands/add-piece.spec.ts +92 -0
- package/tests/commands/draft-validate.spec.ts +85 -0
- package/tests/commands/edit-definition.spec.ts +94 -0
- package/tests/commands/edit-piece.spec.ts +153 -0
- package/tests/commands/from-lock.spec.ts +80 -0
- package/tests/commands/help-arguments.spec.ts +31 -0
- package/tests/commands/import-piece.spec.ts +228 -0
- package/tests/commands/piece-meta.spec.ts +123 -0
- package/tests/commands/rescan.spec.ts +137 -0
- package/tests/lib/draft-io.spec.ts +76 -0
- package/tests/lib/errors.spec.ts +48 -0
- package/tests/lib/fs-walk.spec.ts +35 -0
- package/tests/lib/json-input.spec.ts +63 -0
- package/tests/lib/parse.spec.ts +85 -0
- package/tests/lib/schema-help.spec.ts +42 -0
- package/tests/lib/schemas.spec.ts +82 -0
- package/tests/lib/slugify.spec.ts +28 -0
- package/tsconfig.json +19 -0
- package/tsconfig.test.json +10 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addScriptCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const utils_1 = require("@roster-lock/utils");
|
|
8
|
+
const shared_1 = require("@roster-lock/shared");
|
|
9
|
+
const draft_io_1 = require("../../lib/draft-io");
|
|
10
|
+
const cli_options_1 = require("../../lib/cli-options");
|
|
11
|
+
const errors_1 = require("../../lib/errors");
|
|
12
|
+
const fs_walk_1 = require("../../lib/fs-walk");
|
|
13
|
+
exports.addScriptCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("add-script"))
|
|
14
|
+
.description("Add one or more selection scripts (a single file, or every file in a folder) to the staged lock")
|
|
15
|
+
.argument("<fileOrFolder>", "path to a single script file, or a folder of script files")
|
|
16
|
+
.option("--key <relPath>", "script key to use when adding a single file (defaults to its basename)")
|
|
17
|
+
.action((0, errors_1.withErrorHandling)(async (fileOrFolder, opts) => {
|
|
18
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
19
|
+
const draft = (0, draft_io_1.readDraft)(draftPath);
|
|
20
|
+
const target = (0, node_path_1.resolve)(process.cwd(), fileOrFolder);
|
|
21
|
+
const stats = (0, node_fs_1.statSync)(target);
|
|
22
|
+
const lastLoad = Date.now();
|
|
23
|
+
const entries = [];
|
|
24
|
+
if (stats.isDirectory()) {
|
|
25
|
+
for await (const relativePath of (0, fs_walk_1.walkRelative)(target)) {
|
|
26
|
+
entries.push({ key: relativePath, absolutePath: (0, node_path_1.resolve)(target, relativePath) });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
entries.push({ key: opts.key ?? (0, node_path_1.basename)(target), absolutePath: target });
|
|
31
|
+
}
|
|
32
|
+
for (const { key, absolutePath } of entries) {
|
|
33
|
+
const contentRaw = (0, node_fs_1.readFileSync)(absolutePath);
|
|
34
|
+
const content = (0, utils_1.bufferToStr)(contentRaw);
|
|
35
|
+
const sha = await (0, utils_1.createShaFromBuffer)(contentRaw);
|
|
36
|
+
draft.stagedLock.selection.scriptDictionary[key] = { content };
|
|
37
|
+
draft.draft.selectionScriptInfo[key] = { lastLoad, sha, referencePath: absolutePath };
|
|
38
|
+
}
|
|
39
|
+
shared_1.ROSTERLOCK_V1_CASTER_JSONSCHEMA.cast(draft.stagedLock);
|
|
40
|
+
(0, draft_io_1.writeDraft)(draftPath, draft);
|
|
41
|
+
console.log(`Added ${entries.length} script(s): ${entries.map((e) => e.key).join(", ")}`);
|
|
42
|
+
}));
|
|
43
|
+
//# sourceMappingURL=add-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-script.js","sourceRoot":"","sources":["../../../src/commands/selection/add-script.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qCAAiD;AACjD,yCAA8C;AAC9C,8CAAsE;AACtE,gDAAsE;AACtE,iDAA6E;AAC7E,uDAAwD;AACxD,6CAAqD;AACrD,+CAAiD;AAEpC,QAAA,gBAAgB,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,YAAY,CAAC,CAAC;KACvE,WAAW,CAAC,iGAAiG,CAAC;KAC9G,QAAQ,CAAC,gBAAgB,EAAE,2DAA2D,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,wEAAwE,CAAC;KACnG,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,YAAoB,EAAE,IAAsC,EAAE,EAAE;IAC/F,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE5B,MAAM,OAAO,GAAiD,EAAE,CAAC;IACjE,IAAG,KAAK,CAAC,WAAW,EAAE,EAAC,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,YAAY,IAAI,IAAA,sBAAY,EAAC,MAAM,CAAC,EAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,IAAA,mBAAO,EAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAA,oBAAQ,EAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAI,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,OAAO,EAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAA,sBAAY,EAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,UAAU,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,IAAA,2BAAmB,EAAC,UAAU,CAAC,CAAC;QAElD,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAC/D,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IACxF,CAAC;IAED,wCAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvD,IAAA,qBAAU,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./add-script"), exports);
|
|
18
|
+
__exportStar(require("./set"), exports);
|
|
19
|
+
__exportStar(require("./run-script"), exports);
|
|
20
|
+
__exportStar(require("./show"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/selection/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,wCAAsB;AACtB,+CAA6B;AAC7B,yCAAuB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runScriptCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const plugin_runtime_1 = require("@roster-lock/plugin-runtime");
|
|
7
|
+
const draft_io_1 = require("../../lib/draft-io");
|
|
8
|
+
const cli_options_1 = require("../../lib/cli-options");
|
|
9
|
+
const errors_1 = require("../../lib/errors");
|
|
10
|
+
exports.runScriptCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("run-script"))
|
|
11
|
+
.description("Run a selection script from the staged lock against sample input, without modifying the draft")
|
|
12
|
+
.argument("<scriptRef>", "the script's key in scriptDictionary")
|
|
13
|
+
.requiredOption("--input <jsonFile>", "JSON file with { purpose: ScriptPurposeInput, randomSeeds?: string[] }")
|
|
14
|
+
.option("--method <name>", "exported function to call (default: main)")
|
|
15
|
+
.action((0, errors_1.withErrorHandling)(async (scriptRef, opts) => {
|
|
16
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
17
|
+
const draft = (0, draft_io_1.readDraft)(draftPath);
|
|
18
|
+
const input = JSON.parse((0, node_fs_1.readFileSync)(opts.input, "utf-8"));
|
|
19
|
+
const result = await (0, plugin_runtime_1.runUntrustedScript)(plugin_runtime_1.DEFAULT_PLUGIN_DIR, {
|
|
20
|
+
config: draft.stagedLock,
|
|
21
|
+
randomSeeds: input.randomSeeds ?? [],
|
|
22
|
+
purpose: input.purpose,
|
|
23
|
+
entryScript: { src: scriptRef, method: opts.method },
|
|
24
|
+
});
|
|
25
|
+
console.log(JSON.stringify(result, null, 2));
|
|
26
|
+
}));
|
|
27
|
+
//# sourceMappingURL=run-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-script.js","sourceRoot":"","sources":["../../../src/commands/selection/run-script.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qCAAuC;AACvC,gEAAqF;AAErF,iDAAiE;AACjE,uDAAwD;AACxD,6CAAqD;AAExC,QAAA,gBAAgB,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,YAAY,CAAC,CAAC;KACvE,WAAW,CAAC,+FAA+F,CAAC;KAC5G,QAAQ,CAAC,aAAa,EAAE,sCAAsC,CAAC;KAC/D,cAAc,CAAC,oBAAoB,EAAE,wEAAwE,CAAC;KAC9G,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,SAAiB,EAAE,IAAwD,EAAE,EAAE;IAC9G,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAEzD,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAkB,EAAC,mCAAkB,EAAE;QAC1D,MAAM,EAAE,KAAK,CAAC,UAAU;QACxB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;KACrD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectionSetCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const shared_1 = require("@roster-lock/shared");
|
|
6
|
+
const utils_1 = require("@roster-lock/utils");
|
|
7
|
+
const draft_io_1 = require("../../lib/draft-io");
|
|
8
|
+
const cli_options_1 = require("../../lib/cli-options");
|
|
9
|
+
const errors_1 = require("../../lib/errors");
|
|
10
|
+
const json_input_1 = require("../../lib/json-input");
|
|
11
|
+
const schemas_1 = require("../../lib/schemas");
|
|
12
|
+
const schema_help_1 = require("../../lib/schema-help");
|
|
13
|
+
const TEMPLATES = {
|
|
14
|
+
normal: shared_1.EMPTY_ROSTER_NORMAL_SELECTION,
|
|
15
|
+
preselected: shared_1.EMPTY_ROSTER_PRESELECTED_SELECTION,
|
|
16
|
+
unselectable: shared_1.EMPTY_ROSTER_UNSELECTABLE_SELECTION,
|
|
17
|
+
"game-controlled": shared_1.EMPTY_ROSTER_GAME_SELECTION,
|
|
18
|
+
};
|
|
19
|
+
const JSON_SHAPE_BY_TYPE = Object.entries(schemas_1.selectionOverridesSchemas)
|
|
20
|
+
.map(([type, schema]) => `${type}: ${(0, schema_help_1.describeSchemaShape)(schema)}`)
|
|
21
|
+
.join("; ");
|
|
22
|
+
exports.selectionSetCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("set"))
|
|
23
|
+
.description("Set the selection config for a piece type")
|
|
24
|
+
.argument("<pieceType>", "the piece type key")
|
|
25
|
+
.requiredOption("--type <type>", "normal|preselected|unselectable|game-controlled")
|
|
26
|
+
.option("--json <file>", "type-specific fields to merge in, read from a JSON file (or \"-\" for stdin); shape depends on --type. " +
|
|
27
|
+
`Shapes: ${JSON_SHAPE_BY_TYPE}`)
|
|
28
|
+
.action((0, errors_1.withErrorHandling)(async (pieceType, opts) => {
|
|
29
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
30
|
+
const draft = (0, draft_io_1.readDraft)(draftPath);
|
|
31
|
+
const template = TEMPLATES[opts.type];
|
|
32
|
+
if (!template)
|
|
33
|
+
throw new Error(`Invalid --type "${opts.type}" (expected normal|preselected|unselectable|game-controlled)`);
|
|
34
|
+
const overridesSchema = schemas_1.selectionOverridesSchemas[opts.type];
|
|
35
|
+
const overrides = opts.json ? await (0, json_input_1.readJsonInput)(opts.json, overridesSchema) : {};
|
|
36
|
+
draft.stagedLock.selection.piece[pieceType] = { ...(0, utils_1.cloneJSON)(template), ...overrides };
|
|
37
|
+
shared_1.ROSTERLOCK_V1_CASTER_JSONSCHEMA.cast(draft.stagedLock);
|
|
38
|
+
(0, draft_io_1.writeDraft)(draftPath, draft);
|
|
39
|
+
console.log(`Set selection for "${pieceType}" to "${opts.type}"`);
|
|
40
|
+
}));
|
|
41
|
+
//# sourceMappingURL=set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/commands/selection/set.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,gDAM6B;AAC7B,8CAA+C;AAC/C,iDAA6E;AAC7E,uDAAwD;AACxD,6CAAqD;AACrD,qDAAqD;AACrD,+CAA8D;AAC9D,uDAA4D;AAE5D,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,sCAA6B;IACrC,WAAW,EAAE,2CAAkC;IAC/C,YAAY,EAAE,4CAAmC;IACjD,iBAAiB,EAAE,oCAA2B;CACtC,CAAC;AAEX,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,mCAAyB,CAAC;KACjE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,IAAA,iCAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;KAClE,IAAI,CAAC,IAAI,CAAC,CAAC;AAED,QAAA,mBAAmB,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,KAAK,CAAC,CAAC;KACnE,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC7C,cAAc,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAClF,MAAM,CACL,eAAe,EACf,yGAAyG;IACzG,WAAW,kBAAkB,EAAE,CAChC;KACA,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,SAAiB,EAAE,IAAqD,EAAE,EAAE;IAC3G,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;IAChE,IAAG,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,8DAA8D,CAAC,CAAC;IAE1H,MAAM,eAAe,GAAG,mCAAyB,CAAC,IAAI,CAAC,IAA8C,CAEpG,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAA,0BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAA,iBAAS,EAAC,QAAQ,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;IAEvF,wCAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvD,IAAA,qBAAU,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectionShowCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const draft_io_1 = require("../../lib/draft-io");
|
|
6
|
+
const cli_options_1 = require("../../lib/cli-options");
|
|
7
|
+
const errors_1 = require("../../lib/errors");
|
|
8
|
+
exports.selectionShowCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("show"))
|
|
9
|
+
.description("Print the staged lock's selection config")
|
|
10
|
+
.action((0, errors_1.withErrorHandling)(async (opts) => {
|
|
11
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
12
|
+
const draft = (0, draft_io_1.readDraft)(draftPath);
|
|
13
|
+
console.log(JSON.stringify(draft.stagedLock.selection, null, 2));
|
|
14
|
+
}));
|
|
15
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/selection/show.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,iDAAiE;AACjE,uDAAwD;AACxD,6CAAqD;AAExC,QAAA,oBAAoB,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,MAAM,CAAC,CAAC;KACrE,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IAC3D,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.showCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const draft_io_1 = require("../lib/draft-io");
|
|
6
|
+
const cli_options_1 = require("../lib/cli-options");
|
|
7
|
+
const errors_1 = require("../lib/errors");
|
|
8
|
+
exports.showCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("show"))
|
|
9
|
+
.description("Print the draft's full staged lock as JSON")
|
|
10
|
+
.action((0, errors_1.withErrorHandling)(async (opts) => {
|
|
11
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
12
|
+
const draft = (0, draft_io_1.readDraft)(draftPath);
|
|
13
|
+
console.log(JSON.stringify(draft.stagedLock, null, 2));
|
|
14
|
+
}));
|
|
15
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,8CAA8D;AAC9D,oDAAqD;AACrD,0CAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,MAAM,CAAC,CAAC;KAC5D,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IAC3D,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const shared_1 = require("@roster-lock/shared");
|
|
7
|
+
const draft_io_1 = require("../lib/draft-io");
|
|
8
|
+
const cli_options_1 = require("../lib/cli-options");
|
|
9
|
+
const errors_1 = require("../lib/errors");
|
|
10
|
+
exports.validateCommand = (0, cli_options_1.withDraftOption)(new commander_1.Command("validate"))
|
|
11
|
+
.description("Validate a draft (default) or, with --lock, a published lock file")
|
|
12
|
+
.option("--lock <path>", "validate a plain lock file instead of a draft")
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
try {
|
|
15
|
+
if (opts.lock) {
|
|
16
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(opts.lock, "utf-8"));
|
|
17
|
+
shared_1.ROSTERLOCK_V1_CASTER_JSONSCHEMA.cast(json, true);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const draftPath = (0, draft_io_1.resolveDraftPath)(opts.draft);
|
|
21
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(draftPath, "utf-8"));
|
|
22
|
+
shared_1.ROSTERLOCK_V1_DRAFT_CASTER_JSONSCHEMA.cast(json, true);
|
|
23
|
+
}
|
|
24
|
+
console.log("OK");
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.error((0, errors_1.formatError)(e));
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qCAAuC;AACvC,gDAA6G;AAC7G,8CAAmD;AACnD,oDAAqD;AACrD,0CAA4C;AAE/B,QAAA,eAAe,GAAG,IAAA,6BAAe,EAAC,IAAI,mBAAO,CAAC,UAAU,CAAC,CAAC;KACpE,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,IAAG,IAAI,CAAC,IAAI,EAAC,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,wCAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,8CAAqC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAAC,OAAM,CAAC,EAAC,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const draft_1 = require("./commands/draft");
|
|
6
|
+
const engine_1 = require("./commands/engine");
|
|
7
|
+
const roster_1 = require("./commands/roster");
|
|
8
|
+
const selection_1 = require("./commands/selection");
|
|
9
|
+
const piece_meta_1 = require("./commands/piece-meta");
|
|
10
|
+
const validate_1 = require("./commands/validate");
|
|
11
|
+
const show_1 = require("./commands/show");
|
|
12
|
+
const version_1 = require("./version");
|
|
13
|
+
commander_1.program
|
|
14
|
+
.name("rosterlock-config-editor")
|
|
15
|
+
.description("A cli tool to build roster lock configs")
|
|
16
|
+
.version(version_1.VERSION);
|
|
17
|
+
const draftCommand = new commander_1.Command("draft").description("Manage the draft lifecycle (create, promote, publish, validate)");
|
|
18
|
+
draftCommand.addCommand(draft_1.initCommand);
|
|
19
|
+
draftCommand.addCommand(draft_1.fromLockCommand);
|
|
20
|
+
draftCommand.addCommand(draft_1.promoteCommand);
|
|
21
|
+
draftCommand.addCommand(draft_1.publishCommand);
|
|
22
|
+
draftCommand.addCommand(draft_1.draftValidateCommand);
|
|
23
|
+
commander_1.program.addCommand(draftCommand);
|
|
24
|
+
commander_1.program.addCommand(validate_1.validateCommand);
|
|
25
|
+
commander_1.program.addCommand(show_1.showCommand);
|
|
26
|
+
const engineCommand = new commander_1.Command("engine").description("Edit the staged lock's engine (piece types)");
|
|
27
|
+
engineCommand.addCommand(engine_1.setInfoCommand);
|
|
28
|
+
engineCommand.addCommand(engine_1.addPieceTypeCommand);
|
|
29
|
+
engineCommand.addCommand(engine_1.editDefinitionCommand);
|
|
30
|
+
engineCommand.addCommand(engine_1.addAssetCommand);
|
|
31
|
+
engineCommand.addCommand(engine_1.removePieceTypeCommand);
|
|
32
|
+
engineCommand.addCommand(engine_1.removeAssetCommand);
|
|
33
|
+
engineCommand.addCommand(engine_1.engineShowCommand);
|
|
34
|
+
commander_1.program.addCommand(engineCommand);
|
|
35
|
+
const rosterCommand = new commander_1.Command("roster").description("Edit the staged lock's rosters (pieces)");
|
|
36
|
+
rosterCommand.addCommand(roster_1.addPieceCommand);
|
|
37
|
+
rosterCommand.addCommand(roster_1.editPieceCommand);
|
|
38
|
+
rosterCommand.addCommand(roster_1.importPieceCommand);
|
|
39
|
+
rosterCommand.addCommand(roster_1.rescanCommand);
|
|
40
|
+
rosterCommand.addCommand(roster_1.testDownloadCommand);
|
|
41
|
+
rosterCommand.addCommand(roster_1.rosterListCommand);
|
|
42
|
+
rosterCommand.addCommand(roster_1.removePieceCommand);
|
|
43
|
+
commander_1.program.addCommand(rosterCommand);
|
|
44
|
+
const selectionCommand = new commander_1.Command("selection").description("Edit the staged lock's selection config");
|
|
45
|
+
selectionCommand.addCommand(selection_1.addScriptCommand);
|
|
46
|
+
selectionCommand.addCommand(selection_1.selectionSetCommand);
|
|
47
|
+
selectionCommand.addCommand(selection_1.runScriptCommand);
|
|
48
|
+
selectionCommand.addCommand(selection_1.selectionShowCommand);
|
|
49
|
+
commander_1.program.addCommand(selectionCommand);
|
|
50
|
+
const pieceMetaCommand = new commander_1.Command("piece-meta").description("Edit the staged lock's piece meta (custom per-piece fields)");
|
|
51
|
+
pieceMetaCommand.addCommand(piece_meta_1.pieceMetaSetCommand);
|
|
52
|
+
pieceMetaCommand.addCommand(piece_meta_1.pieceMetaShowCommand);
|
|
53
|
+
commander_1.program.addCommand(pieceMetaCommand);
|
|
54
|
+
commander_1.program.parse();
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAA6C;AAE7C,4CAAsH;AACtH,8CAQ2B;AAC3B,8CAQ2B;AAC3B,oDAK8B;AAC9B,sDAG+B;AAC/B,kDAAsD;AACtD,0CAA8C;AAC9C,uCAAoC;AAEpC,mBAAO;KACJ,IAAI,CAAC,0BAA0B,CAAC;KAChC,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,iBAAO,CAAC,CAAC;AAEpB,MAAM,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iEAAiE,CAAC,CAAC;AACzH,YAAY,CAAC,UAAU,CAAC,mBAAW,CAAC,CAAC;AACrC,YAAY,CAAC,UAAU,CAAC,uBAAe,CAAC,CAAC;AACzC,YAAY,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC;AACxC,YAAY,CAAC,UAAU,CAAC,sBAAc,CAAC,CAAC;AACxC,YAAY,CAAC,UAAU,CAAC,4BAAoB,CAAC,CAAC;AAC9C,mBAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,mBAAO,CAAC,UAAU,CAAC,0BAAe,CAAC,CAAC;AACpC,mBAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAEhC,MAAM,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;AACvG,aAAa,CAAC,UAAU,CAAC,uBAAc,CAAC,CAAC;AACzC,aAAa,CAAC,UAAU,CAAC,4BAAmB,CAAC,CAAC;AAC9C,aAAa,CAAC,UAAU,CAAC,8BAAqB,CAAC,CAAC;AAChD,aAAa,CAAC,UAAU,CAAC,wBAAe,CAAC,CAAC;AAC1C,aAAa,CAAC,UAAU,CAAC,+BAAsB,CAAC,CAAC;AACjD,aAAa,CAAC,UAAU,CAAC,2BAAkB,CAAC,CAAC;AAC7C,aAAa,CAAC,UAAU,CAAC,0BAAiB,CAAC,CAAC;AAC5C,mBAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,MAAM,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC;AACnG,aAAa,CAAC,UAAU,CAAC,wBAAe,CAAC,CAAC;AAC1C,aAAa,CAAC,UAAU,CAAC,yBAAgB,CAAC,CAAC;AAC3C,aAAa,CAAC,UAAU,CAAC,2BAAkB,CAAC,CAAC;AAC7C,aAAa,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AACxC,aAAa,CAAC,UAAU,CAAC,4BAAmB,CAAC,CAAC;AAC9C,aAAa,CAAC,UAAU,CAAC,0BAAiB,CAAC,CAAC;AAC5C,aAAa,CAAC,UAAU,CAAC,2BAAkB,CAAC,CAAC;AAC7C,mBAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,MAAM,gBAAgB,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC;AACzG,gBAAgB,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;AAC9C,gBAAgB,CAAC,UAAU,CAAC,+BAAmB,CAAC,CAAC;AACjD,gBAAgB,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;AAC9C,gBAAgB,CAAC,UAAU,CAAC,gCAAoB,CAAC,CAAC;AAClD,mBAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,MAAM,gBAAgB,GAAG,IAAI,mBAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,6DAA6D,CAAC,CAAC;AAC9H,gBAAgB,CAAC,UAAU,CAAC,gCAAmB,CAAC,CAAC;AACjD,gBAAgB,CAAC,UAAU,CAAC,iCAAoB,CAAC,CAAC;AAClD,mBAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,mBAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withDraftOption = withDraftOption;
|
|
4
|
+
function withDraftOption(cmd) {
|
|
5
|
+
return cmd.option("-d, --draft <path>", "path to the draft file (defaults to the sole *.rosterlock.draft.json file in the current directory)");
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=cli-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../../src/lib/cli-options.ts"],"names":[],"mappings":";;;AAEA,yBAAgC,GAAY;IAC1C,OAAO,GAAG,CAAC,MAAM,CACf,oBAAoB,EACpB,qGAAqG,CACtG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DRAFT_SUFFIX = void 0;
|
|
4
|
+
exports.resolveDraftPath = resolveDraftPath;
|
|
5
|
+
exports.defaultDraftPath = defaultDraftPath;
|
|
6
|
+
exports.readDraft = readDraft;
|
|
7
|
+
exports.writeDraft = writeDraft;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const shared_1 = require("@roster-lock/shared");
|
|
11
|
+
const slugify_1 = require("./slugify");
|
|
12
|
+
exports.DRAFT_SUFFIX = ".rosterlock.draft.json";
|
|
13
|
+
function resolveDraftPath(explicit) {
|
|
14
|
+
if (explicit)
|
|
15
|
+
return (0, node_path_1.resolve)(process.cwd(), explicit);
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const candidates = (0, node_fs_1.readdirSync)(cwd).filter((name) => name.endsWith(exports.DRAFT_SUFFIX));
|
|
18
|
+
if (candidates.length === 0) {
|
|
19
|
+
throw new Error(`No draft file found in current directory (expected a *${exports.DRAFT_SUFFIX} file); pass --draft <path>`);
|
|
20
|
+
}
|
|
21
|
+
if (candidates.length > 1) {
|
|
22
|
+
throw new Error(`Multiple draft files found in current directory: ${candidates.join(", ")}; pass --draft <path> to choose one`);
|
|
23
|
+
}
|
|
24
|
+
return (0, node_path_1.resolve)(cwd, candidates[0]);
|
|
25
|
+
}
|
|
26
|
+
function defaultDraftPath(title) {
|
|
27
|
+
const slug = (0, slugify_1.slugify)(title && title.length > 0 ? title : "config") || "config";
|
|
28
|
+
return (0, node_path_1.resolve)(process.cwd(), `${slug}${exports.DRAFT_SUFFIX}`);
|
|
29
|
+
}
|
|
30
|
+
function readDraft(path) {
|
|
31
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(path, "utf-8"));
|
|
32
|
+
return shared_1.ROSTERLOCK_V1_DRAFT_CASTER_JSONSCHEMA.cast(json, true);
|
|
33
|
+
}
|
|
34
|
+
function writeDraft(path, draft) {
|
|
35
|
+
shared_1.ROSTERLOCK_V1_DRAFT_CASTER_JSONSCHEMA.cast(draft, true);
|
|
36
|
+
(0, node_fs_1.writeFileSync)(path, JSON.stringify(draft, null, 2) + "\n");
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=draft-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-io.js","sourceRoot":"","sources":["../../src/lib/draft-io.ts"],"names":[],"mappings":";;;;;;;AAAA,qCAAmE;AACnE,yCAAoC;AACpC,gDAA4E;AAE5E,uCAAoC;AAEvB,QAAA,YAAY,GAAG,wBAAwB,CAAC;AAErD,0BAAiC,QAAiB;IAChD,IAAG,QAAQ;QAAE,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAA,YAAY,CAAC,CAAC,CAAC;IAElF,IAAG,UAAU,CAAC,MAAM,KAAK,CAAC,EAAC,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAA,YAAY,6BAA6B,CACnG,CAAC;IACJ,CAAC;IACD,IAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,oDAAoD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAC/G,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,mBAAO,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,0BAAiC,KAAc;IAC7C,MAAM,IAAI,GAAG,IAAA,iBAAO,EAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC/E,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,GAAG,QAAA,YAAY,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,mBAA0B,IAAY;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,OAAO,8CAAqC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,oBAA2B,IAAY,EAAE,KAAwB;IAC/D,8CAAqC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,IAAA,uBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatError = formatError;
|
|
4
|
+
exports.withErrorHandling = withErrorHandling;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
function formatError(e) {
|
|
7
|
+
if (e instanceof zod_1.ZodError) {
|
|
8
|
+
return e.issues
|
|
9
|
+
.map((issue) => `/${issue.path.join("/")} ${issue.message}`)
|
|
10
|
+
.join("\n");
|
|
11
|
+
}
|
|
12
|
+
if (Array.isArray(e)) {
|
|
13
|
+
return e
|
|
14
|
+
.map((err) => `${err.instancePath || "/"} ${err.message}`)
|
|
15
|
+
.join("\n");
|
|
16
|
+
}
|
|
17
|
+
if (e instanceof Error)
|
|
18
|
+
return e.message;
|
|
19
|
+
return String(e);
|
|
20
|
+
}
|
|
21
|
+
function withErrorHandling(fn) {
|
|
22
|
+
return async (...args) => {
|
|
23
|
+
try {
|
|
24
|
+
await fn(...args);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.error(formatError(e));
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":";;;;AACA,6BAA+B;AAE/B,qBAA4B,CAAU;IACpC,IAAG,CAAC,YAAY,cAAQ,EAAC,CAAC;QACxB,OAAO,CAAC,CAAC,MAAM;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC;QACnB,OAAQ,CAAwB;aAC7B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAG,CAAC,YAAY,KAAK;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,2BACE,EAAoC;IAEpC,OAAO,KAAK,EAAE,GAAG,IAAU,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAM,CAAC,EAAC,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.walkRelative = walkRelative;
|
|
4
|
+
exports.getFileFromRoot = getFileFromRoot;
|
|
5
|
+
const promises_1 = require("node:fs/promises");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
async function* walkRelative(root) {
|
|
9
|
+
yield* walk(root, root);
|
|
10
|
+
}
|
|
11
|
+
async function* walk(root, dir) {
|
|
12
|
+
const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
|
|
13
|
+
for (const entry of entries) {
|
|
14
|
+
const fullPath = (0, node_path_1.join)(dir, entry.name);
|
|
15
|
+
if (entry.isDirectory()) {
|
|
16
|
+
yield* walk(root, fullPath);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
yield (0, node_path_1.relative)(root, fullPath).split(node_path_1.sep).join("/");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function getFileFromRoot(root, relativePath) {
|
|
24
|
+
const fullPath = (0, node_path_1.join)(root, relativePath);
|
|
25
|
+
const stats = await (0, promises_1.stat)(fullPath);
|
|
26
|
+
return { byteSize: stats.size, stream: (0, node_fs_1.createReadStream)(fullPath) };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=fs-walk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-walk.js","sourceRoot":"","sources":["../../src/lib/fs-walk.ts"],"names":[],"mappings":";;;;AAAA,+CAA2D;AAC3D,qCAA2C;AAC3C,yCAAuF;AAMhF,KAAK,SAAS,CAAC,cAAc,IAAY;IAC9C,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAY,EAAE,GAAW;IAC5C,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAI,MAAM,KAAK,IAAI,OAAO,EAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAG,KAAK,CAAC,WAAW,EAAE,EAAC,CAAC;YACtB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,eAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,0BACV,IAAY,EAAE,YAAoB;IAElC,MAAM,QAAQ,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAA,0BAAgB,EAAC,QAAQ,CAAC,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readJsonInput = readJsonInput;
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
async function readJsonInput(source, schema) {
|
|
6
|
+
const raw = source === "-" ? await readStdin() : await (0, promises_1.readFile)(source, "utf-8");
|
|
7
|
+
return schema.parse(JSON.parse(raw));
|
|
8
|
+
}
|
|
9
|
+
async function readStdin() {
|
|
10
|
+
const chunks = [];
|
|
11
|
+
for await (const chunk of process.stdin) {
|
|
12
|
+
chunks.push(Buffer.from(chunk));
|
|
13
|
+
}
|
|
14
|
+
return Buffer.concat(chunks).toString("utf-8");
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=json-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-input.js","sourceRoot":"","sources":["../../src/lib/json-input.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AASrC,KAAK,wBAA2B,MAAc,EAAE,MAAkB;IACvE,MAAM,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,IAAA,mBAAQ,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readLock = readLock;
|
|
4
|
+
exports.writeLock = writeLock;
|
|
5
|
+
exports.defaultLockPath = defaultLockPath;
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const shared_1 = require("@roster-lock/shared");
|
|
9
|
+
function readLock(path) {
|
|
10
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(process.cwd(), path), "utf-8"));
|
|
11
|
+
return shared_1.ROSTERLOCK_V1_CASTER_JSONSCHEMA.cast(json, true);
|
|
12
|
+
}
|
|
13
|
+
function writeLock(path, lock) {
|
|
14
|
+
shared_1.ROSTERLOCK_V1_CASTER_JSONSCHEMA.cast(lock, true);
|
|
15
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(process.cwd(), path), JSON.stringify(lock, null, 2) + "\n");
|
|
16
|
+
}
|
|
17
|
+
function defaultLockPath(title, version) {
|
|
18
|
+
return (0, node_path_1.resolve)(process.cwd(), `${title}-${version}.rosterlock.json`);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=lock-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-io.js","sourceRoot":"","sources":["../../src/lib/lock-io.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsD;AACtD,yCAAoC;AACpC,gDAAsE;AAGtE,kBAAyB,IAAY;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,OAAO,wCAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,mBAA0B,IAAY,EAAE,IAAwB;IAC9D,wCAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,IAAA,uBAAa,EAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,yBAAgC,KAAa,EAAE,OAAe;IAC5D,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,IAAI,OAAO,kBAAkB,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseKeyValueList = parseKeyValueList;
|
|
4
|
+
exports.parseCommaList = parseCommaList;
|
|
5
|
+
exports.parseCount = parseCount;
|
|
6
|
+
exports.parseStrategy = parseStrategy;
|
|
7
|
+
function parseKeyValueList(value) {
|
|
8
|
+
if (!value)
|
|
9
|
+
return {};
|
|
10
|
+
const result = {};
|
|
11
|
+
for (const pair of value.split(",")) {
|
|
12
|
+
const trimmed = pair.trim();
|
|
13
|
+
if (!trimmed)
|
|
14
|
+
continue;
|
|
15
|
+
const eq = trimmed.indexOf("=");
|
|
16
|
+
if (eq === -1)
|
|
17
|
+
throw new Error(`Invalid key=value pair: "${trimmed}"`);
|
|
18
|
+
result[trimmed.slice(0, eq)] = trimmed.slice(eq + 1);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
function parseCommaList(value) {
|
|
23
|
+
if (!value)
|
|
24
|
+
return [];
|
|
25
|
+
return value.split(",").map((v) => v.trim()).filter((v) => v.length > 0);
|
|
26
|
+
}
|
|
27
|
+
function parseCount(value) {
|
|
28
|
+
if (value === "*")
|
|
29
|
+
return "*";
|
|
30
|
+
if (value.includes(":")) {
|
|
31
|
+
const [minRaw, maxRaw] = value.split(":");
|
|
32
|
+
const min = Number.parseInt(minRaw, 10);
|
|
33
|
+
if (Number.isNaN(min))
|
|
34
|
+
throw new Error(`Invalid count range: "${value}"`);
|
|
35
|
+
const max = maxRaw === "*" ? "*" : Number.parseInt(maxRaw, 10);
|
|
36
|
+
if (max !== "*" && Number.isNaN(max))
|
|
37
|
+
throw new Error(`Invalid count range: "${value}"`);
|
|
38
|
+
return [min, max];
|
|
39
|
+
}
|
|
40
|
+
const n = Number.parseInt(value, 10);
|
|
41
|
+
if (Number.isNaN(n))
|
|
42
|
+
throw new Error(`Invalid count: "${value}"`);
|
|
43
|
+
return n;
|
|
44
|
+
}
|
|
45
|
+
function parseStrategy(value) {
|
|
46
|
+
const normalized = value === "on-demand" ? "on demand" : value;
|
|
47
|
+
if (!["mandatory", "personal", "shared", "on demand"].includes(normalized)) {
|
|
48
|
+
throw new Error(`Invalid strategy: "${value}" (expected mandatory|personal|shared|on-demand)`);
|
|
49
|
+
}
|
|
50
|
+
return normalized;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/lib/parse.ts"],"names":[],"mappings":";;;;;;AAEA,2BAAkC,KAAyB;IACzD,IAAG,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAI,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAG,CAAC,OAAO;YAAE,SAAS;QACtB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAG,EAAE,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,GAAG,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wBAA+B,KAAyB;IACtD,IAAG,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,oBAA2B,KAAa;IACtC,IAAG,KAAK,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IAC7B,IAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC;QACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxC,IAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC;QACzE,MAAM,GAAG,GAAiB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAG,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,uBAA8B,KAAa;IACzC,MAAM,UAAU,GAAG,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/D,IAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,kDAAkD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,UAA+D,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanPieceFolder = scanPieceFolder;
|
|
4
|
+
const shared_1 = require("@roster-lock/shared");
|
|
5
|
+
const fs_walk_1 = require("./fs-walk");
|
|
6
|
+
async function scanPieceFolder(folder, pathVariables, pieceDefinition) {
|
|
7
|
+
const assetInfo = await (0, shared_1.getAssetsOfFiles)((0, fs_walk_1.walkRelative)(folder), pathVariables, pieceDefinition);
|
|
8
|
+
const errors = (0, shared_1.collectAssetFileErrors)(assetInfo);
|
|
9
|
+
const version = await (0, shared_1.calculatePieceVersion)(assetInfo.filesWithAssets, (relativePath) => (0, fs_walk_1.getFileFromRoot)(folder, relativePath));
|
|
10
|
+
return { version, errors };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=piece-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"piece-scan.js","sourceRoot":"","sources":["../../src/lib/piece-scan.ts"],"names":[],"mappings":";;;AAAA,gDAAsG;AAEtG,uCAA0D;AAInD,KAAK,0BACV,MAAc,EACd,aAAqC,EACrC,eAAgC;IAEhC,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,IAAA,+BAAsB,EAAC,SAAS,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAqB,EACzC,SAAS,CAAC,eAAe,EACzB,CAAC,YAAY,EAAE,EAAE,CAAC,IAAA,yBAAe,EAAC,MAAM,EAAE,YAAY,CAAC,CACxD,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeSchemaShape = describeSchemaShape;
|
|
4
|
+
function describeSchemaShape(schema) {
|
|
5
|
+
return describe(schema);
|
|
6
|
+
}
|
|
7
|
+
function describe(node) {
|
|
8
|
+
switch (node.type) {
|
|
9
|
+
case "object": {
|
|
10
|
+
const shape = node.def.shape;
|
|
11
|
+
const parts = Object.entries(shape).map(([key, value]) => {
|
|
12
|
+
const isOptional = value.type === "optional";
|
|
13
|
+
const inner = isOptional ? value.def.innerType : value;
|
|
14
|
+
return `${key}${isOptional ? "?" : ""}: ${describe(inner)}`;
|
|
15
|
+
});
|
|
16
|
+
return `{ ${parts.join(", ")} }`;
|
|
17
|
+
}
|
|
18
|
+
case "array":
|
|
19
|
+
return `${describe(node.def.element)}[]`;
|
|
20
|
+
case "tuple":
|
|
21
|
+
return `[${node.def.items.map(describe).join(", ")}]`;
|
|
22
|
+
case "union":
|
|
23
|
+
return node.def.options.map(describe).join(" | ");
|
|
24
|
+
case "enum":
|
|
25
|
+
return Object.values(node.def.entries).map((v) => JSON.stringify(v)).join(" | ");
|
|
26
|
+
case "literal":
|
|
27
|
+
return node.def.values.map((v) => JSON.stringify(v)).join(" | ");
|
|
28
|
+
case "record":
|
|
29
|
+
return `Record<${describe(node.def.keyType)}, ${describe(node.def.valueType)}>`;
|
|
30
|
+
case "optional":
|
|
31
|
+
return `${describe(node.def.innerType)}?`;
|
|
32
|
+
case "lazy":
|
|
33
|
+
return "<recursive>";
|
|
34
|
+
default:
|
|
35
|
+
return node.type;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=schema-help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-help.js","sourceRoot":"","sources":["../../src/lib/schema-help.ts"],"names":[],"mappings":";;;AASA,6BAAoC,MAAe;IACjD,OAAO,QAAQ,CAAC,MAA4B,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa;IAC7B,QAAO,IAAI,CAAC,IAAI,EAAC,CAAC;QAChB,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAgC,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACvD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;gBAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAE,KAAK,CAAC,GAAG,CAAC,SAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;gBACpE,OAAO,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,CAAC;QACD,KAAK,OAAO;YACV,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAkB,CAAC,IAAI,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,IAAK,IAAI,CAAC,GAAG,CAAC,KAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5E,KAAK,OAAO;YACV,OAAQ,IAAI,CAAC,GAAG,CAAC,OAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAiC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7G,KAAK,SAAS;YACZ,OAAQ,IAAI,CAAC,GAAG,CAAC,MAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvF,KAAK,QAAQ;YACX,OAAO,UAAU,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAkB,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAoB,CAAC,GAAG,CAAC;QACxG,KAAK,UAAU;YACb,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAoB,CAAC,GAAG,CAAC;QACvD,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;AACH,CAAC"}
|