@forgeax/engine-assets-runtime 0.1.3 → 0.1.6

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 (313) hide show
  1. package/README.md +442 -175
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/aabb.unit.test.d.ts +2 -0
  4. package/dist/__tests__/aabb.unit.test.d.ts.map +1 -0
  5. package/dist/__tests__/artifact-integrity.unit.test.d.ts +2 -0
  6. package/dist/__tests__/artifact-integrity.unit.test.d.ts.map +1 -0
  7. package/dist/__tests__/artifact-io.unit.test.d.ts +2 -0
  8. package/dist/__tests__/artifact-io.unit.test.d.ts.map +1 -0
  9. package/dist/__tests__/asset-evidence-sdk.integration.test.d.ts +2 -0
  10. package/dist/__tests__/asset-evidence-sdk.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/asset-evidence.unit.test.d.ts +2 -0
  12. package/dist/__tests__/asset-evidence.unit.test.d.ts.map +1 -0
  13. package/dist/__tests__/asset-kind.unit.test.d.ts +2 -0
  14. package/dist/__tests__/asset-kind.unit.test.d.ts.map +1 -0
  15. package/dist/__tests__/asset-registry-catalog-reconcile.integration.test.d.ts +2 -0
  16. package/dist/__tests__/asset-registry-catalog-reconcile.integration.test.d.ts.map +1 -0
  17. package/dist/__tests__/asset-registry-catalog-reconcile.unit.test.d.ts +2 -0
  18. package/dist/__tests__/asset-registry-catalog-reconcile.unit.test.d.ts.map +1 -0
  19. package/dist/__tests__/asset-registry-catalog.unit.test.d.ts +2 -0
  20. package/dist/__tests__/asset-registry-catalog.unit.test.d.ts.map +1 -0
  21. package/dist/__tests__/asset-registry.pack-cache.test.d.ts +2 -0
  22. package/dist/__tests__/asset-registry.pack-cache.test.d.ts.map +1 -0
  23. package/dist/__tests__/asset-registry.unit.test.d.ts +2 -0
  24. package/dist/__tests__/asset-registry.unit.test.d.ts.map +1 -0
  25. package/dist/__tests__/asset-runtime-error-code-owner.test-d.d.ts +2 -0
  26. package/dist/__tests__/asset-runtime-error-code-owner.test-d.d.ts.map +1 -0
  27. package/dist/__tests__/catalog-replica.unit.test.d.ts +2 -0
  28. package/dist/__tests__/catalog-replica.unit.test.d.ts.map +1 -0
  29. package/dist/__tests__/catalog-source-v2.unit.test.d.ts +2 -0
  30. package/dist/__tests__/catalog-source-v2.unit.test.d.ts.map +1 -0
  31. package/dist/__tests__/catalog-source.unit.test.d.ts +2 -0
  32. package/dist/__tests__/catalog-source.unit.test.d.ts.map +1 -0
  33. package/dist/__tests__/catalog-subscription-order.unit.test.d.ts +2 -0
  34. package/dist/__tests__/catalog-subscription-order.unit.test.d.ts.map +1 -0
  35. package/dist/__tests__/catalog-subscription.unit.test.d.ts +2 -0
  36. package/dist/__tests__/catalog-subscription.unit.test.d.ts.map +1 -0
  37. package/dist/__tests__/decode-image-bytes-pass-through.test.d.ts +2 -0
  38. package/dist/__tests__/decode-image-bytes-pass-through.test.d.ts.map +1 -0
  39. package/dist/__tests__/decode-image-bytes.browser.test.d.ts +2 -0
  40. package/dist/__tests__/decode-image-bytes.browser.test.d.ts.map +1 -0
  41. package/dist/__tests__/decode-image-bytes.test-d.d.ts +2 -0
  42. package/dist/__tests__/decode-image-bytes.test-d.d.ts.map +1 -0
  43. package/dist/__tests__/decode-image-bytes.test.d.ts +2 -0
  44. package/dist/__tests__/decode-image-bytes.test.d.ts.map +1 -0
  45. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts +2 -0
  46. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts.map +1 -0
  47. package/dist/__tests__/errors-asset.unit.test.d.ts +2 -0
  48. package/dist/__tests__/errors-asset.unit.test.d.ts.map +1 -0
  49. package/dist/__tests__/inline-pack-loaders.unit.test.d.ts +2 -0
  50. package/dist/__tests__/inline-pack-loaders.unit.test.d.ts.map +1 -0
  51. package/dist/__tests__/instantiate-context.unit.test.d.ts +2 -0
  52. package/dist/__tests__/instantiate-context.unit.test.d.ts.map +1 -0
  53. package/dist/__tests__/instantiate-publication-fence.unit.test.d.ts +2 -0
  54. package/dist/__tests__/instantiate-publication-fence.unit.test.d.ts.map +1 -0
  55. package/dist/__tests__/instantiate.unit.test.d.ts +2 -0
  56. package/dist/__tests__/instantiate.unit.test.d.ts.map +1 -0
  57. package/dist/__tests__/loader-input-contract.unit.test.d.ts +2 -0
  58. package/dist/__tests__/loader-input-contract.unit.test.d.ts.map +1 -0
  59. package/dist/__tests__/loader-registry.unit.test.d.ts +2 -0
  60. package/dist/__tests__/loader-registry.unit.test.d.ts.map +1 -0
  61. package/dist/__tests__/material-dependency-invalidation.unit.test.d.ts +2 -0
  62. package/dist/__tests__/material-dependency-invalidation.unit.test.d.ts.map +1 -0
  63. package/dist/__tests__/material-generation-cache.unit.test.d.ts +2 -0
  64. package/dist/__tests__/material-generation-cache.unit.test.d.ts.map +1 -0
  65. package/dist/__tests__/material-load-consumer.test-d.d.ts +2 -0
  66. package/dist/__tests__/material-load-consumer.test-d.d.ts.map +1 -0
  67. package/dist/__tests__/material-ready.integration.test.d.ts +2 -0
  68. package/dist/__tests__/material-ready.integration.test.d.ts.map +1 -0
  69. package/dist/__tests__/material-stale-generation.unit.test.d.ts +2 -0
  70. package/dist/__tests__/material-stale-generation.unit.test.d.ts.map +1 -0
  71. package/dist/__tests__/mesh-bin-morph-v3.test.d.ts +2 -0
  72. package/dist/__tests__/mesh-bin-morph-v3.test.d.ts.map +1 -0
  73. package/dist/__tests__/mesh-bin.unit.test.d.ts +2 -0
  74. package/dist/__tests__/mesh-bin.unit.test.d.ts.map +1 -0
  75. package/dist/__tests__/mipmap-generator.unit.test.d.ts +2 -0
  76. package/dist/__tests__/mipmap-generator.unit.test.d.ts.map +1 -0
  77. package/dist/__tests__/pack-artifact-transcode-model-owner.test.d.ts +2 -0
  78. package/dist/__tests__/pack-artifact-transcode-model-owner.test.d.ts.map +1 -0
  79. package/dist/__tests__/pack-basis-load.integration.test.d.ts +2 -0
  80. package/dist/__tests__/pack-basis-load.integration.test.d.ts.map +1 -0
  81. package/dist/__tests__/payload-validate.unit.test.d.ts +2 -0
  82. package/dist/__tests__/payload-validate.unit.test.d.ts.map +1 -0
  83. package/dist/__tests__/plugin.test.d.ts +2 -0
  84. package/dist/__tests__/plugin.test.d.ts.map +1 -0
  85. package/dist/__tests__/registry-concurrency.bench.test.d.ts +2 -0
  86. package/dist/__tests__/registry-concurrency.bench.test.d.ts.map +1 -0
  87. package/dist/__tests__/registry-failure-retry.integration.test.d.ts +2 -0
  88. package/dist/__tests__/registry-failure-retry.integration.test.d.ts.map +1 -0
  89. package/dist/__tests__/registry-load-graph.integration.test.d.ts +2 -0
  90. package/dist/__tests__/registry-load-graph.integration.test.d.ts.map +1 -0
  91. package/dist/__tests__/registry-load-state.unit.test.d.ts +2 -0
  92. package/dist/__tests__/registry-load-state.unit.test.d.ts.map +1 -0
  93. package/dist/__tests__/registry-package-cache.unit.test.d.ts +2 -0
  94. package/dist/__tests__/registry-package-cache.unit.test.d.ts.map +1 -0
  95. package/dist/__tests__/registry-public-ready.unit.test.d.ts +2 -0
  96. package/dist/__tests__/registry-public-ready.unit.test.d.ts.map +1 -0
  97. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts +2 -0
  98. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts.map +1 -0
  99. package/dist/__tests__/scene-handle-fields.unit.test.d.ts +2 -0
  100. package/dist/__tests__/scene-handle-fields.unit.test.d.ts.map +1 -0
  101. package/dist/__tests__/scene-payload.unit.test.d.ts +2 -0
  102. package/dist/__tests__/scene-payload.unit.test.d.ts.map +1 -0
  103. package/dist/__tests__/scene-publication-fence.test.d.ts +2 -0
  104. package/dist/__tests__/scene-publication-fence.test.d.ts.map +1 -0
  105. package/dist/__tests__/scriptable-pack-public-surface.test-d.d.ts +2 -0
  106. package/dist/__tests__/scriptable-pack-public-surface.test-d.d.ts.map +1 -0
  107. package/dist/__tests__/static-rig.integration.test.d.ts +2 -0
  108. package/dist/__tests__/static-rig.integration.test.d.ts.map +1 -0
  109. package/dist/__tests__/validate-material.unit.test.d.ts +2 -0
  110. package/dist/__tests__/validate-material.unit.test.d.ts.map +1 -0
  111. package/dist/__tests__/video-pack-loader.integration.test.d.ts +2 -0
  112. package/dist/__tests__/video-pack-loader.integration.test.d.ts.map +1 -0
  113. package/dist/aabb.d.ts +3 -0
  114. package/dist/aabb.d.ts.map +1 -0
  115. package/dist/asset-registry.d.ts +552 -0
  116. package/dist/asset-registry.d.ts.map +1 -0
  117. package/dist/builtin-asset-registry.d.ts +22 -0
  118. package/dist/builtin-asset-registry.d.ts.map +1 -0
  119. package/dist/catalog-source.d.ts +2 -1
  120. package/dist/catalog-source.d.ts.map +1 -1
  121. package/dist/decode-image-bytes.d.ts +57 -0
  122. package/dist/decode-image-bytes.d.ts.map +1 -0
  123. package/dist/dynamic-texture-store.d.ts +89 -0
  124. package/dist/dynamic-texture-store.d.ts.map +1 -0
  125. package/dist/errors/asset.d.ts +201 -0
  126. package/dist/errors/asset.d.ts.map +1 -0
  127. package/dist/handles.d.ts +141 -0
  128. package/dist/handles.d.ts.map +1 -0
  129. package/dist/image-error.d.ts +6 -0
  130. package/dist/image-error.d.ts.map +1 -0
  131. package/dist/index.d.ts +32 -3
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.mjs +7218 -114
  134. package/dist/index.mjs.map +1 -1
  135. package/dist/internal.d.ts +2 -1
  136. package/dist/internal.d.ts.map +1 -1
  137. package/dist/internal.mjs +317 -3
  138. package/dist/internal.mjs.map +1 -1
  139. package/dist/loader-registry.d.ts +63 -0
  140. package/dist/loader-registry.d.ts.map +1 -0
  141. package/dist/loaders/inline-pack.d.ts +72 -0
  142. package/dist/loaders/inline-pack.d.ts.map +1 -0
  143. package/dist/loaders/mesh-bin.d.ts +21 -0
  144. package/dist/loaders/mesh-bin.d.ts.map +1 -0
  145. package/dist/loaders/pack-artifact.d.ts +20 -0
  146. package/dist/loaders/pack-artifact.d.ts.map +1 -0
  147. package/dist/material/dependency-graph.d.ts +9 -0
  148. package/dist/material/dependency-graph.d.ts.map +1 -0
  149. package/dist/material/generation-cache.d.ts +24 -0
  150. package/dist/material/generation-cache.d.ts.map +1 -0
  151. package/dist/material/inspection.d.ts +24 -0
  152. package/dist/material/inspection.d.ts.map +1 -0
  153. package/dist/material/loader.d.ts +59 -0
  154. package/dist/material/loader.d.ts.map +1 -0
  155. package/dist/material/runtime-shader.d.ts +14 -0
  156. package/dist/material/runtime-shader.d.ts.map +1 -0
  157. package/dist/mesh-bin.d.ts +3 -0
  158. package/dist/mesh-bin.d.ts.map +1 -0
  159. package/dist/mipmap-generator.d.ts +132 -0
  160. package/dist/mipmap-generator.d.ts.map +1 -0
  161. package/dist/payload-validate.d.ts +60 -0
  162. package/dist/payload-validate.d.ts.map +1 -0
  163. package/dist/plugin.d.ts +16 -0
  164. package/dist/plugin.d.ts.map +1 -0
  165. package/dist/registry/artifact-io.d.ts +16 -0
  166. package/dist/registry/artifact-io.d.ts.map +1 -0
  167. package/dist/registry/asset-evidence.d.ts +13 -0
  168. package/dist/registry/asset-evidence.d.ts.map +1 -0
  169. package/dist/registry/catalog-state.d.ts +47 -0
  170. package/dist/registry/catalog-state.d.ts.map +1 -0
  171. package/dist/registry/catalog.d.ts +48 -0
  172. package/dist/registry/catalog.d.ts.map +1 -0
  173. package/dist/registry/instantiate.d.ts +153 -0
  174. package/dist/registry/instantiate.d.ts.map +1 -0
  175. package/dist/registry/load-by-guid.d.ts +247 -0
  176. package/dist/registry/load-by-guid.d.ts.map +1 -0
  177. package/dist/registry/load-state.d.ts +26 -0
  178. package/dist/registry/load-state.d.ts.map +1 -0
  179. package/dist/registry/runtime-projection.d.ts +16 -0
  180. package/dist/registry/runtime-projection.d.ts.map +1 -0
  181. package/dist/registry/scene-publication-fence.d.ts +38 -0
  182. package/dist/registry/scene-publication-fence.d.ts.map +1 -0
  183. package/dist/registry/validate-material.d.ts +77 -0
  184. package/dist/registry/validate-material.d.ts.map +1 -0
  185. package/dist/resolve-asset-handle.d.ts +43 -0
  186. package/dist/resolve-asset-handle.d.ts.map +1 -0
  187. package/dist/resolve-tileset-runtime.d.ts +23 -0
  188. package/dist/resolve-tileset-runtime.d.ts.map +1 -0
  189. package/dist/scene-handle-fields.d.ts +88 -0
  190. package/dist/scene-handle-fields.d.ts.map +1 -0
  191. package/dist/scene-payload.d.ts +15 -0
  192. package/dist/scene-payload.d.ts.map +1 -0
  193. package/dist/wire-default-loaders.d.ts +29 -0
  194. package/dist/wire-default-loaders.d.ts.map +1 -0
  195. package/package.json +22 -9
  196. package/src/__tests__/aabb.unit.test.ts +97 -0
  197. package/src/__tests__/artifact-integrity.unit.test.ts +99 -0
  198. package/src/__tests__/artifact-io.unit.test.ts +127 -0
  199. package/src/__tests__/asset-evidence-sdk.integration.test.ts +32 -0
  200. package/src/__tests__/asset-evidence.unit.test.ts +32 -0
  201. package/src/__tests__/{asset-kind.test.ts → asset-kind.unit.test.ts} +1 -1
  202. package/src/__tests__/asset-registry-catalog-reconcile.integration.test.ts +74 -0
  203. package/src/__tests__/asset-registry-catalog-reconcile.unit.test.ts +89 -0
  204. package/src/__tests__/asset-registry-catalog.unit.test.ts +170 -0
  205. package/src/__tests__/asset-registry.pack-cache.test.ts +96 -0
  206. package/src/__tests__/asset-registry.unit.test.ts +511 -0
  207. package/src/__tests__/asset-runtime-error-code-owner.test-d.ts +63 -0
  208. package/src/__tests__/catalog-replica.unit.test.ts +196 -0
  209. package/src/__tests__/catalog-source-v2.unit.test.ts +158 -0
  210. package/src/__tests__/catalog-source.unit.test.ts +126 -0
  211. package/src/__tests__/catalog-subscription-order.unit.test.ts +65 -0
  212. package/src/__tests__/catalog-subscription.unit.test.ts +28 -0
  213. package/src/__tests__/decode-image-bytes-pass-through.test.ts +34 -0
  214. package/src/__tests__/decode-image-bytes.browser.test.ts +102 -0
  215. package/src/__tests__/decode-image-bytes.test-d.ts +108 -0
  216. package/src/__tests__/decode-image-bytes.test.ts +90 -0
  217. package/src/__tests__/decode-image-mime-owner.test.ts +2 -5
  218. package/src/__tests__/dynamic-texture-store.unit.test.ts +115 -0
  219. package/src/__tests__/errors-asset.unit.test.ts +92 -0
  220. package/src/__tests__/inline-pack-loaders.unit.test.ts +548 -0
  221. package/src/__tests__/instantiate-context.unit.test.ts +65 -0
  222. package/src/__tests__/instantiate-publication-fence.unit.test.ts +158 -0
  223. package/src/__tests__/instantiate.unit.test.ts +684 -0
  224. package/src/__tests__/loader-input-contract.unit.test.ts +89 -0
  225. package/src/__tests__/loader-registry.unit.test.ts +101 -0
  226. package/src/__tests__/material-dependency-invalidation.unit.test.ts +14 -0
  227. package/src/__tests__/material-generation-cache.unit.test.ts +46 -0
  228. package/src/__tests__/material-load-consumer.test-d.ts +42 -0
  229. package/src/__tests__/material-ready.integration.test.ts +492 -0
  230. package/src/__tests__/material-stale-generation.unit.test.ts +152 -0
  231. package/src/__tests__/mesh-bin-morph-v3.test.ts +22 -0
  232. package/src/__tests__/mesh-bin.unit.test.ts +152 -0
  233. package/src/__tests__/mipmap-generator.unit.test.ts +202 -0
  234. package/src/__tests__/pack-artifact-transcode-model-owner.test.ts +32 -0
  235. package/src/__tests__/pack-basis-load.integration.test.ts +168 -0
  236. package/src/__tests__/payload-validate.unit.test.ts +285 -0
  237. package/src/__tests__/plugin.test.ts +55 -0
  238. package/src/__tests__/registry-concurrency.bench.test.ts +40 -0
  239. package/src/__tests__/registry-failure-retry.integration.test.ts +69 -0
  240. package/src/__tests__/registry-load-graph.integration.test.ts +246 -0
  241. package/src/__tests__/registry-load-state.unit.test.ts +35 -0
  242. package/src/__tests__/registry-package-cache.unit.test.ts +53 -0
  243. package/src/__tests__/registry-public-ready.unit.test.ts +38 -0
  244. package/src/__tests__/resolve-asset-handle.unit.test.ts +238 -0
  245. package/src/__tests__/scene-handle-fields.unit.test.ts +129 -0
  246. package/src/__tests__/scene-payload.unit.test.ts +151 -0
  247. package/src/__tests__/scene-publication-fence.test.ts +129 -0
  248. package/src/__tests__/scriptable-pack-public-surface.test-d.ts +16 -0
  249. package/src/__tests__/static-rig.integration.test.ts +8 -0
  250. package/src/__tests__/validate-material.unit.test.ts +359 -0
  251. package/src/__tests__/video-pack-loader.integration.test.ts +83 -0
  252. package/src/aabb.ts +107 -0
  253. package/src/asset-registry.ts +2040 -0
  254. package/src/builtin-asset-registry.ts +164 -0
  255. package/src/catalog-source.ts +14 -70
  256. package/src/decode-image-bytes.ts +126 -0
  257. package/src/dynamic-texture-store.ts +234 -0
  258. package/src/errors/asset.ts +347 -0
  259. package/src/handles.ts +180 -0
  260. package/src/image-error.ts +45 -0
  261. package/src/index.ts +177 -19
  262. package/src/internal.ts +2 -0
  263. package/src/loader-registry.ts +157 -0
  264. package/src/loaders/inline-pack.ts +837 -0
  265. package/src/loaders/mesh-bin.ts +304 -0
  266. package/src/loaders/pack-artifact.ts +665 -0
  267. package/src/material/dependency-graph.ts +46 -0
  268. package/src/material/generation-cache.ts +177 -0
  269. package/src/material/inspection.ts +46 -0
  270. package/src/material/loader.ts +326 -0
  271. package/src/material/runtime-shader.ts +133 -0
  272. package/src/mesh-bin.ts +5 -0
  273. package/src/mipmap-generator.ts +450 -0
  274. package/src/payload-validate.ts +573 -0
  275. package/src/plugin.ts +48 -0
  276. package/src/registry/artifact-io.ts +259 -0
  277. package/src/registry/asset-evidence.ts +51 -0
  278. package/src/registry/catalog-state.ts +409 -0
  279. package/src/registry/catalog.ts +369 -0
  280. package/src/registry/instantiate.ts +1056 -0
  281. package/src/registry/load-by-guid.ts +1657 -0
  282. package/src/registry/load-state.ts +115 -0
  283. package/src/registry/runtime-projection.ts +63 -0
  284. package/src/registry/scene-publication-fence.ts +256 -0
  285. package/src/registry/validate-material.ts +386 -0
  286. package/src/resolve-asset-handle.ts +147 -0
  287. package/src/resolve-tileset-runtime.ts +72 -0
  288. package/src/scene-handle-fields.ts +221 -0
  289. package/src/scene-payload.ts +207 -0
  290. package/src/wire-default-loaders.ts +79 -0
  291. package/dist/__tests__/asset-graph-red.integration.test.d.ts +0 -2
  292. package/dist/__tests__/asset-graph-red.integration.test.d.ts.map +0 -1
  293. package/dist/__tests__/asset-kind.test.d.ts +0 -2
  294. package/dist/__tests__/asset-kind.test.d.ts.map +0 -1
  295. package/dist/__tests__/asset-registry-core.integration.test.d.ts +0 -2
  296. package/dist/__tests__/asset-registry-core.integration.test.d.ts.map +0 -1
  297. package/dist/__tests__/asset-registry-public-api.test-d.d.ts +0 -2
  298. package/dist/__tests__/asset-registry-public-api.test-d.d.ts.map +0 -1
  299. package/dist/__tests__/asset-runtime-core-lifecycle.integration.test.d.ts +0 -2
  300. package/dist/__tests__/asset-runtime-core-lifecycle.integration.test.d.ts.map +0 -1
  301. package/dist/__tests__/asset-runtime-snapshot.unit.test.d.ts +0 -2
  302. package/dist/__tests__/asset-runtime-snapshot.unit.test.d.ts.map +0 -1
  303. package/dist/__tests__/catalog-session-red.unit.test.d.ts +0 -2
  304. package/dist/__tests__/catalog-session-red.unit.test.d.ts.map +0 -1
  305. package/dist/__tests__/registry-lifecycle-red.integration.test.d.ts +0 -2
  306. package/dist/__tests__/registry-lifecycle-red.integration.test.d.ts.map +0 -1
  307. package/src/__tests__/asset-graph-red.integration.test.ts +0 -113
  308. package/src/__tests__/asset-registry-core.integration.test.ts +0 -161
  309. package/src/__tests__/asset-registry-public-api.test-d.ts +0 -31
  310. package/src/__tests__/asset-runtime-core-lifecycle.integration.test.ts +0 -79
  311. package/src/__tests__/asset-runtime-snapshot.unit.test.ts +0 -23
  312. package/src/__tests__/catalog-session-red.unit.test.ts +0 -276
  313. package/src/__tests__/registry-lifecycle-red.integration.test.ts +0 -80
