@carbonenginejs/runtime-resource 0.20.0 → 0.22.0

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 (306) hide show
  1. package/NOTICE +6 -0
  2. package/dist/CjsResMan.js +1374 -1318
  3. package/dist/CjsResMan.js.map +1 -1
  4. package/dist/format/CjsFormat.js +393 -164
  5. package/dist/format/CjsFormat.js.map +1 -1
  6. package/dist/format/CjsFormatStore.js +315 -0
  7. package/dist/format/CjsFormatStore.js.map +1 -0
  8. package/dist/format/CjsResourceProbe.js +66 -234
  9. package/dist/format/CjsResourceProbe.js.map +1 -1
  10. package/dist/format/payloadContract.js +47 -6
  11. package/dist/format/payloadContract.js.map +1 -1
  12. package/dist/formats/black/CjsBlackFormat.js +23 -6
  13. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  14. package/dist/formats/bnk/CjsBnkFormat.js +122 -120
  15. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  16. package/dist/formats/bnk/core/helpers.js +5 -15
  17. package/dist/formats/bnk/core/helpers.js.map +1 -1
  18. package/dist/formats/cmf/CjsCmfFormat.js +31 -14
  19. package/dist/formats/cmf/CjsCmfFormat.js.map +1 -1
  20. package/dist/formats/dds/CjsDdsFormat.js +29 -19
  21. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  22. package/dist/formats/dds/core/helpers.js +4 -5
  23. package/dist/formats/dds/core/helpers.js.map +1 -1
  24. package/dist/formats/dxbc/CjsDxbcFormat.js +15 -13
  25. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  26. package/dist/formats/fbx/CjsFbxFormat.js +27 -19
  27. package/dist/formats/fbx/CjsFbxFormat.js.map +1 -1
  28. package/dist/formats/fbx/core/helpers.js +4 -4
  29. package/dist/formats/fbx/core/helpers.js.map +1 -1
  30. package/dist/formats/flac/CjsFlacFormat.js +19 -17
  31. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  32. package/dist/formats/flac/core/helpers.js +5 -11
  33. package/dist/formats/flac/core/helpers.js.map +1 -1
  34. package/dist/formats/fsd/32/CjsFsd32Format.js +55 -0
  35. package/dist/formats/fsd/32/CjsFsd32Format.js.map +1 -0
  36. package/dist/formats/fsd/32/index.js +2 -0
  37. package/dist/formats/fsd/32/index.js.map +1 -0
  38. package/dist/formats/fsd/64/CjsFsd64Format.js +119 -0
  39. package/dist/formats/fsd/64/CjsFsd64Format.js.map +1 -0
  40. package/dist/formats/fsd/64/core/CjsFsd64Binary.js +393 -0
  41. package/dist/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -0
  42. package/dist/formats/fsd/64/core/CjsFsd64Reader.js +138 -0
  43. package/dist/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -0
  44. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js +389 -0
  45. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js.map +1 -0
  46. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js +43 -0
  47. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js.map +1 -0
  48. package/dist/formats/fsd/64/core/fsd64Records.js +60 -0
  49. package/dist/formats/fsd/64/core/fsd64Records.js.map +1 -0
  50. package/dist/formats/fsd/64/index.js +7 -0
  51. package/dist/formats/fsd/64/index.js.map +1 -0
  52. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js +33 -0
  53. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js.map +1 -0
  54. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js +35 -0
  55. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js.map +1 -0
  56. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js +50 -0
  57. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js.map +1 -0
  58. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js +75 -0
  59. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js.map +1 -0
  60. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js +57 -0
  61. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js.map +1 -0
  62. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js +201 -0
  63. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js.map +1 -0
  64. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js +73 -0
  65. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js.map +1 -0
  66. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js +53 -0
  67. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js.map +1 -0
  68. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js +44 -0
  69. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js.map +1 -0
  70. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js +38 -0
  71. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js.map +1 -0
  72. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js +34 -0
  73. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js.map +1 -0
  74. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js +34 -0
  75. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js.map +1 -0
  76. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js +44 -0
  77. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js.map +1 -0
  78. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js +81 -0
  79. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js.map +1 -0
  80. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js +34 -0
  81. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js.map +1 -0
  82. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js +41 -0
  83. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js.map +1 -0
  84. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js +63 -0
  85. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js.map +1 -0
  86. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js +76 -0
  87. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js.map +1 -0
  88. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js +38 -0
  89. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js.map +1 -0
  90. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js +74 -0
  91. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js.map +1 -0
  92. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js +59 -0
  93. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js.map +1 -0
  94. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js +46 -0
  95. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js.map +1 -0
  96. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js +133 -0
  97. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js.map +1 -0
  98. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js +236 -0
  99. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js.map +1 -0
  100. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js +60 -0
  101. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js.map +1 -0
  102. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js +95 -0
  103. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js.map +1 -0
  104. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js +106 -0
  105. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js.map +1 -0
  106. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js +86 -0
  107. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js.map +1 -0
  108. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js +117 -0
  109. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js.map +1 -0
  110. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js +70 -0
  111. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js.map +1 -0
  112. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js +173 -0
  113. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js.map +1 -0
  114. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js +77 -0
  115. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js.map +1 -0
  116. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js +62 -0
  117. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js.map +1 -0
  118. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js +63 -0
  119. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js.map +1 -0
  120. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js +86 -0
  121. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js.map +1 -0
  122. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js +72 -0
  123. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js.map +1 -0
  124. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js +326 -0
  125. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js.map +1 -0
  126. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js +279 -0
  127. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js.map +1 -0
  128. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js +64 -0
  129. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js.map +1 -0
  130. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js +40 -0
  131. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js.map +1 -0
  132. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js +113 -0
  133. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js.map +1 -0
  134. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js +130 -0
  135. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js.map +1 -0
  136. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js +38 -0
  137. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js.map +1 -0
  138. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js +45 -0
  139. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js.map +1 -0
  140. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js +44 -0
  141. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js.map +1 -0
  142. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js +163 -0
  143. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js.map +1 -0
  144. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js +37 -0
  145. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js.map +1 -0
  146. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js +77 -0
  147. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js.map +1 -0
  148. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js +37 -0
  149. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js.map +1 -0
  150. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js +74 -0
  151. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js.map +1 -0
  152. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js +44 -0
  153. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js.map +1 -0
  154. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js +120 -0
  155. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js.map +1 -0
  156. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js +49 -0
  157. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js.map +1 -0
  158. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js +73 -0
  159. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js.map +1 -0
  160. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js +122 -0
  161. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js.map +1 -0
  162. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js +83 -0
  163. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js.map +1 -0
  164. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js +194 -0
  165. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js.map +1 -0
  166. package/dist/formats/fsd/64/readers/index.js +58 -0
  167. package/dist/formats/fsd/64/readers/index.js.map +1 -0
  168. package/dist/formats/fsd/CjsFsdFormat.js +62 -0
  169. package/dist/formats/fsd/CjsFsdFormat.js.map +1 -0
  170. package/dist/formats/fsd/index.js +9 -0
  171. package/dist/formats/fsd/index.js.map +1 -0
  172. package/dist/formats/gif/CjsGifFormat.js +26 -16
  173. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  174. package/dist/formats/gif/core/helpers.js +6 -18
  175. package/dist/formats/gif/core/helpers.js.map +1 -1
  176. package/dist/formats/gltf/CjsGltfFormat.js +25 -13
  177. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
  178. package/dist/formats/gr2/CjsGr2Format.js +27 -6
  179. package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
  180. package/dist/formats/hlsl/CjsHlslFormat.js +20 -16
  181. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
  182. package/dist/formats/hlsl/core/analysis.js +1 -1
  183. package/dist/formats/index.js +5 -0
  184. package/dist/formats/index.js.map +1 -1
  185. package/dist/formats/jpeg/CjsJpegFormat.js +26 -19
  186. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  187. package/dist/formats/jpeg/core/helpers.js +6 -15
  188. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  189. package/dist/formats/jpeg/core/jpeg.js +0 -3
  190. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  191. package/dist/formats/mp3/CjsMp3Format.js +19 -19
  192. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  193. package/dist/formats/mp3/core/helpers.js +5 -11
  194. package/dist/formats/mp3/core/helpers.js.map +1 -1
  195. package/dist/formats/mp4/CjsMp4Format.js +20 -19
  196. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  197. package/dist/formats/mp4/core/helpers.js +6 -15
  198. package/dist/formats/mp4/core/helpers.js.map +1 -1
  199. package/dist/formats/obj/CjsObjFormat.js +25 -12
  200. package/dist/formats/obj/CjsObjFormat.js.map +1 -1
  201. package/dist/formats/ogg/CjsOggFormat.js +26 -17
  202. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  203. package/dist/formats/ogg/core/helpers.js +5 -16
  204. package/dist/formats/ogg/core/helpers.js.map +1 -1
  205. package/dist/formats/pickle/CjsPickleFormat.js +64 -5
  206. package/dist/formats/pickle/CjsPickleFormat.js.map +1 -1
  207. package/dist/formats/png/CjsPngFormat.js +28 -19
  208. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  209. package/dist/formats/png/core/helpers.js +5 -14
  210. package/dist/formats/png/core/helpers.js.map +1 -1
  211. package/dist/formats/red/CjsRedFormat.js +19 -5
  212. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  213. package/dist/formats/schemabound/CjsSchemaBoundFormat.js +48 -38
  214. package/dist/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  215. package/dist/formats/sqlite/CjsSqliteFormat.js +49 -41
  216. package/dist/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  217. package/dist/formats/static/CjsStaticFormat.js +15 -57
  218. package/dist/formats/static/CjsStaticFormat.js.map +1 -1
  219. package/dist/formats/static/staticContainers.js +6 -6
  220. package/dist/formats/static/staticContainers.js.map +1 -1
  221. package/dist/formats/stl/CjsStlFormat.js +25 -12
  222. package/dist/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/formats/tga/CjsTgaFormat.js +26 -19
  224. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  225. package/dist/formats/tga/core/helpers.js +7 -22
  226. package/dist/formats/tga/core/helpers.js.map +1 -1
  227. package/dist/formats/wav/CjsWavFormat.js +26 -19
  228. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  229. package/dist/formats/wav/core/helpers.js +7 -16
  230. package/dist/formats/wav/core/helpers.js.map +1 -1
  231. package/dist/formats/webgl/CjsWebglFormat.js +11 -13
  232. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
  233. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +31 -1
  234. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  235. package/dist/formats/webgl/core/readGlslEffectContainer.js +8 -8
  236. package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
  237. package/dist/formats/webgpu/CjsWebgpuFormat.js +11 -5
  238. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  239. package/dist/formats/webm/CjsWebmFormat.js +20 -19
  240. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  241. package/dist/formats/webm/core/helpers.js +6 -15
  242. package/dist/formats/webm/core/helpers.js.map +1 -1
  243. package/dist/formats/webp/CjsWebpFormat.js +19 -17
  244. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  245. package/dist/formats/webp/core/helpers.js +5 -11
  246. package/dist/formats/webp/core/helpers.js.map +1 -1
  247. package/dist/formats/wem/CjsWemFormat.js +128 -141
  248. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  249. package/dist/formats/wem/core/helpers.js +1 -114
  250. package/dist/formats/wem/core/helpers.js.map +1 -1
  251. package/dist/formats/wem/core/{resolve.js → probeCodecSupport.js} +11 -18
  252. package/dist/formats/wem/core/probeCodecSupport.js.map +1 -0
  253. package/dist/formats/yaml/CjsYamlFormat.js +20 -5
  254. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  255. package/dist/generated/index.js +2 -0
  256. package/dist/generated/index.js.map +1 -0
  257. package/dist/generated/resources/Tr2RaycastGeometryRes.js +34 -0
  258. package/dist/generated/resources/Tr2RaycastGeometryRes.js.map +1 -0
  259. package/dist/generated/resources/index.js +2 -0
  260. package/dist/generated/resources/index.js.map +1 -0
  261. package/dist/index.js +3 -1
  262. package/dist/index.js.map +1 -1
  263. package/dist/resource/CjsResource.js +134 -0
  264. package/dist/resource/CjsResource.js.map +1 -1
  265. package/dist/resource/ResourceRequirement.js +42 -0
  266. package/dist/resource/ResourceRequirement.js.map +1 -0
  267. package/dist/resource/Tr2LightProfileRes.js +2 -1
  268. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +34 -7
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +184 -7
  272. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -1
  273. package/dist/resource/geometry/granny/TriGrannyRes.js +20 -8
  274. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -1
  275. package/dist/resource/index.js +1 -0
  276. package/dist/resource/index.js.map +1 -1
  277. package/dist/resource/resourceBoundary.js +24 -1
  278. package/dist/resource/resourceBoundary.js.map +1 -1
  279. package/dist/resource/shader/Tr2EffectRes.js +2 -1
  280. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  281. package/dist/resource/texture/CjsTextureArrayRes.js +2 -1
  282. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  283. package/dist/resource/texture/Tr2ImageRes.js +2 -1
  284. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  285. package/dist/resource/texture/TriTextureRes.js +40 -2
  286. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  287. package/docs/architecture.md +121 -116
  288. package/docs/concepts/format-capabilities.md +90 -0
  289. package/docs/formats/README.md +14 -6
  290. package/docs/formats/fsd.md +104 -0
  291. package/docs/formats/gr2.md +1 -1
  292. package/docs/formats/hlsl/reference/api.md +6 -4
  293. package/docs/formats/provenance.md +18 -0
  294. package/docs/formats/schemabound.md +10 -4
  295. package/docs/formats/static.md +26 -26
  296. package/docs/formats/webgpu/reference/api.md +4 -3
  297. package/docs/reference/classes/core.md +22 -2
  298. package/docs/reference/classes/formats.md +643 -1
  299. package/docs/reference/classes/resources.md +463 -453
  300. package/docs/reference/queues.md +205 -194
  301. package/docs/roadmap.md +14 -18
  302. package/format-notices/fsd/LICENSE +21 -0
  303. package/format-notices/fsd/NOTICE +11 -0
  304. package/package.json +70 -64
  305. package/dist/formats/wem/core/resolve.js.map +0 -1
  306. package/docs/concepts/format-type-resolution.md +0 -79
