@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.
Files changed (128) hide show
  1. package/README.md +159 -46
  2. package/dist/__tests__/inventory-schema.test.d.ts +2 -0
  3. package/dist/__tests__/inventory-schema.test.d.ts.map +1 -0
  4. package/dist/__tests__/parameterized-pack-authoring-gateway.unit.test.d.ts +2 -0
  5. package/dist/__tests__/parameterized-pack-authoring-gateway.unit.test.d.ts.map +1 -0
  6. package/dist/__tests__/parameterized-pack-scanner.unit.test.d.ts +2 -0
  7. package/dist/__tests__/parameterized-pack-scanner.unit.test.d.ts.map +1 -0
  8. package/dist/__tests__/parameterized-pack.unit.test.d.ts +2 -0
  9. package/dist/__tests__/parameterized-pack.unit.test.d.ts.map +1 -0
  10. package/dist/__tests__/scanner-blacklist.test.d.ts +2 -0
  11. package/dist/__tests__/scanner-blacklist.test.d.ts.map +1 -0
  12. package/dist/build.d.ts +9 -4
  13. package/dist/build.d.ts.map +1 -1
  14. package/dist/build.mjs +3317 -804
  15. package/dist/build.mjs.map +1 -1
  16. package/dist/builtin.mjs +37 -4
  17. package/dist/builtin.mjs.map +1 -1
  18. package/dist/catalog-builder.d.ts.map +1 -1
  19. package/dist/cli-asset.d.ts.map +1 -1
  20. package/dist/cli-asset.mjs +1368 -850
  21. package/dist/cli-asset.mjs.map +1 -1
  22. package/dist/deriveAssetName.d.ts +11 -7
  23. package/dist/deriveAssetName.d.ts.map +1 -1
  24. package/dist/evidence/material-cook.d.ts.map +1 -1
  25. package/dist/evidence/source-inventory.d.ts.map +1 -1
  26. package/dist/guid.d.ts +15 -0
  27. package/dist/guid.d.ts.map +1 -1
  28. package/dist/guid.mjs +53 -5
  29. package/dist/guid.mjs.map +1 -1
  30. package/dist/index.d.ts +3 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.mjs +1255 -561
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/inventory/binding.d.ts +6 -0
  35. package/dist/inventory/binding.d.ts.map +1 -0
  36. package/dist/inventory/declaration.d.ts +24 -0
  37. package/dist/inventory/declaration.d.ts.map +1 -0
  38. package/dist/inventory/index.d.ts +3 -0
  39. package/dist/inventory/index.d.ts.map +1 -0
  40. package/dist/inventory/sync.d.ts +5 -0
  41. package/dist/inventory/sync.d.ts.map +1 -0
  42. package/dist/material-cook.mjs +3 -1
  43. package/dist/material-cook.mjs.map +1 -1
  44. package/dist/name.mjs +4 -7
  45. package/dist/name.mjs.map +1 -1
  46. package/dist/package-finalizer.d.ts +2 -20
  47. package/dist/package-finalizer.d.ts.map +1 -1
  48. package/dist/parameterized-pack-node.d.ts +26 -0
  49. package/dist/parameterized-pack-node.d.ts.map +1 -0
  50. package/dist/parameterized-pack-node.mjs +11093 -0
  51. package/dist/parameterized-pack-node.mjs.map +1 -0
  52. package/dist/parameterized-pack.d.ts +233 -0
  53. package/dist/parameterized-pack.d.ts.map +1 -0
  54. package/dist/resolve-asset-source.d.ts +1 -3
  55. package/dist/resolve-asset-source.d.ts.map +1 -1
  56. package/dist/resolve-asset-source.mjs +6 -81
  57. package/dist/resolve-asset-source.mjs.map +1 -1
  58. package/dist/runtime.mjs +77 -7
  59. package/dist/runtime.mjs.map +1 -1
  60. package/dist/scanner.d.ts +19 -8
  61. package/dist/scanner.d.ts.map +1 -1
  62. package/dist/scanner.mjs +1169 -690
  63. package/dist/scanner.mjs.map +1 -1
  64. package/dist/schema-compiled.d.ts.map +1 -1
  65. package/dist/schema.mjs +79 -7
  66. package/dist/schema.mjs.map +1 -1
  67. package/dist/scriptable-pack-node.d.ts +8 -32
  68. package/dist/scriptable-pack-node.d.ts.map +1 -1
  69. package/dist/scriptable-pack-node.mjs +576 -1021
  70. package/dist/scriptable-pack-node.mjs.map +1 -1
  71. package/dist/scriptable-pack-worker.mjs +29 -11
  72. package/dist/scriptable-pack-worker.mjs.map +1 -1
  73. package/dist/scriptable-pack.d.ts +19 -532
  74. package/dist/scriptable-pack.d.ts.map +1 -1
  75. package/dist/scriptable-pack.mjs +1042 -527
  76. package/dist/scriptable-pack.mjs.map +1 -1
  77. package/package.json +7 -7
  78. package/schema/meta.schema.json +1 -1
  79. package/schema/pack.schema.json +76 -6
  80. package/src/__tests__/guid-collision.unit.test.ts +18 -9
  81. package/src/__tests__/inventory-schema.test.ts +109 -0
  82. package/src/__tests__/pack.unit.test.ts +1 -238
  83. package/src/__tests__/package-finalizer.contract.test.ts +55 -0
  84. package/src/__tests__/parameterized-pack-authoring-gateway.unit.test.ts +249 -0
  85. package/src/__tests__/parameterized-pack-scanner.unit.test.ts +123 -0
  86. package/src/__tests__/parameterized-pack.unit.test.ts +266 -0
  87. package/src/__tests__/resolve-asset-source.test.ts +15 -98
  88. package/src/__tests__/scanner-blacklist.test.ts +55 -0
  89. package/src/__tests__/scanner-inventory.contract.test.ts +14 -15
  90. package/src/__tests__/scanner-inventory.test.ts +24 -12
  91. package/src/__tests__/scriptable-pack-cli.integration.test.ts +4 -9
  92. package/src/__tests__/topology.unit.test.ts +23 -0
  93. package/src/build.ts +28 -18
  94. package/src/catalog-builder.ts +61 -34
  95. package/src/cli-asset.ts +70 -85
  96. package/src/deriveAssetName.ts +14 -13
  97. package/src/evidence/material-cook.ts +3 -1
  98. package/src/evidence/source-inventory.ts +34 -21
  99. package/src/guid.ts +65 -4
  100. package/src/index.ts +12 -11
  101. package/src/inventory/binding.ts +25 -0
  102. package/src/inventory/declaration.ts +168 -0
  103. package/src/inventory/index.ts +18 -0
  104. package/src/inventory/sync.ts +22 -0
  105. package/src/package-finalizer.ts +2 -42
  106. package/src/parameterized-pack-node.ts +1968 -0
  107. package/src/parameterized-pack.ts +1493 -0
  108. package/src/resolve-asset-source.ts +4 -76
  109. package/src/scanner.ts +241 -59
  110. package/src/schema-compiled.ts +2 -0
  111. package/src/scriptable-pack-node.ts +111 -722
  112. package/src/scriptable-pack-worker.ts +48 -16
  113. package/src/scriptable-pack.ts +27 -939
  114. package/dist/.tsbuildinfo +0 -1
  115. package/dist/__tests__/load-asset-config.test.d.ts +0 -2
  116. package/dist/__tests__/load-asset-config.test.d.ts.map +0 -1
  117. package/dist/__tests__/scriptable-pack.test-d.d.ts +0 -2
  118. package/dist/__tests__/scriptable-pack.test-d.d.ts.map +0 -1
  119. package/dist/__tests__/scriptable-pack.unit.test.d.ts +0 -2
  120. package/dist/__tests__/scriptable-pack.unit.test.d.ts.map +0 -1
  121. package/dist/config.d.ts +0 -6
  122. package/dist/config.d.ts.map +0 -1
  123. package/dist/config.mjs +0 -29
  124. package/dist/config.mjs.map +0 -1
  125. package/src/__tests__/load-asset-config.test.ts +0 -121
  126. package/src/__tests__/scriptable-pack.test-d.ts +0 -131
  127. package/src/__tests__/scriptable-pack.unit.test.ts +0 -789
  128. package/src/config.ts +0 -36