@@ -0,0 +1,9 @@
1
+ export declare class MaterialDependencyGraph {
2
+ #private;
3
+ link(materialGuid: string, dependencies: readonly string[]): void;
4
+ dependentsOf(dependency: string): readonly string[];
5
+ invalidate(dependencies: readonly string[]): readonly string[];
6
+ isInvalidated(materialGuid: string): boolean;
7
+ clear(materialGuid: string): void;
8
+ }
9
+ //# sourceMappingURL=dependency-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/material/dependency-graph.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAuB;;IAKlC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAYjE,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAInD,UAAU,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAiB9D,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI5C,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAGlC"}
@@ -0,0 +1,24 @@
1
+ import { type MaterialErrorFor, type MaterialGenerationVector, type Result } from '@forgeax/engine-types';
2
+ export type { MaterialGenerationVector } from '@forgeax/engine-types';
3
+ export interface MaterialCachedArtifact {
4
+ readonly bytes: Uint8Array;
5
+ }
6
+ export type MaterialStaleGenerationError = MaterialErrorFor<'material-specialization-stale-generation'>;
7
+ export declare class MaterialGenerationCache {
8
+ #private;
9
+ resolve<T>(materialGuid: string, specializationKey: string, load: () => Promise<T>, publicationGeneration?: number): Promise<T>;
10
+ linkResolved(materialGuid: string, specializationKey: string): void;
11
+ getResolvedKey(materialGuid: string): string | undefined;
12
+ storeArtifact(key: string, artifact: MaterialCachedArtifact): void;
13
+ getArtifact(key: string): MaterialCachedArtifact | undefined;
14
+ bump(dependency: string): number;
15
+ generationError(materialGuid: string): MaterialStaleGenerationError | undefined;
16
+ loadWithGeneration<T>(materialGuid: string, dependencies: readonly string[], load: (generation: MaterialGenerationVector) => Promise<{
17
+ readonly generation: MaterialGenerationVector;
18
+ readonly value: T;
19
+ }>): Promise<Result<T, MaterialStaleGenerationError>>;
20
+ private trackDependencies;
21
+ private removeResolved;
22
+ private vector;
23
+ }
24
+ //# sourceMappingURL=generation-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-cache.d.ts","sourceRoot":"","sources":["../../src/material/generation-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAE7B,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,MAAM,4BAA4B,GACtC,gBAAgB,CAAC,0CAA0C,CAAC,CAAC;AAO/D,qBAAa,uBAAuB;;IAUlC,OAAO,CAAC,CAAC,EACP,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,qBAAqB,SAAI,GACxB,OAAO,CAAC,CAAC,CAAC;IAkBb,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAInE,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAIlE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAI5D,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAYhC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,4BAA4B,GAAG,SAAS;IAIzE,kBAAkB,CAAC,CAAC,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,IAAI,EAAE,CACJ,UAAU,EAAE,wBAAwB,KACjC,OAAO,CAAC;QAAE,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,GACjF,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;IAsBnD,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,MAAM;CAOf"}
@@ -0,0 +1,24 @@
1
+ import type { MaterialReady } from './loader.js';
2
+ /**
3
+ * Read-only facts for one GUID after the MaterialReady gate succeeds.
4
+ * `status` is retained for the existing runtime API; `readiness` is the
5
+ * machine-readable first-level field for inspection consumers. This owner
6
+ * does not invent transport provenance or compare transport URLs.
7
+ */
8
+ export interface MaterialRuntimeInfo {
9
+ readonly materialGuid: string;
10
+ readonly readiness: 'ready';
11
+ readonly publicationGeneration: number;
12
+ readonly specializationKey: string;
13
+ readonly artifactDigest: string;
14
+ readonly layoutIdentity: string;
15
+ readonly dependencies: readonly string[];
16
+ readonly profile: string;
17
+ readonly sourceClosure: readonly string[];
18
+ readonly parameterContract: MaterialReady['parameterContract'];
19
+ readonly refs: MaterialReady['record']['refs'];
20
+ readonly receipt: MaterialReady['record']['receipt'];
21
+ readonly status: 'Ready';
22
+ }
23
+ export declare function inspectMaterialRuntime(ready: MaterialReady): MaterialRuntimeInfo;
24
+ //# sourceMappingURL=inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/material/inspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAqBhF"}
@@ -0,0 +1,59 @@
1
+ import { type CookedMaterialRecord } from '@forgeax/engine-pack';
2
+ export interface MaterialLoadRequest {
3
+ readonly guid: string;
4
+ readonly specializationKey: string;
5
+ }
6
+ export interface MaterialReady {
7
+ readonly status: 'Ready';
8
+ readonly guid: string;
9
+ readonly materialGuid: string;
10
+ readonly publicationGeneration: number;
11
+ readonly specializationKey: string;
12
+ readonly artifactDigest: string;
13
+ readonly sourceClosure: readonly string[];
14
+ readonly parameterContract: NonNullable<CookedMaterialRecord['parameterContract']>;
15
+ readonly record: CookedMaterialRecord;
16
+ readonly artifact: CookedMaterialRecord['artifact'];
17
+ }
18
+ export interface MaterialPublication {
19
+ readonly guid: string;
20
+ readonly record: unknown;
21
+ readonly artifactError?: {
22
+ readonly code: 'asset-artifact-missing' | 'asset-artifact-integrity-mismatch';
23
+ readonly expected: string;
24
+ readonly actual?: string;
25
+ };
26
+ readonly artifact?: {
27
+ readonly bytes: Uint8Array;
28
+ readonly digest?: string;
29
+ };
30
+ }
31
+ export type MaterialLoadErrorCode = 'material-specialization-not-cooked' | 'asset-artifact-missing' | 'asset-artifact-integrity-mismatch' | 'material-cook-record-invalid' | 'material-reference-not-ready';
32
+ export interface MaterialLoadErrorDetail {
33
+ readonly guid: string;
34
+ readonly specializationKey: string;
35
+ readonly publicationGeneration?: number;
36
+ readonly field?: string;
37
+ readonly missing?: readonly string[];
38
+ readonly expected?: string;
39
+ readonly actual?: string;
40
+ }
41
+ export interface MaterialLoadError {
42
+ readonly status: 'Error';
43
+ readonly error: {
44
+ readonly code: MaterialLoadErrorCode;
45
+ readonly expected: string;
46
+ readonly hint: string;
47
+ readonly retryable: boolean;
48
+ readonly recoveryActions: readonly string[];
49
+ readonly detail: MaterialLoadErrorDetail;
50
+ };
51
+ }
52
+ export interface MaterialLoaderOptions {
53
+ readonly loadPublication: (guid: string, specializationKey: string) => Promise<MaterialPublication | undefined>;
54
+ readonly loadReference?: (guid: string) => Promise<boolean>;
55
+ }
56
+ export declare function createMaterialLoader(options: MaterialLoaderOptions): {
57
+ load(request: MaterialLoadRequest): Promise<MaterialReady | MaterialLoadError>;
58
+ };
59
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/material/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ShaderRegistry } from '@forgeax/engine-shader';
2
+ import type { MaterialParameter, ParamSchemaEntry } from '@forgeax/engine-types';
3
+ import type { MaterialReady } from './loader';
4
+ /** Project authored MaterialAsset parameters into the runtime shader schema. */
5
+ export declare function materialParametersToParamSchema(parameters: readonly MaterialParameter[], shaderId: string | undefined): readonly ParamSchemaEntry[];
6
+ /** Project authored pass module ids onto the renderer's canonical ids. */
7
+ export declare function runtimeMaterialShaderId(module: string | undefined, passName?: string): string | undefined;
8
+ /**
9
+ * Install every authored pass module from one validated MaterialReady tuple.
10
+ * The publication artifact is the only runtime shader source; no host entry
11
+ * point is allowed to assemble or register the material separately.
12
+ */
13
+ export declare function installMaterialReadyShaders(shaderRegistry: ShaderRegistry, readiness: MaterialReady): void;
14
+ //# sourceMappingURL=runtime-shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-shader.d.ts","sourceRoot":"","sources":["../../src/material/runtime-shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,gFAAgF;AAChF,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,SAAS,gBAAgB,EAAE,CA0B7B;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAsBpB;AAuBD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,aAAa,GACvB,IAAI,CA6BN"}
@@ -0,0 +1,3 @@
1
+ export { MeshBinAssetError } from './errors/asset.js';
2
+ export { type UnpackedMeshBin, unpackMeshBinV4, } from './loaders/mesh-bin.js';
3
+ //# 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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,KAAK,eAAe,EACpB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { type Result, RhiError } from '@forgeax/engine-rhi';
2
+ /**
3
+ * Subset of `RhiDevice` consumed by the mipmap utility (charter F2: only
4
+ * the methods the algorithm actually invokes; the dawn integration tests
5
+ * pass a real `RhiDevice` and the unit cache tests pass a hand-rolled stub).
6
+ *
7
+ * Four entry-points (all synchronous Result):
8
+ * - createSampler (default linear / linear / linear)
9
+ * - createBindGroupLayout
10
+ * - createPipelineLayout
11
+ * - createRenderPipeline (per-format pipeline cache miss)
12
+ *
13
+ * Shader module is NOT an entry-point here; it is supplied by an injected
14
+ * `MipmapShaderModuleFactory` (bug-20260518 D-1) so the utility does not
15
+ * reach into the rhi-webgpu shim package from the runtime layer.
16
+ *
17
+ * Plus `createCommandEncoder` + `queue.submit` are added once the upload
18
+ * call-site (T-M3-05) wires generateMipmaps in; the cache-only public hooks
19
+ * exercised by T-M3-01 do not need them, so they live behind an extended
20
+ * MipmapDeviceForBlit alias.
21
+ */
22
+ export type MipmapDevice = {
23
+ createSampler(desc?: any): Result<any, any>;
24
+ createBindGroupLayout(desc: any): Result<any, any>;
25
+ createPipelineLayout(desc: any): Result<any, any>;
26
+ createRenderPipeline(desc: any): Result<any, any>;
27
+ };
28
+ /**
29
+ * Async shader-module factory injected through the call-chain
30
+ * `createRenderer.ts` -> `AssetRegistry.configureGpuDevice` ->
31
+ * `generateMipmaps` -> `getOrCreateMipmapPipeline` -> `ensureDeviceCache`
32
+ * (bug-20260518 D-1 / D-4).
33
+ *
34
+ * Signature mirrors the top-level async `createShaderModule(device, desc)`
35
+ * exposed by the rhi-webgpu shim (and the rhi-wgpu shim) so the
36
+ * call-site in createRenderer can pass `pack.createShaderModule` directly
37
+ * without a structural cast. The opaque module value is typed `unknown`
38
+ * here -- callers do not introspect it; they hand the value back to
39
+ * `createRenderPipeline` descriptors via the cached `MipmapPipelineCache`.
40
+ */
41
+ export type MipmapShaderModuleFactory = (device: MipmapDevice, desc: {
42
+ code: string;
43
+ label?: string;
44
+ }) => Promise<Result<unknown, RhiError>>;
45
+ /**
46
+ * Compute mip-level count for a 2D texture (research F-1 SSOT formula).
47
+ *
48
+ * Spec-anchor: WebGPU §3.6 texture-creation says `mipLevelCount` defaults
49
+ * to 1; the runtime utility opts AI users into a full chain via
50
+ * `floor(log2(max(width, height))) + 1` -- the same formula greggman /
51
+ * toji / webgpufundamentals all converge on.
52
+ *
53
+ * @example
54
+ * numMipLevels({ width: 256, height: 256 }) // 9
55
+ * numMipLevels({ width: 1, height: 1 }) // 1
56
+ */
57
+ export declare function numMipLevels(size: {
58
+ width: number;
59
+ height: number;
60
+ }): number;
61
+ /**
62
+ * Number of cached pipelines for the device (introspection hook used by
63
+ * T-M3-01 (c) cache-hit / (d) per-device-isolation tests; charter P3
64
+ * explicit failure: a cache size of 0 on a fresh device is a witnessed
65
+ * pre-condition rather than a swept-under hint).
66
+ */
67
+ export declare function mipmapCacheSize(device: MipmapDevice): number;
68
+ /**
69
+ * Get the existing per-format render pipeline or build a fresh one.
70
+ *
71
+ * Per-device WeakMap + per-format `Map<GPUTextureFormat, RenderPipeline>`
72
+ * (greggman 36-44 + 119-122). The shared sampler / shader-module /
73
+ * bind-group-layout are constructed lazily on the first cache miss for a
74
+ * given device and reused across all formats on that device.
75
+ */
76
+ export declare function getOrCreateMipmapPipeline(device: MipmapDevice, format: GPUTextureFormat, asyncCreateShaderModule: MipmapShaderModuleFactory): Promise<Result<any, unknown>>;
77
+ /**
78
+ * Extended device shape used by `generateMipmaps` (call-site T-M3-05).
79
+ * Adds command-encoder + bind-group + texture-view + queue surfaces beyond
80
+ * the cache-only `MipmapDevice` so the pipeline-cache unit tests still
81
+ * compile against the smaller surface.
82
+ */
83
+ export type MipmapBlitDevice = MipmapDevice & {
84
+ createTexture(desc: any): Result<any, any>;
85
+ createBindGroup(desc: any): Result<any, any>;
86
+ createTextureView(texture: any, desc: any): Result<any, any>;
87
+ createCommandEncoder(desc?: any): Result<any, any>;
88
+ readonly queue: {
89
+ submit(buffers: ReadonlyArray<any>): Result<void, any>;
90
+ };
91
+ };
92
+ /**
93
+ * Per-mip render-pass blit-loop (research F-1 SSOT main template).
94
+ *
95
+ * For mip levels 1..levels-1: source view = previous mip {baseMipLevel:i-1,
96
+ * mipLevelCount:1}; destination view = current mip {baseMipLevel:i,
97
+ * mipLevelCount:1, usage: RENDER_ATTACHMENT}; oversized-triangle pipeline
98
+ * draws 3 vertices, fragment shader samples source via linear sampler.
99
+ *
100
+ * Spec sRGB correctness (F-3): when format is `*-srgb`, both views inherit
101
+ * the sRGB encoding so hardware decode -> bilinear in linear -> encode back
102
+ * happens automatically; no special-casing required.
103
+ *
104
+ * `levels` defaults to `numMipLevels({ width, height })`. AI users that
105
+ * already created the texture with explicit `mipLevelCount` should pass the
106
+ * same value here.
107
+ */
108
+ export declare function generateMipmaps(device: MipmapBlitDevice, texture: any, descriptor: {
109
+ readonly format: GPUTextureFormat;
110
+ readonly width: number;
111
+ readonly height: number;
112
+ readonly levels?: number;
113
+ }, asyncCreateShaderModule: MipmapShaderModuleFactory): Promise<Result<void, unknown>>;
114
+ /**
115
+ * Synchronous sibling of `generateMipmaps` (feat-20260601-gpu-resource-store
116
+ * -extraction D-9). Identical per-mip blit loop, but reads the per-format
117
+ * pipeline + shared sampler / layout from the prewarmed device cache instead
118
+ * of building them. The pipeline MUST already be present (via a prior
119
+ * `getOrCreateMipmapPipeline` / `prewarmMipmapPipeline` async call) -- an
120
+ * un-prewarmed device or format returns a structured `RhiError` rather than
121
+ * awaiting a build, so the synchronous `draw(world)` frame contract is never
122
+ * broken. The async build itself does not affect the written bytes (same
123
+ * shader, same encoder sequence), so prewarm + sync blit reproduces the
124
+ * pre-extraction async `generateMipmaps` byte-for-byte (D-9 sub-contract 5).
125
+ */
126
+ export declare function blitMipmapsSync(device: MipmapBlitDevice, texture: any, descriptor: {
127
+ readonly format: GPUTextureFormat;
128
+ readonly width: number;
129
+ readonly height: number;
130
+ readonly levels?: number;
131
+ }): Result<void, RhiError>;
132
+ //# sourceMappingURL=mipmap-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mipmap-generator.d.ts","sourceRoot":"","sources":["../src/mipmap-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { Asset, TilesetAsset } from '@forgeax/engine-types';
2
+ import { AssetError } from '@forgeax/engine-types';
3
+ /**
4
+ * Register-stage fail-fast for `kind: 'mesh'` payloads whose vertices buffer
5
+ * is not the canonical 12-floats-per-vertex layout.
6
+ *
7
+ * Validation spec (plan-strategy D-3):
8
+ * (a) asset.kind !== 'mesh' -> return null immediately
9
+ * (b) vertices.length === 0 && indices.length === 0 -> return null (empty mesh legal)
10
+ * (c) vertices.length % PROCEDURAL_FLOATS_PER_VERTEX !== 0 -> `AssetError` with
11
+ * code='mesh-vertex-stride-mismatch', detail = { vertexCount: 0,
12
+ * floatsPerVertex: vertices.length / PROCEDURAL_FLOATS_PER_VERTEX } (non-integer)
13
+ * (d) otherwise compute vertexCount = vertices.length / PROCEDURAL_FLOATS_PER_VERTEX;
14
+ * scan indices for maxIndex;
15
+ * if maxIndex + 1 !== vertexCount -> same AssetError shape with
16
+ * detail = { vertexCount: maxIndex + 1, floatsPerVertex: vertices.length / (maxIndex + 1) }
17
+ *
18
+ * Isomorphic with `validateMaterialPayload` — both are private module-level helpers,
19
+ * both return `AssetError | null`, and both are called from `register()` at entry.
20
+ *
21
+ * Anchors: charter P3 (structured failure); plan-strategy D-2 (gate at register stage);
22
+ * plan-strategy D-3 (three-branch validation: empty / non-divisible-12 / maxIndex mismatch);
23
+ * plan-strategy D-5 (physical location co-located with validateMaterialPayload).
24
+ */
25
+ export declare function validateMeshPayload(asset: Asset): AssetError | null;
26
+ /**
27
+ * Optional atlas extent for `validateTilesetPayload`. When omitted, the
28
+ * region-rectangle bounds-check is skipped — only the
29
+ * `tiles[].regionIndex` in `[0, regions.length)` invariant runs.
30
+ */
31
+ export interface TilesetValidateOptions {
32
+ readonly atlasWidth?: number;
33
+ readonly atlasHeight?: number;
34
+ }
35
+ /**
36
+ * Validate a `TilesetAsset` payload at register time (M0 baseline rebuild
37
+ * + M1 schema extension). Returns `null` on success or an `AssetError`
38
+ * carrying the first-error details (charter P3 fail-fast). R-6 ordering:
39
+ *
40
+ * 1. `atlases.length >= 1` -- 'tileset-tile-entry-malformed' .field='atlases'.
41
+ * 2. Region rectangle escapes atlas extent (when extent is supplied) --
42
+ * M0 code 'tileset-region-index-out-of-range'.
43
+ * 3. `regions[i].atlasIndex` in `[0, atlases.length)` -- 'tileset-tile-entry-malformed'
44
+ * .field='atlasIndex'.
45
+ * 4. `tiles[i].regionIndex` in `[0, regions.length)` -- M0 code.
46
+ * 5. Per-tile-entry boundaries -- 'tileset-tile-entry-malformed'
47
+ * .field=widthCells | heightCells | pivotX | pivotY | collider,
48
+ * in that order, .scope='tile-entry' .tileEntryIndex=i.
49
+ */
50
+ export declare function validateTilesetPayload(asset: TilesetAsset, opts?: TilesetValidateOptions): AssetError | null;
51
+ /**
52
+ * Compute the implicit atlas extent of a `TilesetAsset` from its grid metadata
53
+ * (`columns * tileWidth` x `rows * tileHeight`). Used by the register-time
54
+ * region-bounds check when the caller does not supply explicit extents.
55
+ */
56
+ export declare function inferAtlasExtent(asset: TilesetAsset): {
57
+ atlasWidth: number;
58
+ atlasHeight: number;
59
+ };
60
+ //# sourceMappingURL=payload-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-validate.d.ts","sourceRoot":"","sources":["../src/payload-validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,KAAK,EAEL,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAqB,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI,CAqMnE;AAoBD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6ID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,IAAI,GAAE,sBAA2B,GAChC,UAAU,GAAG,IAAI,CA6InB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAKjG"}
@@ -0,0 +1,16 @@
1
+ import type { Plugin } from '@forgeax/engine-plugin';
2
+ import type { Loader } from '@forgeax/engine-types';
3
+ import type { AssetRegistry } from './asset-registry';
4
+ import type { PackLoader } from './loader-registry';
5
+ declare module '@forgeax/engine-plugin' {
6
+ interface EngineContextServices {
7
+ assets?: AssetRegistry;
8
+ }
9
+ }
10
+ /** Provide one renderer-owned asset registry to the current Cordis realm. */
11
+ export declare function assetsPlugin(assets: AssetRegistry): Plugin;
12
+ /** Reversibly register one runtime asset loader. */
13
+ export declare function assetLoaderPlugin(loader: Loader<unknown>): Plugin;
14
+ /** Reversibly register one pack loader. */
15
+ export declare function packLoaderPlugin(loader: PackLoader): Plugin;
16
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB;CACF;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQ1D;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAUjE;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAU3D"}
@@ -0,0 +1,16 @@
1
+ import type { ArtifactDescriptor, AssetArtifactError } from '@forgeax/engine-types';
2
+ import { type Result } from '@forgeax/engine-types';
3
+ export interface ArtifactReadRequest {
4
+ readonly packageUrl: string;
5
+ readonly guid: string;
6
+ readonly artifactKey: string;
7
+ readonly descriptor: ArtifactDescriptor;
8
+ }
9
+ export type ArtifactFetcher = (url: string) => Promise<Response>;
10
+ export declare function readArtifact(request: ArtifactReadRequest, fetcher?: ArtifactFetcher): Promise<Result<Uint8Array, AssetArtifactError>>;
11
+ export declare class ArtifactReadCache {
12
+ private readonly cache;
13
+ read(key: string, reader: () => Promise<Result<Uint8Array, AssetArtifactError>>): Promise<Result<Uint8Array, AssetArtifactError>>;
14
+ clear(key?: string): void;
15
+ }
16
+ //# sourceMappingURL=artifact-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-io.d.ts","sourceRoot":"","sources":["../../src/registry/artifact-io.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAgJjE,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,eAAgD,GACxD,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CA4EjD;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsE;IAE5F,IAAI,CACF,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,GAC5D,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAWlD,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAI1B"}
@@ -0,0 +1,13 @@
1
+ import { type AssetEvidence, type AssetEvidenceError, type AssetEvidenceInputs, type Result } from '@forgeax/engine-types';
2
+ /** Host-injected runtime bridge; the adapter never imports CLI, Vite, or Node policy. */
3
+ export interface RuntimeEvidenceSource {
4
+ readonly evidence: (guid: string) => Promise<AssetEvidenceInputs | Result<AssetEvidenceInputs, AssetEvidenceError>>;
5
+ }
6
+ /** Runtime SDK view over the shared AssetEvidence projector. */
7
+ export interface RuntimeAssetEvidenceAdapter {
8
+ readonly inspect: (guid: string) => Promise<Result<AssetEvidence, AssetEvidenceError>>;
9
+ readonly verifyByGuid: (guid: string) => Promise<Result<AssetEvidence, AssetEvidenceError>>;
10
+ }
11
+ /** Create an adapter; omitted source intentionally returns capability-missing errors. */
12
+ export declare function createRuntimeAssetEvidenceAdapter(source?: RuntimeEvidenceSource): RuntimeAssetEvidenceAdapter;
13
+ //# sourceMappingURL=asset-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-evidence.d.ts","sourceRoot":"","sources":["../../src/registry/asset-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGxB,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAE/B,yFAAyF;AACzF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,CACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC;CACrF;AAED,gEAAgE;AAChE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvF,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC7F;AAuBD,yFAAyF;AACzF,wBAAgB,iCAAiC,CAC/C,MAAM,CAAC,EAAE,qBAAqB,GAC7B,2BAA2B,CAI7B"}
@@ -0,0 +1,47 @@
1
+ import { type Result } from '@forgeax/engine-rhi';
2
+ import type { AssetError, CatalogDelta, CatalogDiagnostic, CatalogEntry } from '@forgeax/engine-types';
3
+ import type { CatalogSource } from '../catalog-source';
4
+ export interface CatalogReplicaSnapshot {
5
+ readonly version: number;
6
+ readonly entries: readonly CatalogEntry[];
7
+ readonly stale: boolean;
8
+ readonly diagnostics: readonly CatalogDiagnostic[];
9
+ }
10
+ type SnapshotResult = Result<CatalogReplicaSnapshot, AssetError>;
11
+ type CatalogDeltaListener = (delta: CatalogDelta) => void;
12
+ /**
13
+ * One authoritative catalog read model owned by AssetRegistry.
14
+ *
15
+ * The source subscription is installed before the first enumeration. Deltas
16
+ * observed during that baseline read are buffered and folded afterwards, so
17
+ * an early publication cannot disappear between the two operations.
18
+ */
19
+ export declare class CatalogReplica {
20
+ private readonly source;
21
+ private readonly listeners;
22
+ private readonly entries;
23
+ private pendingBeforeBaseline;
24
+ private pendingDuringReconcile;
25
+ private unsubscribe;
26
+ private startPromise;
27
+ private baselineReady;
28
+ private version;
29
+ private stale;
30
+ private diagnostics;
31
+ private currentSnapshot;
32
+ private readonly expectedScope;
33
+ constructor(source: CatalogSource);
34
+ subscribe(listener: CatalogDeltaListener): () => void;
35
+ snapshot(): CatalogReplicaSnapshot;
36
+ dispose(): void;
37
+ start(): Promise<SnapshotResult>;
38
+ reconcile(): Promise<SnapshotResult>;
39
+ private loadBaseline;
40
+ private receive;
41
+ private fold;
42
+ private safeDelta;
43
+ private publish;
44
+ private makeSnapshot;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=catalog-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-state.d.ts","sourceRoot":"","sources":["../../src/registry/catalog-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpD;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;AACjE,KAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAmM1D;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkE;gBAEpF,MAAM,EAAE,aAAa;IAWjC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAKrD,QAAQ,IAAI,sBAAsB;IAIlC,OAAO,IAAI,IAAI;IAST,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAahC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;YAQ5B,YAAY;IAuB1B,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,IAAI;IAiCZ,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,YAAY;CAYrB"}
@@ -0,0 +1,48 @@
1
+ import { type Result } from '@forgeax/engine-rhi';
2
+ import { type Asset, type AssetEnvelope, AssetError, type AssetPublicationEnvelope, type AssetRelation, type CatalogDiagnostic, type CatalogLifecycle, type CatalogProjection, type CatalogSubject, type CookExecution, type ProviderProvenance, type ResourceRevision, type RuntimeAssetBinding, type SourceOverrideDescriptor, type SourceOverrideMap } from '@forgeax/engine-types';
3
+ import type { AssetRegistry } from '../asset-registry';
4
+ /** Runtime catalog row parsed from the shared pack-index POD shape. */
5
+ export interface CatalogRecord {
6
+ readonly packageUrl: string;
7
+ readonly kind: string;
8
+ readonly authoring?: import('@forgeax/engine-types').AssetAuthoringCapability;
9
+ readonly name?: string;
10
+ readonly refs?: readonly string[];
11
+ readonly sourcePath?: string;
12
+ readonly cookReceiptUrl?: string;
13
+ readonly packageId?: string;
14
+ readonly provenance?: ProviderProvenance;
15
+ readonly revision?: ResourceRevision;
16
+ readonly sourceKey?: string;
17
+ readonly sourceIndex?: number;
18
+ readonly sourceOverrides?: SourceOverrideMap;
19
+ readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];
20
+ readonly relations?: readonly AssetRelation[];
21
+ readonly diagnostics?: readonly CatalogDiagnostic[];
22
+ /** Producer-owned projection axes; never infer these from locators. */
23
+ readonly subject?: CatalogSubject;
24
+ readonly execution?: CookExecution;
25
+ readonly lifecycle?: CatalogLifecycle;
26
+ readonly projection?: CatalogProjection;
27
+ /** Complete producer publication tuple used by Scene publication fences. */
28
+ readonly publication?: AssetPublicationEnvelope;
29
+ }
30
+ /** Build the canonical row for an inline asset without inventing producer facts. */
31
+ export declare function createInlineCatalogRecord(envelope: AssetEnvelope<Asset>, name: string): CatalogRecord;
32
+ type CatalogFetch = (input: string, init?: {
33
+ readonly cache?: 'no-store';
34
+ }) => PromiseLike<{
35
+ readonly ok: boolean;
36
+ json(): Promise<unknown>;
37
+ }>;
38
+ /** Resolve a catalog entry URL against the configured pack-index URL. */
39
+ export declare function resolveCatalogAssetUrl(registry: AssetRegistry, packageUrl: string): string;
40
+ /** Parse the shared pack-index/catalog wire shape without loading payloads. */
41
+ export declare function parseCatalog(raw: unknown, resolveUrl?: (packageUrl: string) => string, expectedRevision?: ResourceRevision, expectedScope?: Pick<RuntimeAssetBinding, 'scopeId' | 'generation'>): Result<Map<string, CatalogRecord>, AssetError>;
42
+ /** Fetch and parse a catalog using the shared JSON/error boundary. */
43
+ export declare function fetchCatalog(url: string, fetch: CatalogFetch, resolveUrl?: (packageUrl: string) => string, expectedRevision?: ResourceRevision, expectedScope?: Pick<RuntimeAssetBinding, 'scopeId' | 'generation'>, requestInit?: {
44
+ readonly cache?: 'no-store';
45
+ }): Promise<Result<Map<string, CatalogRecord>, AssetError>>;
46
+ export declare function fetchPackIndex(registry: AssetRegistry): Promise<Result<Map<string, CatalogRecord>, AssetError>>;
47
+ export {};
48
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/registry/catalog.ts"],"names":[],"mappings":"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"}