spec-controller 0.1.73 → 0.1.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/THIRD-PARTY-LICENSES.txt +382 -0
  2. package/dist/cli.js +28998 -3
  3. package/package.json +6 -3
  4. package/LICENSE +0 -21
  5. package/dist/cli-allocate/cli.d.ts +0 -2
  6. package/dist/cli-allocate/cli.d.ts.map +0 -1
  7. package/dist/cli-allocate/cli.js +0 -63
  8. package/dist/cli-allocate/cli.js.map +0 -1
  9. package/dist/cli-allocate/readHistory.d.ts +0 -14
  10. package/dist/cli-allocate/readHistory.d.ts.map +0 -1
  11. package/dist/cli-allocate/readHistory.js +0 -109
  12. package/dist/cli-allocate/readHistory.js.map +0 -1
  13. package/dist/cli-allocate/readParts.d.ts +0 -2
  14. package/dist/cli-allocate/readParts.d.ts.map +0 -1
  15. package/dist/cli-allocate/readParts.js +0 -26
  16. package/dist/cli-allocate/readParts.js.map +0 -1
  17. package/dist/cli-allocate/readTree.d.ts +0 -5
  18. package/dist/cli-allocate/readTree.d.ts.map +0 -1
  19. package/dist/cli-allocate/readTree.js +0 -74
  20. package/dist/cli-allocate/readTree.js.map +0 -1
  21. package/dist/cli-allocate/refStore.d.ts +0 -2
  22. package/dist/cli-allocate/refStore.d.ts.map +0 -1
  23. package/dist/cli-allocate/refStore.js +0 -35
  24. package/dist/cli-allocate/refStore.js.map +0 -1
  25. package/dist/cli-allocate/request.d.ts +0 -9
  26. package/dist/cli-allocate/request.d.ts.map +0 -1
  27. package/dist/cli-allocate/request.js +0 -23
  28. package/dist/cli-allocate/request.js.map +0 -1
  29. package/dist/cli-allocate/stderr.d.ts +0 -7
  30. package/dist/cli-allocate/stderr.d.ts.map +0 -1
  31. package/dist/cli-allocate/stderr.js +0 -32
  32. package/dist/cli-allocate/stderr.js.map +0 -1
  33. package/dist/cli-allocate/unreadable.d.ts +0 -19
  34. package/dist/cli-allocate/unreadable.d.ts.map +0 -1
  35. package/dist/cli-allocate/unreadable.js +0 -47
  36. package/dist/cli-allocate/unreadable.js.map +0 -1
  37. package/dist/cli-args.d.ts +0 -18
  38. package/dist/cli-args.d.ts.map +0 -1
  39. package/dist/cli-args.js +0 -196
  40. package/dist/cli-args.js.map +0 -1
  41. package/dist/cli-balance/cli.d.ts +0 -10
  42. package/dist/cli-balance/cli.d.ts.map +0 -1
  43. package/dist/cli-balance/cli.js +0 -163
  44. package/dist/cli-balance/cli.js.map +0 -1
  45. package/dist/cli-balance/corpusDir.d.ts +0 -3
  46. package/dist/cli-balance/corpusDir.d.ts.map +0 -1
  47. package/dist/cli-balance/corpusDir.js +0 -14
  48. package/dist/cli-balance/corpusDir.js.map +0 -1
  49. package/dist/cli-balance/emit/format.d.ts +0 -39
  50. package/dist/cli-balance/emit/format.d.ts.map +0 -1
  51. package/dist/cli-balance/emit/format.js +0 -59
  52. package/dist/cli-balance/emit/format.js.map +0 -1
  53. package/dist/cli-balance/emit/writer.d.ts +0 -13
  54. package/dist/cli-balance/emit/writer.d.ts.map +0 -1
  55. package/dist/cli-balance/emit/writer.js +0 -73
  56. package/dist/cli-balance/emit/writer.js.map +0 -1
  57. package/dist/cli-balance/evidenceInputs.d.ts +0 -136
  58. package/dist/cli-balance/evidenceInputs.d.ts.map +0 -1
  59. package/dist/cli-balance/evidenceInputs.js +0 -125
  60. package/dist/cli-balance/evidenceInputs.js.map +0 -1
  61. package/dist/cli-balance/exitStatus.d.ts +0 -4
  62. package/dist/cli-balance/exitStatus.d.ts.map +0 -1
  63. package/dist/cli-balance/exitStatus.js +0 -18
  64. package/dist/cli-balance/exitStatus.js.map +0 -1
  65. package/dist/cli-balance/inputsRead.d.ts +0 -11
  66. package/dist/cli-balance/inputsRead.d.ts.map +0 -1
  67. package/dist/cli-balance/inputsRead.js +0 -51
  68. package/dist/cli-balance/inputsRead.js.map +0 -1
  69. package/dist/cli-balance/reRender.d.ts +0 -8
  70. package/dist/cli-balance/reRender.d.ts.map +0 -1
  71. package/dist/cli-balance/reRender.js +0 -23
  72. package/dist/cli-balance/reRender.js.map +0 -1
  73. package/dist/cli-balance/unreadableInputs.d.ts +0 -52
  74. package/dist/cli-balance/unreadableInputs.d.ts.map +0 -1
  75. package/dist/cli-balance/unreadableInputs.js +0 -118
  76. package/dist/cli-balance/unreadableInputs.js.map +0 -1
  77. package/dist/cli-registry.d.ts +0 -36
  78. package/dist/cli-registry.d.ts.map +0 -1
  79. package/dist/cli-registry.js +0 -147
  80. package/dist/cli-registry.js.map +0 -1
  81. package/dist/cli.d.ts +0 -3
  82. package/dist/cli.d.ts.map +0 -1
  83. package/dist/cli.js.map +0 -1
  84. package/dist/crashGuards.d.ts +0 -18
  85. package/dist/crashGuards.d.ts.map +0 -1
  86. package/dist/crashGuards.js +0 -81
  87. package/dist/crashGuards.js.map +0 -1
  88. package/dist/defaultCorpus.d.ts +0 -2
  89. package/dist/defaultCorpus.d.ts.map +0 -1
  90. package/dist/defaultCorpus.js +0 -2
  91. package/dist/defaultCorpus.js.map +0 -1
  92. package/dist/exitCode.d.ts +0 -21
  93. package/dist/exitCode.d.ts.map +0 -1
  94. package/dist/exitCode.js +0 -30
  95. package/dist/exitCode.js.map +0 -1
  96. package/dist/host.d.ts +0 -19
  97. package/dist/host.d.ts.map +0 -1
  98. package/dist/host.js +0 -119
  99. package/dist/host.js.map +0 -1
  100. package/dist/ingest/ciSourcePaths.d.ts +0 -8
  101. package/dist/ingest/ciSourcePaths.d.ts.map +0 -1
  102. package/dist/ingest/ciSourcePaths.js +0 -20
  103. package/dist/ingest/ciSourcePaths.js.map +0 -1
  104. package/dist/ingest/ingestQualityChecks.d.ts +0 -41
  105. package/dist/ingest/ingestQualityChecks.d.ts.map +0 -1
  106. package/dist/ingest/ingestQualityChecks.js +0 -105
  107. package/dist/ingest/ingestQualityChecks.js.map +0 -1
  108. package/dist/ingest/ingestScenarios.d.ts +0 -16
  109. package/dist/ingest/ingestScenarios.d.ts.map +0 -1
  110. package/dist/ingest/ingestScenarios.js +0 -61
  111. package/dist/ingest/ingestScenarios.js.map +0 -1
  112. package/dist/ingest/inputReading.d.ts +0 -12
  113. package/dist/ingest/inputReading.d.ts.map +0 -1
  114. package/dist/ingest/inputReading.js +0 -28
  115. package/dist/ingest/inputReading.js.map +0 -1
  116. package/dist/ingest/inputShapes.d.ts +0 -18
  117. package/dist/ingest/inputShapes.d.ts.map +0 -1
  118. package/dist/ingest/inputShapes.js +0 -135
  119. package/dist/ingest/inputShapes.js.map +0 -1
  120. package/dist/ingest/junitReportPaths.d.ts +0 -3
  121. package/dist/ingest/junitReportPaths.d.ts.map +0 -1
  122. package/dist/ingest/junitReportPaths.js +0 -16
  123. package/dist/ingest/junitReportPaths.js.map +0 -1
  124. package/dist/ingest/junitXml.d.ts +0 -4
  125. package/dist/ingest/junitXml.d.ts.map +0 -1
  126. package/dist/ingest/junitXml.js +0 -22
  127. package/dist/ingest/junitXml.js.map +0 -1
  128. package/dist/ingest/reportReading.d.ts +0 -20
  129. package/dist/ingest/reportReading.d.ts.map +0 -1
  130. package/dist/ingest/reportReading.js +0 -28
  131. package/dist/ingest/reportReading.js.map +0 -1
  132. package/dist/main.d.ts +0 -2
  133. package/dist/main.d.ts.map +0 -1
  134. package/dist/main.js +0 -107
  135. package/dist/main.js.map +0 -1
  136. package/dist/messages.d.ts +0 -242
  137. package/dist/messages.d.ts.map +0 -1
  138. package/dist/messages.js +0 -343
  139. package/dist/messages.js.map +0 -1
  140. package/dist/outputLocation.d.ts +0 -23
  141. package/dist/outputLocation.d.ts.map +0 -1
  142. package/dist/outputLocation.js +0 -139
  143. package/dist/outputLocation.js.map +0 -1
  144. package/dist/run-management/keptRun.d.ts +0 -55
  145. package/dist/run-management/keptRun.d.ts.map +0 -1
  146. package/dist/run-management/keptRun.js +0 -93
  147. package/dist/run-management/keptRun.js.map +0 -1
  148. package/dist/run-management/resolveRunInputs.d.ts +0 -17
  149. package/dist/run-management/resolveRunInputs.d.ts.map +0 -1
  150. package/dist/run-management/resolveRunInputs.js +0 -137
  151. package/dist/run-management/resolveRunInputs.js.map +0 -1
  152. package/dist/storedRun.d.ts +0 -6
  153. package/dist/storedRun.d.ts.map +0 -1
  154. package/dist/storedRun.js +0 -27
  155. package/dist/storedRun.js.map +0 -1