package/dist/builtin.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { sha1 } from '@noble/hashes/legacy.js';
1
2
  import { uuidv7obj } from 'uuidv7';
2
3
 
3
4
  // src/guid.ts
@@ -28,6 +29,10 @@ function bytesToDashForm(bytes) {
28
29
  return `${h[bytes[0]]}${h[bytes[1]]}${h[bytes[2]]}${h[bytes[3]]}-${h[bytes[4]]}${h[bytes[5]]}-${h[bytes[6]]}${h[bytes[7]]}-${h[bytes[8]]}${h[bytes[9]]}-${h[bytes[10]]}${h[bytes[11]]}${h[bytes[12]]}${h[bytes[13]]}${h[bytes[14]]}${h[bytes[15]]}`;
29
30
  }
30
31
  var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
32
+ var PACK_SOURCE_KEY_RE = /^[a-z0-9][a-z0-9._-]*(\/[a-z0-9][a-z0-9._-]*)*$/;
33
+ function isValidPackSourceKey(value) {
34
+ return typeof value === "string" && PACK_SOURCE_KEY_RE.test(value);
35
+ }
31
36
  function isValidAssetGuidString(value) {
32
37
  return typeof value === "string" && UUID_RE.test(value);
33
38
  }
@@ -39,6 +44,33 @@ function dashFormToBytes(dashForm) {
39
44
  }
