@forgeax/engine-pack 0.1.20 → 0.1.23
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 +159 -46
- package/dist/__tests__/inventory-schema.test.d.ts +2 -0
- package/dist/__tests__/inventory-schema.test.d.ts.map +1 -0
- package/dist/__tests__/parameterized-pack-authoring-gateway.unit.test.d.ts +2 -0
- package/dist/__tests__/parameterized-pack-authoring-gateway.unit.test.d.ts.map +1 -0
- package/dist/__tests__/parameterized-pack-scanner.unit.test.d.ts +2 -0
- package/dist/__tests__/parameterized-pack-scanner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/parameterized-pack.unit.test.d.ts +2 -0
- package/dist/__tests__/parameterized-pack.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-blacklist.test.d.ts +2 -0
- package/dist/__tests__/scanner-blacklist.test.d.ts.map +1 -0
- package/dist/build.d.ts +9 -4
- package/dist/build.d.ts.map +1 -1
- package/dist/build.mjs +3317 -804
- package/dist/build.mjs.map +1 -1
- package/dist/builtin.mjs +37 -4
- package/dist/builtin.mjs.map +1 -1
- package/dist/catalog-builder.d.ts.map +1 -1
- package/dist/cli-asset.d.ts.map +1 -1
- package/dist/cli-asset.mjs +1368 -850
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/deriveAssetName.d.ts +11 -7
- package/dist/deriveAssetName.d.ts.map +1 -1
- package/dist/evidence/material-cook.d.ts.map +1 -1
- package/dist/evidence/source-inventory.d.ts.map +1 -1
- package/dist/guid.d.ts +15 -0
- package/dist/guid.d.ts.map +1 -1
- package/dist/guid.mjs +53 -5
- package/dist/guid.mjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +1255 -561
- package/dist/index.mjs.map +1 -1
- package/dist/inventory/binding.d.ts +6 -0
- package/dist/inventory/binding.d.ts.map +1 -0
- package/dist/inventory/declaration.d.ts +24 -0
- package/dist/inventory/declaration.d.ts.map +1 -0
- package/dist/inventory/index.d.ts +3 -0
- package/dist/inventory/index.d.ts.map +1 -0
- package/dist/inventory/sync.d.ts +5 -0
- package/dist/inventory/sync.d.ts.map +1 -0
- package/dist/material-cook.mjs +3 -1
- package/dist/material-cook.mjs.map +1 -1
- package/dist/name.mjs +4 -7
- package/dist/name.mjs.map +1 -1
- package/dist/package-finalizer.d.ts +2 -20
- package/dist/package-finalizer.d.ts.map +1 -1
- package/dist/parameterized-pack-node.d.ts +26 -0
- package/dist/parameterized-pack-node.d.ts.map +1 -0
- package/dist/parameterized-pack-node.mjs +11093 -0
- package/dist/parameterized-pack-node.mjs.map +1 -0
- package/dist/parameterized-pack.d.ts +233 -0
- package/dist/parameterized-pack.d.ts.map +1 -0
- package/dist/resolve-asset-source.d.ts +1 -3
- package/dist/resolve-asset-source.d.ts.map +1 -1
- package/dist/resolve-asset-source.mjs +6 -81
- package/dist/resolve-asset-source.mjs.map +1 -1
- package/dist/runtime.mjs +77 -7
- package/dist/runtime.mjs.map +1 -1
- package/dist/scanner.d.ts +19 -8
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.mjs +1169 -690
- package/dist/scanner.mjs.map +1 -1
- package/dist/schema-compiled.d.ts.map +1 -1
- package/dist/schema.mjs +79 -7
- package/dist/schema.mjs.map +1 -1
- package/dist/scriptable-pack-node.d.ts +8 -32
- package/dist/scriptable-pack-node.d.ts.map +1 -1
- package/dist/scriptable-pack-node.mjs +576 -1021
- package/dist/scriptable-pack-node.mjs.map +1 -1
- package/dist/scriptable-pack-worker.mjs +29 -11
- package/dist/scriptable-pack-worker.mjs.map +1 -1
- package/dist/scriptable-pack.d.ts +19 -532
- package/dist/scriptable-pack.d.ts.map +1 -1
- package/dist/scriptable-pack.mjs +1042 -527
- package/dist/scriptable-pack.mjs.map +1 -1
- package/package.json +7 -7
- package/schema/meta.schema.json +1 -1
- package/schema/pack.schema.json +76 -6
- package/src/__tests__/guid-collision.unit.test.ts +18 -9
- package/src/__tests__/inventory-schema.test.ts +109 -0
- package/src/__tests__/pack.unit.test.ts +1 -238
- package/src/__tests__/package-finalizer.contract.test.ts +55 -0
- package/src/__tests__/parameterized-pack-authoring-gateway.unit.test.ts +249 -0
- package/src/__tests__/parameterized-pack-scanner.unit.test.ts +123 -0
- package/src/__tests__/parameterized-pack.unit.test.ts +266 -0
- package/src/__tests__/resolve-asset-source.test.ts +15 -98
- package/src/__tests__/scanner-blacklist.test.ts +55 -0
- package/src/__tests__/scanner-inventory.contract.test.ts +14 -15
- package/src/__tests__/scanner-inventory.test.ts +24 -12
- package/src/__tests__/scriptable-pack-cli.integration.test.ts +4 -9
- package/src/__tests__/topology.unit.test.ts +23 -0
- package/src/build.ts +28 -18
- package/src/catalog-builder.ts +61 -34
- package/src/cli-asset.ts +70 -85
- package/src/deriveAssetName.ts +14 -13
- package/src/evidence/material-cook.ts +3 -1
- package/src/evidence/source-inventory.ts +34 -21
- package/src/guid.ts +65 -4
- package/src/index.ts +12 -11
- package/src/inventory/binding.ts +25 -0
- package/src/inventory/declaration.ts +168 -0
- package/src/inventory/index.ts +18 -0
- package/src/inventory/sync.ts +22 -0
- package/src/package-finalizer.ts +2 -42
- package/src/parameterized-pack-node.ts +1968 -0
- package/src/parameterized-pack.ts +1493 -0
- package/src/resolve-asset-source.ts +4 -76
- package/src/scanner.ts +241 -59
- package/src/schema-compiled.ts +2 -0
- package/src/scriptable-pack-node.ts +111 -722
- package/src/scriptable-pack-worker.ts +48 -16
- package/src/scriptable-pack.ts +27 -939
- package/dist/.tsbuildinfo +0 -1
- package/dist/__tests__/load-asset-config.test.d.ts +0 -2
- package/dist/__tests__/load-asset-config.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack.test-d.d.ts +0 -2
- package/dist/__tests__/scriptable-pack.test-d.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack.unit.test.d.ts +0 -2
- package/dist/__tests__/scriptable-pack.unit.test.d.ts.map +0 -1
- package/dist/config.d.ts +0 -6
- package/dist/config.d.ts.map +0 -1
- package/dist/config.mjs +0 -29
- package/dist/config.mjs.map +0 -1
- package/src/__tests__/load-asset-config.test.ts +0 -121
- package/src/__tests__/scriptable-pack.test-d.ts +0 -131
- package/src/__tests__/scriptable-pack.unit.test.ts +0 -789
- package/src/config.ts +0 -36
|
@@ -20,9 +20,8 @@ type LoadedDefinition = {
|
|
|
20
20
|
readonly schemaVersion?: unknown;
|
|
21
21
|
readonly packageId?: unknown;
|
|
22
22
|
readonly name?: unknown;
|
|
23
|
-
readonly
|
|
23
|
+
readonly parameters?: unknown;
|
|
24
24
|
readonly sceneComponents?: unknown;
|
|
25
|
-
readonly externalAssets?: unknown;
|
|
26
25
|
readonly build?: unknown;
|
|
27
26
|
};
|
|
28
27
|
let definition: LoadedDefinition | undefined;
|
|
@@ -43,6 +42,25 @@ function failure(error: unknown): unknown {
|
|
|
43
42
|
};
|
|
44
43
|
}
|
|
45
44
|
|
|
45
|
+
function serializableSceneComponents(value: unknown): unknown {
|
|
46
|
+
if (!Array.isArray(value)) return undefined;
|
|
47
|
+
return value.map((component) => {
|
|
48
|
+
const candidate = component as { readonly name?: unknown; readonly fields?: unknown };
|
|
49
|
+
const fields =
|
|
50
|
+
candidate.fields !== null &&
|
|
51
|
+
typeof candidate.fields === 'object' &&
|
|
52
|
+
!Array.isArray(candidate.fields)
|
|
53
|
+
? Object.fromEntries(
|
|
54
|
+
Object.entries(candidate.fields as Record<string, unknown>).map(([name, field]) => [
|
|
55
|
+
name,
|
|
56
|
+
typeof field === 'string' ? field : (field as { readonly type?: unknown })?.type,
|
|
57
|
+
]),
|
|
58
|
+
)
|
|
59
|
+
: undefined;
|
|
60
|
+
return { name: candidate.name, fields };
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
46
64
|
const SOURCE_EXTENSIONS = ['.ts', '.tsx', '.mts', '.cts', '.js', '.mjs', '.cjs'] as const;
|
|
47
65
|
|
|
48
66
|
function resolveRelativeImport(importer: string, specifier: string): string | undefined {
|
|
@@ -71,15 +89,19 @@ function resolveBareImport(importer: string, specifier: string): string | undefi
|
|
|
71
89
|
}
|
|
72
90
|
).resolve;
|
|
73
91
|
if (resolver === undefined) return undefined;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
92
|
+
// Resolve consumer dependencies from the source file first, then resolve
|
|
93
|
+
// Engine self-references from this worker's package. A compiled source
|
|
94
|
+
// closure lives in /tmp, so using only its path makes
|
|
95
|
+
// @forgeax/engine-pack/source disappear from Node's lookup ancestry.
|
|
96
|
+
for (const parent of [pathToFileURL(importer).href, import.meta.url]) {
|
|
97
|
+
try {
|
|
98
|
+
const resolved = resolver(specifier, parent);
|
|
99
|
+
if (resolved.startsWith('file:')) return fileURLToPath(resolved);
|
|
100
|
+
} catch {
|
|
101
|
+
// Try the loader package before treating the import as unavailable.
|
|
102
|
+
}
|
|
82
103
|
}
|
|
104
|
+
return undefined;
|
|
83
105
|
}
|
|
84
106
|
|
|
85
107
|
function resolvedModuleSpecifier(
|
|
@@ -231,10 +253,11 @@ async function loadDefinition(task: {
|
|
|
231
253
|
: {
|
|
232
254
|
schemaVersion: definition.schemaVersion,
|
|
233
255
|
packageId: definition.packageId,
|
|
234
|
-
name: definition.name,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
256
|
+
...(definition.name === undefined ? {} : { name: definition.name }),
|
|
257
|
+
...(definition.parameters === undefined ? {} : { parameters: definition.parameters }),
|
|
258
|
+
...(definition.sceneComponents === undefined
|
|
259
|
+
? {}
|
|
260
|
+
: { sceneComponents: serializableSceneComponents(definition.sceneComponents) }),
|
|
238
261
|
},
|
|
239
262
|
});
|
|
240
263
|
}
|
|
@@ -275,13 +298,22 @@ async function handleMessage(message: unknown): Promise<void> {
|
|
|
275
298
|
return;
|
|
276
299
|
}
|
|
277
300
|
try {
|
|
278
|
-
const
|
|
301
|
+
const context =
|
|
302
|
+
value.context !== null && typeof value.context === 'object'
|
|
303
|
+
? (value.context as { readonly packageId?: unknown; readonly values?: unknown })
|
|
304
|
+
: undefined;
|
|
305
|
+
const buildContext = {
|
|
306
|
+
...(Array.isArray(context?.packageId)
|
|
307
|
+
? { packageId: new Uint8Array(context.packageId as number[]) }
|
|
308
|
+
: {}),
|
|
309
|
+
...(context?.values !== undefined ? { values: context.values } : {}),
|
|
279
310
|
readByGuid(guid: Uint8Array): Promise<unknown> {
|
|
280
311
|
const readId = nextReadId++;
|
|
281
312
|
port.postMessage({ kind: 'asset-read', buildId: value.buildId, readId, guid });
|
|
282
313
|
return new Promise((resolve) => reads.set(readId, resolve));
|
|
283
314
|
},
|
|
284
|
-
}
|
|
315
|
+
};
|
|
316
|
+
const result = await definition.build(buildContext);
|
|
285
317
|
port.postMessage({
|
|
286
318
|
kind: 'build-result',
|
|
287
319
|
buildId: value.buildId,
|