@forgeax/engine-import 0.0.0-dev.8d955ade1c79
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/LICENSE +202 -0
- package/README.md +227 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/decode-image-owner.test-d.d.ts +2 -0
- package/dist/__tests__/decode-image-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/import-contract-migration.test.d.ts +2 -0
- package/dist/__tests__/import-contract-migration.test.d.ts.map +1 -0
- package/dist/__tests__/import-dependencies.test.d.ts +2 -0
- package/dist/__tests__/import-dependencies.test.d.ts.map +1 -0
- package/dist/__tests__/import-finalizer-digest-retry.test.d.ts +2 -0
- package/dist/__tests__/import-finalizer-digest-retry.test.d.ts.map +1 -0
- package/dist/__tests__/import-local-artifacts.test.d.ts +2 -0
- package/dist/__tests__/import-local-artifacts.test.d.ts.map +1 -0
- package/dist/__tests__/import.unit.test.d.ts +2 -0
- package/dist/__tests__/import.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-morph-v3.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-morph-v3.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin.test.d.ts.map +1 -0
- package/dist/__tests__/owner-chain.integration.test.d.ts +2 -0
- package/dist/__tests__/owner-chain.integration.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-host.unit.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-host.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-output-producers.unit.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-output-producers.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-product.contract.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-product.contract.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-production-producers.unit.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-production-producers.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-staged-snapshot.unit.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-staged-snapshot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack.integration.test.d.ts +2 -0
- package/dist/__tests__/scriptable-pack.integration.test.d.ts.map +1 -0
- package/dist/__tests__/source-overrides-import-context.unit.test.d.ts +2 -0
- package/dist/__tests__/source-overrides-import-context.unit.test.d.ts.map +1 -0
- package/dist/__tests__/source-package-publication.integration.test.d.ts +2 -0
- package/dist/__tests__/source-package-publication.integration.test.d.ts.map +1 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.mjs +782 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/build-production.d.ts +48 -0
- package/dist/build-production.d.ts.map +1 -0
- package/dist/catalog-importer-policy.d.ts +13 -0
- package/dist/catalog-importer-policy.d.ts.map +1 -0
- package/dist/catalog-inventory.d.ts +4 -0
- package/dist/catalog-inventory.d.ts.map +1 -0
- package/dist/import-product.d.ts +27 -0
- package/dist/import-product.d.ts.map +1 -0
- package/dist/import-runner.d.ts +136 -0
- package/dist/import-runner.d.ts.map +1 -0
- package/dist/importer-registry.d.ts +48 -0
- package/dist/importer-registry.d.ts.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +2849 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mesh-bin.d.ts +19 -0
- package/dist/mesh-bin.d.ts.map +1 -0
- package/dist/mesh-bin.mjs +182 -0
- package/dist/mesh-bin.mjs.map +1 -0
- package/dist/pack-projection.d.ts +5 -0
- package/dist/pack-projection.d.ts.map +1 -0
- package/dist/scriptable-pack-host.d.ts +72 -0
- package/dist/scriptable-pack-host.d.ts.map +1 -0
- package/dist/scriptable-pack-output-producers.d.ts +7 -0
- package/dist/scriptable-pack-output-producers.d.ts.map +1 -0
- package/dist/scriptable-pack-staged-snapshot.d.ts +21 -0
- package/dist/scriptable-pack-staged-snapshot.d.ts.map +1 -0
- package/dist/scriptable-pack.d.ts +141 -0
- package/dist/scriptable-pack.d.ts.map +1 -0
- package/dist/scriptable-source-package.d.ts +14 -0
- package/dist/scriptable-source-package.d.ts.map +1 -0
- package/dist/source-package-errors.d.ts +52 -0
- package/dist/source-package-errors.d.ts.map +1 -0
- package/dist/source-package-publication.d.ts +63 -0
- package/dist/source-package-publication.d.ts.map +1 -0
- package/dist/source-package.d.ts +60 -0
- package/dist/source-package.d.ts.map +1 -0
- package/package.json +69 -0
- package/src/__tests__/decode-image-owner.test-d.ts +53 -0
- package/src/__tests__/import-contract-migration.test.ts +223 -0
- package/src/__tests__/import-dependencies.test.ts +65 -0
- package/src/__tests__/import-finalizer-digest-retry.test.ts +113 -0
- package/src/__tests__/import-local-artifacts.test.ts +102 -0
- package/src/__tests__/import.unit.test.ts +429 -0
- package/src/__tests__/mesh-bin-contract.test.ts +95 -0
- package/src/__tests__/mesh-bin-morph-v3.test.ts +44 -0
- package/src/__tests__/mesh-bin.test.ts +102 -0
- package/src/__tests__/owner-chain.integration.test.ts +37 -0
- package/src/__tests__/scriptable-pack-host.unit.test.ts +86 -0
- package/src/__tests__/scriptable-pack-output-producers.unit.test.ts +190 -0
- package/src/__tests__/scriptable-pack-product.contract.test.ts +47 -0
- package/src/__tests__/scriptable-pack-production-producers.unit.test.ts +488 -0
- package/src/__tests__/scriptable-pack-staged-snapshot.unit.test.ts +290 -0
- package/src/__tests__/scriptable-pack.integration.test.ts +435 -0
- package/src/__tests__/source-overrides-import-context.unit.test.ts +92 -0
- package/src/__tests__/source-package-publication.integration.test.ts +75 -0
- package/src/browser.ts +14 -0
- package/src/build-production.ts +493 -0
- package/src/catalog-importer-policy.ts +58 -0
- package/src/catalog-inventory.ts +24 -0
- package/src/import-product.ts +163 -0
- package/src/import-runner.ts +749 -0
- package/src/importer-registry.ts +103 -0
- package/src/index.ts +175 -0
- package/src/mesh-bin.ts +229 -0
- package/src/pack-projection.ts +21 -0
- package/src/scriptable-pack-host.ts +544 -0
- package/src/scriptable-pack-output-producers.ts +456 -0
- package/src/scriptable-pack-staged-snapshot.ts +172 -0
- package/src/scriptable-pack.ts +626 -0
- package/src/scriptable-source-package.ts +88 -0
- package/src/source-package-errors.ts +201 -0
- package/src/source-package-publication.ts +326 -0
- package/src/source-package.ts +187 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type MeshBinContractError } from '@forgeax/engine-pack/mesh-bin-contract';
|
|
2
|
+
import { type MeshAsset, type Result } from '@forgeax/engine-types';
|
|
3
|
+
type MeshPayloadIn = {
|
|
4
|
+
readonly [Key in keyof MeshAsset]?: MeshAsset[Key] | undefined;
|
|
5
|
+
} & {
|
|
6
|
+
readonly vertexCount?: number;
|
|
7
|
+
};
|
|
8
|
+
export type MeshBinEncodeError = MeshBinContractError | {
|
|
9
|
+
readonly code: 'mesh-bin-payload-invalid';
|
|
10
|
+
readonly subject: 'mesh-bin';
|
|
11
|
+
readonly sourceKey: string;
|
|
12
|
+
readonly expected: string;
|
|
13
|
+
readonly actual: string;
|
|
14
|
+
readonly recovery: string;
|
|
15
|
+
};
|
|
16
|
+
/** Encode one canonical v4 mesh binary. No legacy version is accepted or emitted. */
|
|
17
|
+
export declare function packMeshBinV4(payload: MeshPayloadIn, sourceKey: string, refs?: readonly string[]): Result<Uint8Array, MeshBinEncodeError>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=mesh-bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-bin.d.ts","sourceRoot":"","sources":["../src/mesh-bin.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EAG1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,MAAM,EAEZ,MAAM,uBAAuB,CAAC;AAE/B,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS;CAAE,GAAG;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB;IACE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAiEN,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAiIxC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { deriveVertexLayoutProjection } from '@forgeax/engine-geometry';
|
|
2
|
+
import { AssetGuid } from '@forgeax/engine-pack/guid';
|
|
3
|
+
import { MESH_BIN_HEADER_V4_BYTES, writeMeshBinHeader } from '@forgeax/engine-pack/mesh-bin-contract';
|
|
4
|
+
import { err, ok } from '@forgeax/engine-types';
|
|
5
|
+
|
|
6
|
+
// src/mesh-bin.ts
|
|
7
|
+
function failure(sourceKey, expected, actual) {
|
|
8
|
+
return {
|
|
9
|
+
code: "mesh-bin-payload-invalid",
|
|
10
|
+
subject: "mesh-bin",
|
|
11
|
+
sourceKey,
|
|
12
|
+
expected,
|
|
13
|
+
actual,
|
|
14
|
+
recovery: "re-cook the source with its Meta sidecar through the build-time importer"
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function asAttributeMap(value) {
|
|
18
|
+
return value ?? {};
|
|
19
|
+
}
|
|
20
|
+
function jsonValue(value) {
|
|
21
|
+
if (value instanceof Float32Array || value instanceof Uint16Array) return Array.from(value);
|
|
22
|
+
if (Array.isArray(value)) return value.map(jsonValue);
|
|
23
|
+
if (value !== null && typeof value === "object") {
|
|
24
|
+
return Object.fromEntries(
|
|
25
|
+
Object.entries(value).map(([key, nested]) => [key, jsonValue(nested)])
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function refsMeta(payload, refs) {
|
|
31
|
+
const materialSlots = (payload.materialSlots ?? [{ slotName: "Default" }]).map(
|
|
32
|
+
(slot, slotIndex) => {
|
|
33
|
+
const defaultMaterial = slot.defaultMaterial;
|
|
34
|
+
let defaultMaterialRef;
|
|
35
|
+
if (defaultMaterial !== void 0) {
|
|
36
|
+
const guid = AssetGuid.format(defaultMaterial);
|
|
37
|
+
defaultMaterialRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);
|
|
38
|
+
if (defaultMaterialRef < 0) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
`material slot ${slotIndex} default material ${guid} is absent from refs`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
slotName: slot.slotName,
|
|
46
|
+
...slot.sourceKey === void 0 ? {} : { sourceKey: slot.sourceKey },
|
|
47
|
+
...defaultMaterialRef === void 0 ? {} : { defaultMaterialRef }
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
return {
|
|
52
|
+
submeshes: payload.submeshes === void 0 || payload.submeshes.length === 0 ? [{ indexOffset: 0, indexCount: payload.indices?.length ?? 0, materialSlot: 0 }] : payload.submeshes,
|
|
53
|
+
materialSlots,
|
|
54
|
+
...payload.aabb === void 0 ? {} : { aabb: jsonValue(payload.aabb) },
|
|
55
|
+
...payload.morphTargets === void 0 ? {} : { morphTargets: jsonValue(payload.morphTargets) },
|
|
56
|
+
...payload.morphWeights === void 0 ? {} : { morphWeights: jsonValue(payload.morphWeights) }
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function packMeshBinV4(payload, sourceKey, refs = []) {
|
|
60
|
+
try {
|
|
61
|
+
const vertices = payload.vertices;
|
|
62
|
+
const indices = payload.indices;
|
|
63
|
+
if (!(vertices instanceof Float32Array)) {
|
|
64
|
+
return err(
|
|
65
|
+
failure(sourceKey, "Float32Array interleaved vertices", "vertices is not Float32Array")
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
if (indices !== void 0 && !(indices instanceof Uint16Array || indices instanceof Uint32Array)) {
|
|
69
|
+
return err(
|
|
70
|
+
failure(sourceKey, "Uint16Array or Uint32Array indices", "indices has an unsupported type")
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
const attributes = asAttributeMap(payload.attributes);
|
|
74
|
+
const projection = deriveVertexLayoutProjection(attributes);
|
|
75
|
+
if (projection.attributes.length === 0 || projection.arrayStride === 0) {
|
|
76
|
+
return err(
|
|
77
|
+
failure(
|
|
78
|
+
sourceKey,
|
|
79
|
+
"a non-empty canonical geometry projection",
|
|
80
|
+
"projection has no attributes"
|
|
81
|
+
)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
const vertexCount = payload.vertexCount ?? vertices.byteLength / projection.arrayStride;
|
|
85
|
+
if (!Number.isSafeInteger(vertexCount) || vertexCount < 0) {
|
|
86
|
+
return err(
|
|
87
|
+
failure(sourceKey, "a non-negative safe vertex cardinality", `vertexCount=${vertexCount}`)
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
if (vertices.byteLength !== vertexCount * projection.arrayStride) {
|
|
91
|
+
return err(
|
|
92
|
+
failure(
|
|
93
|
+
sourceKey,
|
|
94
|
+
`vertices.byteLength=${vertexCount * projection.arrayStride}`,
|
|
95
|
+
`vertices.byteLength=${vertices.byteLength}; stride=${projection.arrayStride}`
|
|
96
|
+
)
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
for (const attribute of projection.attributes) {
|
|
100
|
+
const value = attributes[attribute.key];
|
|
101
|
+
const components = attribute.byteLength / (attribute.format === "uint16x4" ? 2 : 4);
|
|
102
|
+
if (value === void 0 || !(value instanceof Float32Array) && !(value instanceof Uint16Array) || value.length !== vertexCount * components) {
|
|
103
|
+
return err(
|
|
104
|
+
failure(
|
|
105
|
+
sourceKey,
|
|
106
|
+
`${attribute.key} cardinality=${vertexCount * components}`,
|
|
107
|
+
`${attribute.key} cardinality=${value?.byteLength ?? "missing"}`
|
|
108
|
+
)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const interleaved = new Uint8Array(vertexCount * projection.arrayStride);
|
|
113
|
+
const interleavedView = new DataView(interleaved.buffer);
|
|
114
|
+
for (const attribute of projection.attributes) {
|
|
115
|
+
const value = attributes[attribute.key];
|
|
116
|
+
if (value === void 0) continue;
|
|
117
|
+
const components = attribute.byteLength / (attribute.format === "uint16x4" ? 2 : 4);
|
|
118
|
+
for (let vertex = 0; vertex < vertexCount; vertex++) {
|
|
119
|
+
for (let component = 0; component < components; component++) {
|
|
120
|
+
const sourceIndex = vertex * components + component;
|
|
121
|
+
const targetOffset = vertex * projection.arrayStride + attribute.offset + component * (attribute.format === "uint16x4" ? 2 : 4);
|
|
122
|
+
if (attribute.format === "uint16x4") {
|
|
123
|
+
interleavedView.setUint16(targetOffset, value[sourceIndex] ?? 0, true);
|
|
124
|
+
} else {
|
|
125
|
+
interleavedView.setFloat32(
|
|
126
|
+
targetOffset,
|
|
127
|
+
value[sourceIndex] ?? 0,
|
|
128
|
+
true
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const indexCount = indices?.length ?? 0;
|
|
135
|
+
const indexWidth = indices === void 0 || indexCount === 0 ? 0 : indices.BYTES_PER_ELEMENT;
|
|
136
|
+
const indexBytes = indexCount * indexWidth;
|
|
137
|
+
if (!Number.isSafeInteger(indexBytes) || indexBytes > 4294967295) {
|
|
138
|
+
return err(failure(sourceKey, "safe index payload byte length", `indexBytes=${indexBytes}`));
|
|
139
|
+
}
|
|
140
|
+
const meta = new TextEncoder().encode(JSON.stringify(refsMeta(payload, refs)));
|
|
141
|
+
const header = {
|
|
142
|
+
version: 4,
|
|
143
|
+
projectionVersion: projection.schemaVersion,
|
|
144
|
+
mask: projection.mask,
|
|
145
|
+
digest: projection.digest,
|
|
146
|
+
stride: projection.arrayStride,
|
|
147
|
+
vertexCount,
|
|
148
|
+
vertexBytes: interleaved.byteLength,
|
|
149
|
+
indexCount,
|
|
150
|
+
indexWidth,
|
|
151
|
+
indexBytes,
|
|
152
|
+
jsonBytes: meta.byteLength
|
|
153
|
+
};
|
|
154
|
+
const total = MESH_BIN_HEADER_V4_BYTES + interleaved.byteLength + indexBytes + meta.byteLength;
|
|
155
|
+
if (!Number.isSafeInteger(total) || total > 4294967295) {
|
|
156
|
+
return err(failure(sourceKey, "safe mesh binary byte length", `total=${total}`));
|
|
157
|
+
}
|
|
158
|
+
const out = new Uint8Array(total);
|
|
159
|
+
writeMeshBinHeader(header, out);
|
|
160
|
+
let offset = MESH_BIN_HEADER_V4_BYTES;
|
|
161
|
+
out.set(interleaved, offset);
|
|
162
|
+
offset += interleaved.byteLength;
|
|
163
|
+
if (indices !== void 0 && indexBytes > 0) {
|
|
164
|
+
out.set(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength), offset);
|
|
165
|
+
offset += indexBytes;
|
|
166
|
+
}
|
|
167
|
+
out.set(meta, offset);
|
|
168
|
+
return ok(out);
|
|
169
|
+
} catch (error) {
|
|
170
|
+
return err(
|
|
171
|
+
failure(
|
|
172
|
+
sourceKey,
|
|
173
|
+
"valid canonical mesh payload",
|
|
174
|
+
error instanceof Error ? error.message : String(error)
|
|
175
|
+
)
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export { packMeshBinV4 };
|
|
181
|
+
//# sourceMappingURL=mesh-bin.mjs.map
|
|
182
|
+
//# sourceMappingURL=mesh-bin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mesh-bin.ts"],"names":[],"mappings":"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","file":"mesh-bin.mjs","sourcesContent":["import { deriveVertexLayoutProjection } from '@forgeax/engine-geometry';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport {\n MESH_BIN_HEADER_V4_BYTES,\n type MeshBinContractError,\n type MeshBinHeaderV4,\n writeMeshBinHeader,\n} from '@forgeax/engine-pack/mesh-bin-contract';\nimport {\n err,\n type MeshAsset,\n ok,\n type Result,\n type VertexAttributeMap,\n} from '@forgeax/engine-types';\n\ntype MeshPayloadIn = { readonly [Key in keyof MeshAsset]?: MeshAsset[Key] | undefined } & {\n readonly vertexCount?: number;\n};\n\nexport type MeshBinEncodeError =\n | MeshBinContractError\n | {\n readonly code: 'mesh-bin-payload-invalid';\n readonly subject: 'mesh-bin';\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n readonly recovery: string;\n };\n\nfunction failure(sourceKey: string, expected: string, actual: string): MeshBinEncodeError {\n return {\n code: 'mesh-bin-payload-invalid',\n subject: 'mesh-bin',\n sourceKey,\n expected,\n actual,\n recovery: 're-cook the source with its Meta sidecar through the build-time importer',\n };\n}\n\nfunction asAttributeMap(value: unknown): VertexAttributeMap {\n return (value ?? {}) as VertexAttributeMap;\n}\n\nfunction jsonValue(value: unknown): unknown {\n if (value instanceof Float32Array || value instanceof Uint16Array) return Array.from(value);\n if (Array.isArray(value)) return value.map(jsonValue);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).map(([key, nested]) => [key, jsonValue(nested)]),\n );\n }\n return value;\n}\n\nfunction refsMeta(payload: MeshPayloadIn, refs: readonly string[]): Record<string, unknown> {\n const materialSlots = (payload.materialSlots ?? [{ slotName: 'Default' }]).map(\n (slot, slotIndex) => {\n const defaultMaterial = slot.defaultMaterial;\n let defaultMaterialRef: number | undefined;\n if (defaultMaterial !== undefined) {\n const guid = AssetGuid.format(defaultMaterial);\n defaultMaterialRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);\n if (defaultMaterialRef < 0) {\n throw new Error(\n `material slot ${slotIndex} default material ${guid} is absent from refs`,\n );\n }\n }\n return {\n slotName: slot.slotName,\n ...(slot.sourceKey === undefined ? {} : { sourceKey: slot.sourceKey }),\n ...(defaultMaterialRef === undefined ? {} : { defaultMaterialRef }),\n };\n },\n );\n return {\n submeshes:\n payload.submeshes === undefined || payload.submeshes.length === 0\n ? [{ indexOffset: 0, indexCount: payload.indices?.length ?? 0, materialSlot: 0 }]\n : payload.submeshes,\n materialSlots,\n ...(payload.aabb === undefined ? {} : { aabb: jsonValue(payload.aabb) }),\n ...(payload.morphTargets === undefined\n ? {}\n : { morphTargets: jsonValue(payload.morphTargets) }),\n ...(payload.morphWeights === undefined\n ? {}\n : { morphWeights: jsonValue(payload.morphWeights) }),\n };\n}\n\n/** Encode one canonical v4 mesh binary. No legacy version is accepted or emitted. */\nexport function packMeshBinV4(\n payload: MeshPayloadIn,\n sourceKey: string,\n refs: readonly string[] = [],\n): Result<Uint8Array, MeshBinEncodeError> {\n try {\n const vertices = payload.vertices;\n const indices = payload.indices;\n if (!(vertices instanceof Float32Array)) {\n return err(\n failure(sourceKey, 'Float32Array interleaved vertices', 'vertices is not Float32Array'),\n );\n }\n if (\n indices !== undefined &&\n !(indices instanceof Uint16Array || indices instanceof Uint32Array)\n ) {\n return err(\n failure(sourceKey, 'Uint16Array or Uint32Array indices', 'indices has an unsupported type'),\n );\n }\n const attributes = asAttributeMap(payload.attributes);\n const projection = deriveVertexLayoutProjection(attributes);\n if (projection.attributes.length === 0 || projection.arrayStride === 0) {\n return err(\n failure(\n sourceKey,\n 'a non-empty canonical geometry projection',\n 'projection has no attributes',\n ),\n );\n }\n const vertexCount = payload.vertexCount ?? vertices.byteLength / projection.arrayStride;\n if (!Number.isSafeInteger(vertexCount) || vertexCount < 0) {\n return err(\n failure(sourceKey, 'a non-negative safe vertex cardinality', `vertexCount=${vertexCount}`),\n );\n }\n if (vertices.byteLength !== vertexCount * projection.arrayStride) {\n return err(\n failure(\n sourceKey,\n `vertices.byteLength=${vertexCount * projection.arrayStride}`,\n `vertices.byteLength=${vertices.byteLength}; stride=${projection.arrayStride}`,\n ),\n );\n }\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n if (\n value === undefined ||\n (!(value instanceof Float32Array) && !(value instanceof Uint16Array)) ||\n value.length !== vertexCount * components\n ) {\n return err(\n failure(\n sourceKey,\n `${attribute.key} cardinality=${vertexCount * components}`,\n `${attribute.key} cardinality=${value?.byteLength ?? 'missing'}`,\n ),\n );\n }\n }\n const interleaved = new Uint8Array(vertexCount * projection.arrayStride);\n const interleavedView = new DataView(interleaved.buffer);\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n if (value === undefined) continue;\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n for (let vertex = 0; vertex < vertexCount; vertex++) {\n for (let component = 0; component < components; component++) {\n const sourceIndex = vertex * components + component;\n const targetOffset =\n vertex * projection.arrayStride +\n attribute.offset +\n component * (attribute.format === 'uint16x4' ? 2 : 4);\n if (attribute.format === 'uint16x4') {\n interleavedView.setUint16(targetOffset, (value as Uint16Array)[sourceIndex] ?? 0, true);\n } else {\n interleavedView.setFloat32(\n targetOffset,\n (value as Float32Array)[sourceIndex] ?? 0,\n true,\n );\n }\n }\n }\n }\n const indexCount = indices?.length ?? 0;\n const indexWidth = indices === undefined || indexCount === 0 ? 0 : indices.BYTES_PER_ELEMENT;\n const indexBytes = indexCount * indexWidth;\n if (!Number.isSafeInteger(indexBytes) || indexBytes > 0xffffffff) {\n return err(failure(sourceKey, 'safe index payload byte length', `indexBytes=${indexBytes}`));\n }\n const meta = new TextEncoder().encode(JSON.stringify(refsMeta(payload, refs)));\n const header: MeshBinHeaderV4 = {\n version: 4,\n projectionVersion: projection.schemaVersion,\n mask: projection.mask,\n digest: projection.digest,\n stride: projection.arrayStride,\n vertexCount,\n vertexBytes: interleaved.byteLength,\n indexCount,\n indexWidth: indexWidth as 0 | 2 | 4,\n indexBytes,\n jsonBytes: meta.byteLength,\n };\n const total = MESH_BIN_HEADER_V4_BYTES + interleaved.byteLength + indexBytes + meta.byteLength;\n if (!Number.isSafeInteger(total) || total > 0xffffffff) {\n return err(failure(sourceKey, 'safe mesh binary byte length', `total=${total}`));\n }\n const out = new Uint8Array(total);\n writeMeshBinHeader(header, out);\n let offset = MESH_BIN_HEADER_V4_BYTES;\n out.set(interleaved, offset);\n offset += interleaved.byteLength;\n if (indices !== undefined && indexBytes > 0) {\n out.set(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength), offset);\n offset += indexBytes;\n }\n out.set(meta, offset);\n return ok(out);\n } catch (error) {\n return err(\n failure(\n sourceKey,\n 'valid canonical mesh payload',\n error instanceof Error ? error.message : String(error),\n ),\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ImportProduct } from '@forgeax/engine-types';
|
|
2
|
+
import { type DdcPack } from './import-runner.js';
|
|
3
|
+
/** Project one validated import product into the canonical Pack v2 payload. */
|
|
4
|
+
export declare function projectImportProductForBuild(product: Pick<ImportProduct<unknown>, 'assets'>): DdcPack;
|
|
5
|
+
//# sourceMappingURL=pack-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-projection.d.ts","sourceRoot":"","sources":["../src/pack-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,oBAAoB,CAAC;AAEpE,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,GAC9C,OAAO,CAaT"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type AuthoredPackInput, finalizePackageTransportSource, type PackageFinalizePolicy } from '@forgeax/engine-pack/build';
|
|
2
|
+
import { type NativeCooker } from '@forgeax/engine-pack/native-cooker';
|
|
3
|
+
import type { ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';
|
|
4
|
+
import { type ScriptablePackDefinition, type ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';
|
|
5
|
+
import type { AssetGuid as AssetGuidType, AssetPublicationEnvelope, AssetPublicationOutput, ResourceRevision, Result } from '@forgeax/engine-types';
|
|
6
|
+
import type { DdcPack, ImportRunnerFs } from './import-runner.js';
|
|
7
|
+
import type { ImporterRegistry } from './importer-registry.js';
|
|
8
|
+
import type { ScriptablePackDomainError, ScriptablePackStagedOutput } from './scriptable-pack.js';
|
|
9
|
+
import { type ScriptableSourcePackageProduct, type ScriptableSourcePackageResult } from './scriptable-source-package.js';
|
|
10
|
+
type FinalizedPackageTransport = Awaited<ReturnType<typeof finalizePackageTransportSource>>;
|
|
11
|
+
export interface ScriptablePackInput {
|
|
12
|
+
readonly sourcePath: string;
|
|
13
|
+
readonly displaySourcePath: string;
|
|
14
|
+
readonly definition: Readonly<ScriptablePackDefinition>;
|
|
15
|
+
readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];
|
|
16
|
+
readonly publicationGeneration: number;
|
|
17
|
+
readonly policy: ScriptablePackTransportPolicy;
|
|
18
|
+
}
|
|
19
|
+
export interface ScriptablePackPublicationFacts {
|
|
20
|
+
readonly outputs: readonly AssetPublicationOutput[];
|
|
21
|
+
readonly refs: ReadonlyMap<string, readonly string[]>;
|
|
22
|
+
}
|
|
23
|
+
export interface PreparedScriptablePack {
|
|
24
|
+
readonly product: ScriptableSourcePackageProduct;
|
|
25
|
+
readonly finalized: FinalizedPackageTransport;
|
|
26
|
+
readonly facts: ScriptablePackPublicationFacts;
|
|
27
|
+
readonly revision: ResourceRevision;
|
|
28
|
+
readonly publication: AssetPublicationEnvelope;
|
|
29
|
+
}
|
|
30
|
+
export interface ScriptablePackTransportPaths {
|
|
31
|
+
readonly packagePath: string;
|
|
32
|
+
readonly artifactPath: (path: string) => string;
|
|
33
|
+
readonly receiptPath: (guid: string) => string;
|
|
34
|
+
}
|
|
35
|
+
export interface ScriptablePackTransportSink {
|
|
36
|
+
writePackage(path: string, body: string): void | Promise<void>;
|
|
37
|
+
writeArtifact(path: string, bytes: Uint8Array, mimeType: string): void | Promise<void>;
|
|
38
|
+
writeReceipt(path: string, body: string): void | Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export type ScriptablePackTransportPolicy = PackageFinalizePolicy | ((product: ScriptableSourcePackageProduct) => PackageFinalizePolicy);
|
|
41
|
+
type ScriptablePackHostError = ScriptableSourcePackageResult extends Result<unknown, infer E> ? E : never;
|
|
42
|
+
export interface CookedAuthoredPack {
|
|
43
|
+
readonly logicalPackage: DdcPack;
|
|
44
|
+
readonly refsByGuid: ReadonlyMap<string, readonly string[]>;
|
|
45
|
+
}
|
|
46
|
+
export interface AuthoredPackTransport {
|
|
47
|
+
readonly pack: AuthoredPackInput;
|
|
48
|
+
readonly firstGuid?: string;
|
|
49
|
+
readonly cooked?: CookedAuthoredPack;
|
|
50
|
+
readonly finalized?: FinalizedPackageTransport;
|
|
51
|
+
}
|
|
52
|
+
/** Build-time capabilities required to expose ordinary Meta products to a ScriptablePack. */
|
|
53
|
+
export interface ScriptablePackExternalImportOptions {
|
|
54
|
+
readonly importerRegistry: ImporterRegistry;
|
|
55
|
+
readonly fsForImport: ImportRunnerFs;
|
|
56
|
+
/** Package path aliases from forgeax.assets.paths; defaults to the current project config. */
|
|
57
|
+
readonly assetPaths?: Readonly<Record<string, string>>;
|
|
58
|
+
}
|
|
59
|
+
export declare function canonicalScriptableSourcePath(sourcePath: string): string;
|
|
60
|
+
export declare function scriptablePackInputs(sourcePaths: readonly string[], declarations: ReadonlyMap<string, ScanSourceDeclaration>, cwd: string, generationFor: (displaySourcePath: string) => number, policyFor: (displaySourcePath: string) => ScriptablePackTransportPolicy): ScriptablePackInput[];
|
|
61
|
+
/** Materialize one accepted ScriptablePack without duplicating dev/build loops. */
|
|
62
|
+
export declare function materializePreparedScriptablePack(prepared: PreparedScriptablePack, paths: ScriptablePackTransportPaths, sink: ScriptablePackTransportSink): Promise<ReadonlyMap<string, string>>;
|
|
63
|
+
export declare function readCookedAuthoredPack(authoredPack: AuthoredPackInput, cookers?: readonly NativeCooker[], sourcePath?: string): Promise<CookedAuthoredPack | undefined>;
|
|
64
|
+
export declare function declaredPackExternalOutputs(declarations: ReadonlyMap<string, ScanSourceDeclaration>, cookers?: readonly NativeCooker[], requiredGuids?: readonly AssetGuidType[], externalImport?: ScriptablePackExternalImportOptions): Promise<readonly ScriptablePackStagedOutput[]>;
|
|
65
|
+
/** Normalize one authored Pack and, when needed, run its registered cooker once. */
|
|
66
|
+
export declare function prepareAuthoredPackTransport(authoredPack: AuthoredPackInput, cookers: readonly NativeCooker[] | undefined, policyFor: (guid: string) => PackageFinalizePolicy, sourcePath?: string): Promise<AuthoredPackTransport>;
|
|
67
|
+
/** Project one produced ScriptablePack into the publication tuple shared by dev and build. */
|
|
68
|
+
export declare function projectScriptablePackPublication(product: ScriptableSourcePackageProduct): Result<ScriptablePackPublicationFacts, ScriptablePackDomainError>;
|
|
69
|
+
/** Produce selected ScriptablePacks through one inventory and one staged owner boundary. */
|
|
70
|
+
export declare function produceScriptablePackProducts(sources: readonly ScriptablePackInput[], declaredExternalOutputs?: readonly ScriptablePackStagedOutput[]): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, ScriptablePackHostError>>;
|
|
71
|
+
export {};
|
|
72
|
+
//# sourceMappingURL=scriptable-pack-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-pack-host.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ScriptablePackSceneComponent } from '@forgeax/engine-pack/source';
|
|
2
|
+
import { type AssetOutputProducer, AssetOutputProducerRegistry } from './scriptable-pack.js';
|
|
3
|
+
export declare const materialAssetOutputProducer: AssetOutputProducer;
|
|
4
|
+
export declare const meshAssetOutputProducer: AssetOutputProducer;
|
|
5
|
+
export declare function createSceneAssetOutputProducer(sceneComponents?: readonly ScriptablePackSceneComponent[]): AssetOutputProducer;
|
|
6
|
+
export declare function createStandardAssetOutputProducerRegistry(sceneComponents?: readonly ScriptablePackSceneComponent[]): AssetOutputProducerRegistry;
|
|
7
|
+
//# sourceMappingURL=scriptable-pack-output-producers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-pack-output-producers.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-output-producers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AA4BhF,OAAO,EAEL,KAAK,mBAAmB,EACxB,2BAA2B,EAE5B,MAAM,sBAAsB,CAAC;AA4X9B,eAAO,MAAM,2BAA2B,qBAIvC,CAAC;AACF,eAAO,MAAM,uBAAuB,qBAA2D,CAAC;AAEhG,wBAAgB,8BAA8B,CAC5C,eAAe,GAAE,SAAS,4BAA4B,EAAO,GAC5D,mBAAmB,CAKrB;AAED,wBAAgB,yCAAyC,CACvD,eAAe,GAAE,SAAS,4BAA4B,EAAO,GAC5D,2BAA2B,CAuB7B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ScriptablePackError } from '@forgeax/engine-pack/source';
|
|
2
|
+
import type { AssetGuid as AssetGuidType, ImportError, Result } from '@forgeax/engine-types';
|
|
3
|
+
import { AssetError } from '@forgeax/engine-types';
|
|
4
|
+
import type { ScriptablePackAssetSnapshotSource, ScriptablePackDomainError, ScriptablePackStagedOutput } from './scriptable-pack.js';
|
|
5
|
+
export type ScriptablePackSnapshotError = AssetError | ImportError | ScriptablePackError | ScriptablePackDomainError;
|
|
6
|
+
export interface ScriptablePackStagedOwner {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly guids: readonly AssetGuidType[];
|
|
9
|
+
build(source: ScriptablePackAssetSnapshotSource): Promise<Result<readonly ScriptablePackStagedOutput[], ScriptablePackSnapshotError>>;
|
|
10
|
+
}
|
|
11
|
+
export interface ScriptablePackStagedSnapshotOptions {
|
|
12
|
+
readonly generation: number;
|
|
13
|
+
readonly owners: readonly ScriptablePackStagedOwner[];
|
|
14
|
+
readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* One-build authority for current-generation ScriptablePack content reads.
|
|
18
|
+
* Local owners are built lazily, memoized, and never resolved through an old Catalog/DDC generation.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createScriptablePackStagedAssetSnapshotSource(options: ScriptablePackStagedSnapshotOptions): ScriptablePackAssetSnapshotSource;
|
|
21
|
+
//# sourceMappingURL=scriptable-pack-staged-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-pack-staged-snapshot.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-staged-snapshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAS,SAAS,IAAI,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAEV,iCAAiC,EACjC,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,2BAA2B,GACnC,UAAU,GACV,WAAW,GACX,mBAAmB,GACnB,yBAAyB,CAAC;AAE9B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,KAAK,CACH,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,MAAM,CAAC,SAAS,0BAA0B,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACtD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC1E;AA8CD;;;GAGG;AACH,wBAAgB,6CAA6C,CAC3D,OAAO,EAAE,mCAAmC,GAC3C,iCAAiC,CA0FnC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { type ScriptablePackAssetKind } from '@forgeax/engine-pack';
|
|
2
|
+
import { type ScriptablePackDefinition, type ScriptablePackError, type ScriptablePackReadError, type ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';
|
|
3
|
+
import type { AnimationGraph, Asset, AssetGuid as AssetGuidType, AssetPublicationEnvelope, FontAsset, MaterialAsset, MeshAsset, Result, TilesetAsset } from '@forgeax/engine-types';
|
|
4
|
+
export type { ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';
|
|
5
|
+
import { AssetError, ImportError } from '@forgeax/engine-types';
|
|
6
|
+
import { type ImportAssetProduct, type TerminalImportProduct } from './import-product.js';
|
|
7
|
+
export interface ScriptablePackAssetSnapshot {
|
|
8
|
+
readonly asset: Asset;
|
|
9
|
+
readonly generation: number;
|
|
10
|
+
readonly digest: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ScriptablePackStagedOutput {
|
|
13
|
+
readonly guid: AssetGuidType;
|
|
14
|
+
/** Producer-owned stable output identity from the ScriptablePack definition. */
|
|
15
|
+
readonly sourceKey?: string;
|
|
16
|
+
readonly asset: Asset;
|
|
17
|
+
readonly digest?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ScriptablePackAssetSnapshotSource {
|
|
20
|
+
readByGuid(guid: AssetGuidType): Promise<Result<ScriptablePackAssetSnapshot, ScriptablePackReadError>>;
|
|
21
|
+
}
|
|
22
|
+
export interface AssetOutputInput {
|
|
23
|
+
readonly guid: string;
|
|
24
|
+
readonly sourceKey: string;
|
|
25
|
+
readonly asset: Asset;
|
|
26
|
+
}
|
|
27
|
+
type MaterialPackPayload = Omit<MaterialAsset, 'parent' | 'values'> & {
|
|
28
|
+
readonly parent?: number;
|
|
29
|
+
readonly values?: Readonly<Record<string, unknown>>;
|
|
30
|
+
};
|
|
31
|
+
type ScenePackPayload = {
|
|
32
|
+
readonly kind: 'scene';
|
|
33
|
+
readonly [key: string]: unknown;
|
|
34
|
+
};
|
|
35
|
+
type FontPackPayload = Omit<FontAsset, 'atlas' | 'sampler'> & {
|
|
36
|
+
readonly atlasGuid: string;
|
|
37
|
+
readonly samplerGuid: string;
|
|
38
|
+
};
|
|
39
|
+
type TilesetPackPayload = Omit<TilesetAsset, 'atlases'> & {
|
|
40
|
+
readonly atlases: readonly number[];
|
|
41
|
+
};
|
|
42
|
+
type AnimationGraphPackPayload = Omit<AnimationGraph, 'nodes'> & {
|
|
43
|
+
readonly nodes: readonly (Exclude<AnimationGraph['nodes'][number], {
|
|
44
|
+
readonly type: 'clip';
|
|
45
|
+
}> | (Omit<Extract<AnimationGraph['nodes'][number], {
|
|
46
|
+
readonly type: 'clip';
|
|
47
|
+
}>, 'clip'> & {
|
|
48
|
+
readonly clip: number;
|
|
49
|
+
}))[];
|
|
50
|
+
};
|
|
51
|
+
/** Serialized Pack projection; durable runtime Assets never carry ref indices. */
|
|
52
|
+
export type AssetOutputPayloadByKind = {
|
|
53
|
+
readonly mesh: MeshAsset;
|
|
54
|
+
readonly material: MaterialPackPayload;
|
|
55
|
+
readonly scene: ScenePackPayload;
|
|
56
|
+
readonly texture: Extract<Asset, {
|
|
57
|
+
readonly kind: 'texture';
|
|
58
|
+
}>;
|
|
59
|
+
readonly equirect: Extract<Asset, {
|
|
60
|
+
readonly kind: 'equirect';
|
|
61
|
+
}>;
|
|
62
|
+
readonly sampler: Extract<Asset, {
|
|
63
|
+
readonly kind: 'sampler';
|
|
64
|
+
}>;
|
|
65
|
+
readonly font: FontPackPayload;
|
|
66
|
+
readonly 'render-pipeline': Extract<Asset, {
|
|
67
|
+
readonly kind: 'render-pipeline';
|
|
68
|
+
}>;
|
|
69
|
+
readonly tileset: TilesetPackPayload;
|
|
70
|
+
readonly video: Extract<Asset, {
|
|
71
|
+
readonly kind: 'video';
|
|
72
|
+
}>;
|
|
73
|
+
readonly skeleton: Extract<Asset, {
|
|
74
|
+
readonly kind: 'skeleton';
|
|
75
|
+
}>;
|
|
76
|
+
readonly skin: Extract<Asset, {
|
|
77
|
+
readonly kind: 'skin';
|
|
78
|
+
}>;
|
|
79
|
+
readonly 'animation-clip': Extract<Asset, {
|
|
80
|
+
readonly kind: 'animation-clip';
|
|
81
|
+
}>;
|
|
82
|
+
readonly 'animation-graph': AnimationGraphPackPayload;
|
|
83
|
+
readonly audio: Extract<Asset, {
|
|
84
|
+
readonly kind: 'audio';
|
|
85
|
+
}>;
|
|
86
|
+
readonly 'particle-effect': Extract<Asset, {
|
|
87
|
+
readonly kind: 'particle-effect';
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
export type AssetOutputPayload = AssetOutputPayloadByKind[ScriptablePackAssetKind];
|
|
91
|
+
export type AssetOutputProduct = ImportAssetProduct<AssetOutputPayload>;
|
|
92
|
+
export interface AssetOutputProducer {
|
|
93
|
+
readonly kind: string;
|
|
94
|
+
readonly version: string;
|
|
95
|
+
produce(input: AssetOutputInput): Result<AssetOutputProduct, ImportError> | Promise<Result<AssetOutputProduct, ImportError>>;
|
|
96
|
+
}
|
|
97
|
+
export declare class AssetOutputProducerRegistry {
|
|
98
|
+
private readonly producers;
|
|
99
|
+
register(producer: AssetOutputProducer): void;
|
|
100
|
+
get(kind: string): AssetOutputProducer | undefined;
|
|
101
|
+
versions(): Readonly<Record<string, string>>;
|
|
102
|
+
}
|
|
103
|
+
export type ScriptablePackExternalUsage = 'reference' | 'content' | 'both';
|
|
104
|
+
export interface ScriptablePackExternalEvidence {
|
|
105
|
+
readonly guid: string;
|
|
106
|
+
readonly usage: ScriptablePackExternalUsage;
|
|
107
|
+
readonly generation?: number;
|
|
108
|
+
readonly digest?: string;
|
|
109
|
+
}
|
|
110
|
+
export interface ScriptablePackBuildProduct {
|
|
111
|
+
readonly product: TerminalImportProduct<unknown>;
|
|
112
|
+
/** Raw private outputs for the current staged build generation, never a runtime publication path. */
|
|
113
|
+
readonly stagedOutputs: readonly ScriptablePackStagedOutput[];
|
|
114
|
+
readonly externalEvidence: readonly ScriptablePackExternalEvidence[];
|
|
115
|
+
readonly inputFingerprint: string;
|
|
116
|
+
/** Engine publication fields projected after ordinary producers run. */
|
|
117
|
+
readonly publication?: AssetPublicationEnvelope;
|
|
118
|
+
}
|
|
119
|
+
/** Domain-owned structured failure transported without flattening its recovery fields. */
|
|
120
|
+
export interface ScriptablePackDomainError {
|
|
121
|
+
readonly code: string;
|
|
122
|
+
readonly expected: string;
|
|
123
|
+
readonly hint: string;
|
|
124
|
+
readonly detail?: unknown;
|
|
125
|
+
}
|
|
126
|
+
export type ScriptablePackBuildBridgeResult = Result<ScriptablePackBuildProduct, ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError>;
|
|
127
|
+
export interface BuildScriptablePackOptions {
|
|
128
|
+
readonly definition: ScriptablePackDefinition;
|
|
129
|
+
readonly sourcePath: string;
|
|
130
|
+
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
131
|
+
readonly outputs: AssetOutputProducerRegistry;
|
|
132
|
+
readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];
|
|
133
|
+
readonly authoringContractVersion: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Build one external ScriptablePack through the producer-owned Pack bridge.
|
|
137
|
+
* Success preserves payloads, GUID refs, and local artifacts; failure retains
|
|
138
|
+
* `code`, `expected`, `hint`, and `detail` for recovery by the caller.
|
|
139
|
+
*/
|
|
140
|
+
export declare function buildScriptablePack(options: BuildScriptablePackOptions): Promise<ScriptablePackBuildBridgeResult>;
|
|
141
|
+
//# sourceMappingURL=scriptable-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-pack.d.ts","sourceRoot":"","sources":["../src/scriptable-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ScriptablePackError } from '@forgeax/engine-pack/source';
|
|
2
|
+
import type { AssetError, ImportError, ImportProduct, Result } from '@forgeax/engine-types';
|
|
3
|
+
import { type BuildScriptablePackOptions, type ScriptablePackDomainError, type ScriptablePackExternalEvidence, type ScriptablePackStagedOutput } from './scriptable-pack.js';
|
|
4
|
+
export interface ScriptableSourcePackageProduct {
|
|
5
|
+
readonly anchorGuid: string;
|
|
6
|
+
readonly declaredGuids: readonly string[];
|
|
7
|
+
readonly product: ImportProduct<unknown>;
|
|
8
|
+
readonly inputFingerprint: string;
|
|
9
|
+
readonly externalEvidence: readonly ScriptablePackExternalEvidence[];
|
|
10
|
+
readonly stagedOutputs: readonly ScriptablePackStagedOutput[];
|
|
11
|
+
}
|
|
12
|
+
export type ScriptableSourcePackageResult = Result<ScriptableSourcePackageProduct, ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError>;
|
|
13
|
+
export declare function produceScriptableSourcePackage(options: BuildScriptablePackOptions): Promise<ScriptableSourcePackageResult>;
|
|
14
|
+
//# sourceMappingURL=scriptable-source-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptable-source-package.d.ts","sourceRoot":"","sources":["../src/scriptable-source-package.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,aAAa,EACb,MAAM,EACP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,0BAA0B,EAE/B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACrE,QAAQ,CAAC,aAAa,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC/D;AAED,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAChD,8BAA8B,EAC9B,mBAAmB,GAAG,UAAU,GAAG,WAAW,GAAG,yBAAyB,CAC3E,CAAC;AAyBF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,6BAA6B,CAAC,CA4BxC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
declare const SOURCE_PACKAGE_ERROR_POLICY: {
|
|
2
|
+
readonly 'source-package-meta-invalid': {
|
|
3
|
+
readonly expected: "a valid source Meta declaration with complete GUID topology";
|
|
4
|
+
readonly hint: "repair the Meta declaration, then rebuild or cold-cook the source package";
|
|
5
|
+
};
|
|
6
|
+
readonly 'source-package-importer-missing': {
|
|
7
|
+
readonly expected: "a registered importer for the source Meta importer key";
|
|
8
|
+
readonly hint: "register the named importer, then rebuild or cold-cook the source package";
|
|
9
|
+
};
|
|
10
|
+
readonly 'source-package-conversion-failed': {
|
|
11
|
+
readonly expected: "the configured importer to convert the source successfully";
|
|
12
|
+
readonly hint: "repair the source or importer, then rebuild or cold-cook the source package";
|
|
13
|
+
};
|
|
14
|
+
readonly 'source-package-ddc-failed': {
|
|
15
|
+
readonly expected: "a readable persistent DDC entry with matching integrity evidence";
|
|
16
|
+
readonly hint: "discard the invalid derived entry, then rebuild or cold-cook the source package";
|
|
17
|
+
};
|
|
18
|
+
readonly 'source-package-publication-invalid': {
|
|
19
|
+
readonly expected: "a complete Pack body, refs, artifacts, and route integrity";
|
|
20
|
+
readonly hint: "repair the missing product bytes, then rebuild or cold-cook the source package";
|
|
21
|
+
};
|
|
22
|
+
readonly 'source-package-guid-closure-mismatch': {
|
|
23
|
+
readonly expected: "exactly one produced asset for every declared GUID";
|
|
24
|
+
readonly hint: "repair the Meta topology or importer output, then rebuild the whole source package";
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type SourcePackageErrorCode = keyof typeof SOURCE_PACKAGE_ERROR_POLICY;
|
|
28
|
+
export type SourcePackageErrorStage = 'meta' | 'importer' | 'conversion' | 'closure' | 'ddc' | 'route-integrity';
|
|
29
|
+
export interface SourcePackageErrorContext {
|
|
30
|
+
readonly sourceMeta: string;
|
|
31
|
+
readonly anchorGuid: string;
|
|
32
|
+
readonly affectedGuids: readonly string[];
|
|
33
|
+
readonly producer: string;
|
|
34
|
+
readonly importer: string;
|
|
35
|
+
}
|
|
36
|
+
export interface SourcePackageErrorDetail extends SourcePackageErrorContext {
|
|
37
|
+
readonly stage: SourcePackageErrorStage;
|
|
38
|
+
readonly reason?: string;
|
|
39
|
+
readonly missing?: readonly string[];
|
|
40
|
+
readonly unexpected?: readonly string[];
|
|
41
|
+
readonly registeredImporters?: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
export interface SourcePackageError {
|
|
44
|
+
readonly code: SourcePackageErrorCode;
|
|
45
|
+
readonly expected: string;
|
|
46
|
+
readonly hint: string;
|
|
47
|
+
readonly detail: SourcePackageErrorDetail;
|
|
48
|
+
}
|
|
49
|
+
export declare function sourcePackageError(code: SourcePackageErrorCode, context: SourcePackageErrorContext, detail: Omit<SourcePackageErrorDetail, keyof SourcePackageErrorContext>): SourcePackageError;
|
|
50
|
+
export declare function normalizeSourcePackageError(error: unknown, context: SourcePackageErrorContext): SourcePackageError;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=source-package-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-package-errors.d.ts","sourceRoot":"","sources":["../src/source-package-errors.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;CAyBvB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAE9E,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,UAAU,GACV,YAAY,GACZ,SAAS,GACT,KAAK,GACL,iBAAiB,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,yBAAyB,CAAC,GACtE,kBAAkB,CAQpB;AA8CD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,yBAAyB,GACjC,kBAAkB,CAuBpB"}
|