40
45
  return bytes;
41
46
  }
47
+ function randomUuidBytes() {
48
+ const uuid = uuidv7obj();
49
+ const bytes = new Uint8Array(16);
50
+ bytes.set(uuid.bytes);
51
+ return bytes;
52
+ }
53
+ function derivedGuid(namespace, sourceKey) {
54
+ if (!(namespace instanceof Uint8Array) || namespace.byteLength !== 16) {
55
+ throw new TypeError("AssetGuid.derive requires a 16-byte PackageId");
56
+ }
57
+ if (!isValidPackSourceKey(sourceKey)) {
58
+ const error = new TypeError(
59
+ `AssetGuid.derive received invalid sourceKey ${JSON.stringify(sourceKey)}`
60
+ );
61
+ Object.defineProperty(error, "code", { value: "pack-source-key-invalid" });
62
+ throw error;
63
+ }
64
+ const name = new TextEncoder().encode(sourceKey);
65
+ const input = new Uint8Array(namespace.byteLength + name.byteLength);
66
+ input.set(namespace, 0);
67
+ input.set(name, namespace.byteLength);
68
+ const digest = sha1(input);
69
+ const result = digest.slice(0, 16);
70
+ result[6] = (result[6] ?? 0) & 15 | 80;
71
+ result[8] = (result[8] ?? 0) & 63 | 128;
72
+ return brand(result);
73
+ }
42
74
  var AssetGuid = {
43
75
  /**
44
76
  * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.
@@ -82,10 +114,11 @@ var AssetGuid = {
82
114
  * Works in both Node.js and browser environments.
83
115
  */
84
116
  random() {
85
- const uuid = uuidv7obj();
86
- const bytes = new Uint8Array(16);
87
- bytes.set(uuid.bytes);
88
- return brand(bytes);
117
+ return brand(randomUuidBytes());
118
+ },
119
+ /** Derive the stable UUIDv5 projection for one Pack subject and sourceKey. */
120
+ derive(namespace, sourceKey) {
121
+ return derivedGuid(namespace, sourceKey);
89
122
  }
90
123
  };
