@forgeax/engine-pack 0.1.6 → 0.1.19
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/README.md +12 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/build.d.ts +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.mjs +100 -51
- package/dist/build.mjs.map +1 -1
- package/dist/catalog-builder.d.ts +12 -0
- package/dist/catalog-builder.d.ts.map +1 -1
- package/dist/cli-asset.mjs +1 -1
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/evidence/material-cook.d.ts +28 -6
- package/dist/evidence/material-cook.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +97 -42
- package/dist/index.mjs.map +1 -1
- package/dist/material-cook.d.ts +1 -1
- package/dist/material-cook.d.ts.map +1 -1
- package/dist/material-cook.mjs +96 -41
- package/dist/material-cook.mjs.map +1 -1
- package/dist/scanner.mjs +1 -1
- package/dist/scanner.mjs.map +1 -1
- package/dist/scriptable-pack-node.d.ts.map +1 -1
- package/dist/scriptable-pack-node.mjs +1 -1
- package/dist/scriptable-pack-node.mjs.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/material-cook-dependencies.unit.test.ts +111 -0
- package/src/__tests__/material-cook-receipt.unit.test.ts +77 -20
- package/src/__tests__/material-cook-schema.unit.test.ts +64 -10
- package/src/__tests__/pack-v2-fixture-migration.test.ts +24 -1
- package/src/build.ts +1 -0
- package/src/catalog-builder.ts +42 -5
- package/src/evidence/material-cook.ts +133 -54
- package/src/index.ts +4 -0
- package/src/material-cook.ts +2 -0
- package/src/schema/material-cook.schema.json +48 -8
- package/src/scriptable-pack-node.ts +4 -1
|
@@ -11,25 +11,44 @@ export interface MaterialCookArtifact {
|
|
|
11
11
|
readonly digest: string;
|
|
12
12
|
readonly bytes: Uint8Array;
|
|
13
13
|
}
|
|
14
|
+
export interface MaterialCookWasmProvenance {
|
|
15
|
+
readonly sourceContentKey: string;
|
|
16
|
+
readonly artifactSha256: string;
|
|
17
|
+
readonly glueSha256: string;
|
|
18
|
+
}
|
|
19
|
+
export interface MaterialCookIdentity {
|
|
20
|
+
readonly materialContractDigest: string;
|
|
21
|
+
readonly sourceRevision: string;
|
|
22
|
+
readonly sourceClosureDigest: string;
|
|
23
|
+
readonly layoutIdentity: string;
|
|
24
|
+
readonly programIdentity: string;
|
|
25
|
+
readonly pipelineIdentity: string;
|
|
26
|
+
readonly materialPublicationIdentity: string;
|
|
27
|
+
readonly cookIdentity: string;
|
|
28
|
+
readonly compilerFingerprint: string;
|
|
29
|
+
readonly wasm: MaterialCookWasmProvenance;
|
|
30
|
+
readonly artifactDigest: string;
|
|
31
|
+
readonly valueGeneration: number;
|
|
32
|
+
readonly dependencyGeneration: number;
|
|
33
|
+
readonly cookGeneration: number;
|
|
34
|
+
}
|
|
35
|
+
export type MaterialCookIdentityInput = Omit<MaterialCookIdentity, 'cookIdentity'>;
|
|
14
36
|
export interface MaterialCookReceipt {
|
|
15
|
-
readonly schemaVersion: 'material-cook/
|
|
37
|
+
readonly schemaVersion: 'material-cook/3';
|
|
16
38
|
readonly sourceClosure: readonly string[];
|
|
17
39
|
readonly profile: string;
|
|
18
40
|
readonly compilerVersion: string;
|
|
19
|
-
readonly
|
|
20
|
-
readonly outputDigest: string;
|
|
21
|
-
readonly layoutIdentity: string;
|
|
41
|
+
readonly identity: MaterialCookIdentity;
|
|
22
42
|
readonly derivedInterface: {
|
|
23
43
|
readonly layoutIdentity: string;
|
|
24
44
|
};
|
|
25
|
-
readonly publicationGeneration?: number;
|
|
26
45
|
}
|
|
27
46
|
export interface MaterialParameterContract {
|
|
28
47
|
readonly parameters: readonly MaterialParameter[];
|
|
29
48
|
readonly values: Readonly<Record<string, MaterialValue | null>>;
|
|
30
49
|
}
|
|
31
50
|
export interface CookedMaterialRecord {
|
|
32
|
-
readonly schemaVersion: 'material-cook/
|
|
51
|
+
readonly schemaVersion: 'material-cook/3';
|
|
33
52
|
readonly guid: string;
|
|
34
53
|
readonly authored?: MaterialAsset;
|
|
35
54
|
readonly materialGuid?: string;
|
|
@@ -53,6 +72,8 @@ export interface MaterialCookRecordError {
|
|
|
53
72
|
readonly hint: string;
|
|
54
73
|
readonly detail: {
|
|
55
74
|
readonly field: string;
|
|
75
|
+
readonly actual?: unknown;
|
|
76
|
+
readonly action: string;
|
|
56
77
|
};
|
|
57
78
|
}
|
|
58
79
|
export interface MaterialCookIdentityExpectation {
|
|
@@ -62,6 +83,7 @@ export interface MaterialCookIdentityExpectation {
|
|
|
62
83
|
}
|
|
63
84
|
export declare function collectMaterialCookRefs(material: Partial<MaterialAsset>): MaterialCookRefs;
|
|
64
85
|
export declare function createMaterialArtifactDigest(bytes: Uint8Array): string;
|
|
86
|
+
export declare function createMaterialCookIdentity(input: MaterialCookIdentityInput): MaterialCookIdentity;
|
|
65
87
|
export declare function serializeCookedMaterialRecord(record: CookedMaterialRecord): string;
|
|
66
88
|
export declare function serializeMaterialCookReceipt(receipt: MaterialCookReceipt): string;
|
|
67
89
|
export declare function validateMaterialCookReceipt(value: unknown, expected?: MaterialCookIdentityExpectation): Result<MaterialCookReceipt, MaterialCookRecordError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-cook.d.ts","sourceRoot":"","sources":["../../src/evidence/material-cook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EAGZ,aAAa,EACb,MAAM,EACP,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"material-cook.d.ts","sourceRoot":"","sources":["../../src/evidence/material-cook.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type CookedMaterialRecord, collectMaterialCookRefs, createMaterialArtifactDigest, type MaterialCookArtifact, type MaterialCookIdentityExpectation, type MaterialCookReceipt, type MaterialCookRecordError, type MaterialCookRefs, projectCookedMaterialRecord, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateCookedMaterialRecord, validateMaterialCookReceipt, } from './evidence/material-cook.js';
|
|
1
|
+
export { type CookedMaterialRecord, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, type MaterialCookArtifact, type MaterialCookIdentity, type MaterialCookIdentityExpectation, type MaterialCookIdentityInput, type MaterialCookReceipt, type MaterialCookRecordError, type MaterialCookRefs, type MaterialCookWasmProvenance, projectCookedMaterialRecord, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateCookedMaterialRecord, validateMaterialCookReceipt, } from './evidence/material-cook.js';
|
|
2
2
|
export { buildOfflineAssetEvidence, packageVerification } from './evidence/offline-evidence.js';
|
|
3
3
|
export { decodeMeshBinHeader, MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, type MeshBinContractError, type MeshBinHeaderResult, type MeshBinHeaderV4, writeMeshBinHeader, } from './mesh-bin-contract.js';
|
|
4
4
|
export { validateProducerContract, validateProducerOutputs } from './producer-contract.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,EACtC,KAAK,uBAAuB,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D,YAAY,EACV,aAAa,EACb,cAAc,EACd,KAAK,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAWvE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,EACtC,KAAK,uBAAuB,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D,YAAY,EACV,aAAa,EACb,cAAc,EACd,KAAK,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAWvE"}
|
package/dist/index.mjs
CHANGED
|
@@ -6868,83 +6868,138 @@ function jsonValue(value) {
|
|
|
6868
6868
|
}
|
|
6869
6869
|
return value;
|
|
6870
6870
|
}
|
|
6871
|
+
function createMaterialCookIdentity(input) {
|
|
6872
|
+
const cookIdentity = createMaterialArtifactDigest(
|
|
6873
|
+
new TextEncoder().encode(
|
|
6874
|
+
JSON.stringify(
|
|
6875
|
+
jsonValue({
|
|
6876
|
+
materialContractDigest: input.materialContractDigest,
|
|
6877
|
+
sourceRevision: input.sourceRevision,
|
|
6878
|
+
sourceClosureDigest: input.sourceClosureDigest,
|
|
6879
|
+
layoutIdentity: input.layoutIdentity,
|
|
6880
|
+
programIdentity: input.programIdentity,
|
|
6881
|
+
pipelineIdentity: input.pipelineIdentity,
|
|
6882
|
+
compilerFingerprint: input.compilerFingerprint,
|
|
6883
|
+
wasm: input.wasm,
|
|
6884
|
+
artifactDigest: input.artifactDigest
|
|
6885
|
+
})
|
|
6886
|
+
)
|
|
6887
|
+
)
|
|
6888
|
+
);
|
|
6889
|
+
return { ...input, cookIdentity };
|
|
6890
|
+
}
|
|
6871
6891
|
function serializeCookedMaterialRecord(record) {
|
|
6872
6892
|
return JSON.stringify(jsonValue(record));
|
|
6873
6893
|
}
|
|
6874
6894
|
function serializeMaterialCookReceipt(receipt) {
|
|
6875
6895
|
return JSON.stringify(jsonValue({ ...receipt, sourceClosure: unique(receipt.sourceClosure) }));
|
|
6876
6896
|
}
|
|
6877
|
-
function invalid(field) {
|
|
6897
|
+
function invalid(field, actual2) {
|
|
6878
6898
|
return err({
|
|
6879
6899
|
code: "material-cook-record-invalid",
|
|
6880
|
-
expected: "a complete material-cook/
|
|
6900
|
+
expected: "a complete material-cook/3 record with layered identity and provenance",
|
|
6881
6901
|
hint: "re-cook the material and publish its record, artifact, references, and receipt together",
|
|
6882
|
-
detail: {
|
|
6902
|
+
detail: {
|
|
6903
|
+
field,
|
|
6904
|
+
...actual2 === void 0 ? {} : { actual: actual2 },
|
|
6905
|
+
action: "inspect the named field and recook the material generation"
|
|
6906
|
+
}
|
|
6907
|
+
});
|
|
6908
|
+
}
|
|
6909
|
+
var IDENTITY_FIELDS = [
|
|
6910
|
+
"materialContractDigest",
|
|
6911
|
+
"sourceRevision",
|
|
6912
|
+
"sourceClosureDigest",
|
|
6913
|
+
"layoutIdentity",
|
|
6914
|
+
"programIdentity",
|
|
6915
|
+
"pipelineIdentity",
|
|
6916
|
+
"materialPublicationIdentity",
|
|
6917
|
+
"cookIdentity",
|
|
6918
|
+
"compilerFingerprint",
|
|
6919
|
+
"artifactDigest"
|
|
6920
|
+
];
|
|
6921
|
+
function isGeneration(value) {
|
|
6922
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 1;
|
|
6923
|
+
}
|
|
6924
|
+
function validateIdentity(value) {
|
|
6925
|
+
if (value === null || typeof value !== "object") return invalid("receipt.identity", value);
|
|
6926
|
+
const candidate = value;
|
|
6927
|
+
for (const field of IDENTITY_FIELDS) {
|
|
6928
|
+
if (typeof candidate[field] !== "string" || candidate[field].length === 0) {
|
|
6929
|
+
return invalid(`receipt.identity.${field}`, candidate[field]);
|
|
6930
|
+
}
|
|
6931
|
+
}
|
|
6932
|
+
if (candidate.wasm === null || typeof candidate.wasm !== "object") {
|
|
6933
|
+
return invalid("receipt.identity.wasm", candidate.wasm);
|
|
6934
|
+
}
|
|
6935
|
+
const wasm = candidate.wasm;
|
|
6936
|
+
for (const field of ["sourceContentKey", "artifactSha256", "glueSha256"]) {
|
|
6937
|
+
if (typeof wasm[field] !== "string" || wasm[field].length === 0) {
|
|
6938
|
+
return invalid(`receipt.identity.wasm.${field}`, wasm[field]);
|
|
6939
|
+
}
|
|
6940
|
+
}
|
|
6941
|
+
for (const field of ["valueGeneration", "dependencyGeneration", "cookGeneration"]) {
|
|
6942
|
+
if (!isGeneration(candidate[field]))
|
|
6943
|
+
return invalid(`receipt.identity.${field}`, candidate[field]);
|
|
6944
|
+
}
|
|
6945
|
+
return ok({
|
|
6946
|
+
...candidate,
|
|
6947
|
+
wasm
|
|
6883
6948
|
});
|
|
6884
6949
|
}
|
|
6885
6950
|
function validateMaterialCookReceipt(value, expected = {}) {
|
|
6886
6951
|
if (value === null || typeof value !== "object") return invalid("receipt");
|
|
6887
6952
|
const candidate = value;
|
|
6888
|
-
if (candidate.schemaVersion !== "material-cook/
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6953
|
+
if (candidate.schemaVersion !== "material-cook/3")
|
|
6954
|
+
return invalid("receipt.schemaVersion", candidate.schemaVersion);
|
|
6955
|
+
const identityResult = validateIdentity(candidate.identity);
|
|
6956
|
+
if (!identityResult.ok) return identityResult;
|
|
6957
|
+
const identity = identityResult.value;
|
|
6892
6958
|
if (candidate.derivedInterface === null || typeof candidate.derivedInterface !== "object") {
|
|
6893
|
-
return invalid("receipt.derivedInterface");
|
|
6959
|
+
return invalid("receipt.derivedInterface", candidate.derivedInterface);
|
|
6894
6960
|
}
|
|
6895
6961
|
const derivedInterface = candidate.derivedInterface;
|
|
6896
|
-
if (derivedInterface.layoutIdentity !==
|
|
6897
|
-
return invalid("receipt.derivedInterface.layoutIdentity");
|
|
6898
|
-
}
|
|
6899
|
-
for (const field of [
|
|
6900
|
-
"sourceClosure",
|
|
6901
|
-
"profile",
|
|
6902
|
-
"compilerVersion",
|
|
6903
|
-
"inputDigest",
|
|
6904
|
-
"outputDigest"
|
|
6905
|
-
]) {
|
|
6962
|
+
if (derivedInterface.layoutIdentity !== identity.layoutIdentity) {
|
|
6963
|
+
return invalid("receipt.derivedInterface.layoutIdentity", derivedInterface.layoutIdentity);
|
|
6964
|
+
}
|
|
6965
|
+
for (const field of ["sourceClosure", "profile", "compilerVersion"]) {
|
|
6906
6966
|
const fieldValue = candidate[field];
|
|
6907
6967
|
if (field === "sourceClosure" && !Array.isArray(fieldValue) || field !== "sourceClosure" && typeof fieldValue !== "string") {
|
|
6908
|
-
return invalid(`receipt.${field}
|
|
6968
|
+
return invalid(`receipt.${field}`, fieldValue);
|
|
6909
6969
|
}
|
|
6910
6970
|
}
|
|
6911
6971
|
const sourceClosure = candidate.sourceClosure;
|
|
6912
6972
|
if (Array.isArray(sourceClosure) && sourceClosure.some((path) => typeof path !== "string")) {
|
|
6913
|
-
return invalid("receipt.sourceClosure");
|
|
6914
|
-
}
|
|
6915
|
-
if (expected.layoutIdentity !== void 0 && candidate.layoutIdentity !== expected.layoutIdentity) {
|
|
6916
|
-
return invalid("receipt.layoutIdentity");
|
|
6973
|
+
return invalid("receipt.sourceClosure", sourceClosure);
|
|
6917
6974
|
}
|
|
6918
|
-
if (expected.
|
|
6919
|
-
return invalid("receipt.
|
|
6975
|
+
if (expected.layoutIdentity !== void 0 && identity.layoutIdentity !== expected.layoutIdentity) {
|
|
6976
|
+
return invalid("receipt.identity.layoutIdentity", identity.layoutIdentity);
|
|
6920
6977
|
}
|
|
6921
|
-
if (expected.
|
|
6922
|
-
return invalid("receipt.
|
|
6978
|
+
if (expected.artifactDigest !== void 0 && identity.artifactDigest !== expected.artifactDigest) {
|
|
6979
|
+
return invalid("receipt.identity.artifactDigest", identity.artifactDigest);
|
|
6923
6980
|
}
|
|
6924
|
-
if (
|
|
6925
|
-
return invalid("receipt.
|
|
6981
|
+
if (expected.inputDigest !== void 0 && identity.cookIdentity !== expected.inputDigest) {
|
|
6982
|
+
return invalid("receipt.identity.cookIdentity", identity.cookIdentity);
|
|
6926
6983
|
}
|
|
6927
6984
|
return ok({
|
|
6928
|
-
schemaVersion: "material-cook/
|
|
6985
|
+
schemaVersion: "material-cook/3",
|
|
6929
6986
|
sourceClosure: candidate.sourceClosure,
|
|
6930
6987
|
profile: candidate.profile,
|
|
6931
6988
|
compilerVersion: candidate.compilerVersion,
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
layoutIdentity: candidate.layoutIdentity,
|
|
6935
|
-
derivedInterface: { layoutIdentity: derivedInterface.layoutIdentity },
|
|
6936
|
-
...candidate.publicationGeneration === void 0 ? {} : { publicationGeneration: candidate.publicationGeneration }
|
|
6989
|
+
identity,
|
|
6990
|
+
derivedInterface: { layoutIdentity: derivedInterface.layoutIdentity }
|
|
6937
6991
|
});
|
|
6938
6992
|
}
|
|
6939
6993
|
function validateCookedMaterialRecord(value) {
|
|
6940
6994
|
if (value === null || typeof value !== "object") return invalid("record");
|
|
6941
6995
|
const candidate = value;
|
|
6942
|
-
if (candidate.schemaVersion !== "material-cook/
|
|
6996
|
+
if (candidate.schemaVersion !== "material-cook/3")
|
|
6997
|
+
return invalid("schemaVersion", candidate.schemaVersion);
|
|
6943
6998
|
if (typeof candidate.guid !== "string" || !candidate.guid) return invalid("guid");
|
|
6944
6999
|
if (candidate.materialGuid !== void 0 && typeof candidate.materialGuid !== "string")
|
|
6945
7000
|
return invalid("materialGuid");
|
|
6946
|
-
if (candidate.publicationGeneration !== void 0 &&
|
|
6947
|
-
return invalid("publicationGeneration");
|
|
7001
|
+
if (candidate.publicationGeneration !== void 0 && !isGeneration(candidate.publicationGeneration))
|
|
7002
|
+
return invalid("publicationGeneration", candidate.publicationGeneration);
|
|
6948
7003
|
if (candidate.specializationKey !== void 0 && typeof candidate.specializationKey !== "string")
|
|
6949
7004
|
return invalid("specializationKey");
|
|
6950
7005
|
if (candidate.artifactDigest !== void 0 && typeof candidate.artifactDigest !== "string")
|
|
@@ -6976,9 +7031,9 @@ function validateCookedMaterialRecord(value) {
|
|
|
6976
7031
|
});
|
|
6977
7032
|
if (!receiptResult.ok) return receiptResult;
|
|
6978
7033
|
if (candidate.artifactDigest !== void 0 && candidate.artifactDigest !== artifact.digest)
|
|
6979
|
-
return invalid("artifactDigest");
|
|
6980
|
-
if (candidate.publicationGeneration !== void 0 && receiptResult.value.
|
|
6981
|
-
return invalid("receipt.
|
|
7034
|
+
return invalid("artifactDigest", candidate.artifactDigest);
|
|
7035
|
+
if (candidate.publicationGeneration !== void 0 && receiptResult.value.identity.cookGeneration !== candidate.publicationGeneration)
|
|
7036
|
+
return invalid("receipt.identity.cookGeneration", receiptResult.value.identity.cookGeneration);
|
|
6982
7037
|
const normalized = {
|
|
6983
7038
|
...candidate,
|
|
6984
7039
|
artifact: {
|
|
@@ -8552,6 +8607,6 @@ function parsePackV2(value) {
|
|
|
8552
8607
|
return ok(value);
|
|
8553
8608
|
}
|
|
8554
8609
|
|
|
8555
|
-
export { MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, SCRIPTABLE_PACK_ASSET_KINDS, buildOfflineAssetEvidence, calculateTopologyDiff, collectMaterialCookRefs, createMaterialArtifactDigest, decodeMeshBinHeader, diffTopology, isScriptablePackAssetKind, packageVerification, parsePackV2, projectCookedMaterialRecord, projectRuntimePack, projectScriptablePackMeta, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateArtifactPath, validateCookedMaterialRecord, validateMaterialCookReceipt, validateMeta, validatePack, validatePackV2, validateProducerContract, validateProducerOutputs, validateScriptablePackDefinition, writeMaterialArtifact, writeMeshBinHeader };
|
|
8610
|
+
export { MESH_BIN_DIGEST_BYTES, MESH_BIN_HEADER_V4_BYTES, MESH_BIN_PROJECTION_VERSION, MESH_BIN_VERSION, SCRIPTABLE_PACK_ASSET_KINDS, buildOfflineAssetEvidence, calculateTopologyDiff, collectMaterialCookRefs, createMaterialArtifactDigest, createMaterialCookIdentity, decodeMeshBinHeader, diffTopology, isScriptablePackAssetKind, packageVerification, parsePackV2, projectCookedMaterialRecord, projectRuntimePack, projectScriptablePackMeta, serializeCookedMaterialRecord, serializeMaterialCookReceipt, validateArtifactPath, validateCookedMaterialRecord, validateMaterialCookReceipt, validateMeta, validatePack, validatePackV2, validateProducerContract, validateProducerOutputs, validateScriptablePackDefinition, writeMaterialArtifact, writeMeshBinHeader };
|
|
8556
8611
|
//# sourceMappingURL=index.mjs.map
|
|
8557
8612
|
//# sourceMappingURL=index.mjs.map
|