@telorun/cli 0.89.0 → 0.90.0
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/dist/bundle/built-layers.d.ts +36 -0
- package/dist/bundle/built-layers.d.ts.map +1 -0
- package/dist/bundle/built-layers.js +84 -0
- package/dist/bundle/built-layers.js.map +1 -0
- package/dist/bundle/module-payload.d.ts +14 -10
- package/dist/bundle/module-payload.d.ts.map +1 -1
- package/dist/bundle/module-payload.js +76 -14
- package/dist/bundle/module-payload.js.map +1 -1
- package/dist/bundle/partition-layers.d.ts +13 -6
- package/dist/bundle/partition-layers.d.ts.map +1 -1
- package/dist/bundle/partition-layers.js +49 -7
- package/dist/bundle/partition-layers.js.map +1 -1
- package/dist/bundle/payload-drift.d.ts +1 -1
- package/dist/bundle/payload-drift.d.ts.map +1 -1
- package/dist/bundle/select-files.d.ts +11 -2
- package/dist/bundle/select-files.d.ts.map +1 -1
- package/dist/bundle/select-files.js +23 -8
- package/dist/bundle/select-files.js.map +1 -1
- package/dist/bundle/staged-files.d.ts +43 -0
- package/dist/bundle/staged-files.d.ts.map +1 -0
- package/dist/bundle/staged-files.js +158 -0
- package/dist/bundle/staged-files.js.map +1 -0
- package/dist/bundle/warm-layers.d.ts +11 -6
- package/dist/bundle/warm-layers.d.ts.map +1 -1
- package/dist/bundle/warm-layers.js +26 -10
- package/dist/bundle/warm-layers.js.map +1 -1
- package/dist/commands/install.d.ts +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +7 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/module.d.ts.map +1 -1
- package/dist/commands/module.js +11 -5
- package/dist/commands/module.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +5 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/release.d.ts +2 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +65 -5
- package/dist/commands/release.js.map +1 -1
- package/dist/controller-runtime.d.ts +25 -3
- package/dist/controller-runtime.d.ts.map +1 -1
- package/dist/controller-runtime.js +39 -9
- package/dist/controller-runtime.js.map +1 -1
- package/dist/release/cargo-toml.d.ts +17 -0
- package/dist/release/cargo-toml.d.ts.map +1 -0
- package/dist/release/cargo-toml.js +253 -0
- package/dist/release/cargo-toml.js.map +1 -0
- package/dist/release/crate-inputs.d.ts +41 -0
- package/dist/release/crate-inputs.d.ts.map +1 -0
- package/dist/release/crate-inputs.js +407 -0
- package/dist/release/crate-inputs.js.map +1 -0
- package/dist/release/stage.d.ts +61 -0
- package/dist/release/stage.d.ts.map +1 -0
- package/dist/release/stage.js +506 -0
- package/dist/release/stage.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layers a payload build produces, before anything is framed: what may be
|
|
3
|
+
* pushed, the index entry of a layer known by pins, and the entry rules a runtime
|
|
4
|
+
* enforces at extraction, checked here first.
|
|
5
|
+
*/
|
|
6
|
+
import { type ArtifactSelector, type LayerRole } from "@telorun/analyzer";
|
|
7
|
+
import { type LayerEntry, type PayloadLayer } from "@telorun/kernel";
|
|
8
|
+
/** A layer built from a working copy: what publish pushes and what the release
|
|
9
|
+
* ledger digests. Mutable-shaped because the transport's own `PayloadLayer` is,
|
|
10
|
+
* and the two are handed straight across. */
|
|
11
|
+
export interface BuiltLayer {
|
|
12
|
+
role: LayerRole;
|
|
13
|
+
selector?: ArtifactSelector;
|
|
14
|
+
/** A pinned entry appears only when the builder reads staged files from their
|
|
15
|
+
* pins, which publish never does. */
|
|
16
|
+
files: LayerEntry[];
|
|
17
|
+
}
|
|
18
|
+
/** The layers a transport can push: every entry carries its bytes. Throws for a
|
|
19
|
+
* payload built from pins, which has none to push. */
|
|
20
|
+
export declare function pushableLayers(layers: readonly BuiltLayer[]): PayloadLayer[];
|
|
21
|
+
/**
|
|
22
|
+
* The `blob` that stands in for a layer holding pinned entries, which has no
|
|
23
|
+
* framed bytes to address: `sha256:` plus the hex form of the layer's integrity
|
|
24
|
+
* digest — a digest over its pinned entries, deterministic across trees and
|
|
25
|
+
* forks. It addresses nothing a registry holds, so only a digest of the manifest
|
|
26
|
+
* that carries it may ever see it; publish frames the staged bytes instead.
|
|
27
|
+
*/
|
|
28
|
+
export declare function pinnedLayerBlob(files: readonly LayerEntry[]): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Refuse a payload with a layer extraction would refuse — a symbolic link that
|
|
31
|
+
* does not name a file of its own layer, an entry path that is repeated or runs
|
|
32
|
+
* through another entry — caught before anything is framed. A link to a
|
|
33
|
+
* directory gets its own reason, since the link rule would call it dangling.
|
|
34
|
+
*/
|
|
35
|
+
export declare function assertLayerEntries(manifestDir: string, layers: readonly BuiltLayer[]): void;
|
|
36
|
+
//# sourceMappingURL=built-layers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-layers.d.ts","sourceRoot":"","sources":["../../src/bundle/built-layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAML,KAAK,UAAU,EAEf,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAIzB;;8CAE8C;AAC9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;0CACsC;IACtC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;uDACuD;AACvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,EAAE,CAW5E;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAqC3F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layers a payload build produces, before anything is framed: what may be
|
|
3
|
+
* pushed, the index entry of a layer known by pins, and the entry rules a runtime
|
|
4
|
+
* enforces at extraction, checked here first.
|
|
5
|
+
*/
|
|
6
|
+
import { describeSelector, } from "@telorun/analyzer";
|
|
7
|
+
import { computeFilesIntegrity, describeLayerViolations, findLayerViolations, isPayloadLink, isPinnedFile, } from "@telorun/kernel";
|
|
8
|
+
import * as fs from "node:fs";
|
|
9
|
+
import * as path from "node:path";
|
|
10
|
+
/** The layers a transport can push: every entry carries its bytes. Throws for a
|
|
11
|
+
* payload built from pins, which has none to push. */
|
|
12
|
+
export function pushableLayers(layers) {
|
|
13
|
+
for (const layer of layers) {
|
|
14
|
+
const pinned = layer.files.find(isPinnedFile);
|
|
15
|
+
if (pinned) {
|
|
16
|
+
throw new Error(`'${pinned.name}' is known only by its sources: pin, so its layer cannot be pushed — ` +
|
|
17
|
+
`build the payload from staged files (\`stagedFiles: "disk"\`) to publish it.`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return layers;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The `blob` that stands in for a layer holding pinned entries, which has no
|
|
24
|
+
* framed bytes to address: `sha256:` plus the hex form of the layer's integrity
|
|
25
|
+
* digest — a digest over its pinned entries, deterministic across trees and
|
|
26
|
+
* forks. It addresses nothing a registry holds, so only a digest of the manifest
|
|
27
|
+
* that carries it may ever see it; publish frames the staged bytes instead.
|
|
28
|
+
*/
|
|
29
|
+
export async function pinnedLayerBlob(files) {
|
|
30
|
+
const integrity = await computeFilesIntegrity(files);
|
|
31
|
+
return `sha256:${Buffer.from(integrity.slice("sha256-".length), "base64url").toString("hex")}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Refuse a payload with a layer extraction would refuse — a symbolic link that
|
|
35
|
+
* does not name a file of its own layer, an entry path that is repeated or runs
|
|
36
|
+
* through another entry — caught before anything is framed. A link to a
|
|
37
|
+
* directory gets its own reason, since the link rule would call it dangling.
|
|
38
|
+
*/
|
|
39
|
+
export function assertLayerEntries(manifestDir, layers) {
|
|
40
|
+
const problems = [];
|
|
41
|
+
for (const layer of layers) {
|
|
42
|
+
const elsewhere = new Set(layers.filter((other) => other !== layer).flatMap((other) => other.files.map((f) => f.name)));
|
|
43
|
+
const directoryLinks = layer.files.flatMap((file) => isPayloadLink(file) && linksToDirectory(path.resolve(manifestDir, file.name))
|
|
44
|
+
? [
|
|
45
|
+
{
|
|
46
|
+
path: file.name,
|
|
47
|
+
target: file.link,
|
|
48
|
+
reason: "points at a directory; only a link to a file can ship",
|
|
49
|
+
},
|
|
50
|
+
]
|
|
51
|
+
: []);
|
|
52
|
+
const pointsAtDirectory = new Set(directoryLinks.map((v) => v.path));
|
|
53
|
+
const violations = [
|
|
54
|
+
...directoryLinks,
|
|
55
|
+
...findLayerViolations(layer.files, elsewhere).filter((v) => v.target === undefined || !pointsAtDirectory.has(v.path)),
|
|
56
|
+
];
|
|
57
|
+
if (violations.length === 0)
|
|
58
|
+
continue;
|
|
59
|
+
const label = layer.selector ? `${layer.role} (${describeSelector(layer.selector)})` : layer.role;
|
|
60
|
+
problems.push(`the ${label} layer:\n${describeLayerViolations(violations)}`);
|
|
61
|
+
}
|
|
62
|
+
if (problems.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
throw new Error(`Module '${path.basename(manifestDir)}' ships entries a runtime would refuse to extract, in ` +
|
|
65
|
+
`${problems.join("\nand ")}\n` +
|
|
66
|
+
`A link ships as a link, and a runtime extracts only the layers it needs, so its target ` +
|
|
67
|
+
`must be a file in the same layer and inside the module directory. Claim the target ` +
|
|
68
|
+
`through the same declaration as the link, point the link at a file that ships beside it, ` +
|
|
69
|
+
`or ship the file itself in place of the link.`);
|
|
70
|
+
}
|
|
71
|
+
/** Whether the symbolic link at `abs` resolves to a directory. A link that
|
|
72
|
+
* resolves to nothing is the link rule's to report. */
|
|
73
|
+
function linksToDirectory(abs) {
|
|
74
|
+
try {
|
|
75
|
+
return fs.statSync(abs).isDirectory();
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
const code = err.code;
|
|
79
|
+
if (code === "ENOENT" || code === "ENOTDIR" || code === "ELOOP")
|
|
80
|
+
return false;
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=built-layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-layers.js","sourceRoot":"","sources":["../../src/bundle/built-layers.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,17 +33,8 @@
|
|
|
33
33
|
* into the manifest. It is not derivable, so the ledger records which base its
|
|
34
34
|
* digests were taken against.
|
|
35
35
|
*/
|
|
36
|
-
import { type
|
|
37
|
-
import { type PayloadFile } from "@telorun/kernel";
|
|
36
|
+
import { type BuiltLayer } from "./built-layers.js";
|
|
38
37
|
import { type Partition } from "./partition-layers.js";
|
|
39
|
-
/** A layer built from a working copy: what publish pushes and what the release
|
|
40
|
-
* ledger digests. Mutable-shaped because the transport's own `PayloadLayer` is,
|
|
41
|
-
* and the two are handed straight across. */
|
|
42
|
-
export interface BuiltLayer {
|
|
43
|
-
role: LayerRole;
|
|
44
|
-
selector?: ArtifactSelector;
|
|
45
|
-
files: PayloadFile[];
|
|
46
|
-
}
|
|
47
38
|
export interface ModulePayload {
|
|
48
39
|
/** The `telo.yaml` that ships, byte for byte: canonicalized, pinned, includes
|
|
49
40
|
* inlined, `layers:` index written. A dependent's import pin is a hash of
|
|
@@ -94,6 +85,19 @@ export interface ModulePayload {
|
|
|
94
85
|
export interface PayloadBuilderOptions {
|
|
95
86
|
/** Where the controller build cache lives. */
|
|
96
87
|
readonly cacheRoot: string;
|
|
88
|
+
/**
|
|
89
|
+
* Where the entry of a file a `sources:` entry stages comes from.
|
|
90
|
+
*
|
|
91
|
+
* `pins` (the default, every release command): the pin, whether or not the
|
|
92
|
+
* file is staged, so every layer's `integrity` is what publish derives from
|
|
93
|
+
* the bytes and a cold tree digests exactly as a staged one. A layer holding a
|
|
94
|
+
* pinned file takes a stand-in `blob`, which only the `manifest` ledger digest
|
|
95
|
+
* sees.
|
|
96
|
+
*
|
|
97
|
+
* `disk` (publish): the staged bytes, each verified against its pin, so every
|
|
98
|
+
* `blob` is real and every sibling pin names the text the registry serves.
|
|
99
|
+
*/
|
|
100
|
+
readonly stagedFiles?: "pins" | "disk";
|
|
97
101
|
}
|
|
98
102
|
/**
|
|
99
103
|
* One module's payload, memoized across a batch.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-payload.d.ts","sourceRoot":"","sources":["../../src/bundle/module-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;
|
|
1
|
+
{"version":3,"file":"module-payload.d.ts","sourceRoot":"","sources":["../../src/bundle/module-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AA4BH,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIxE,MAAM,WAAW,aAAa;IAC5B;;wBAEoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS;QACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;IACJ;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,yEAAyE;QACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;CACL;AAED,MAAM,WAAW,qBAAqB;IACpC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IA0BnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzBpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE;2EACuE;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAE7B,OAAO,EAAE,qBAAqB;IAErD,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAehF;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IA6B5D;;;;;;;;OAQG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;IAQrB;;iFAE6E;IAC7E,OAAO,CAAC,YAAY;IASpB;;;OAGG;YACW,iBAAiB;YA0EjB,WAAW;YAKX,YAAY;CA2I3B"}
|
|
@@ -34,15 +34,17 @@
|
|
|
34
34
|
* digests were taken against.
|
|
35
35
|
*/
|
|
36
36
|
import { collectModuleFileClaims, DEFAULT_MANIFEST_FILENAME, sha256Base64Url, splitIntegrity, } from "@telorun/analyzer";
|
|
37
|
-
import { buildControllerBundle, defaultTransportRegistry, injectLayerIndex, readOwnerManifest, } from "@telorun/kernel";
|
|
37
|
+
import { buildControllerBundle, computeFilesIntegrity, defaultTransportRegistry, injectLayerIndex, isPayloadLink, isPinnedFile, readOwnerManifest, readPayloadFile, } from "@telorun/kernel";
|
|
38
38
|
import { defaultCustomTags } from "@telorun/templating";
|
|
39
39
|
import * as fs from "node:fs";
|
|
40
40
|
import * as path from "node:path";
|
|
41
41
|
import { parseAllDocuments } from "yaml";
|
|
42
42
|
import { findModuleDoc, importSourceRefs } from "../commands/manifest-imports.js";
|
|
43
|
+
import { assertLayerEntries, pinnedLayerBlob } from "./built-layers.js";
|
|
43
44
|
import { expandAndInlineIncludes, readAssetPatterns, readFilesPatterns } from "./manifest-text.js";
|
|
44
45
|
import { partitionLayers } from "./partition-layers.js";
|
|
45
46
|
import { assertWithinModule, selectFiles } from "./select-files.js";
|
|
47
|
+
import { assertNamedFiles, readNativeFiles, readSources, stagedEntriesOf } from "./staged-files.js";
|
|
46
48
|
/**
|
|
47
49
|
* One module's payload, memoized across a batch.
|
|
48
50
|
*
|
|
@@ -203,6 +205,7 @@ export class ModulePayloadBuilder {
|
|
|
203
205
|
const moduleDoc = findModuleDoc(docs);
|
|
204
206
|
const relativeImports = [];
|
|
205
207
|
const authoredPins = [];
|
|
208
|
+
const sources = readSources(moduleDoc?.toJSON(), manifestDir);
|
|
206
209
|
if (moduleDoc) {
|
|
207
210
|
const destination = this.destinationOf(manifestPath);
|
|
208
211
|
const transport = this.transportFor(manifestPath);
|
|
@@ -238,6 +241,10 @@ export class ModulePayloadBuilder {
|
|
|
238
241
|
moduleDoc.setIn(entry.path, `${ref}#${hash}`);
|
|
239
242
|
}
|
|
240
243
|
}
|
|
244
|
+
// `sources:` is authoring input no consumer reads. Removed here, in the text
|
|
245
|
+
// every dependent's pin hashes, so an upstream URL that moved with unchanged
|
|
246
|
+
// bytes changes no published manifest.
|
|
247
|
+
moduleDoc?.delete("sources");
|
|
241
248
|
// Unconditional. Whether a manifest was rewritten is a property of its own
|
|
242
249
|
// content, and letting it decide the serializer meant one commit produced two
|
|
243
250
|
// different byte sequences for the same document.
|
|
@@ -246,6 +253,7 @@ export class ModulePayloadBuilder {
|
|
|
246
253
|
text: expandAndInlineIncludes(canonical, manifestDir),
|
|
247
254
|
relativeImports,
|
|
248
255
|
authoredPins,
|
|
256
|
+
sources,
|
|
249
257
|
};
|
|
250
258
|
}
|
|
251
259
|
async siblingHash(siblingManifest) {
|
|
@@ -254,9 +262,20 @@ export class ModulePayloadBuilder {
|
|
|
254
262
|
}
|
|
255
263
|
async buildPayload(manifestPath) {
|
|
256
264
|
const manifestDir = path.dirname(manifestPath);
|
|
257
|
-
const { text: manifest, relativeImports, authoredPins } = await this.transformManifest(manifestPath);
|
|
265
|
+
const { text: manifest, relativeImports, authoredPins, sources } = await this.transformManifest(manifestPath);
|
|
266
|
+
const fromPins = (this.options.stagedFiles ?? "pins") === "pins";
|
|
258
267
|
const claims = collectModuleFileClaims(manifest);
|
|
259
|
-
const
|
|
268
|
+
const native = readNativeFiles(manifest, manifestDir);
|
|
269
|
+
const staged = stagedEntriesOf(sources);
|
|
270
|
+
await assertNamedFiles(manifestDir, native, claims, sources, staged, fromPins);
|
|
271
|
+
// A notice ships because its source names it, as if `files:` selected it.
|
|
272
|
+
const notices = sources.flatMap((source) => source.notices);
|
|
273
|
+
const partition = partitionLayers(claims, [
|
|
274
|
+
...new Set([
|
|
275
|
+
...selectFiles(manifestDir, readFilesPatterns(manifest), { links: true }),
|
|
276
|
+
...notices,
|
|
277
|
+
]),
|
|
278
|
+
].sort(), readAssetPatterns(manifest), native);
|
|
260
279
|
// Every code entry point is BUILT, not read: `path=` names a gitignored
|
|
261
280
|
// artifact that may not exist at all on a fresh clone, and reading a stale
|
|
262
281
|
// one would digest and ship bytes other than the source the manifest says
|
|
@@ -290,15 +309,43 @@ export class ModulePayloadBuilder {
|
|
|
290
309
|
for (const input of bundle.inputs)
|
|
291
310
|
buildInputs.add(input);
|
|
292
311
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
312
|
+
// Built entry points exist once built; staged files, when read from their
|
|
313
|
+
// pins, need not be on disk at all.
|
|
314
|
+
assertWithinModule(manifestDir, partition.layers.flatMap((layer) => layer.files), new Set([...built.keys(), ...(fromPins ? staged.keys() : [])]));
|
|
315
|
+
// Read as the kind each file is on disk: a link ships as a link, a file with
|
|
316
|
+
// an execute bit as executable, and both are in the layer's integrity. A
|
|
317
|
+
// staged file read from its pin contributes exactly that line.
|
|
318
|
+
const layers = [];
|
|
319
|
+
for (const layer of partition.layers) {
|
|
320
|
+
const files = [];
|
|
321
|
+
for (const rel of layer.files) {
|
|
322
|
+
const content = built.get(rel);
|
|
323
|
+
const stagedEntry = staged.get(rel)?.entry;
|
|
324
|
+
if (content) {
|
|
325
|
+
files.push({ name: rel, content });
|
|
326
|
+
}
|
|
327
|
+
else if (fromPins && stagedEntry?.kind === "link") {
|
|
328
|
+
files.push({ name: rel, link: stagedEntry.target });
|
|
329
|
+
}
|
|
330
|
+
else if (fromPins && stagedEntry?.kind === "file") {
|
|
331
|
+
// `assertNamedFiles` refused an unpinned one.
|
|
332
|
+
files.push({ name: rel, sha256: stagedEntry.pin.sha256, executable: stagedEntry.pin.executable });
|
|
333
|
+
}
|
|
334
|
+
else if (stagedEntry?.kind === "file") {
|
|
335
|
+
// `assertNamedFiles` verified the bytes against the pin, and the pin is
|
|
336
|
+
// what declares the execute bit — a Windows checkout has none to read.
|
|
337
|
+
const file = await readPayloadFile(manifestDir, rel);
|
|
338
|
+
if (isPayloadLink(file))
|
|
339
|
+
throw new Error(`'${rel}' is staged as a file, but is a link on disk.`);
|
|
340
|
+
files.push(stagedEntry.pin.executable ? { name: rel, content: file.content, executable: true } : { name: rel, content: file.content });
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
files.push(await readPayloadFile(manifestDir, rel));
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
layers.push({ role: layer.role, ...(layer.selector ? { selector: layer.selector } : {}), files });
|
|
347
|
+
}
|
|
348
|
+
assertLayerEntries(manifestDir, layers);
|
|
302
349
|
// The `layers:` index is part of the published manifest, so it is written
|
|
303
350
|
// HERE and not by the transport at push time.
|
|
304
351
|
//
|
|
@@ -313,8 +360,23 @@ export class ModulePayloadBuilder {
|
|
|
313
360
|
//
|
|
314
361
|
// The transport still owns the framing a `blob` digest covers, so the index
|
|
315
362
|
// comes from it; publish re-frames the same layers and hard-fails if a
|
|
316
|
-
// digest moved.
|
|
317
|
-
|
|
363
|
+
// digest moved. A layer holding a pinned entry has no bytes to frame and
|
|
364
|
+
// takes the stand-in `blob`; publish reads the staged bytes instead, so a
|
|
365
|
+
// stand-in never reaches a registry.
|
|
366
|
+
const transport = this.transportFor(manifestPath);
|
|
367
|
+
const index = [];
|
|
368
|
+
for (const layer of layers) {
|
|
369
|
+
if (!layer.files.some(isPinnedFile)) {
|
|
370
|
+
index.push(...(await transport.layerIndex([layer])));
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
index.push({
|
|
374
|
+
role: layer.role,
|
|
375
|
+
...(layer.selector ? { selector: layer.selector } : {}),
|
|
376
|
+
blob: await pinnedLayerBlob(layer.files),
|
|
377
|
+
integrity: await computeFilesIntegrity(layer.files),
|
|
378
|
+
});
|
|
379
|
+
}
|
|
318
380
|
return {
|
|
319
381
|
manifest: index.length > 0 ? injectLayerIndex(manifest, index) : manifest,
|
|
320
382
|
layers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-payload.js","sourceRoot":"","sources":["../../src/bundle/module-payload.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module-payload.js","sourceRoot":"","sources":["../../src/bundle/module-payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ArtifactSelector, type ModuleFileClaim } from "@telorun/analyzer";
|
|
1
|
+
import { type ArtifactSelector, type ModuleFileClaim, type NativeEntry } from "@telorun/analyzer";
|
|
2
2
|
import type { PayloadLayer } from "@telorun/kernel";
|
|
3
3
|
/** Manifest-relative POSIX path of a selected file, grouped into the layer it
|
|
4
4
|
* belongs to. Content is read by the caller — this module decides membership
|
|
@@ -27,9 +27,12 @@ export interface Partition {
|
|
|
27
27
|
* Partition the selected payload into the layers a module artifact ships.
|
|
28
28
|
*
|
|
29
29
|
* A **controller layer** per distinct selector, holding its entry points plus
|
|
30
|
-
* whatever their sibling qualifiers claim.
|
|
31
|
-
*
|
|
32
|
-
*
|
|
30
|
+
* whatever their sibling qualifiers claim. A **native layer** per distinct
|
|
31
|
+
* selector of the module's `native:` entries, holding their files — a claim that
|
|
32
|
+
* outranks `files:`, `assets:` and a sibling pattern selecting the same file, so
|
|
33
|
+
* a platform's binary never ships to another platform. The **assets** layer
|
|
34
|
+
* holds what `assets:` claims — it is fetched lazily, on first module-relative
|
|
35
|
+
* access. The **common** layer holds everything left over.
|
|
33
36
|
*
|
|
34
37
|
* The sink runs toward correctness: an unclaimed file joins `common`, which is
|
|
35
38
|
* materialized alongside *any* controller layer, so a sidecar nobody declared is
|
|
@@ -43,9 +46,13 @@ export interface Partition {
|
|
|
43
46
|
* `assetPatterns` is the author's `assets:` list. A claimed file joins the
|
|
44
47
|
* payload whether or not `files:` selected it — the manifest already names it,
|
|
45
48
|
* so restating it would be pure duplication. Layers with no files are dropped,
|
|
46
|
-
* so a controller-only module publishes exactly one payload layer.
|
|
49
|
+
* so a controller-only module publishes exactly one payload layer. `native` is
|
|
50
|
+
* what `readNativeEntries` read off the module doc.
|
|
51
|
+
*
|
|
52
|
+
* Throws when a `native:` entry names a file the manifest also names as code or
|
|
53
|
+
* as an embed: a file extracts from exactly one layer.
|
|
47
54
|
*/
|
|
48
|
-
export declare function partitionLayers(claims: readonly ModuleFileClaim[], files: string[], assetPatterns: string[]): Partition;
|
|
55
|
+
export declare function partitionLayers(claims: readonly ModuleFileClaim[], files: string[], assetPatterns: string[], native?: readonly NativeEntry[]): Partition;
|
|
49
56
|
/**
|
|
50
57
|
* One line per layer for the publish output, so an author can see that a file they
|
|
51
58
|
* meant as a sidecar or an asset landed in `common` instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partition-layers.d.ts","sourceRoot":"","sources":["../../src/bundle/partition-layers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"partition-layers.d.ts","sourceRoot":"","sources":["../../src/bundle/partition-layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;uDAEuD;AACvD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;uEAEuE;AACvE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB;yDACqD;IACrD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;oBACgB;IAChB,iBAAiB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,GAAE,SAAS,WAAW,EAAO,GAClC,SAAS,CA8HX;AAyBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAYhE"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { describeSelector, selectorKey, } from "@telorun/analyzer";
|
|
1
|
+
import { describeClaim, describeSelector, nativeClaimConflicts, selectorKey, } from "@telorun/analyzer";
|
|
2
2
|
import { selectByPatterns } from "@telorun/glob";
|
|
3
3
|
/**
|
|
4
4
|
* Partition the selected payload into the layers a module artifact ships.
|
|
5
5
|
*
|
|
6
6
|
* A **controller layer** per distinct selector, holding its entry points plus
|
|
7
|
-
* whatever their sibling qualifiers claim.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* whatever their sibling qualifiers claim. A **native layer** per distinct
|
|
8
|
+
* selector of the module's `native:` entries, holding their files — a claim that
|
|
9
|
+
* outranks `files:`, `assets:` and a sibling pattern selecting the same file, so
|
|
10
|
+
* a platform's binary never ships to another platform. The **assets** layer
|
|
11
|
+
* holds what `assets:` claims — it is fetched lazily, on first module-relative
|
|
12
|
+
* access. The **common** layer holds everything left over.
|
|
10
13
|
*
|
|
11
14
|
* The sink runs toward correctness: an unclaimed file joins `common`, which is
|
|
12
15
|
* materialized alongside *any* controller layer, so a sidecar nobody declared is
|
|
@@ -20,9 +23,15 @@ import { selectByPatterns } from "@telorun/glob";
|
|
|
20
23
|
* `assetPatterns` is the author's `assets:` list. A claimed file joins the
|
|
21
24
|
* payload whether or not `files:` selected it — the manifest already names it,
|
|
22
25
|
* so restating it would be pure duplication. Layers with no files are dropped,
|
|
23
|
-
* so a controller-only module publishes exactly one payload layer.
|
|
26
|
+
* so a controller-only module publishes exactly one payload layer. `native` is
|
|
27
|
+
* what `readNativeEntries` read off the module doc.
|
|
28
|
+
*
|
|
29
|
+
* Throws when a `native:` entry names a file the manifest also names as code or
|
|
30
|
+
* as an embed: a file extracts from exactly one layer.
|
|
24
31
|
*/
|
|
25
|
-
export function partitionLayers(claims, files, assetPatterns) {
|
|
32
|
+
export function partitionLayers(claims, files, assetPatterns, native = []) {
|
|
33
|
+
const nativeFiles = new Set(native.map((entry) => entry.path));
|
|
34
|
+
assertNativeFilesUnclaimed(native, claims);
|
|
26
35
|
// Narrowing predicates, so the controller branch reaches `selector` and
|
|
27
36
|
// `siblings` as declared fields rather than through a non-null assertion —
|
|
28
37
|
// the claim type is a discriminated union precisely so this is checked.
|
|
@@ -43,7 +52,11 @@ export function partitionLayers(claims, files, assetPatterns) {
|
|
|
43
52
|
// Sibling patterns are still matched against `files:` alone: a sibling is a
|
|
44
53
|
// glob over the payload, so a pattern that selects nothing there means the
|
|
45
54
|
// author forgot to include the file, which `unmatchedSiblings` reports.
|
|
46
|
-
const selected = new Set([
|
|
55
|
+
const selected = new Set([
|
|
56
|
+
...files,
|
|
57
|
+
...claims.map((claim) => claim.path),
|
|
58
|
+
...nativeFiles,
|
|
59
|
+
]);
|
|
47
60
|
const unclaimed = new Set([...files, ...claimedAssets.map((claim) => claim.path)]);
|
|
48
61
|
// Controller layers first: a file an entry point or sibling claims belongs to
|
|
49
62
|
// that selector, never to assets or common, so the layer a kernel skips is
|
|
@@ -81,6 +94,10 @@ export function partitionLayers(claims, files, assetPatterns) {
|
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
96
|
for (const file of [claim.path, ...siblings]) {
|
|
97
|
+
// A native file a sibling pattern also matches belongs to its platform's
|
|
98
|
+
// native layer; copying it here would ship it to every host of this format.
|
|
99
|
+
if (nativeFiles.has(file))
|
|
100
|
+
continue;
|
|
84
101
|
unclaimed.delete(file);
|
|
85
102
|
// A controller entry point that is also this module's library entry point
|
|
86
103
|
// ships once, in the library layer; the controller layer would be a second
|
|
@@ -91,6 +108,19 @@ export function partitionLayers(claims, files, assetPatterns) {
|
|
|
91
108
|
plan.files.push(file);
|
|
92
109
|
}
|
|
93
110
|
}
|
|
111
|
+
// Names sharing a selector share its layer; one path declared under several
|
|
112
|
+
// names is one file.
|
|
113
|
+
for (const entry of native) {
|
|
114
|
+
const key = `native\0${selectorKey(entry.selector)}`;
|
|
115
|
+
let plan = bySelector.get(key);
|
|
116
|
+
if (!plan) {
|
|
117
|
+
plan = { role: "native", selector: entry.selector, files: [] };
|
|
118
|
+
bySelector.set(key, plan);
|
|
119
|
+
}
|
|
120
|
+
unclaimed.delete(entry.path);
|
|
121
|
+
if (!plan.files.includes(entry.path))
|
|
122
|
+
plan.files.push(entry.path);
|
|
123
|
+
}
|
|
94
124
|
// A file a tag embeds is an asset by declaration, so it needs no `assets:`
|
|
95
125
|
// pattern to be lazy — the manifest already said what it is. A pattern can
|
|
96
126
|
// still claim more, and a file claimed both ways is one file.
|
|
@@ -115,6 +145,18 @@ export function partitionLayers(claims, files, assetPatterns) {
|
|
|
115
145
|
unmatchedSiblings,
|
|
116
146
|
};
|
|
117
147
|
}
|
|
148
|
+
/** Refuse a file both a `native:` entry and another manifest declaration name —
|
|
149
|
+
* the rule `telo check` reports as `NATIVE_PATH_CLAIMED`. */
|
|
150
|
+
function assertNativeFilesUnclaimed(native, claims) {
|
|
151
|
+
const conflicts = nativeClaimConflicts(native, claims.map((claim) => ({ claim }))).map(({ entry, claim }) => ` '${entry.path}': ${entry.origin} for ${describeSelector(entry.selector)}, and ` +
|
|
152
|
+
describeClaim(claim));
|
|
153
|
+
if (conflicts.length === 0)
|
|
154
|
+
return;
|
|
155
|
+
throw new Error(`The manifest names ${conflicts.length === 1 ? "a file" : "files"} both as a native file ` +
|
|
156
|
+
`and through another declaration:\n${conflicts.join("\n")}\n` +
|
|
157
|
+
`A native file ships only in its platform's native layer, and a file extracts from ` +
|
|
158
|
+
`exactly one layer. Give the native entry its own file, or drop the other declaration.`);
|
|
159
|
+
}
|
|
118
160
|
/**
|
|
119
161
|
* One line per layer for the publish output, so an author can see that a file they
|
|
120
162
|
* meant as a sidecar or an asset landed in `common` instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partition-layers.js","sourceRoot":"","sources":["../../src/bundle/partition-layers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"partition-layers.js","sourceRoot":"","sources":["../../src/bundle/partition-layers.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export interface LayerDrift {
|
|
|
26
26
|
* the build no longer produces this layer. */
|
|
27
27
|
built?: string;
|
|
28
28
|
}
|
|
29
|
-
import type { BuiltLayer } from "./
|
|
29
|
+
import type { BuiltLayer } from "./built-layers.js";
|
|
30
30
|
export type { BuiltLayer };
|
|
31
31
|
/**
|
|
32
32
|
* The per-layer integrity the registry serves at `<destination>@<version>`, or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-drift.d.ts","sourceRoot":"","sources":["../../src/bundle/payload-drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;+EAC2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;mDAC+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"payload-drift.d.ts","sourceRoot":"","sources":["../../src/bundle/payload-drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;+EAC2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;mDAC+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,CAAC;AAwD3B;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQ9B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CA6B9B;AAED;;kDAEkD;AAClD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAe7F"}
|
|
@@ -9,14 +9,23 @@
|
|
|
9
9
|
* `include:` resolution, which may reach any co-located partial); the hard tier
|
|
10
10
|
* (`node_modules`/`.git`/`.telo`) is always denied regardless.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* `links: true` selects symbolic links as entries of their own, never followed —
|
|
13
|
+
* the payload ships a link as a link, and where it points is the layer link
|
|
14
|
+
* rule's to judge. Without it a link is skipped, since `include:` resolution
|
|
15
|
+
* reads contents and must not reach through one.
|
|
16
|
+
*
|
|
17
|
+
* Throws if a selected path resolves (via a symlinked directory, or via the file
|
|
18
|
+
* itself when links are not selected) outside `manifestDir`.
|
|
13
19
|
*/
|
|
14
20
|
export declare function selectFiles(manifestDir: string, patterns: string[], opts?: {
|
|
15
21
|
applyDefaultIgnore?: boolean;
|
|
22
|
+
links?: boolean;
|
|
16
23
|
}): string[];
|
|
17
24
|
/**
|
|
18
25
|
* Reject any payload path that does not exist, or that resolves — via a symlink
|
|
19
|
-
* — outside `manifestDir`.
|
|
26
|
+
* — outside `manifestDir`. A path that is itself a symbolic link ships as a
|
|
27
|
+
* link, so only the directory holding it is confined here; its target is
|
|
28
|
+
* judged by the layer link rule.
|
|
20
29
|
*
|
|
21
30
|
* Separate from {@link selectFiles} because a `files:` pattern is no longer the
|
|
22
31
|
* only route into the payload: a bundled controller's `path=` entry joins it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-files.d.ts","sourceRoot":"","sources":["../../src/bundle/select-files.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"select-files.d.ts","sourceRoot":"","sources":["../../src/bundle/select-files.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3D,MAAM,EAAE,CAuBV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAa,GACxC,IAAI,CA4BN"}
|