@@ -1,93 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { parse, stringify } from "yaml";
4
- import { APP_MESSAGES, AppMessage } from "../messages.js";
5
- import { firstSharingFile, inputAt, refuse, writeOrRefuse } from "../outputLocation.js";
6
- const RECONCILIATION_DOCUMENT = "spec-reconciliation.md";
7
- const RECONCILIATION_JSON = "spec-reconciliation.json";
8
- export const RUN_MANIFEST = "run.yaml";
9
- const RUN_MANIFEST_SCHEMA_VERSION = 2;
10
- export function earlierStoredRunDirOf(path, ownRunDir) {
11
- const dir = existsSync(path) ? dirname(realpathSync(path)) : realpathSync(dirname(path));
12
- if (ownRunDir !== undefined && dir === realpathSync(ownRunDir))
13
- return undefined;
14
- return holdsRunManifest(dir) ? dir : undefined;
15
- }
16
- function holdsRunManifest(dir) {
17
- return readsAsRunManifest(runManifestDocumentIn(dir));
18
- }
19
- function runManifestDocumentIn(dir) {
20
- try {
21
- return parse(readFileSync(join(dir, RUN_MANIFEST), "utf8"));
22
- }
23
- catch {
24
- // A run.yaml that is absent, unreadable or not YAML reads as no document.
25
- }
26
- return undefined;
27
- }
28
- function readsAsRunManifest(document) {
29
- if (typeof document !== "object" || document === null)
30
- return false;
31
- const fields = document;
32
- return (fields["schema_version"] !== undefined &&
33
- fields["run_id"] !== undefined &&
34
- typeof fields["artefacts"] === "object" &&
35
- fields["artefacts"] !== null);
36
- }
37
- export function planKeptRun(spec) {
38
- const runDir = join(spec.storeRoot, spec.target, spec.runId);
39
- return {
40
- runDir,
41
- documentPath: join(runDir, RECONCILIATION_DOCUMENT),
42
- reconciliationJsonPath: join(runDir, RECONCILIATION_JSON),
43
- };
44
- }
45
- export function resolveRunId(options) {
46
- if (options.runId !== undefined) {
47
- return options.runId;
48
- }
49
- return formatRunTimestamp(options.now);
50
- }
51
- function formatRunTimestamp(instant) {
52
- return instant.toISOString().replace(/\.\d+Z/, "Z").replace(/:/g, "-");
53
- }
54
- export function planRunManifest(input) {
55
- return {
56
- schema_version: RUN_MANIFEST_SCHEMA_VERSION,
57
- run_id: input.runId,
58
- target: input.target,
59
- source_sha: input.sourceSha,
60
- tool_sha: input.toolSha,
61
- tool_version: input.toolVersion,
62
- mode: input.mode,
63
- date: input.date,
64
- purpose: [],
65
- links: [],
66
- artefacts: {
67
- document: RECONCILIATION_DOCUMENT,
68
- reconciliation: RECONCILIATION_JSON,
69
- },
70
- };
71
- }
72
- export function serialiseRunManifest(manifest) {
73
- return stringify(manifest);
74
- }
75
- export function executeKeptRun(spec, meta, route) {
76
- const plan = planKeptRun(spec);
77
- writeOrRefuse(APP_MESSAGES[AppMessage.StoredRunDirectoryNotCreated](), plan.runDir, () => mkdirSync(plan.runDir, { recursive: true }));
78
- const manifestPath = join(plan.runDir, RUN_MANIFEST);
79
- const sharesManifest = firstSharingFile(manifestPath, spec.formatPaths ?? []);
80
- if (sharesManifest !== undefined) {
81
- refuse(APP_MESSAGES[AppMessage.FormatNamesStoredRunManifest](sharesManifest, manifestPath, plan.runDir));
82
- }
83
- const readManifest = inputAt(manifestPath, spec.inputs ?? []);
84
- if (readManifest !== undefined) {
85
- refuse(APP_MESSAGES[AppMessage.StoredRunReadsItsManifest](manifestPath, readManifest.path, readManifest.subject));
86
- }
87
- if (!route([`md:${plan.documentPath}`, `json:${plan.reconciliationJsonPath}`], plan.runDir))
88
- return undefined;
89
- const manifest = planRunManifest({ runId: spec.runId, target: spec.target, ...meta });
90
- writeFileSync(manifestPath, serialiseRunManifest(manifest));
91
- return plan;
92
- }
93
- //# sourceMappingURL=keptRun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keptRun.js","sourceRoot":"","sources":["../../src/run-management/keptRun.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export declare function resolveSourceSha(opts: {
2
- sourceSha?: string;
3
- targetDir?: string;
4
- }): string | null;
5
- export declare function resolveTargetOrigin(targetDir: string | undefined): string | null;
6
- export interface ToolIdentity {
7
- toolSha: string | null;
8
- toolVersion: string;
9
- }
10
- export declare function resolveToolIdentity(opts?: {
11
- toolDir?: string;
12
- packageJsonPath?: string;
13
- }): ToolIdentity;
14
- export declare function resolveTargetRoot(opts: {
15
- features?: string;
16
- }): string;
17
- //# sourceMappingURL=resolveRunInputs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveRunInputs.d.ts","sourceRoot":"","sources":["../../src/run-management/resolveRunInputs.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAKhG;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGhF;AAkED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,CAQ3G;AAgCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAMrE"}
@@ -1,137 +0,0 @@
1
- import { execFileSync } from "node:child_process";
2
- import { readFileSync } from "node:fs";
3
- import { dirname, join, sep } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- export function resolveSourceSha(opts) {
6
- if (opts.sourceSha !== undefined && opts.sourceSha.trim() !== "") {
7
- return opts.sourceSha.trim();
8
- }
9
- return readGit(targetDirOf(opts.targetDir), ["rev-parse", "HEAD"]);
10
- }
11
- export function resolveTargetOrigin(targetDir) {
12
- const remote = readGit(targetDirOf(targetDir), ["remote", "get-url", "origin"]);
13
- return remote === null ? null : targetOriginName(remote);
14
- }
15
- const TRANSPORT = /^[A-Za-z0-9+.-]+::/;
16
- const URL_SCHEME = /^([A-Za-z][A-Za-z0-9+.-]*):\/\//;
17
- const OWNER_REPO_SCHEMES = new Set(["https", "ssh"]);
18
- /**
19
- * Names a remote only in a form it reads, built only from the parts read as host, port and path: a URL, a transport
20
- * prefix followed by a URL, the scp form, or a local path. An https or ssh URL, and an scp-form remote with a user, name
21
- * owner/repo, the last two path segments, where they have them. A remote whose user part's end can only be guessed
22
- * names nothing, since any guess leaks for some remote, and so does any form not read, such as a transport to a command.
23
- * A local path, and a file: URL holding no user, are named as given: git sends them to no server, so they carry no credential.
24
- */
25
- function targetOriginName(remote) {
26
- if (isLocalPath(remote))
27
- return remote;
28
- if (remote.startsWith("file:"))
29
- return remote.includes("@") ? null : remote;
30
- const transport = TRANSPORT.exec(remote)?.[0] ?? "";
31
- const address = remote.slice(transport.length);
32
- const scheme = URL_SCHEME.exec(address);
33
- if (scheme !== null) {
34
- return scheme[1] === "file" ? null : urlOriginName(transport, scheme[1], address.slice(scheme[0].length));
35
- }
36
- return transport === "" ? scpOriginName(address) : null;
37
- }
38
- // Git's own test: a remote with a / before its first :, or with no : at all, is a local path.
39
- function isLocalPath(remote) {
40
- return remote.split(":", 1)[0].includes("/") || !remote.includes(":");
41
- }
42
- // The authority runs to the first /, ? or #, and its host follows its last @. An @ after it means a password or a
43
- // query holds one, so where the user part ends can only be guessed.
44
- function urlOriginName(transport, scheme, rest) {
45
- const authority = rest.split(/[/?#]/, 1)[0];
46
- const afterAuthority = rest.slice(authority.length);
47
- const host = authority.slice(authority.lastIndexOf("@") + 1);
48
- if (afterAuthority.includes("@") || host === "")
49
- return null;
50
- const path = pathOf(afterAuthority);
51
- const ownerRepo = transport === "" && OWNER_REPO_SCHEMES.has(scheme) ? ownerRepoOf(path) : null;
52
- return ownerRepo ?? `${transport}${scheme}://${host}${path}`;
53
- }
54
- // The scp form's host and path follow its last @, split at their first :.
55
- function scpOriginName(address) {
56
- const at = address.lastIndexOf("@");
57
- const hostPath = address.slice(at + 1);
58
- const colon = hostPath.indexOf(":");
59
- if (colon <= 0)
60
- return null;
61
- const path = pathOf(hostPath.slice(colon + 1));
62
- return (at !== -1 ? ownerRepoOf(path) : null) ?? `${hostPath.slice(0, colon)}:${path}`;
63
- }
64
- function pathOf(rest) {
65
- return rest.split(/[?#]/, 1)[0];
66
- }
67
- function ownerRepoOf(path) {
68
- const bare = path.replace(/^\//, "");
69
- const segments = (bare.endsWith(".git") ? bare.slice(0, -".git".length) : bare).split("/");
70
- return segments.length >= 2 ? segments.slice(-2).join("/") : null;
71
- }
72
- function targetDirOf(targetDir) {
73
- return targetDir !== undefined && targetDir.trim() !== "" ? targetDir : undefined;
74
- }
75
- export function resolveToolIdentity(opts = {}) {
76
- const toolDir = opts.toolDir !== undefined && opts.toolDir.trim() !== ""
77
- ? opts.toolDir
78
- : dirname(fileURLToPath(import.meta.url));
79
- return {
80
- toolSha: resolveToolSha(toolDir),
81
- toolVersion: resolveToolVersion(opts.packageJsonPath ?? findPackageJson(toolDir)),
82
- };
83
- }
84
- function resolveToolSha(toolDir) {
85
- if (toolDir.split(sep).includes("node_modules"))
86
- return null;
87
- return readGit(toolDir, ["rev-parse", "HEAD"]);
88
- }
89
- function resolveToolVersion(packageJsonPath) {
90
- if (packageJsonPath === null)
91
- return "unknown";
92
- try {
93
- const pkg = JSON.parse(readFileSync(packageJsonPath, "utf8"));
94
- return typeof pkg.version === "string" && pkg.version !== "" ? pkg.version : "unknown";
95
- }
96
- catch {
97
- return "unknown";
98
- }
99
- }
100
- function findPackageJson(fromDir) {
101
- let dir = fromDir;
102
- for (;;) {
103
- const candidate = join(dir, "package.json");
104
- try {
105
- readFileSync(candidate, "utf8");
106
- return candidate;
107
- }
108
- catch {
109
- const parent = dirname(dir);
110
- if (parent === dir)
111
- return null;
112
- dir = parent;
113
- }
114
- }
115
- }
116
- export function resolveTargetRoot(opts) {
117
- if (opts.features === undefined || opts.features.trim() === "") {
118
- return process.cwd();
119
- }
120
- const targetDir = dirname(opts.features);
121
- return readGit(targetDir, ["rev-parse", "--show-toplevel"]) ?? targetDir;
122
- }
123
- // An undefined dir means the working directory. It is read inside the try because
124
- // process.cwd() throws once that directory is removed, which must read as no output.
125
- function readGit(dir, args) {
126
- try {
127
- const out = execFileSync("git", ["-C", dir ?? process.cwd(), ...args], {
128
- encoding: "utf8",
129
- stdio: ["ignore", "pipe", "ignore"],
130
- });
131
- return out.trim() || null;
132
- }
133
- catch {
134
- return null;
135
- }
136
- }
137
- //# sourceMappingURL=resolveRunInputs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveRunInputs.js","sourceRoot":"","sources":["../../src/run-management/resolveRunInputs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { type CommandSpec } from "./cli-registry.js";
2
- import type { HostInvocation } from "./host.js";
3
- export declare function dispatchesUnstored(inv: HostInvocation): boolean;
4
- export declare function storedReRenderRefusal(inv: HostInvocation): string | undefined;
5
- export declare function unstoredRunIdRefusal(inv: HostInvocation, commands?: readonly CommandSpec[]): string | undefined;
6
- //# sourceMappingURL=storedRun.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storedRun.d.ts","sourceRoot":"","sources":["../src/storedRun.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE/D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAS7E;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,QAAQ,GAAE,SAAS,WAAW,EAAyB,GACtD,MAAM,GAAG,SAAS,CAQpB"}
package/dist/storedRun.js DELETED
@@ -1,27 +0,0 @@
1
- import { asksForHelp } from "./cli-args.js";
2
- import { cliRegistry } from "./cli-registry.js";
3
- import { APP_MESSAGES, AppMessage } from "./messages.js";
4
- export function dispatchesUnstored(inv) {
5
- return inv.store === undefined || asksForHelp(inv.commandArgs);
6
- }
7
- export function storedReRenderRefusal(inv) {
8
- if (inv.command !== "balance" || asksForHelp(inv.commandArgs))
9
- return undefined;
10
- if (!inv.commandArgs.includes("--render-from-json"))
11
- return undefined;
12
- const given = [inv.store === undefined ? [] : ["--store"], inv.runId === undefined ? [] : ["--run-id"]].flat();
13
- if (given.length === 0)
14
- return undefined;
15
- return (`${APP_MESSAGES[AppMessage.HostUsageError](APP_MESSAGES[AppMessage.ReRenderNotStored](given.join(", ")))}\n` +
16
- APP_MESSAGES[given.length === 1 ? AppMessage.ReRenderWithoutIt : AppMessage.ReRenderWithoutThem]());
17
- }
18
- export function unstoredRunIdRefusal(inv, commands = cliRegistry.commands) {
19
- if (inv.runId === undefined || inv.store !== undefined || asksForHelp(inv.commandArgs))
20
- return undefined;
21
- const entry = commands.find((command) => command.name === inv.command);
22
- if (entry === undefined || entry.acceptsHostModifiers === false)
23
- return undefined;
24
- return (`${APP_MESSAGES[AppMessage.HostUsageError](APP_MESSAGES[AppMessage.RunIdWithoutStore](inv.runId))}\n` +
25
- APP_MESSAGES[AppMessage.KeepRunUnderName](entry.name));
26
- }
27
- //# sourceMappingURL=storedRun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storedRun.js","sourceRoot":"","sources":["../src/storedRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAAC,GAAmB;IACpD,OAAO,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAmB;IACvD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,CACL,GAAG,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC5G,YAAY,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CACnG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,GAAmB,EACnB,WAAmC,WAAW,CAAC,QAAQ;IAEvD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACzG,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,oBAAoB,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAClF,OAAO,CACL,GAAG,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI;QACrG,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CACtD,CAAC;AACJ,CAAC"}