@forgeax/engine-pack 0.1.28 → 0.1.29

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.
Files changed (41) hide show
  1. package/README.md +17 -5
  2. package/dist/build.mjs +34 -51
  3. package/dist/build.mjs.map +1 -1
  4. package/dist/cli-asset.mjs +21 -12
  5. package/dist/cli-asset.mjs.map +1 -1
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/inventory/declaration.d.ts +1 -1
  8. package/dist/inventory/declaration.d.ts.map +1 -1
  9. package/dist/inventory/sync.d.ts.map +1 -1
  10. package/dist/native-cooker-registry.d.ts +1 -0
  11. package/dist/native-cooker-registry.d.ts.map +1 -1
  12. package/dist/native-cooker.mjs.map +1 -1
  13. package/dist/pack-authoring-node.mjs +21 -12
  14. package/dist/pack-authoring-node.mjs.map +1 -1
  15. package/dist/runtime.mjs.map +1 -1
  16. package/dist/scanner.mjs +21 -12
  17. package/dist/scanner.mjs.map +1 -1
  18. package/dist/schema-compiled.d.ts.map +1 -1
  19. package/dist/schema.mjs +40 -62
  20. package/dist/schema.mjs.map +1 -1
  21. package/dist/scriptable-pack-node.d.ts.map +1 -1
  22. package/dist/scriptable-pack-node.mjs +11 -3
  23. package/dist/scriptable-pack-node.mjs.map +1 -1
  24. package/dist/scriptable-pack-worker.mjs +5 -1
  25. package/dist/scriptable-pack-worker.mjs.map +1 -1
  26. package/package.json +2 -2
  27. package/src/__tests__/inventory-schema.test.ts +10 -10
  28. package/src/__tests__/pack-authoring.unit.test.ts +2 -4
  29. package/src/__tests__/pack.unit.test.ts +86 -124
  30. package/src/__tests__/scanner-instance-cycle.test.ts +92 -0
  31. package/src/__tests__/scanner-inventory.contract.test.ts +2 -2
  32. package/src/__tests__/scriptable-pack-diagnostic.integration.test.ts +45 -0
  33. package/src/inventory/binding.ts +3 -3
  34. package/src/inventory/declaration.ts +10 -48
  35. package/src/inventory/sync.ts +3 -2
  36. package/src/native-cooker-registry.ts +1 -0
  37. package/src/scanner.ts +28 -28
  38. package/src/schema-compiled.ts +40 -79
  39. package/src/scriptable-pack-node.ts +11 -3
  40. package/src/scriptable-pack-worker.ts +8 -1
  41. package/src/__tests__/scanner-mount-cycle.test.ts +0 -232
@@ -8919,9 +8919,17 @@ var WorkerScriptablePackExecutor = class {
8919
8919
  }
8920
8920
  };
8921
8921
  worker.on("message", onMessage);
8922
- worker.once("error", rejectLoad);
8922
+ const fail = (error) => {
8923
+ rejectLoad(error);
8924
+ const active = this.build;
8925
+ this.build = void 0;
8926
+ active?.reject(error);
8927
+ void this.dispose("failure");
8928
+ };
8929
+ worker.once("error", fail);
8923
8930
  worker.once("exit", (code) => {
8924
- if (code !== 0) rejectLoad(new Error(`ScriptablePack worker exited with code ${code}`));
8931
+ if (this.disposal !== void 0) return;
8932
+ fail(new Error(`ScriptablePack worker exited with code ${code}`));
8925
8933
  });
8926
8934
  });
8927
8935
  }
@@ -9150,16 +9158,17 @@ function makePackError(code, detail) {
9150
9158
  detail
9151
9159
  });
9152
9160
  }
9153
- function* extractMountSourceGuids(asset) {
9161
+ function* extractInstanceSourceGuids(asset) {
9154
9162
  if (asset.kind !== "scene") return;
9155
9163
  const payload = asset.payload;
9156
- if (!payload || !Array.isArray(payload.mounts)) return;
9157
- for (const rawMount of payload.mounts) {
9158
- const mount = rawMount;
9159
- const idx = mount.source;
9160
- if (typeof idx !== "number" || !Number.isInteger(idx)) continue;
9161
- if (idx < 0 || idx >= asset.refs.length) continue;
9162
- const resolved = asset.refs[idx];
9164
+ if (!payload || payload.entities === null || typeof payload.entities !== "object" || Array.isArray(payload.entities))
9165
+ return;
9166
+ for (const rawEntity of Object.values(payload.entities)) {
9167
+ if (rawEntity === null || typeof rawEntity !== "object" || Array.isArray(rawEntity)) continue;
9168
+ const instance = rawEntity.instance;
9169
+ if (instance === null || typeof instance !== "object" || Array.isArray(instance)) continue;
9170
+ const source = instance.source;
9171
+ const resolved = typeof source === "number" && Number.isInteger(source) ? asset.refs[source] : typeof source === "string" ? source : void 0;
9163
9172
  if (typeof resolved !== "string") continue;
9164
9173
  yield resolved.toLowerCase();
9165
9174
  }
@@ -9277,7 +9286,7 @@ async function scanValidated(roots, opts = {}, capture) {
9277
9286
  guidToPath.set(normalizedGuid, packPath);
9278
9287
  packRefs.set(normalizedGuid, [
9279
9288
  ...asset.refs.map((ref) => ref.toLowerCase()),
9280
- ...extractMountSourceGuids(asset)
9289
+ ...extractInstanceSourceGuids(asset)
9281
9290
  ]);
9282
9291
  }
9283
9292
  }
@@ -9381,7 +9390,7 @@ async function scanValidated(roots, opts = {}, capture) {
9381
9390
  guidToPath.set(normalizedGuid, packPath);
9382
9391
  packRefs.set(normalizedGuid, [
9383
9392
  ...asset.refs.map((ref) => ref.toLowerCase()),
9384
- ...extractMountSourceGuids(asset)
9393
+ ...extractInstanceSourceGuids(asset)
9385
9394
  ]);
9386
9395
  }
9387
9396
  capture?.declarations.set(packPath, {