@procedures/mark 0.45.0 → 0.47.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/CHANGELOG.md +65 -0
- package/README.md +7 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +6 -1
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +44 -4
- package/dist/cli.js.map +1 -1
- package/dist/compile-cache.d.ts +31 -0
- package/dist/compile-cache.d.ts.map +1 -0
- package/dist/compile-cache.js +45 -0
- package/dist/compile-cache.js.map +1 -0
- package/dist/ecosystem.d.ts +26 -2
- package/dist/ecosystem.d.ts.map +1 -1
- package/dist/ecosystem.js +106 -8
- package/dist/ecosystem.js.map +1 -1
- package/dist/manifest-build.js +3 -2
- package/dist/manifest-build.js.map +1 -1
- package/dist/manifest.d.ts +17 -6
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +15 -8
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.json +1054 -120
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +9 -1
- package/dist/print.js.map +1 -1
- package/package.json +52 -52
- package/src/bin.ts +7 -1
- package/src/cli.ts +44 -4
- package/src/compile-cache.ts +51 -0
- package/src/ecosystem.ts +115 -8
- package/src/manifest-build.ts +3 -2
- package/src/manifest.ts +27 -8
- package/src/print.ts +11 -1
package/dist/manifest-build.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { loadEcosystemRegistry } from "./ecosystem.js";
|
|
7
7
|
import { manifestPath, writeManifest } from "./manifest.js";
|
|
8
|
-
const { registry, loaded } = await loadEcosystemRegistry(false, false);
|
|
9
|
-
|
|
8
|
+
const { registry, loaded, index } = await loadEcosystemRegistry(false, false);
|
|
9
|
+
// Each command records the packages of its path: the lazy registry of a run loads only those (roadmap O93)
|
|
10
|
+
const manifest = await writeManifest(registry.getAll(), index);
|
|
10
11
|
console.log(`mark: ${manifestPath()} has ${manifest.commands.length} commands from ${loaded.length} packages`);
|
|
11
12
|
//# sourceMappingURL=manifest-build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-build.js","sourceRoot":"","sources":["../src/manifest-build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-build.js","sourceRoot":"","sources":["../src/manifest-build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9E,2GAA2G;AAC3G,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,EAAE,QAAQ,QAAQ,CAAC,QAAQ,CAAC,MAAM,kBAAkB,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -16,9 +16,9 @@ import { type AnyProcedure } from "@procedures/client";
|
|
|
16
16
|
import { type CLIMeta, type SchemaFieldInfo } from "./parse.js";
|
|
17
17
|
/**
|
|
18
18
|
* The format of the manifest. A change of the format makes old manifests stale.
|
|
19
|
-
* Version 2 adds `resultFields`.
|
|
19
|
+
* Version 2 adds `resultFields`. Version 3 adds `packages` (roadmap O93).
|
|
20
20
|
*/
|
|
21
|
-
export declare const MANIFEST_VERSION =
|
|
21
|
+
export declare const MANIFEST_VERSION = 3;
|
|
22
22
|
/** One command of the manifest */
|
|
23
23
|
export interface ManifestCommand {
|
|
24
24
|
path: string[];
|
|
@@ -30,6 +30,11 @@ export interface ManifestCommand {
|
|
|
30
30
|
inputSchema: unknown;
|
|
31
31
|
/** The fields of the result, for the help (none when the result is not an object) */
|
|
32
32
|
resultFields: SchemaFieldInfo[];
|
|
33
|
+
/**
|
|
34
|
+
* The packages that give the procedure, in the order of the eager load (roadmap O93). A core
|
|
35
|
+
* procedure has none. The lazy registry loads only these packages for a call of the path.
|
|
36
|
+
*/
|
|
37
|
+
packages: string[];
|
|
33
38
|
}
|
|
34
39
|
export interface Manifest {
|
|
35
40
|
version: number;
|
|
@@ -48,10 +53,16 @@ export declare function manifestPath(): string;
|
|
|
48
53
|
* then stale, and the next run of mark loads the procedures and writes it again.
|
|
49
54
|
*/
|
|
50
55
|
export declare function computeFingerprint(root?: string | null, markDir?: string): string;
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
/**
|
|
57
|
+
* The commands of the manifest, from the procedures of the registry. The index gives the packages
|
|
58
|
+
* of each path (`packageIndexOf()`). Without it, each command has no package.
|
|
59
|
+
*/
|
|
60
|
+
export declare function commandsOf(procedures: readonly AnyProcedure[], index?: Readonly<Record<string, readonly string[]>>): Promise<ManifestCommand[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Write the manifest of these procedures for the current fingerprint (a temporary file, then a
|
|
63
|
+
* rename). The index gives the packages of each path.
|
|
64
|
+
*/
|
|
65
|
+
export declare function writeManifest(procedures: readonly AnyProcedure[], index?: Readonly<Record<string, readonly string[]>>, file?: string): Promise<Manifest>;
|
|
55
66
|
/** The manifest when it exists and matches the current builds, or null */
|
|
56
67
|
export declare function readFreshManifest(file?: string): Manifest | null;
|
|
57
68
|
//# sourceMappingURL=manifest.d.ts.map
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAmD,KAAK,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AAG7H,OAAO,EAA6C,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3G;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yFAAyF;IACzF,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAaD,iGAAiG;AACjG,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAYD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAM,GAAG,IAA0B,EAAE,OAAO,GAAE,MAAmB,GAAG,MAAM,CAalH;AAgBD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAM,GACtD,OAAO,CAAC,eAAe,EAAE,CAAC,CAe5B;AAOD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAM,EACvD,IAAI,GAAE,MAAuB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAUnB;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAuB,GAAG,QAAQ,GAAG,IAAI,CAWhF"}
|
package/dist/manifest.js
CHANGED
|
@@ -16,15 +16,15 @@ import { createHash } from "node:crypto";
|
|
|
16
16
|
import * as fs from "node:fs";
|
|
17
17
|
import * as path from "node:path";
|
|
18
18
|
import { fileURLToPath } from "node:url";
|
|
19
|
-
import { describeProcedureEntry, jsonSchemaOf } from "@procedures/client";
|
|
19
|
+
import { describeProcedureEntry, jsonSchemaOf, pathToKey } from "@procedures/client";
|
|
20
20
|
import { writeFileAtomicSync } from "@procedures/fs/files";
|
|
21
21
|
import { discoverFromEcosystem, findWorkspaceRoot } from "./ecosystem.js";
|
|
22
22
|
import { extractSchemaFields, resultFieldsOfSchema } from "./parse.js";
|
|
23
23
|
/**
|
|
24
24
|
* The format of the manifest. A change of the format makes old manifests stale.
|
|
25
|
-
* Version 2 adds `resultFields`.
|
|
25
|
+
* Version 2 adds `resultFields`. Version 3 adds `packages` (roadmap O93).
|
|
26
26
|
*/
|
|
27
|
-
export const MANIFEST_VERSION =
|
|
27
|
+
export const MANIFEST_VERSION = 3;
|
|
28
28
|
/** The folder of the mark package: the nearest folder above this module with a package.json */
|
|
29
29
|
function markRoot() {
|
|
30
30
|
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -89,8 +89,11 @@ function cliMetadata(entry) {
|
|
|
89
89
|
result.interactive = entry.cli.interactive;
|
|
90
90
|
return result;
|
|
91
91
|
}
|
|
92
|
-
/**
|
|
93
|
-
|
|
92
|
+
/**
|
|
93
|
+
* The commands of the manifest, from the procedures of the registry. The index gives the packages
|
|
94
|
+
* of each path (`packageIndexOf()`). Without it, each command has no package.
|
|
95
|
+
*/
|
|
96
|
+
export async function commandsOf(procedures, index = {}) {
|
|
94
97
|
return procedures.map((procedure) => {
|
|
95
98
|
// One JSON Schema for each command: the fields come from it too (roadmap 2.1). The schema and
|
|
96
99
|
// the CLI metadata come from the one manifest type of the core (roadmap R17).
|
|
@@ -102,6 +105,7 @@ export async function commandsOf(procedures) {
|
|
|
102
105
|
fields: extractSchemaFields(inputSchema),
|
|
103
106
|
inputSchema,
|
|
104
107
|
resultFields: resultFieldsOfSchema(procedure.output),
|
|
108
|
+
packages: [...(index[pathToKey(procedure.path)] ?? [])],
|
|
105
109
|
};
|
|
106
110
|
});
|
|
107
111
|
}
|
|
@@ -109,13 +113,16 @@ export async function commandsOf(procedures) {
|
|
|
109
113
|
function toJson(manifest) {
|
|
110
114
|
return JSON.stringify(manifest, (_key, value) => (typeof value === "bigint" ? value.toString() : value), 1);
|
|
111
115
|
}
|
|
112
|
-
/**
|
|
113
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Write the manifest of these procedures for the current fingerprint (a temporary file, then a
|
|
118
|
+
* rename). The index gives the packages of each path.
|
|
119
|
+
*/
|
|
120
|
+
export async function writeManifest(procedures, index = {}, file = manifestPath()) {
|
|
114
121
|
const manifest = {
|
|
115
122
|
version: MANIFEST_VERSION,
|
|
116
123
|
fingerprint: computeFingerprint(),
|
|
117
124
|
generatedAt: new Date().toISOString(),
|
|
118
|
-
commands: await commandsOf(procedures),
|
|
125
|
+
commands: await commandsOf(procedures, index),
|
|
119
126
|
};
|
|
120
127
|
// writeFileAtomicSync flushes the file, tries the rename again on Windows and removes the temporary file after a failure
|
|
121
128
|
writeFileAtomicSync(file, toJson(manifest));
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAA0C,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|