91
124
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/guid.ts","../src/builtin.ts"],"names":[],"mappings":"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","file":"builtin.mjs","sourcesContent":["// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return brand(bytes);\n },\n} as const;\n","import type { AssetGuid } from './guid.js';\nimport { AssetGuid as AssetGuidNS } from './guid.js';\n\n/**\n * ForgeaX engine namespace UUID for UUIDv5 derivation.\n * Value: 9a09805a-7623-482e-b322-9fc3591f2a38\n * This is a custom namespace; it is intentionally NOT the RFC 4122 X.500 namespace.\n */\nconst _nsResult = AssetGuidNS.parse('9a09805a-7623-482e-b322-9fc3591f2a38');\nif (!_nsResult.ok) throw new Error('builtin: FORGEAX_NAMESPACE is not a valid UUID');\nexport const FORGEAX_NAMESPACE: AssetGuid = _nsResult.value;\n\n/**\n * Derive a stable UUIDv5 AssetGuid from a name within the ForgeaX namespace.\n * Uses SHA-1 via Node.js `node:crypto` or Web Crypto API (RFC 4122 §4.3).\n * Deterministic: same name always produces the same bytes.\n */\nexport async function deriveBuiltin(name: string): Promise<AssetGuid> {\n const nsBytes = FORGEAX_NAMESPACE;\n const nameBytes = new TextEncoder().encode(name);\n\n // Concatenate namespace bytes + name bytes for SHA-1 digest\n const concat = new Uint8Array(16 + nameBytes.length);\n concat.set(nsBytes, 0);\n concat.set(nameBytes, 16);\n\n let hashBytes: Uint8Array;\n\n if (typeof globalThis !== 'undefined' && globalThis.crypto?.subtle !== undefined) {\n // Browser / Web Crypto path\n const buffer = await globalThis.crypto.subtle.digest('SHA-1', concat);\n hashBytes = new Uint8Array(buffer);\n } else {\n // Node.js path\n const { createHash } = await import('node:crypto');\n const hash = createHash('sha1');\n hash.update(concat);\n hashBytes = hash.digest();\n }\n\n // RFC 4122 §4.3: assemble UUIDv5 from first 16 bytes of SHA-1 digest\n const uuidBytes = new Uint8Array(16);\n uuidBytes.set(hashBytes.subarray(0, 16));\n\n // Set version bits: byte 6, high nibble = 0x5 (version 5)\n // biome-ignore lint/style/noNonNullAssertion: uuidBytes is 16 bytes\n uuidBytes[6] = (uuidBytes[6]! & 0x0f) | 0x50;\n // Set variant bits: byte 8, high 2 bits = 0b10\n // biome-ignore lint/style/noNonNullAssertion: uuidBytes is 16 bytes\n uuidBytes[8] = (uuidBytes[8]! & 0x3f) | 0x80;\n\n return uuidBytes as AssetGuid;\n}\n\nfunction formatSync(bytes: Uint8Array): string {\n return AssetGuidNS.format(bytes as AssetGuid);\n}\n\nasync function deriveSync(name: string): Promise<string> {\n return formatSync(await deriveBuiltin(name));\n}\n\n/**\n * Pre-computed compile-time constant for the HANDLE_CUBE builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_CUBE') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_CUBE = await deriveSync('HANDLE_CUBE');\n\n/**\n * Pre-computed compile-time constant for the HANDLE_TRIANGLE builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_TRIANGLE') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_TRIANGLE = await deriveSync('HANDLE_TRIANGLE');\n\n/**\n * Pre-computed compile-time constant for the HANDLE_QUAD builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_QUAD') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_QUAD = await deriveSync('HANDLE_QUAD');\n\n/** Pre-computed UUIDv5 for the Engine-owned sphere mesh descriptor. */\nexport const BUILTIN_HANDLE_SPHERE = await deriveSync('HANDLE_SPHERE');\n\n/** Pre-computed UUIDv5 for the Engine-owned nine-slice quad descriptor. */\nexport const BUILTIN_HANDLE_NINESLICE_QUAD = await deriveSync('HANDLE_NINESLICE_QUAD');\n\n/** Pre-computed UUIDv5 for the Engine-owned cylinder mesh descriptor. */\nexport const BUILTIN_HANDLE_CYLINDER = await deriveSync('HANDLE_CYLINDER');\n\nexport type BuiltinMeshGeometry =\n | 'procedural-cube'\n | 'procedural-triangle'\n | 'procedural-quad'\n | 'procedural-sphere'\n | 'procedural-nine-slice-quad'\n | 'procedural-cylinder';\n\n/**\n * The complete Engine-owned procedural mesh catalog.\n *\n * These are Pack descriptors, not runtime payloads: the Geometry decoder\n * expands each `geometry` token into its validated MeshAsset. DevKit uses this\n * list to materialize only the descriptors a standalone project does not\n * already author, keeping the shipped game self-contained without duplicate\n * GUID declarations.\n */\nexport const BUILTIN_MESH_ASSETS: ReadonlyArray<{\n readonly guid: string;\n readonly geometry: BuiltinMeshGeometry;\n}> = Object.freeze([\n { guid: BUILTIN_HANDLE_CUBE, geometry: 'procedural-cube' },\n { guid: BUILTIN_HANDLE_TRIANGLE, geometry: 'procedural-triangle' },\n { guid: BUILTIN_HANDLE_QUAD, geometry: 'procedural-quad' },\n { guid: BUILTIN_HANDLE_SPHERE, geometry: 'procedural-sphere' },\n { guid: BUILTIN_HANDLE_NINESLICE_QUAD, geometry: 'procedural-nine-slice-quad' },\n { guid: BUILTIN_HANDLE_CYLINDER, geometry: 'procedural-cylinder' },\n]);\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/guid.ts","../src/builtin.ts"],"names":[],"mappings":"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","file":"builtin.mjs","sourcesContent":["// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { sha1 } from '@noble/hashes/legacy.js';\nimport { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Pack-level identity. It is intentionally not assignable to AssetGuid. */\nexport type PackageId = Uint8Array & { readonly __packageIdBrand: 'PackageId' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** Stable author-owned output identity. Paths and payloads are not identity inputs. */\nexport const PACK_SOURCE_KEY_RE = /^[a-z0-9][a-z0-9._-]*(\\/[a-z0-9][a-z0-9._-]*)*$/;\n\nexport function isValidPackSourceKey(value: unknown): value is string {\n return typeof value === 'string' && PACK_SOURCE_KEY_RE.test(value);\n}\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction randomUuidBytes(): Uint8Array {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return bytes;\n}\n\nfunction packageId(value: Uint8Array): PackageId {\n return value as PackageId;\n}\n\n/** Utilities for the pack-level UUID identity. */\nexport const PackageId = {\n parse(dashForm: string): GuidResult<PackageId, PackError> {\n const parsed = AssetGuid.parse(dashForm);\n return parsed.ok ? { ok: true, value: packageId(parsed.value) } : parsed;\n },\n format(value: PackageId): string {\n return bytesToDashForm(value);\n },\n random(): PackageId {\n return packageId(randomUuidBytes());\n },\n} as const;\n\nfunction derivedGuid(namespace: PackageId, sourceKey: string): AssetGuid {\n if (!(namespace instanceof Uint8Array) || namespace.byteLength !== 16) {\n throw new TypeError('AssetGuid.derive requires a 16-byte PackageId');\n }\n if (!isValidPackSourceKey(sourceKey)) {\n const error = new TypeError(\n `AssetGuid.derive received invalid sourceKey ${JSON.stringify(sourceKey)}`,\n ) as TypeError & { readonly code?: string };\n Object.defineProperty(error, 'code', { value: 'pack-source-key-invalid' });\n throw error;\n }\n const name = new TextEncoder().encode(sourceKey);\n const input = new Uint8Array(namespace.byteLength + name.byteLength);\n input.set(namespace, 0);\n input.set(name, namespace.byteLength);\n const digest = sha1(input);\n const result = digest.slice(0, 16);\n // RFC 4122 §4.1.1 / §4.1.3: UUID version 5, RFC variant.\n result[6] = ((result[6] ?? 0) & 0x0f) | 0x50;\n result[8] = ((result[8] ?? 0) & 0x3f) | 0x80;\n return brand(result);\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n return brand(randomUuidBytes());\n },\n\n /** Derive the stable UUIDv5 projection for one Pack subject and sourceKey. */\n derive(namespace: PackageId, sourceKey: string): AssetGuid {\n return derivedGuid(namespace, sourceKey);\n },\n} as const;\n","import type { AssetGuid } from './guid.js';\nimport { AssetGuid as AssetGuidNS } from './guid.js';\n\n/**\n * ForgeaX engine namespace UUID for UUIDv5 derivation.\n * Value: 9a09805a-7623-482e-b322-9fc3591f2a38\n * This is a custom namespace; it is intentionally NOT the RFC 4122 X.500 namespace.\n */\nconst _nsResult = AssetGuidNS.parse('9a09805a-7623-482e-b322-9fc3591f2a38');\nif (!_nsResult.ok) throw new Error('builtin: FORGEAX_NAMESPACE is not a valid UUID');\nexport const FORGEAX_NAMESPACE: AssetGuid = _nsResult.value;\n\n/**\n * Derive a stable UUIDv5 AssetGuid from a name within the ForgeaX namespace.\n * Uses SHA-1 via Node.js `node:crypto` or Web Crypto API (RFC 4122 §4.3).\n * Deterministic: same name always produces the same bytes.\n */\nexport async function deriveBuiltin(name: string): Promise<AssetGuid> {\n const nsBytes = FORGEAX_NAMESPACE;\n const nameBytes = new TextEncoder().encode(name);\n\n // Concatenate namespace bytes + name bytes for SHA-1 digest\n const concat = new Uint8Array(16 + nameBytes.length);\n concat.set(nsBytes, 0);\n concat.set(nameBytes, 16);\n\n let hashBytes: Uint8Array;\n\n if (typeof globalThis !== 'undefined' && globalThis.crypto?.subtle !== undefined) {\n // Browser / Web Crypto path\n const buffer = await globalThis.crypto.subtle.digest('SHA-1', concat);\n hashBytes = new Uint8Array(buffer);\n } else {\n // Node.js path\n const { createHash } = await import('node:crypto');\n const hash = createHash('sha1');\n hash.update(concat);\n hashBytes = hash.digest();\n }\n\n // RFC 4122 §4.3: assemble UUIDv5 from first 16 bytes of SHA-1 digest\n const uuidBytes = new Uint8Array(16);\n uuidBytes.set(hashBytes.subarray(0, 16));\n\n // Set version bits: byte 6, high nibble = 0x5 (version 5)\n // biome-ignore lint/style/noNonNullAssertion: uuidBytes is 16 bytes\n uuidBytes[6] = (uuidBytes[6]! & 0x0f) | 0x50;\n // Set variant bits: byte 8, high 2 bits = 0b10\n // biome-ignore lint/style/noNonNullAssertion: uuidBytes is 16 bytes\n uuidBytes[8] = (uuidBytes[8]! & 0x3f) | 0x80;\n\n return uuidBytes as AssetGuid;\n}\n\nfunction formatSync(bytes: Uint8Array): string {\n return AssetGuidNS.format(bytes as AssetGuid);\n}\n\nasync function deriveSync(name: string): Promise<string> {\n return formatSync(await deriveBuiltin(name));\n}\n\n/**\n * Pre-computed compile-time constant for the HANDLE_CUBE builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_CUBE') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_CUBE = await deriveSync('HANDLE_CUBE');\n\n/**\n * Pre-computed compile-time constant for the HANDLE_TRIANGLE builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_TRIANGLE') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_TRIANGLE = await deriveSync('HANDLE_TRIANGLE');\n\n/**\n * Pre-computed compile-time constant for the HANDLE_QUAD builtin GUID.\n * Derived from: deriveBuiltin('HANDLE_QUAD') under FORGEAX_NAMESPACE.\n */\nexport const BUILTIN_HANDLE_QUAD = await deriveSync('HANDLE_QUAD');\n\n/** Pre-computed UUIDv5 for the Engine-owned sphere mesh descriptor. */\nexport const BUILTIN_HANDLE_SPHERE = await deriveSync('HANDLE_SPHERE');\n\n/** Pre-computed UUIDv5 for the Engine-owned nine-slice quad descriptor. */\nexport const BUILTIN_HANDLE_NINESLICE_QUAD = await deriveSync('HANDLE_NINESLICE_QUAD');\n\n/** Pre-computed UUIDv5 for the Engine-owned cylinder mesh descriptor. */\nexport const BUILTIN_HANDLE_CYLINDER = await deriveSync('HANDLE_CYLINDER');\n\nexport type BuiltinMeshGeometry =\n | 'procedural-cube'\n | 'procedural-triangle'\n | 'procedural-quad'\n | 'procedural-sphere'\n | 'procedural-nine-slice-quad'\n | 'procedural-cylinder';\n\n/**\n * The complete Engine-owned procedural mesh catalog.\n *\n * These are Pack descriptors, not runtime payloads: the Geometry decoder\n * expands each `geometry` token into its validated MeshAsset. DevKit uses this\n * list to materialize only the descriptors a standalone project does not\n * already author, keeping the shipped game self-contained without duplicate\n * GUID declarations.\n */\nexport const BUILTIN_MESH_ASSETS: ReadonlyArray<{\n readonly guid: string;\n readonly geometry: BuiltinMeshGeometry;\n}> = Object.freeze([\n { guid: BUILTIN_HANDLE_CUBE, geometry: 'procedural-cube' },\n { guid: BUILTIN_HANDLE_TRIANGLE, geometry: 'procedural-triangle' },\n { guid: BUILTIN_HANDLE_QUAD, geometry: 'procedural-quad' },\n { guid: BUILTIN_HANDLE_SPHERE, geometry: 'procedural-sphere' },\n { guid: BUILTIN_HANDLE_NINESLICE_QUAD, geometry: 'procedural-nine-slice-quad' },\n { guid: BUILTIN_HANDLE_CYLINDER, geometry: 'procedural-cylinder' },\n]);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAShF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAE3B,MAAM,cAAc,CAAC;AAEtB,KAAK,iBAAiB,GAAG,IAAI,CAC3B,qBAAqB,EACnB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,iBAAiB,GACjB,WAAW,CACd,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,6BAA6B,GAC7B,qBAAqB,GACrB,gCAAgC,GAChC,iCAAiC,GACjC,4BAA4B,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,gBAAgB,GAAG,WAAW,CAAC,KAC5E,OAAO,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,yBAAyB,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,6BAA6B,CAAC,mBAAmB,CAAC,GACpE,MAAM,CASR;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACpD,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAMpB;AAoKD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAgE7B"}
1
+ {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-asset.d.ts","sourceRoot":"","sources":["../src/cli-asset.ts"],"names":[],"mappings":";AAgCA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAqG3D;AA2BD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAiChF"}
1
+ {"version":3,"file":"cli-asset.d.ts","sourceRoot":"","sources":["../src/cli-asset.ts"],"names":[],"mappings":";AAgCA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAwBD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAgF3D;AA2BD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAiChF"}