@@ -0,0 +1,393 @@
1
+ const HEADER_SIZE = 32;
2
+ const strictTextDecoder = new TextDecoder("utf-8", {
3
+ fatal: true
4
+ });
5
+
6
+ /**
7
+ * Provides bounds-checked access to 64-bit FSD container bytes.
8
+ */
9
+ class CjsFsd64Binary {
10
+ /**
11
+ * Binary value types accepted by declarative reader schemas.
12
+ *
13
+ * Schema files store these property names as strings so they remain inert
14
+ * JSON. Schema validation resolves the names through this object.
15
+ */
16
+ static Type = {
17
+ /**
18
+ * A single flag bit inside a byte, addressed by `offset` plus `bit`.
19
+ *
20
+ * The container packs several independent flags into one byte, so a
21
+ * schema that called such a field `UINT_8` would describe the byte
22
+ * rather than the field and hand a consumer 1 where it expected true.
23
+ */
24
+ BOOLEAN: "BOOLEAN",
25
+ FLOAT_32: "FLOAT_32",
26
+ FLOAT_64: "FLOAT_64",
27
+ INT_32: "INT_32",
28
+ INT_32_IDENTIFIER: "INT_32_IDENTIFIER",
29
+ LIST: "LIST",
30
+ MAP: "MAP",
31
+ OBJECT: "OBJECT",
32
+ STRING: "STRING",
33
+ UINT_8: "UINT_8",
34
+ UINT_32: "UINT_32",
35
+ UINT_32_IDENTIFIER: "UINT_32_IDENTIFIER",
36
+ UINT_64: "UINT_64",
37
+ UINT_64_IDENTIFIER: "UINT_64_IDENTIFIER"
38
+ };
39
+ #bytes;
40
+ #view;
41
+
42
+ /** Creates a validated view over caller-supplied container bytes. */
43
+ constructor(bytes, options = {}) {
44
+ this.#bytes = NormalizeBytes(bytes);
45
+ this.#view = new DataView(this.#bytes.buffer, this.#bytes.byteOffset, this.#bytes.byteLength);
46
+ this.#AssertContainer(options.path ?? "FSD input");
47
+ if (options.schemaID) {
48
+ this.AssertSchema(options.schemaID, options.path);
49
+ }
50
+ }
51
+
52
+ /** Returns the complete container byte length. */
53
+ get ByteLength() {
54
+ return this.#bytes.byteLength;
55
+ }
56
+
57
+ /** Returns the payload length declared by the container header. */
58
+ get PayloadLength() {
59
+ return this.Uint64(24);
60
+ }
61
+
62
+ /** Returns the first byte offset after the fixed container header. */
63
+ get RootOffset() {
64
+ return HEADER_SIZE;
65
+ }
66
+
67
+ /** Returns the lossless hexadecimal schema identity from the header. */
68
+ get SchemaID() {
69
+ return Hex(this.#bytes.subarray(0, 24));
70
+ }
71
+
72
+ /**
73
+ * Returns the layout half of the schema identity.
74
+ *
75
+ * The 24-byte identity is two values: the first sixteen bytes identify the
76
+ * record layout and are stable across builds and across publishers, while
77
+ * the last eight are a digest of the data itself and change whenever the
78
+ * file's contents do. Measured 2026-08-14 across CCP build 3466501 and
79
+ * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes
80
+ * and differed on the last eight in every case, the sole exception being a
81
+ * file that is byte-identical on both.
82
+ */
83
+ get LayoutID() {
84
+ return Hex(this.#bytes.subarray(0, 16));
85
+ }
86
+
87
+ /**
88
+ * Rejects the container when its schema identity differs from the expected value.
89
+ *
90
+ * A 32-character expectation pins the layout alone, which is what a reader
91
+ * wants: it keeps decoding the same dataset after its contents change and
92
+ * accepts the same layout from another publisher. A 48-character
93
+ * expectation additionally pins the content digest, so it accepts exactly
94
+ * one build's bytes.
95
+ *
96
+ * Several identities may be passed. The identity is not a hash of the byte
97
+ * layout alone, so one layout can appear under two of them: Infinity's
98
+ * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read
99
+ * `b7107f57…`, yet every offset, every presence bit and the modifier entry
100
+ * are the same. A reader may accept both, and should say what it measured
101
+ * to justify each one.
102
+ */
103
+ AssertSchema(expected, path = "FSD input") {
104
+ const wanted = (Array.isArray(expected) ? expected : [expected]).map(value => String(value).toLowerCase());
105
+ const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));
106
+ if (wanted.some(value => actual.has(value))) return;
107
+
108
+ // Reported in the form that was asked for, so a reader pinning the
109
+ // content digest is not told about the layout half it did not ask about.
110
+ const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;
111
+ const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);
112
+ error.code = "CJS_FSD_SCHEMA_UNSUPPORTED";
113
+ error.actualSchemaID = reported;
114
+ error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;
115
+ error.path = path;
116
+ throw error;
117
+ }
118
+
119
+ /** Resolves one payload-relative offset to an absolute container offset. */
120
+ Absolute(relativeOffset) {
121
+ const absolute = this.RootOffset + relativeOffset;
122
+ this.AssertRange(absolute, 0);
123
+ return absolute;
124
+ }
125
+
126
+ /** Aligns an absolute byte offset to the next eight-byte boundary. */
127
+ Align8(offset) {
128
+ return Math.ceil(offset / 8) * 8;
129
+ }
130
+
131
+ /** Rejects a byte range which falls outside the supplied container. */
132
+ AssertRange(offset, size) {
133
+ if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) || offset < 0 || size < 0 || offset + size > this.ByteLength) {
134
+ const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);
135
+ error.code = "CJS_FSD_OFFSET_INVALID";
136
+ error.offset = offset;
137
+ error.size = size;
138
+ throw error;
139
+ }
140
+ }
141
+
142
+ /** Reads one unsigned byte at an absolute offset. */
143
+ Byte(offset) {
144
+ this.AssertRange(offset, 1);
145
+ return this.#view.getUint8(offset);
146
+ }
147
+
148
+ /** Returns a bounded byte view without copying its contents. */
149
+ Bytes(offset, size) {
150
+ this.AssertRange(offset, size);
151
+ return this.#bytes.subarray(offset, offset + size);
152
+ }
153
+
154
+ /** Reads one little-endian 32-bit floating-point value. */
155
+ Float32(offset) {
156
+ this.AssertRange(offset, 4);
157
+ return this.#view.getFloat32(offset, true);
158
+ }
159
+
160
+ /** Reads one little-endian 64-bit floating-point value. */
161
+ Float64(offset) {
162
+ this.AssertRange(offset, 8);
163
+ return this.#view.getFloat64(offset, true);
164
+ }
165
+
166
+ /** Reads one little-endian signed 32-bit integer. */
167
+ Int32(offset) {
168
+ this.AssertRange(offset, 4);
169
+ return this.#view.getInt32(offset, true);
170
+ }
171
+
172
+ /** Reads one little-endian unsigned 32-bit integer. */
173
+ Uint32(offset) {
174
+ this.AssertRange(offset, 4);
175
+ return this.#view.getUint32(offset, true);
176
+ }
177
+
178
+ /** Reads one little-endian unsigned 64-bit safe integer. */
179
+ Uint64(offset) {
180
+ this.AssertRange(offset, 8);
181
+ const value = this.#view.getBigUint64(offset, true);
182
+ if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
183
+ const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);
184
+ error.code = "CJS_FSD_UINT64_UNSAFE";
185
+ error.offset = offset;
186
+ throw error;
187
+ }
188
+ return Number(value);
189
+ }
190
+
191
+ /**
192
+ * Reads an unsigned 64-bit identity without passing through a JavaScript
193
+ * number, returning its lossless decimal JSON representation.
194
+ */
195
+ Uint64Identity(offset) {
196
+ this.AssertRange(offset, 8);
197
+ return this.#view.getBigUint64(offset, true).toString(10);
198
+ }
199
+
200
+ /** Returns a safe unsigned 64-bit value or null for an invalid read. */
201
+ TryUint64(offset) {
202
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength) {
203
+ return null;
204
+ }
205
+ const value = this.#view.getBigUint64(offset, true);
206
+ return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;
207
+ }
208
+
209
+ /**
210
+ * Returns the absolute offsets of every record in an FSD hash-map.
211
+ */
212
+ MapEntries(recordSize, headerOffset = this.RootOffset) {
213
+ AssertRecordSize(recordSize);
214
+ this.AssertRange(headerOffset, 16);
215
+ const expectedCount = this.Uint64(headerOffset + 8);
216
+ if (expectedCount === 0) {
217
+ return [];
218
+ }
219
+ const tableOffset = this.Absolute(this.Uint64(headerOffset));
220
+ const bucketCount = this.Uint64(tableOffset - 8);
221
+ this.#AssertElementRange(tableOffset, bucketCount, 8);
222
+ const offsets = [];
223
+ for (let index = 0; index < bucketCount; index++) {
224
+ const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));
225
+ const recordCount = this.Uint64(bucketOffset - 8);
226
+ this.#AssertElementRange(bucketOffset, recordCount, recordSize);
227
+ for (let recordIndex = 0; recordIndex < recordCount; recordIndex++) {
228
+ offsets.push(bucketOffset + recordIndex * recordSize);
229
+ }
230
+ }
231
+ if (offsets.length !== expectedCount) {
232
+ const error = new Error(`FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`);
233
+ error.code = "CJS_FSD_RECORD_COUNT_INVALID";
234
+ error.actualCount = offsets.length;
235
+ error.expectedCount = expectedCount;
236
+ throw error;
237
+ }
238
+ return offsets;
239
+ }
240
+
241
+ /**
242
+ * Returns absolute offsets for a count-prefixed FSD list.
243
+ */
244
+ ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER) {
245
+ AssertRecordSize(recordSize);
246
+ if (relativeOffset === 0) {
247
+ return [];
248
+ }
249
+ if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8) {
250
+ const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);
251
+ error.code = "CJS_FSD_OFFSET_INVALID";
252
+ error.offset = relativeOffset;
253
+ throw error;
254
+ }
255
+ const dataOffset = this.Absolute(relativeOffset);
256
+ const count = this.Uint64(dataOffset - 8);
257
+ if (count > maximumCount) {
258
+ const error = new RangeError(`FSD list count exceeds its limit: ${count}`);
259
+ error.code = "CJS_FSD_COUNT_INVALID";
260
+ error.count = count;
261
+ error.maximumCount = maximumCount;
262
+ throw error;
263
+ }
264
+ this.#AssertElementRange(dataOffset, count, recordSize);
265
+ return Array.from({
266
+ length: count
267
+ }, (_, index) => dataOffset + index * recordSize);
268
+ }
269
+
270
+ /** Returns a printable ASCII string or null for invalid evidence. */
271
+ StringAtDataPointer(relativeOffset, maximumLength = 4096) {
272
+ const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);
273
+ if (value === null) {
274
+ return null;
275
+ }
276
+ for (const character of value) {
277
+ const code = character.codePointAt(0);
278
+ if (code < 32 || code > 126) {
279
+ return null;
280
+ }
281
+ }
282
+ return value;
283
+ }
284
+
285
+ /** Returns a strict UTF-8 string or null for invalid evidence. */
286
+ Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096) {
287
+ if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8) {
288
+ return null;
289
+ }
290
+ const dataOffset = this.RootOffset + relativeOffset;
291
+ const length = this.TryUint64(dataOffset - 8);
292
+ if (length === null || length > maximumLength || dataOffset + length > this.ByteLength) {
293
+ return null;
294
+ }
295
+ try {
296
+ return strictTextDecoder.decode(this.#bytes.subarray(dataOffset, dataOffset + length));
297
+ } catch {
298
+ return null;
299
+ }
300
+ }
301
+
302
+ /** Returns a bounded printable string list or null for invalid evidence. */
303
+ StringList(relativeOffset, maximumCount = 100) {
304
+ if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8) {
305
+ return null;
306
+ }
307
+ const tableOffset = this.RootOffset + relativeOffset;
308
+ const count = this.TryUint64(tableOffset - 8);
309
+ if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength) {
310
+ return null;
311
+ }
312
+ const values = [];
313
+ for (let index = 0; index < count; index++) {
314
+ const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));
315
+ if (value === null) {
316
+ return null;
317
+ }
318
+ values.push(value);
319
+ }
320
+ return values;
321
+ }
322
+
323
+ /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */
324
+ Uint32List(relativeOffset, maximumCount = 100) {
325
+ if (relativeOffset === 0) {
326
+ return [];
327
+ }
328
+ if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8) {
329
+ return null;
330
+ }
331
+ const dataOffset = this.RootOffset + relativeOffset;
332
+ const count = this.TryUint64(dataOffset - 8);
333
+ if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength) {
334
+ return null;
335
+ }
336
+ return Array.from({
337
+ length: count
338
+ }, (_, index) => this.Uint32(dataOffset + index * 4));
339
+ }
340
+
341
+ /** Validates the byte range occupied by a repeated fixed-size value. */
342
+ #AssertElementRange(offset, count, size) {
343
+ if (!Number.isSafeInteger(count) || count < 0 || count > Math.floor(this.ByteLength / size)) {
344
+ const error = new RangeError(`FSD element count is invalid: ${count}`);
345
+ error.code = "CJS_FSD_COUNT_INVALID";
346
+ error.count = count;
347
+ error.elementSize = size;
348
+ throw error;
349
+ }
350
+ this.AssertRange(offset, count * size);
351
+ }
352
+
353
+ /** Validates the fixed header and its declared payload length. */
354
+ #AssertContainer(path) {
355
+ if (this.ByteLength < HEADER_SIZE) {
356
+ const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);
357
+ error.code = "CJS_FSD_HEADER_INVALID";
358
+ throw error;
359
+ }
360
+ const payloadLength = this.Uint64(24);
361
+ if (payloadLength !== this.ByteLength - HEADER_SIZE) {
362
+ const error = new Error(`FSD payload length does not match its header: ${path}`);
363
+ error.code = "CJS_FSD_LENGTH_INVALID";
364
+ error.actualLength = this.ByteLength - HEADER_SIZE;
365
+ error.expectedLength = payloadLength;
366
+ throw error;
367
+ }
368
+ }
369
+ }
370
+ function AssertRecordSize(value) {
371
+ if (!Number.isSafeInteger(value) || value < 1) {
372
+ const error = new RangeError(`FSD record size is invalid: ${value}`);
373
+ error.code = "CJS_FSD_RECORD_SIZE_INVALID";
374
+ throw error;
375
+ }
376
+ }
377
+ function Hex(bytes) {
378
+ return Array.from(bytes, value => value.toString(16).padStart(2, "0")).join("");
379
+ }
380
+ function NormalizeBytes(input) {
381
+ if (input instanceof ArrayBuffer) {
382
+ return new Uint8Array(input);
383
+ }
384
+ if (ArrayBuffer.isView(input)) {
385
+ return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
386
+ }
387
+ const error = new TypeError("FSD input must be an ArrayBuffer or an ArrayBuffer view.");
388
+ error.code = "CJS_FSD_INPUT_INVALID";
389
+ throw error;
390
+ }
391
+
392
+ export { CjsFsd64Binary };
393
+ //# sourceMappingURL=CjsFsd64Binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CjsFsd64Binary.js","sources":["../../../../../../src/formats/fsd/64/core/CjsFsd64Binary.js"],"sourcesContent":["const HEADER_SIZE = 32;\nconst strictTextDecoder = new TextDecoder(\"utf-8\", { fatal: true });\n\n/**\n * Provides bounds-checked access to 64-bit FSD container bytes.\n */\nexport class CjsFsd64Binary\n{\n /**\n * Binary value types accepted by declarative reader schemas.\n *\n * Schema files store these property names as strings so they remain inert\n * JSON. Schema validation resolves the names through this object.\n */\n static Type = {\n /**\n * A single flag bit inside a byte, addressed by `offset` plus `bit`.\n *\n * The container packs several independent flags into one byte, so a\n * schema that called such a field `UINT_8` would describe the byte\n * rather than the field and hand a consumer 1 where it expected true.\n */\n BOOLEAN: \"BOOLEAN\",\n FLOAT_32: \"FLOAT_32\",\n FLOAT_64: \"FLOAT_64\",\n INT_32: \"INT_32\",\n INT_32_IDENTIFIER: \"INT_32_IDENTIFIER\",\n LIST: \"LIST\",\n MAP: \"MAP\",\n OBJECT: \"OBJECT\",\n STRING: \"STRING\",\n UINT_8: \"UINT_8\",\n UINT_32: \"UINT_32\",\n UINT_32_IDENTIFIER: \"UINT_32_IDENTIFIER\",\n UINT_64: \"UINT_64\",\n UINT_64_IDENTIFIER: \"UINT_64_IDENTIFIER\",\n };\n\n #bytes;\n #view;\n\n /** Creates a validated view over caller-supplied container bytes. */\n constructor(bytes, options = {})\n {\n this.#bytes = NormalizeBytes(bytes);\n this.#view = new DataView(\n this.#bytes.buffer,\n this.#bytes.byteOffset,\n this.#bytes.byteLength,\n );\n\n this.#AssertContainer(options.path ?? \"FSD input\");\n\n if (options.schemaID)\n {\n this.AssertSchema(options.schemaID, options.path);\n }\n }\n\n /** Returns the complete container byte length. */\n get ByteLength()\n {\n return this.#bytes.byteLength;\n }\n\n /** Returns the payload length declared by the container header. */\n get PayloadLength()\n {\n return this.Uint64(24);\n }\n\n /** Returns the first byte offset after the fixed container header. */\n get RootOffset()\n {\n return HEADER_SIZE;\n }\n\n /** Returns the lossless hexadecimal schema identity from the header. */\n get SchemaID()\n {\n return Hex(this.#bytes.subarray(0, 24));\n }\n\n /**\n * Returns the layout half of the schema identity.\n *\n * The 24-byte identity is two values: the first sixteen bytes identify the\n * record layout and are stable across builds and across publishers, while\n * the last eight are a digest of the data itself and change whenever the\n * file's contents do. Measured 2026-08-14 across CCP build 3466501 and\n * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes\n * and differed on the last eight in every case, the sole exception being a\n * file that is byte-identical on both.\n */\n get LayoutID()\n {\n return Hex(this.#bytes.subarray(0, 16));\n }\n\n /**\n * Rejects the container when its schema identity differs from the expected value.\n *\n * A 32-character expectation pins the layout alone, which is what a reader\n * wants: it keeps decoding the same dataset after its contents change and\n * accepts the same layout from another publisher. A 48-character\n * expectation additionally pins the content digest, so it accepts exactly\n * one build's bytes.\n *\n * Several identities may be passed. The identity is not a hash of the byte\n * layout alone, so one layout can appear under two of them: Infinity's\n * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read\n * `b7107f57…`, yet every offset, every presence bit and the modifier entry\n * are the same. A reader may accept both, and should say what it measured\n * to justify each one.\n */\n AssertSchema(expected, path = \"FSD input\")\n {\n const wanted = (Array.isArray(expected) ? expected : [ expected ])\n .map(value => String(value).toLowerCase());\n const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));\n\n if (wanted.some(value => actual.has(value))) return;\n\n // Reported in the form that was asked for, so a reader pinning the\n // content digest is not told about the layout half it did not ask about.\n const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;\n const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);\n\n error.code = \"CJS_FSD_SCHEMA_UNSUPPORTED\";\n error.actualSchemaID = reported;\n error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;\n error.path = path;\n throw error;\n }\n\n /** Resolves one payload-relative offset to an absolute container offset. */\n Absolute(relativeOffset)\n {\n const absolute = this.RootOffset + relativeOffset;\n this.AssertRange(absolute, 0);\n return absolute;\n }\n\n /** Aligns an absolute byte offset to the next eight-byte boundary. */\n Align8(offset)\n {\n return Math.ceil(offset / 8) * 8;\n }\n\n /** Rejects a byte range which falls outside the supplied container. */\n AssertRange(offset, size)\n {\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) ||\n offset < 0 || size < 0 || offset + size > this.ByteLength)\n {\n const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);\n error.code = \"CJS_FSD_OFFSET_INVALID\";\n error.offset = offset;\n error.size = size;\n throw error;\n }\n }\n\n /** Reads one unsigned byte at an absolute offset. */\n Byte(offset)\n {\n this.AssertRange(offset, 1);\n return this.#view.getUint8(offset);\n }\n\n /** Returns a bounded byte view without copying its contents. */\n Bytes(offset, size)\n {\n this.AssertRange(offset, size);\n return this.#bytes.subarray(offset, offset + size);\n }\n\n /** Reads one little-endian 32-bit floating-point value. */\n Float32(offset)\n {\n this.AssertRange(offset, 4);\n return this.#view.getFloat32(offset, true);\n }\n\n /** Reads one little-endian 64-bit floating-point value. */\n Float64(offset)\n {\n this.AssertRange(offset, 8);\n return this.#view.getFloat64(offset, true);\n }\n\n /** Reads one little-endian signed 32-bit integer. */\n Int32(offset)\n {\n this.AssertRange(offset, 4);\n return this.#view.getInt32(offset, true);\n }\n\n /** Reads one little-endian unsigned 32-bit integer. */\n Uint32(offset)\n {\n this.AssertRange(offset, 4);\n return this.#view.getUint32(offset, true);\n }\n\n /** Reads one little-endian unsigned 64-bit safe integer. */\n Uint64(offset)\n {\n this.AssertRange(offset, 8);\n const value = this.#view.getBigUint64(offset, true);\n\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\n {\n const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);\n error.code = \"CJS_FSD_UINT64_UNSAFE\";\n error.offset = offset;\n throw error;\n }\n\n return Number(value);\n }\n\n /**\n * Reads an unsigned 64-bit identity without passing through a JavaScript\n * number, returning its lossless decimal JSON representation.\n */\n Uint64Identity(offset)\n {\n this.AssertRange(offset, 8);\n return this.#view.getBigUint64(offset, true).toString(10);\n }\n\n /** Returns a safe unsigned 64-bit value or null for an invalid read. */\n TryUint64(offset)\n {\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength)\n {\n return null;\n }\n\n const value = this.#view.getBigUint64(offset, true);\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;\n }\n\n /**\n * Returns the absolute offsets of every record in an FSD hash-map.\n */\n MapEntries(recordSize, headerOffset = this.RootOffset)\n {\n AssertRecordSize(recordSize);\n this.AssertRange(headerOffset, 16);\n\n const expectedCount = this.Uint64(headerOffset + 8);\n\n if (expectedCount === 0)\n {\n return [];\n }\n\n const tableOffset = this.Absolute(this.Uint64(headerOffset));\n const bucketCount = this.Uint64(tableOffset - 8);\n this.#AssertElementRange(tableOffset, bucketCount, 8);\n\n const offsets = [];\n\n for (let index = 0; index < bucketCount; index++)\n {\n const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));\n const recordCount = this.Uint64(bucketOffset - 8);\n this.#AssertElementRange(bucketOffset, recordCount, recordSize);\n\n for (let recordIndex = 0; recordIndex < recordCount; recordIndex++)\n {\n offsets.push(bucketOffset + recordIndex * recordSize);\n }\n }\n\n if (offsets.length !== expectedCount)\n {\n const error = new Error(\n `FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`,\n );\n error.code = \"CJS_FSD_RECORD_COUNT_INVALID\";\n error.actualCount = offsets.length;\n error.expectedCount = expectedCount;\n throw error;\n }\n\n return offsets;\n }\n\n /**\n * Returns absolute offsets for a count-prefixed FSD list.\n */\n ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER)\n {\n AssertRecordSize(recordSize);\n\n if (relativeOffset === 0)\n {\n return [];\n }\n\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\n {\n const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);\n error.code = \"CJS_FSD_OFFSET_INVALID\";\n error.offset = relativeOffset;\n throw error;\n }\n\n const dataOffset = this.Absolute(relativeOffset);\n const count = this.Uint64(dataOffset - 8);\n\n if (count > maximumCount)\n {\n const error = new RangeError(`FSD list count exceeds its limit: ${count}`);\n error.code = \"CJS_FSD_COUNT_INVALID\";\n error.count = count;\n error.maximumCount = maximumCount;\n throw error;\n }\n\n this.#AssertElementRange(dataOffset, count, recordSize);\n return Array.from(\n { length: count },\n (_, index) => dataOffset + index * recordSize,\n );\n }\n\n /** Returns a printable ASCII string or null for invalid evidence. */\n StringAtDataPointer(relativeOffset, maximumLength = 4096)\n {\n const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);\n\n if (value === null)\n {\n return null;\n }\n\n for (const character of value)\n {\n const code = character.codePointAt(0);\n\n if (code < 32 || code > 126)\n {\n return null;\n }\n }\n\n return value;\n }\n\n /** Returns a strict UTF-8 string or null for invalid evidence. */\n Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096)\n {\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\n {\n return null;\n }\n\n const dataOffset = this.RootOffset + relativeOffset;\n const length = this.TryUint64(dataOffset - 8);\n\n if (length === null || length > maximumLength || dataOffset + length > this.ByteLength)\n {\n return null;\n }\n\n try\n {\n return strictTextDecoder.decode(this.#bytes.subarray(dataOffset, dataOffset + length));\n }\n catch\n {\n return null;\n }\n }\n\n /** Returns a bounded printable string list or null for invalid evidence. */\n StringList(relativeOffset, maximumCount = 100)\n {\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\n {\n return null;\n }\n\n const tableOffset = this.RootOffset + relativeOffset;\n const count = this.TryUint64(tableOffset - 8);\n\n if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength)\n {\n return null;\n }\n\n const values = [];\n\n for (let index = 0; index < count; index++)\n {\n const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));\n\n if (value === null)\n {\n return null;\n }\n\n values.push(value);\n }\n\n return values;\n }\n\n /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */\n Uint32List(relativeOffset, maximumCount = 100)\n {\n if (relativeOffset === 0)\n {\n return [];\n }\n\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\n {\n return null;\n }\n\n const dataOffset = this.RootOffset + relativeOffset;\n const count = this.TryUint64(dataOffset - 8);\n\n if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength)\n {\n return null;\n }\n\n return Array.from(\n { length: count },\n (_, index) => this.Uint32(dataOffset + index * 4),\n );\n }\n\n /** Validates the byte range occupied by a repeated fixed-size value. */\n #AssertElementRange(offset, count, size)\n {\n if (!Number.isSafeInteger(count) || count < 0 ||\n count > Math.floor(this.ByteLength / size))\n {\n const error = new RangeError(`FSD element count is invalid: ${count}`);\n error.code = \"CJS_FSD_COUNT_INVALID\";\n error.count = count;\n error.elementSize = size;\n throw error;\n }\n\n this.AssertRange(offset, count * size);\n }\n\n /** Validates the fixed header and its declared payload length. */\n #AssertContainer(path)\n {\n if (this.ByteLength < HEADER_SIZE)\n {\n const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);\n error.code = \"CJS_FSD_HEADER_INVALID\";\n throw error;\n }\n\n const payloadLength = this.Uint64(24);\n\n if (payloadLength !== this.ByteLength - HEADER_SIZE)\n {\n const error = new Error(`FSD payload length does not match its header: ${path}`);\n error.code = \"CJS_FSD_LENGTH_INVALID\";\n error.actualLength = this.ByteLength - HEADER_SIZE;\n error.expectedLength = payloadLength;\n throw error;\n }\n }\n}\n\nfunction AssertRecordSize(value)\n{\n if (!Number.isSafeInteger(value) || value < 1)\n {\n const error = new RangeError(`FSD record size is invalid: ${value}`);\n error.code = \"CJS_FSD_RECORD_SIZE_INVALID\";\n throw error;\n }\n}\n\nfunction Hex(bytes)\n{\n return Array.from(bytes, value => value.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nfunction NormalizeBytes(input)\n{\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\n error.code = \"CJS_FSD_INPUT_INVALID\";\n throw error;\n}\n\nexport default CjsFsd64Binary;\n"],"names":["HEADER_SIZE","strictTextDecoder","TextDecoder","fatal","CjsFsd64Binary","Type","BOOLEAN","FLOAT_32","FLOAT_64","INT_32","INT_32_IDENTIFIER","LIST","MAP","OBJECT","STRING","UINT_8","UINT_32","UINT_32_IDENTIFIER","UINT_64","UINT_64_IDENTIFIER","constructor","bytes","options","NormalizeBytes","DataView","buffer","byteOffset","byteLength","path","schemaID","AssertSchema","ByteLength","PayloadLength","Uint64","RootOffset","SchemaID","Hex","subarray","LayoutID","expected","wanted","Array","isArray","map","value","String","toLowerCase","actual","Set","length","some","has","reported","error","Error","code","actualSchemaID","expectedSchemaID","Absolute","relativeOffset","absolute","AssertRange","Align8","offset","Math","ceil","size","Number","isSafeInteger","RangeError","Byte","getUint8","Bytes","Float32","getFloat32","Float64","getFloat64","Int32","getInt32","Uint32","getUint32","getBigUint64","BigInt","MAX_SAFE_INTEGER","Uint64Identity","toString","TryUint64","MapEntries","recordSize","headerOffset","AssertRecordSize","expectedCount","tableOffset","bucketCount","offsets","index","bucketOffset","recordCount","recordIndex","push","actualCount","ListEntries","maximumCount","dataOffset","count","from","_","StringAtDataPointer","maximumLength","Utf8StringAtDataPointer","character","codePointAt","decode","StringList","values","Uint32List","#AssertElementRange","floor","elementSize","#AssertContainer","payloadLength","actualLength","expectedLength","padStart","join","input","ArrayBuffer","Uint8Array","isView","TypeError"],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Dispatches caller-supplied bytes to an explicitly registered FSD reader.
3
+ *
4
+ * This class deliberately performs no filesystem, network, provider, build,
5
+ * or resource-index work.
6
+ */
7
+ class CjsFsd64Reader {
8
+ #readers = new Map();
9
+
10
+ /**
11
+ * Registers one approved file-specific reader by logical path.
12
+ */
13
+ Register(path, reader, options = {}) {
14
+ const key = NormalizeReaderKey(path);
15
+ const implementation = NormalizeReader(reader);
16
+ if (this.#readers.has(key) && options.replace !== true) {
17
+ const error = new Error(`FSD reader is already registered: ${key}`);
18
+ error.code = "CJS_FSD_READER_EXISTS";
19
+ error.path = key;
20
+ throw error;
21
+ }
22
+ this.#readers.set(key, implementation);
23
+ return this;
24
+ }
25
+
26
+ /**
27
+ * Removes a reader without affecting any caller-owned bytes or data.
28
+ */
29
+ Remove(path) {
30
+ return this.#readers.delete(NormalizeReaderKey(path));
31
+ }
32
+
33
+ /**
34
+ * Reports whether an exact file-specific reader is registered.
35
+ */
36
+ Has(path) {
37
+ return this.#readers.has(NormalizeReaderKey(path));
38
+ }
39
+
40
+ /**
41
+ * Lists registered logical paths in deterministic order.
42
+ */
43
+ List() {
44
+ return [...this.#readers.keys()].sort();
45
+ }
46
+
47
+ /**
48
+ * Reads caller-supplied bytes with the reader registered for options.path.
49
+ */
50
+ async Read(input, options = {}) {
51
+ const path = NormalizeReaderKey(options.path);
52
+ const reader = this.#readers.get(path);
53
+ if (!reader) {
54
+ const error = new Error(`No FSD reader is registered for: ${path}`);
55
+ error.code = "CJS_FSD_READER_NOT_FOUND";
56
+ error.path = path;
57
+ throw error;
58
+ }
59
+ const bytes = NormalizeBytes(input);
60
+ return reader.Read(bytes, {
61
+ ...options,
62
+ path
63
+ });
64
+ }
65
+
66
+ /**
67
+ * Reads caller-supplied bytes as a plain JSON-compatible value through the
68
+ * schema-backed reader registered for options.path.
69
+ */
70
+ async ReadJSON(input, options = {}) {
71
+ const path = NormalizeReaderKey(options.path);
72
+ const reader = this.#readers.get(path);
73
+ if (!reader) {
74
+ const error = new Error(`No FSD reader is registered for: ${path}`);
75
+ error.code = "CJS_FSD_READER_NOT_FOUND";
76
+ error.path = path;
77
+ throw error;
78
+ }
79
+ if (typeof reader.ReadJSON !== "function") {
80
+ const error = new Error(`FSD reader does not expose JSON decoding: ${path}`);
81
+ error.code = "CJS_FSD_JSON_READER_INVALID";
82
+ error.path = path;
83
+ throw error;
84
+ }
85
+ const bytes = NormalizeBytes(input);
86
+ return reader.ReadJSON(bytes, {
87
+ ...options,
88
+ path
89
+ });
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Produces a stable registry key without importing resource-source policy.
95
+ */
96
+ function NormalizeReaderKey(value) {
97
+ if (typeof value !== "string" || value.trim() === "") {
98
+ const error = new TypeError("FSD reader path must be a non-empty string.");
99
+ error.code = "CJS_FSD_PATH_INVALID";
100
+ throw error;
101
+ }
102
+ return value.trim().replaceAll("\\", "/").toLowerCase();
103
+ }
104
+
105
+ /**
106
+ * Accepts object readers and function shorthand while storing one contract.
107
+ */
108
+ function NormalizeReader(value) {
109
+ if (typeof value === "function") {
110
+ return {
111
+ Read: value
112
+ };
113
+ }
114
+ if (!value || typeof value.Read !== "function") {
115
+ const error = new TypeError("FSD reader must be a function or expose Read(bytes, context).");
116
+ error.code = "CJS_FSD_READER_INVALID";
117
+ throw error;
118
+ }
119
+ return value;
120
+ }
121
+
122
+ /**
123
+ * Creates a byte view over accepted binary inputs without copying or mutation.
124
+ */
125
+ function NormalizeBytes(input) {
126
+ if (input instanceof ArrayBuffer) {
127
+ return new Uint8Array(input);
128
+ }
129
+ if (ArrayBuffer.isView(input)) {
130
+ return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
131
+ }
132
+ const error = new TypeError("FSD input must be an ArrayBuffer or an ArrayBuffer view.");
133
+ error.code = "CJS_FSD_INPUT_INVALID";
134
+ throw error;
135
+ }
136
+
137
+ export { CjsFsd64Reader };
138
+ //# sourceMappingURL=CjsFsd64Reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CjsFsd64Reader.js","sources":["../../../../../../src/formats/fsd/64/core/CjsFsd64Reader.js"],"sourcesContent":["/**\n * Dispatches caller-supplied bytes to an explicitly registered FSD reader.\n *\n * This class deliberately performs no filesystem, network, provider, build,\n * or resource-index work.\n */\nexport class CjsFsd64Reader\n{\n #readers = new Map();\n\n /**\n * Registers one approved file-specific reader by logical path.\n */\n Register(path, reader, options = {})\n {\n const key = NormalizeReaderKey(path);\n const implementation = NormalizeReader(reader);\n\n if (this.#readers.has(key) && options.replace !== true)\n {\n const error = new Error(`FSD reader is already registered: ${key}`);\n error.code = \"CJS_FSD_READER_EXISTS\";\n error.path = key;\n throw error;\n }\n\n this.#readers.set(key, implementation);\n return this;\n }\n\n /**\n * Removes a reader without affecting any caller-owned bytes or data.\n */\n Remove(path)\n {\n return this.#readers.delete(NormalizeReaderKey(path));\n }\n\n /**\n * Reports whether an exact file-specific reader is registered.\n */\n Has(path)\n {\n return this.#readers.has(NormalizeReaderKey(path));\n }\n\n /**\n * Lists registered logical paths in deterministic order.\n */\n List()\n {\n return [ ...this.#readers.keys() ].sort();\n }\n\n /**\n * Reads caller-supplied bytes with the reader registered for options.path.\n */\n async Read(input, options = {})\n {\n const path = NormalizeReaderKey(options.path);\n const reader = this.#readers.get(path);\n\n if (!reader)\n {\n const error = new Error(`No FSD reader is registered for: ${path}`);\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\n error.path = path;\n throw error;\n }\n\n const bytes = NormalizeBytes(input);\n return reader.Read(bytes, {\n ...options,\n path,\n });\n }\n\n /**\n * Reads caller-supplied bytes as a plain JSON-compatible value through the\n * schema-backed reader registered for options.path.\n */\n async ReadJSON(input, options = {})\n {\n const path = NormalizeReaderKey(options.path);\n const reader = this.#readers.get(path);\n\n if (!reader)\n {\n const error = new Error(`No FSD reader is registered for: ${path}`);\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\n error.path = path;\n throw error;\n }\n\n if (typeof reader.ReadJSON !== \"function\")\n {\n const error = new Error(`FSD reader does not expose JSON decoding: ${path}`);\n error.code = \"CJS_FSD_JSON_READER_INVALID\";\n error.path = path;\n throw error;\n }\n\n const bytes = NormalizeBytes(input);\n return reader.ReadJSON(bytes, {\n ...options,\n path,\n });\n }\n}\n\n/**\n * Produces a stable registry key without importing resource-source policy.\n */\nfunction NormalizeReaderKey(value)\n{\n if (typeof value !== \"string\" || value.trim() === \"\")\n {\n const error = new TypeError(\"FSD reader path must be a non-empty string.\");\n error.code = \"CJS_FSD_PATH_INVALID\";\n throw error;\n }\n\n return value.trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\n}\n\n/**\n * Accepts object readers and function shorthand while storing one contract.\n */\nfunction NormalizeReader(value)\n{\n if (typeof value === \"function\")\n {\n return { Read: value };\n }\n\n if (!value || typeof value.Read !== \"function\")\n {\n const error = new TypeError(\"FSD reader must be a function or expose Read(bytes, context).\");\n error.code = \"CJS_FSD_READER_INVALID\";\n throw error;\n }\n\n return value;\n}\n\n/**\n * Creates a byte view over accepted binary inputs without copying or mutation.\n */\nfunction NormalizeBytes(input)\n{\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\n error.code = \"CJS_FSD_INPUT_INVALID\";\n throw error;\n}\n\nexport default CjsFsd64Reader;\n"],"names":["CjsFsd64Reader","Map","Register","path","reader","options","key","NormalizeReaderKey","implementation","NormalizeReader","has","replace","error","Error","code","set","Remove","delete","Has","List","keys","sort","Read","input","get","bytes","NormalizeBytes","ReadJSON","value","trim","TypeError","replaceAll","toLowerCase","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength"],"mappings":"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"}