@carbonenginejs/runtime-resource 0.1.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 (372) hide show
  1. package/FORMAT-PROVENANCE.md +135 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +29 -0
  4. package/README.md +241 -0
  5. package/dist/CjsMotherLode.js +56 -0
  6. package/dist/CjsMotherLode.js.map +1 -0
  7. package/dist/CjsResMan.js +740 -0
  8. package/dist/CjsResMan.js.map +1 -0
  9. package/dist/CjsResManQueue.js +214 -0
  10. package/dist/CjsResManQueue.js.map +1 -0
  11. package/dist/CjsResource.js +366 -0
  12. package/dist/CjsResource.js.map +1 -0
  13. package/dist/CjsResourceSource.js +59 -0
  14. package/dist/CjsResourceSource.js.map +1 -0
  15. package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -0
  16. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  17. package/dist/format/CjsFormat.js +178 -0
  18. package/dist/format/CjsFormat.js.map +1 -0
  19. package/dist/format/CjsResourceProbe.js +269 -0
  20. package/dist/format/CjsResourceProbe.js.map +1 -0
  21. package/dist/format/payloadContract.js +173 -0
  22. package/dist/format/payloadContract.js.map +1 -0
  23. package/dist/formats/black/CjsBlackFormat.js +272 -0
  24. package/dist/formats/black/CjsBlackFormat.js.map +1 -0
  25. package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -0
  26. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -0
  27. package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -0
  28. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -0
  29. package/dist/formats/black/core/CjsBlackReader.js +760 -0
  30. package/dist/formats/black/core/CjsBlackReader.js.map +1 -0
  31. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -0
  32. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -0
  33. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -0
  34. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +1 -0
  35. package/dist/formats/black/core/blackConstants.js +7 -0
  36. package/dist/formats/black/core/blackConstants.js.map +1 -0
  37. package/dist/formats/black/core/blackDefinitions.js +10 -0
  38. package/dist/formats/black/core/blackDefinitions.js.map +1 -0
  39. package/dist/formats/black/core/blackEnums.js +6 -0
  40. package/dist/formats/black/core/blackEnums.js.map +1 -0
  41. package/dist/formats/black/core/blackSchema.js +3 -0
  42. package/dist/formats/black/core/blackSchema.js.map +1 -0
  43. package/dist/formats/black/core/blackVersion.js +22 -0
  44. package/dist/formats/black/core/blackVersion.js.map +1 -0
  45. package/dist/formats/black/core/helpers.js +182 -0
  46. package/dist/formats/black/core/helpers.js.map +1 -0
  47. package/dist/formats/black/core/schema.js +4 -0
  48. package/dist/formats/black/core/schema.js.map +1 -0
  49. package/dist/formats/black/index.js +2 -0
  50. package/dist/formats/black/index.js.map +1 -0
  51. package/dist/formats/bnk/CjsBnkFormat.js +245 -0
  52. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -0
  53. package/dist/formats/bnk/core/helpers.js +354 -0
  54. package/dist/formats/bnk/core/helpers.js.map +1 -0
  55. package/dist/formats/bnk/core/soundbanksInfo.js +246 -0
  56. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -0
  57. package/dist/formats/bnk/index.js +3 -0
  58. package/dist/formats/bnk/index.js.map +1 -0
  59. package/dist/formats/cmf/CjsCmfFormat.js +491 -0
  60. package/dist/formats/cmf/CjsCmfFormat.js.map +1 -0
  61. package/dist/formats/cmf/core/binary.js +118 -0
  62. package/dist/formats/cmf/core/binary.js.map +1 -0
  63. package/dist/formats/cmf/core/buffers.js +233 -0
  64. package/dist/formats/cmf/core/buffers.js.map +1 -0
  65. package/dist/formats/cmf/core/constants.js +47 -0
  66. package/dist/formats/cmf/core/constants.js.map +1 -0
  67. package/dist/formats/cmf/core/gr2Anim.js +453 -0
  68. package/dist/formats/cmf/core/gr2Anim.js.map +1 -0
  69. package/dist/formats/cmf/core/helpers.js +287 -0
  70. package/dist/formats/cmf/core/helpers.js.map +1 -0
  71. package/dist/formats/cmf/core/pack.js +276 -0
  72. package/dist/formats/cmf/core/pack.js.map +1 -0
  73. package/dist/formats/cmf/core/schema.js +364 -0
  74. package/dist/formats/cmf/core/schema.js.map +1 -0
  75. package/dist/formats/cmf/core/shared.js +268 -0
  76. package/dist/formats/cmf/core/shared.js.map +1 -0
  77. package/dist/formats/cmf/core/writer.js +517 -0
  78. package/dist/formats/cmf/core/writer.js.map +1 -0
  79. package/dist/formats/cmf/index.js +2 -0
  80. package/dist/formats/cmf/index.js.map +1 -0
  81. package/dist/formats/dds/CjsDdsFormat.js +187 -0
  82. package/dist/formats/dds/CjsDdsFormat.js.map +1 -0
  83. package/dist/formats/dds/core/helpers.js +812 -0
  84. package/dist/formats/dds/core/helpers.js.map +1 -0
  85. package/dist/formats/dds/index.js +2 -0
  86. package/dist/formats/dds/index.js.map +1 -0
  87. package/dist/formats/fbx/CjsFbxFormat.js +260 -0
  88. package/dist/formats/fbx/CjsFbxFormat.js.map +1 -0
  89. package/dist/formats/fbx/core/helpers.js +3901 -0
  90. package/dist/formats/fbx/core/helpers.js.map +1 -0
  91. package/dist/formats/fbx/index.js +2 -0
  92. package/dist/formats/fbx/index.js.map +1 -0
  93. package/dist/formats/flac/CjsFlacFormat.js +81 -0
  94. package/dist/formats/flac/CjsFlacFormat.js.map +1 -0
  95. package/dist/formats/flac/core/helpers.js +295 -0
  96. package/dist/formats/flac/core/helpers.js.map +1 -0
  97. package/dist/formats/flac/index.js +2 -0
  98. package/dist/formats/flac/index.js.map +1 -0
  99. package/dist/formats/gif/CjsGifFormat.js +81 -0
  100. package/dist/formats/gif/CjsGifFormat.js.map +1 -0
  101. package/dist/formats/gif/core/helpers.js +360 -0
  102. package/dist/formats/gif/core/helpers.js.map +1 -0
  103. package/dist/formats/gif/index.js +2 -0
  104. package/dist/formats/gif/index.js.map +1 -0
  105. package/dist/formats/gltf/CjsGltfFormat.js +284 -0
  106. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -0
  107. package/dist/formats/gltf/core/helpers.js +292 -0
  108. package/dist/formats/gltf/core/helpers.js.map +1 -0
  109. package/dist/formats/gltf/core/json.js +79 -0
  110. package/dist/formats/gltf/core/json.js.map +1 -0
  111. package/dist/formats/gltf/core/parser.js +666 -0
  112. package/dist/formats/gltf/core/parser.js.map +1 -0
  113. package/dist/formats/gltf/core/targets.js +163 -0
  114. package/dist/formats/gltf/core/targets.js.map +1 -0
  115. package/dist/formats/gltf/index.js +2 -0
  116. package/dist/formats/gltf/index.js.map +1 -0
  117. package/dist/formats/index.js +23 -0
  118. package/dist/formats/index.js.map +1 -0
  119. package/dist/formats/jpeg/CjsJpegFormat.js +200 -0
  120. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -0
  121. package/dist/formats/jpeg/core/helpers.js +350 -0
  122. package/dist/formats/jpeg/core/helpers.js.map +1 -0
  123. package/dist/formats/jpeg/core/jpeg.js +377 -0
  124. package/dist/formats/jpeg/core/jpeg.js.map +1 -0
  125. package/dist/formats/jpeg/index.js +2 -0
  126. package/dist/formats/jpeg/index.js.map +1 -0
  127. package/dist/formats/mp3/CjsMp3Format.js +186 -0
  128. package/dist/formats/mp3/CjsMp3Format.js.map +1 -0
  129. package/dist/formats/mp3/core/helpers.js +338 -0
  130. package/dist/formats/mp3/core/helpers.js.map +1 -0
  131. package/dist/formats/mp3/index.js +2 -0
  132. package/dist/formats/mp3/index.js.map +1 -0
  133. package/dist/formats/mp4/CjsMp4Format.js +185 -0
  134. package/dist/formats/mp4/CjsMp4Format.js.map +1 -0
  135. package/dist/formats/mp4/core/helpers.js +449 -0
  136. package/dist/formats/mp4/core/helpers.js.map +1 -0
  137. package/dist/formats/mp4/index.js +2 -0
  138. package/dist/formats/mp4/index.js.map +1 -0
  139. package/dist/formats/obj/CjsObjFormat.js +247 -0
  140. package/dist/formats/obj/CjsObjFormat.js.map +1 -0
  141. package/dist/formats/obj/core/helpers.js +573 -0
  142. package/dist/formats/obj/core/helpers.js.map +1 -0
  143. package/dist/formats/obj/core/json.js +64 -0
  144. package/dist/formats/obj/core/json.js.map +1 -0
  145. package/dist/formats/obj/core/parser.js +321 -0
  146. package/dist/formats/obj/core/parser.js.map +1 -0
  147. package/dist/formats/obj/index.js +2 -0
  148. package/dist/formats/obj/index.js.map +1 -0
  149. package/dist/formats/ogg/CjsOggFormat.js +82 -0
  150. package/dist/formats/ogg/CjsOggFormat.js.map +1 -0
  151. package/dist/formats/ogg/core/helpers.js +387 -0
  152. package/dist/formats/ogg/core/helpers.js.map +1 -0
  153. package/dist/formats/ogg/core/imdct.js +178 -0
  154. package/dist/formats/ogg/core/imdct.js.map +1 -0
  155. package/dist/formats/ogg/core/vorbis.js +999 -0
  156. package/dist/formats/ogg/core/vorbis.js.map +1 -0
  157. package/dist/formats/ogg/index.js +2 -0
  158. package/dist/formats/ogg/index.js.map +1 -0
  159. package/dist/formats/png/CjsPngFormat.js +189 -0
  160. package/dist/formats/png/CjsPngFormat.js.map +1 -0
  161. package/dist/formats/png/core/helpers.js +583 -0
  162. package/dist/formats/png/core/helpers.js.map +1 -0
  163. package/dist/formats/png/index.js +2 -0
  164. package/dist/formats/png/index.js.map +1 -0
  165. package/dist/formats/red/CjsRedFormat.js +247 -0
  166. package/dist/formats/red/CjsRedFormat.js.map +1 -0
  167. package/dist/formats/red/core/CjsRedReader.js +201 -0
  168. package/dist/formats/red/core/CjsRedReader.js.map +1 -0
  169. package/dist/formats/red/core/blackDefinitions.js +3 -0
  170. package/dist/formats/red/core/blackDefinitions.js.map +1 -0
  171. package/dist/formats/red/core/helpers.js +136 -0
  172. package/dist/formats/red/core/helpers.js.map +1 -0
  173. package/dist/formats/red/core/redGraph.js +68 -0
  174. package/dist/formats/red/core/redGraph.js.map +1 -0
  175. package/dist/formats/red/core/schema.js +4 -0
  176. package/dist/formats/red/core/schema.js.map +1 -0
  177. package/dist/formats/red/index.js +2 -0
  178. package/dist/formats/red/index.js.map +1 -0
  179. package/dist/formats/stl/CjsStlFormat.js +304 -0
  180. package/dist/formats/stl/CjsStlFormat.js.map +1 -0
  181. package/dist/formats/stl/core/helpers.js +257 -0
  182. package/dist/formats/stl/core/helpers.js.map +1 -0
  183. package/dist/formats/stl/core/json.js +51 -0
  184. package/dist/formats/stl/core/json.js.map +1 -0
  185. package/dist/formats/stl/core/stl.js +544 -0
  186. package/dist/formats/stl/core/stl.js.map +1 -0
  187. package/dist/formats/stl/core/targets.js +163 -0
  188. package/dist/formats/stl/core/targets.js.map +1 -0
  189. package/dist/formats/stl/index.js +2 -0
  190. package/dist/formats/stl/index.js.map +1 -0
  191. package/dist/formats/tga/CjsTgaFormat.js +186 -0
  192. package/dist/formats/tga/CjsTgaFormat.js.map +1 -0
  193. package/dist/formats/tga/core/helpers.js +446 -0
  194. package/dist/formats/tga/core/helpers.js.map +1 -0
  195. package/dist/formats/tga/index.js +2 -0
  196. package/dist/formats/tga/index.js.map +1 -0
  197. package/dist/formats/wav/CjsWavFormat.js +186 -0
  198. package/dist/formats/wav/CjsWavFormat.js.map +1 -0
  199. package/dist/formats/wav/core/helpers.js +328 -0
  200. package/dist/formats/wav/core/helpers.js.map +1 -0
  201. package/dist/formats/wav/index.js +2 -0
  202. package/dist/formats/wav/index.js.map +1 -0
  203. package/dist/formats/webm/CjsWebmFormat.js +185 -0
  204. package/dist/formats/webm/CjsWebmFormat.js.map +1 -0
  205. package/dist/formats/webm/core/helpers.js +537 -0
  206. package/dist/formats/webm/core/helpers.js.map +1 -0
  207. package/dist/formats/webm/index.js +2 -0
  208. package/dist/formats/webm/index.js.map +1 -0
  209. package/dist/formats/webp/CjsWebpFormat.js +80 -0
  210. package/dist/formats/webp/CjsWebpFormat.js.map +1 -0
  211. package/dist/formats/webp/core/helpers.js +214 -0
  212. package/dist/formats/webp/core/helpers.js.map +1 -0
  213. package/dist/formats/webp/index.js +2 -0
  214. package/dist/formats/webp/index.js.map +1 -0
  215. package/dist/formats/wem/CjsWemFormat.js +197 -0
  216. package/dist/formats/wem/CjsWemFormat.js.map +1 -0
  217. package/dist/formats/wem/core/bitStream.js +259 -0
  218. package/dist/formats/wem/core/bitStream.js.map +1 -0
  219. package/dist/formats/wem/core/codebookLibrary.js +164 -0
  220. package/dist/formats/wem/core/codebookLibrary.js.map +1 -0
  221. package/dist/formats/wem/core/helpers.js +336 -0
  222. package/dist/formats/wem/core/helpers.js.map +1 -0
  223. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -0
  224. package/dist/formats/wem/core/packedCodebooksAotuv603.js.map +1 -0
  225. package/dist/formats/wem/core/wemToOgg.js +485 -0
  226. package/dist/formats/wem/core/wemToOgg.js.map +1 -0
  227. package/dist/formats/wem/index.js +2 -0
  228. package/dist/formats/wem/index.js.map +1 -0
  229. package/dist/formats/yaml/CjsYamlFormat.js +77 -0
  230. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -0
  231. package/dist/formats/yaml/core/CjsYamlReader.js +304 -0
  232. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -0
  233. package/dist/formats/yaml/core/helpers.js +160 -0
  234. package/dist/formats/yaml/core/helpers.js.map +1 -0
  235. package/dist/formats/yaml/index.js +2 -0
  236. package/dist/formats/yaml/index.js.map +1 -0
  237. package/dist/generated/resources/AudioGeometryResData.js +47 -0
  238. package/dist/generated/resources/AudioGeometryResData.js.map +1 -0
  239. package/dist/generated/resources/CmfVertexReader.js +46 -0
  240. package/dist/generated/resources/CmfVertexReader.js.map +1 -0
  241. package/dist/generated/resources/GStateBindingCallbackData.js +31 -0
  242. package/dist/generated/resources/GStateBindingCallbackData.js.map +1 -0
  243. package/dist/generated/resources/MeshDecalData.js +37 -0
  244. package/dist/generated/resources/MeshDecalData.js.map +1 -0
  245. package/dist/generated/resources/MeshDecalLodData.js +34 -0
  246. package/dist/generated/resources/MeshDecalLodData.js.map +1 -0
  247. package/dist/generated/resources/Tr2AsyncSave.js +46 -0
  248. package/dist/generated/resources/Tr2AsyncSave.js.map +1 -0
  249. package/dist/generated/resources/Tr2CmfContents.js +37 -0
  250. package/dist/generated/resources/Tr2CmfContents.js.map +1 -0
  251. package/dist/generated/resources/Tr2GrannyIntersectionResult.js +58 -0
  252. package/dist/generated/resources/Tr2GrannyIntersectionResult.js.map +1 -0
  253. package/dist/generated/resources/Tr2LoadPrepareFence.js +37 -0
  254. package/dist/generated/resources/Tr2LoadPrepareFence.js.map +1 -0
  255. package/dist/generated/resources/Tr2MaterialArea.js +34 -0
  256. package/dist/generated/resources/Tr2MaterialArea.js.map +1 -0
  257. package/dist/generated/resources/Tr2MaterialMesh.js +31 -0
  258. package/dist/generated/resources/Tr2MaterialMesh.js.map +1 -0
  259. package/dist/generated/resources/Tr2MaterialRes.js +34 -0
  260. package/dist/generated/resources/Tr2MaterialRes.js.map +1 -0
  261. package/dist/generated/resources/Tr2ShaderPermutation.js +43 -0
  262. package/dist/generated/resources/Tr2ShaderPermutation.js.map +1 -0
  263. package/dist/generated/resources/Tr2TextureLodManager.js +60 -0
  264. package/dist/generated/resources/Tr2TextureLodManager.js.map +1 -0
  265. package/dist/generated/resources/Tr2TextureLodUpdateRequest.js +37 -0
  266. package/dist/generated/resources/Tr2TextureLodUpdateRequest.js.map +1 -0
  267. package/dist/generated/resources/Tr2TexturePackChannel.js +37 -0
  268. package/dist/generated/resources/Tr2TexturePackChannel.js.map +1 -0
  269. package/dist/generated/resources/Tr2TexturePipeline.js +44 -0
  270. package/dist/generated/resources/Tr2TexturePipeline.js.map +1 -0
  271. package/dist/generated/resources/Tr2TexturePipelineParams.js +34 -0
  272. package/dist/generated/resources/Tr2TexturePipelineParams.js.map +1 -0
  273. package/dist/generated/resources/Tr2TexturePipelineStepCompress.js +40 -0
  274. package/dist/generated/resources/Tr2TexturePipelineStepCompress.js.map +1 -0
  275. package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js +34 -0
  276. package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  277. package/dist/generated/resources/Tr2TexturePipelineStepLoad.js +31 -0
  278. package/dist/generated/resources/Tr2TexturePipelineStepLoad.js.map +1 -0
  279. package/dist/generated/resources/Tr2TexturePipelineStepPack.js +43 -0
  280. package/dist/generated/resources/Tr2TexturePipelineStepPack.js.map +1 -0
  281. package/dist/generated/resources/TriGeometryResAreaData.js +59 -0
  282. package/dist/generated/resources/TriGeometryResAreaData.js.map +1 -0
  283. package/dist/generated/resources/TriGeometryResJointData.js +38 -0
  284. package/dist/generated/resources/TriGeometryResJointData.js.map +1 -0
  285. package/dist/generated/resources/TriGeometryResLodData.js +88 -0
  286. package/dist/generated/resources/TriGeometryResLodData.js.map +1 -0
  287. package/dist/generated/resources/TriGeometryResMeshData.js +63 -0
  288. package/dist/generated/resources/TriGeometryResMeshData.js.map +1 -0
  289. package/dist/generated/resources/TriGeometryResSkeletonData.js +34 -0
  290. package/dist/generated/resources/TriGeometryResSkeletonData.js.map +1 -0
  291. package/dist/generated/resources/TriJointBinding.js +38 -0
  292. package/dist/generated/resources/TriJointBinding.js.map +1 -0
  293. package/dist/generated/resources/TriMorphTargetGeometryConstants.js +46 -0
  294. package/dist/generated/resources/TriMorphTargetGeometryConstants.js.map +1 -0
  295. package/dist/generated/resources/TriRtGeometryConstants.js +88 -0
  296. package/dist/generated/resources/TriRtGeometryConstants.js.map +1 -0
  297. package/dist/generated/resources/enums.js +18 -0
  298. package/dist/generated/resources/enums.js.map +1 -0
  299. package/dist/generated/resources/index.js +32 -0
  300. package/dist/generated/resources/index.js.map +1 -0
  301. package/dist/index.js +52 -0
  302. package/dist/index.js.map +1 -0
  303. package/dist/resourcePath.js +18 -0
  304. package/dist/resourcePath.js.map +1 -0
  305. package/dist/resourceStates.js +9 -0
  306. package/dist/resourceStates.js.map +1 -0
  307. package/dist/resources/Tr2EffectRes.js +71 -0
  308. package/dist/resources/Tr2EffectRes.js.map +1 -0
  309. package/dist/resources/Tr2GrannyStateRes.js +44 -0
  310. package/dist/resources/Tr2GrannyStateRes.js.map +1 -0
  311. package/dist/resources/Tr2ImageRes.js +114 -0
  312. package/dist/resources/Tr2ImageRes.js.map +1 -0
  313. package/dist/resources/Tr2LightProfileRes.js +40 -0
  314. package/dist/resources/Tr2LightProfileRes.js.map +1 -0
  315. package/dist/resources/TriGeometryRes.js +216 -0
  316. package/dist/resources/TriGeometryRes.js.map +1 -0
  317. package/dist/resources/TriGrannyRes.js +43 -0
  318. package/dist/resources/TriGrannyRes.js.map +1 -0
  319. package/dist/resources/TriTextureRes.js +304 -0
  320. package/dist/resources/TriTextureRes.js.map +1 -0
  321. package/dist/resources/resourceBoundary.js +47 -0
  322. package/dist/resources/resourceBoundary.js.map +1 -0
  323. package/dist/texture/CjsTextureArrayRes.js +406 -0
  324. package/dist/texture/CjsTextureArrayRes.js.map +1 -0
  325. package/dist/texture/CjsTextureParameterProxy.js +133 -0
  326. package/dist/texture/CjsTextureParameterProxy.js.map +1 -0
  327. package/format-notices/black/LICENSE +21 -0
  328. package/format-notices/black/NOTICE +47 -0
  329. package/format-notices/bnk/LICENSE +21 -0
  330. package/format-notices/bnk/NOTICE +17 -0
  331. package/format-notices/cmf/LICENSE +21 -0
  332. package/format-notices/cmf/NOTICE +36 -0
  333. package/format-notices/dds/LICENSE +21 -0
  334. package/format-notices/dds/NOTICE +14 -0
  335. package/format-notices/fbx/LICENSE +21 -0
  336. package/format-notices/fbx/NOTICE +14 -0
  337. package/format-notices/flac/LICENSE +21 -0
  338. package/format-notices/flac/NOTICE +14 -0
  339. package/format-notices/gif/LICENSE +21 -0
  340. package/format-notices/gif/NOTICE +14 -0
  341. package/format-notices/gltf/LICENSE +21 -0
  342. package/format-notices/gltf/NOTICE +27 -0
  343. package/format-notices/jpeg/LICENSE +21 -0
  344. package/format-notices/jpeg/NOTICE +14 -0
  345. package/format-notices/mp3/LICENSE +21 -0
  346. package/format-notices/mp3/NOTICE +14 -0
  347. package/format-notices/mp4/LICENSE +21 -0
  348. package/format-notices/mp4/NOTICE +14 -0
  349. package/format-notices/obj/LICENSE +21 -0
  350. package/format-notices/obj/NOTICE +26 -0
  351. package/format-notices/ogg/LICENSE +21 -0
  352. package/format-notices/ogg/NOTICE +28 -0
  353. package/format-notices/png/LICENSE +21 -0
  354. package/format-notices/png/NOTICE +14 -0
  355. package/format-notices/red/LICENSE +21 -0
  356. package/format-notices/red/NOTICE +31 -0
  357. package/format-notices/stl/LICENSE +21 -0
  358. package/format-notices/stl/NOTICE +21 -0
  359. package/format-notices/tga/LICENSE +21 -0
  360. package/format-notices/tga/NOTICE +14 -0
  361. package/format-notices/wav/LICENSE +21 -0
  362. package/format-notices/wav/NOTICE +14 -0
  363. package/format-notices/webm/LICENSE +21 -0
  364. package/format-notices/webm/NOTICE +14 -0
  365. package/format-notices/webp/LICENSE +21 -0
  366. package/format-notices/webp/NOTICE +14 -0
  367. package/format-notices/wem/LICENSE +57 -0
  368. package/format-notices/wem/NOTICE +33 -0
  369. package/format-notices/yaml/LICENSE +21 -0
  370. package/format-notices/yaml/NOTICE +44 -0
  371. package/package.json +51 -0
  372. package/resource-lifecycle.md +487 -0
@@ -0,0 +1,537 @@
1
+ const OUTPUT_VIDEO = "video";
2
+ const OUTPUT_RAW = "raw";
3
+ const OUTPUT_JSON = "json";
4
+ const DEFAULT_VALUES = Object.freeze({
5
+ emit: OUTPUT_RAW,
6
+ inputType: "",
7
+ source: ""
8
+ });
9
+ const DEBUG_OUTPUTS = Object.freeze({
10
+ mp4: "mp4Json",
11
+ webm: "webmJson"
12
+ });
13
+ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsVideoFormat") {
14
+ const values = {
15
+ ...DEFAULT_VALUES,
16
+ ...(base || {}),
17
+ ...(options || {})
18
+ };
19
+ values.inputType = values.inputType ? String(values.inputType).replace(/^\./u, "").toLowerCase() : "";
20
+ values.emit = normalizeEmit(values.emit, values.inputType, readerName);
21
+ return values;
22
+ }
23
+ function normalizeEmit(emit, inputType, readerName) {
24
+ if (emit === undefined || emit === null) return OUTPUT_RAW;
25
+ if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;
26
+ if ([OUTPUT_VIDEO, OUTPUT_RAW, OUTPUT_JSON].includes(emit)) return emit;
27
+ if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
28
+ throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
29
+ }
30
+ function toBytes(input) {
31
+ if (input instanceof Uint8Array) return input;
32
+ if (input instanceof ArrayBuffer) return new Uint8Array(input);
33
+ if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
34
+ throw new TypeError("Video input must be Uint8Array, ArrayBuffer, or DataView");
35
+ }
36
+ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
37
+ const bytes = toBytes(input);
38
+ const metadata = inspectBytes(bytes);
39
+ if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType) {
40
+ throw new TypeError(`CjsVideoFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);
41
+ }
42
+ return {
43
+ payloadType: "video",
44
+ mediaTypes: ["video"],
45
+ byteLength: bytes.byteLength,
46
+ sourceFormat: expectedType || values.inputType || metadata.sourceFormat,
47
+ ...metadata
48
+ };
49
+ }
50
+ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
51
+ try {
52
+ const metadata = inspectWithValues(input, values, expectedType);
53
+ const codecs = getTrackCodecSummary(metadata);
54
+ const mimeType = getMediaMimeType(metadata);
55
+ return {
56
+ format: metadata.sourceFormat,
57
+ source: values.source || "buffer",
58
+ supported: metadata.sourceFormat ? "partial" : "none",
59
+ confidence: metadata.sourceFormat ? 1 : 0,
60
+ preferred: "container",
61
+ reason: metadata.sourceFormat ? "Container/header recognized." : "Unrecognized video format.",
62
+ metadata,
63
+ variants: [{
64
+ kind: "raw",
65
+ payloadType: "raw",
66
+ codec: metadata.sourceFormat,
67
+ mimeType,
68
+ supported: true,
69
+ containerOnly: true,
70
+ isDecoded: false,
71
+ frameDecodeSupported: false
72
+ }, {
73
+ kind: "container",
74
+ payloadType: "video",
75
+ codec: metadata.sourceFormat,
76
+ mimeType,
77
+ codecs: codecs.codecs,
78
+ videoCodecs: codecs.videoCodecs,
79
+ audioCodecs: codecs.audioCodecs,
80
+ supported: true,
81
+ containerOnly: true,
82
+ isDecoded: false,
83
+ frameDecodeSupported: false
84
+ }, {
85
+ kind: "decoded",
86
+ payloadType: "video-frame",
87
+ codec: "frames",
88
+ supported: false,
89
+ reason: "Video decode is not implemented in this package."
90
+ }],
91
+ warnings: [],
92
+ errors: []
93
+ };
94
+ } catch (error) {
95
+ return {
96
+ format: expectedType || values.inputType || "",
97
+ source: values.source || "buffer",
98
+ supported: "none",
99
+ confidence: 0,
100
+ preferred: "",
101
+ reason: error.message,
102
+ metadata: null,
103
+ variants: [],
104
+ warnings: [],
105
+ errors: [error.message]
106
+ };
107
+ }
108
+ }
109
+ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
110
+ const bytes = toBytes(input);
111
+ const metadata = inspectWithValues(bytes, values, expectedType);
112
+ if (values.emit === OUTPUT_RAW) {
113
+ return {
114
+ payloadType: "raw",
115
+ sourceFormat: metadata.sourceFormat,
116
+ metadata,
117
+ bytes
118
+ };
119
+ }
120
+ if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;
121
+ if (values.emit === OUTPUT_VIDEO && metadata.sourceFormat === "webm") {
122
+ const codecs = getTrackCodecSummary(metadata);
123
+ const mimeType = getMediaMimeType(metadata);
124
+ return {
125
+ payloadType: OUTPUT_VIDEO,
126
+ sourceFormat: "webm",
127
+ container: metadata.container,
128
+ mimeType,
129
+ containerOnly: true,
130
+ isDecoded: false,
131
+ frameDecodeSupported: false,
132
+ codecs: codecs.codecs,
133
+ videoCodecs: codecs.videoCodecs,
134
+ audioCodecs: codecs.audioCodecs,
135
+ duration: metadata.duration || 0,
136
+ durationTimescale: metadata.durationTimescale || 1,
137
+ tracks: metadata.tracks || [],
138
+ metadata,
139
+ sourceBytes: bytes
140
+ };
141
+ }
142
+ const error = new Error(`${metadata.sourceFormat}: emit "${values.emit}" is not implemented yet`);
143
+ error.code = "CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED";
144
+ error.sourceFormat = metadata.sourceFormat;
145
+ error.emit = values.emit;
146
+ throw error;
147
+ }
148
+ function getTrackCodecSummary(metadata) {
149
+ const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];
150
+ return {
151
+ codecs: uniqueTrackCodecs(tracks),
152
+ videoCodecs: uniqueTrackCodecs(tracks.filter(track => track.type === "video")),
153
+ audioCodecs: uniqueTrackCodecs(tracks.filter(track => track.type === "audio"))
154
+ };
155
+ }
156
+ function uniqueTrackCodecs(tracks) {
157
+ return [...new Set(tracks.map(track => track.codec).filter(Boolean))];
158
+ }
159
+ function getMediaMimeType(metadata) {
160
+ const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];
161
+ return tracks.some(track => track.type === "video") ? "video/webm" : "audio/webm";
162
+ }
163
+ function inspectBytes(bytes) {
164
+ if (isMP4(bytes)) return inspectMP4(bytes);
165
+ if (isWebM(bytes)) return inspectWebM(bytes);
166
+ return {
167
+ sourceFormat: ""
168
+ };
169
+ }
170
+ function isMP4(bytes) {
171
+ return bytes.byteLength >= 12 && fourCc(bytes, 4) === "ftyp";
172
+ }
173
+ function isWebM(bytes) {
174
+ return bytes.byteLength >= 4 && bytes[0] === 0x1a && bytes[1] === 0x45 && bytes[2] === 0xdf && bytes[3] === 0xa3;
175
+ }
176
+ function toJsonValue(value) {
177
+ if (value instanceof Uint8Array) return {
178
+ byteLength: value.byteLength
179
+ };
180
+ if (Array.isArray(value)) return value.map(toJsonValue);
181
+ if (value && typeof value === "object") {
182
+ const output = {};
183
+ for (const [key, entry] of Object.entries(value)) output[key] = toJsonValue(entry);
184
+ return output;
185
+ }
186
+ return value;
187
+ }
188
+ function inspectMP4(bytes) {
189
+ return {
190
+ sourceFormat: "mp4",
191
+ brand: fourCc(bytes, 8),
192
+ container: "isobmff"
193
+ };
194
+ }
195
+ function inspectWebM(bytes) {
196
+ const roots = readEbmlElements(bytes, 0, bytes.byteLength);
197
+ const fallbackRoots = readEbmlElements(bytes, 4, bytes.byteLength);
198
+ const segment = roots.find(element => element.id === 0x18538067) || fallbackRoots.find(element => element.id === 0x18538067);
199
+ if (!segment) {
200
+ return {
201
+ sourceFormat: "webm",
202
+ container: "ebml",
203
+ duration: 0,
204
+ durationTimescale: 1,
205
+ tracks: []
206
+ };
207
+ }
208
+ const children = readEbmlElements(bytes, segment.dataStart, segment.end);
209
+ const info = children.find(element => element.id === 0x1549a966);
210
+ const tracks = children.find(element => element.id === 0x1654ae6b);
211
+ const infoChildren = info ? readEbmlElements(bytes, info.dataStart, info.end) : [];
212
+ const timecodeScale = readEbmlUnsignedValue(bytes, infoChildren.find(element => element.id === 0x2ad7b1)) || 1000000;
213
+ const durationTicks = readEbmlFloatValue(bytes, infoChildren.find(element => element.id === 0x4489)) || 0;
214
+ const duration = Math.round(durationTicks * timecodeScale);
215
+ const clusters = children.filter(element => element.id === 0x1f43b675);
216
+ const blockSummary = readWebmBlocks(bytes, clusters);
217
+ return {
218
+ sourceFormat: "webm",
219
+ container: "ebml",
220
+ timecodeScale,
221
+ duration,
222
+ durationTimescale: 1000000000,
223
+ durationSeconds: duration / 1000000000,
224
+ tracks: tracks ? readWebmTracks(bytes, tracks) : [],
225
+ clusterCount: clusters.length,
226
+ blockCount: blockSummary.blockCount,
227
+ blockTrackIds: blockSummary.trackIds,
228
+ clusterTimecodes: blockSummary.clusterTimecodes,
229
+ blocks: blockSummary.blocks
230
+ };
231
+ }
232
+ function readWebmTracks(bytes, tracksElement) {
233
+ return readEbmlElements(bytes, tracksElement.dataStart, tracksElement.end).filter(element => element.id === 0xae).map(entry => {
234
+ const fields = readEbmlElements(bytes, entry.dataStart, entry.end);
235
+ const trackType = readEbmlUnsignedValue(bytes, fields.find(field => field.id === 0x83));
236
+ const video = fields.find(field => field.id === 0xe0);
237
+ const audio = fields.find(field => field.id === 0xe1);
238
+ const codecPrivate = fields.find(field => field.id === 0x63a2);
239
+ const result = {
240
+ id: readEbmlUnsignedValue(bytes, fields.find(field => field.id === 0xd7)) || 0,
241
+ type: trackType === 1 ? "video" : trackType === 2 ? "audio" : "unknown",
242
+ codec: readEbmlStringValue(bytes, fields.find(field => field.id === 0x86)) || "",
243
+ language: readEbmlStringValue(bytes, fields.find(field => field.id === 0x22b59c)) || "und"
244
+ };
245
+ const defaultDuration = readEbmlUnsignedValue(bytes, fields.find(field => field.id === 0x23e383));
246
+ if (defaultDuration) result.defaultDuration = defaultDuration;
247
+ if (codecPrivate) result.codecPrivateBytes = codecPrivate.end - codecPrivate.dataStart;
248
+ if (video) {
249
+ const videoFields = readEbmlElements(bytes, video.dataStart, video.end);
250
+ result.width = readEbmlUnsignedValue(bytes, videoFields.find(field => field.id === 0xb0)) || 0;
251
+ result.height = readEbmlUnsignedValue(bytes, videoFields.find(field => field.id === 0xba)) || 0;
252
+ }
253
+ if (audio) {
254
+ const audioFields = readEbmlElements(bytes, audio.dataStart, audio.end);
255
+ result.channels = readEbmlUnsignedValue(bytes, audioFields.find(field => field.id === 0x9f)) || 0;
256
+ result.sampleRate = readEbmlFloatValue(bytes, audioFields.find(field => field.id === 0xb5)) || 0;
257
+ result.bitDepth = readEbmlUnsignedValue(bytes, audioFields.find(field => field.id === 0x6264)) || 0;
258
+ }
259
+ return result;
260
+ });
261
+ }
262
+ function readWebmBlocks(bytes, clusters) {
263
+ const trackIds = new Set();
264
+ const clusterTimecodes = [];
265
+ const blocks = [];
266
+ let blockCount = 0;
267
+ for (const cluster of clusters) {
268
+ const children = readEbmlElements(bytes, cluster.dataStart, cluster.end);
269
+ const clusterTimecode = readEbmlUnsignedValue(bytes, children.find(child => child.id === 0xe7));
270
+ clusterTimecodes.push(clusterTimecode);
271
+ for (const child of children) {
272
+ if (child.id === 0xa3) {
273
+ blockCount++;
274
+ const block = readWebmBlock(bytes, child, clusterTimecode, true);
275
+ if (block) {
276
+ blocks.push(block);
277
+ trackIds.add(block.trackId);
278
+ }
279
+ } else if (child.id === 0xa0) {
280
+ const groupChildren = readEbmlElements(bytes, child.dataStart, child.end);
281
+ const reference = groupChildren.some(groupChild => groupChild.id === 0xfb);
282
+ for (const groupChild of groupChildren) {
283
+ if (groupChild.id !== 0xa1) continue;
284
+ blockCount++;
285
+ const block = readWebmBlock(bytes, groupChild, clusterTimecode, false);
286
+ if (block) {
287
+ block.keyframe = !reference;
288
+ blocks.push(block);
289
+ trackIds.add(block.trackId);
290
+ }
291
+ }
292
+ }
293
+ }
294
+ }
295
+ return {
296
+ blockCount,
297
+ trackIds: Array.from(trackIds).sort((a, b) => a - b),
298
+ clusterTimecodes,
299
+ blocks
300
+ };
301
+ }
302
+ function readWebmBlock(bytes, element, clusterTimecode, simple) {
303
+ const track = readEbmlVint(bytes, element.dataStart, element.end);
304
+ if (!track || track.value === null || element.dataStart + track.length + 3 > element.end) return null;
305
+ const timecodeOffset = element.dataStart + track.length;
306
+ const relativeTimecode = bytes[timecodeOffset] << 8 | bytes[timecodeOffset + 1];
307
+ const signedTimecode = relativeTimecode & 0x8000 ? relativeTimecode - 0x10000 : relativeTimecode;
308
+ const flags = bytes[timecodeOffset + 2];
309
+ const lacing = ["none", "xiph", "fixed", "ebml"][flags >> 1 & 0x03];
310
+ const frames = readWebmBlockFrames(bytes, timecodeOffset + 3, element.end, lacing);
311
+ return {
312
+ trackId: track.value,
313
+ timecode: signedTimecode,
314
+ absoluteTimecode: clusterTimecode + signedTimecode,
315
+ keyframe: simple ? !!(flags & 0x80) : false,
316
+ invisible: !!(flags & 0x08),
317
+ lacing,
318
+ frameCount: frames.frameCount,
319
+ frameSizes: frames.frameSizes,
320
+ payloadBytes: frames.payloadBytes,
321
+ ...(frames.error ? {
322
+ lacingError: frames.error
323
+ } : {})
324
+ };
325
+ }
326
+ function readWebmBlockFrames(bytes, payloadStart, payloadEnd, lacing) {
327
+ const payloadBytes = Math.max(0, payloadEnd - payloadStart);
328
+ if (payloadStart > payloadEnd) return {
329
+ frameCount: 0,
330
+ frameSizes: [],
331
+ payloadBytes: 0,
332
+ error: "invalid-payload-range"
333
+ };
334
+ if (lacing === "none") return {
335
+ frameCount: 1,
336
+ frameSizes: [payloadBytes],
337
+ payloadBytes
338
+ };
339
+ if (payloadStart >= payloadEnd) return {
340
+ frameCount: 0,
341
+ frameSizes: [],
342
+ payloadBytes,
343
+ error: "missing-lacing-header"
344
+ };
345
+ const frameCount = bytes[payloadStart] + 1;
346
+ const dataStart = payloadStart + 1;
347
+ if (frameCount < 2) return {
348
+ frameCount,
349
+ frameSizes: [],
350
+ payloadBytes,
351
+ error: "invalid-laced-frame-count"
352
+ };
353
+ if (lacing === "fixed") return readFixedLacedFrames(payloadBytes, frameCount);
354
+ if (lacing === "xiph") return readXiphLacedFrames(bytes, dataStart, payloadEnd, payloadBytes, frameCount);
355
+ return readEbmlLacedFrames(bytes, dataStart, payloadEnd, payloadBytes, frameCount);
356
+ }
357
+ function readFixedLacedFrames(payloadBytes, frameCount) {
358
+ const dataBytes = payloadBytes - 1;
359
+ if (dataBytes < 0 || dataBytes % frameCount !== 0) {
360
+ return {
361
+ frameCount,
362
+ frameSizes: [],
363
+ payloadBytes,
364
+ error: "invalid-fixed-lacing-size"
365
+ };
366
+ }
367
+ return {
368
+ frameCount,
369
+ frameSizes: Array.from({
370
+ length: frameCount
371
+ }, () => dataBytes / frameCount),
372
+ payloadBytes
373
+ };
374
+ }
375
+ function readXiphLacedFrames(bytes, offset, end, payloadBytes, frameCount) {
376
+ const frameSizes = [];
377
+ for (let frame = 0; frame < frameCount - 1; frame++) {
378
+ let size = 0;
379
+ let closed = false;
380
+ while (offset < end) {
381
+ const value = bytes[offset++];
382
+ size += value;
383
+ if (value !== 255) {
384
+ closed = true;
385
+ break;
386
+ }
387
+ }
388
+ if (!closed) return {
389
+ frameCount,
390
+ frameSizes: [],
391
+ payloadBytes,
392
+ error: "unterminated-xiph-lacing-size"
393
+ };
394
+ frameSizes.push(size);
395
+ }
396
+ const remaining = end - offset - frameSizes.reduce((sum, size) => sum + size, 0);
397
+ if (remaining < 0) return {
398
+ frameCount,
399
+ frameSizes: [],
400
+ payloadBytes,
401
+ error: "invalid-xiph-lacing-size"
402
+ };
403
+ frameSizes.push(remaining);
404
+ return {
405
+ frameCount,
406
+ frameSizes,
407
+ payloadBytes
408
+ };
409
+ }
410
+ function readEbmlLacedFrames(bytes, offset, end, payloadBytes, frameCount) {
411
+ const first = readEbmlVint(bytes, offset, end);
412
+ if (!first || first.value === null) return {
413
+ frameCount,
414
+ frameSizes: [],
415
+ payloadBytes,
416
+ error: "missing-ebml-lacing-size"
417
+ };
418
+ const frameSizes = [first.value];
419
+ offset += first.length;
420
+ for (let frame = 1; frame < frameCount - 1; frame++) {
421
+ const delta = readEbmlSignedVint(bytes, offset, end);
422
+ if (!delta) return {
423
+ frameCount,
424
+ frameSizes: [],
425
+ payloadBytes,
426
+ error: "missing-ebml-lacing-delta"
427
+ };
428
+ const size = frameSizes[frame - 1] + delta.value;
429
+ if (size < 0) return {
430
+ frameCount,
431
+ frameSizes: [],
432
+ payloadBytes,
433
+ error: "invalid-ebml-lacing-size"
434
+ };
435
+ frameSizes.push(size);
436
+ offset += delta.length;
437
+ }
438
+ const remaining = end - offset - frameSizes.reduce((sum, size) => sum + size, 0);
439
+ if (remaining < 0) return {
440
+ frameCount,
441
+ frameSizes: [],
442
+ payloadBytes,
443
+ error: "invalid-ebml-lacing-size"
444
+ };
445
+ frameSizes.push(remaining);
446
+ return {
447
+ frameCount,
448
+ frameSizes,
449
+ payloadBytes
450
+ };
451
+ }
452
+ function readEbmlElements(bytes, start, end) {
453
+ const elements = [];
454
+ let offset = start;
455
+ while (offset < end) {
456
+ const id = readEbmlId(bytes, offset, end);
457
+ if (!id) break;
458
+ const size = readEbmlVint(bytes, offset + id.length, end);
459
+ if (!size) break;
460
+ const dataStart = offset + id.length + size.length;
461
+ const elementEnd = size.value === null ? end : dataStart + size.value;
462
+ if (elementEnd > end) break;
463
+ elements.push({
464
+ id: id.value,
465
+ dataStart,
466
+ end: elementEnd
467
+ });
468
+ if (size.value === null) break;
469
+ offset = elementEnd;
470
+ }
471
+ return elements;
472
+ }
473
+ function readEbmlId(bytes, offset, end) {
474
+ if (offset >= end) return null;
475
+ const first = bytes[offset];
476
+ let length = 1;
477
+ let mask = 0x80;
478
+ while (length <= 4 && !(first & mask)) {
479
+ length++;
480
+ mask >>>= 1;
481
+ }
482
+ if (length > 4 || offset + length > end) return null;
483
+ let value = 0;
484
+ for (let i = 0; i < length; i++) value = value * 256 + bytes[offset + i];
485
+ return {
486
+ value,
487
+ length
488
+ };
489
+ }
490
+ function readEbmlVint(bytes, offset, end, removeMarker) {
491
+ if (offset >= end) return null;
492
+ const first = bytes[offset];
493
+ let length = 1;
494
+ let mask = 0x80;
495
+ while (length <= 8 && !(first & mask)) {
496
+ length++;
497
+ mask >>>= 1;
498
+ }
499
+ if (length > 8 || offset + length > end) return null;
500
+ let value = first & (~mask & 0xff) ;
501
+ for (let i = 1; i < length; i++) value = value * 256 + bytes[offset + i];
502
+ const unknown = value === Math.pow(2, length * 7) - 1;
503
+ return {
504
+ value: unknown ? null : value,
505
+ length
506
+ };
507
+ }
508
+ function readEbmlSignedVint(bytes, offset, end) {
509
+ const vint = readEbmlVint(bytes, offset, end);
510
+ if (!vint || vint.value === null) return null;
511
+ const bias = Math.pow(2, vint.length * 7 - 1) - 1;
512
+ return {
513
+ value: vint.value - bias,
514
+ length: vint.length
515
+ };
516
+ }
517
+ function readEbmlUnsignedValue(bytes, element) {
518
+ if (!element) return 0;
519
+ let value = 0;
520
+ for (let offset = element.dataStart; offset < element.end; offset++) value = value * 256 + bytes[offset];
521
+ return value;
522
+ }
523
+ function readEbmlFloatValue(bytes, element) {
524
+ if (!element || ![4, 8].includes(element.end - element.dataStart)) return 0;
525
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
526
+ return element.end - element.dataStart === 4 ? view.getFloat32(element.dataStart, false) : view.getFloat64(element.dataStart, false);
527
+ }
528
+ function readEbmlStringValue(bytes, element) {
529
+ if (!element) return "";
530
+ return new TextDecoder().decode(bytes.subarray(element.dataStart, element.end));
531
+ }
532
+ function fourCc(bytes, offset) {
533
+ return String.fromCharCode(bytes[offset] || 0, bytes[offset + 1] || 0, bytes[offset + 2] || 0, bytes[offset + 3] || 0);
534
+ }
535
+
536
+ export { DEFAULT_VALUES, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_VIDEO, inspectBytes, inspectWithValues, isMP4, isSupportedWithValues, isWebM, normalizeEmit, normalizeValues, readWithValues, toBytes, toJsonValue };
537
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/webm/core/helpers.js"],"sourcesContent":["export const OUTPUT_VIDEO = \"video\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n mp4: \"mp4Json\",\n webm: \"webmJson\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsVideoFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_VIDEO, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"Video input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsVideoFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"video\",\n mediaTypes: [ \"video\" ],\n byteLength: bytes.byteLength,\n sourceFormat: expectedType || values.inputType || metadata.sourceFormat,\n ...metadata\n };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? \"partial\" : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: \"container\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized video format.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n frameDecodeSupported: false\n },\n {\n kind: \"container\",\n payloadType: \"video\",\n codec: metadata.sourceFormat,\n mimeType,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n frameDecodeSupported: false\n },\n {\n kind: \"decoded\",\n payloadType: \"video-frame\",\n codec: \"frames\",\n supported: false,\n reason: \"Video decode is not implemented in this package.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\n\n if (values.emit === OUTPUT_VIDEO && metadata.sourceFormat === \"webm\")\n {\n const codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\n return {\n payloadType: OUTPUT_VIDEO,\n sourceFormat: \"webm\",\n container: metadata.container,\n mimeType,\n containerOnly: true,\n isDecoded: false,\n frameDecodeSupported: false,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n duration: metadata.duration || 0,\n durationTimescale: metadata.durationTimescale || 1,\n tracks: metadata.tracks || [],\n metadata,\n sourceBytes: bytes\n };\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction getTrackCodecSummary(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return {\n codecs: uniqueTrackCodecs(tracks),\n videoCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"video\")),\n audioCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"audio\"))\n };\n}\n\nfunction uniqueTrackCodecs(tracks)\n{\n return [ ...new Set(tracks.map((track) => track.codec).filter(Boolean)) ];\n}\n\nfunction getMediaMimeType(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return tracks.some((track) => track.type === \"video\") ? \"video/webm\" : \"audio/webm\";\n}\n\nexport function inspectBytes(bytes)\n{\n if (isMP4(bytes)) return inspectMP4(bytes);\n if (isWebM(bytes)) return inspectWebM(bytes);\n return { sourceFormat: \"\" };\n}\n\nexport function isMP4(bytes)\n{\n return bytes.byteLength >= 12 && fourCc(bytes, 4) === \"ftyp\";\n}\n\nexport function isWebM(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0x1a && bytes[1] === 0x45 && bytes[2] === 0xdf && bytes[3] === 0xa3;\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction inspectMP4(bytes)\n{\n return {\n sourceFormat: \"mp4\",\n brand: fourCc(bytes, 8),\n container: \"isobmff\"\n };\n}\n\nfunction inspectWebM(bytes)\n{\n const roots = readEbmlElements(bytes, 0, bytes.byteLength);\n const fallbackRoots = readEbmlElements(bytes, 4, bytes.byteLength);\n const segment = roots.find((element) => element.id === 0x18538067) ||\n fallbackRoots.find((element) => element.id === 0x18538067);\n if (!segment)\n {\n return {\n sourceFormat: \"webm\",\n container: \"ebml\",\n duration: 0,\n durationTimescale: 1,\n tracks: []\n };\n }\n\n const children = readEbmlElements(bytes, segment.dataStart, segment.end);\n const info = children.find((element) => element.id === 0x1549a966);\n const tracks = children.find((element) => element.id === 0x1654ae6b);\n const infoChildren = info ? readEbmlElements(bytes, info.dataStart, info.end) : [];\n const timecodeScale = readEbmlUnsignedValue(bytes, infoChildren.find((element) => element.id === 0x2ad7b1)) || 1000000;\n const durationTicks = readEbmlFloatValue(bytes, infoChildren.find((element) => element.id === 0x4489)) || 0;\n const duration = Math.round(durationTicks * timecodeScale);\n const clusters = children.filter((element) => element.id === 0x1f43b675);\n const blockSummary = readWebmBlocks(bytes, clusters);\n\n return {\n sourceFormat: \"webm\",\n container: \"ebml\",\n timecodeScale,\n duration,\n durationTimescale: 1000000000,\n durationSeconds: duration / 1000000000,\n tracks: tracks ? readWebmTracks(bytes, tracks) : [],\n clusterCount: clusters.length,\n blockCount: blockSummary.blockCount,\n blockTrackIds: blockSummary.trackIds,\n clusterTimecodes: blockSummary.clusterTimecodes,\n blocks: blockSummary.blocks\n };\n}\n\nfunction readWebmTracks(bytes, tracksElement)\n{\n return readEbmlElements(bytes, tracksElement.dataStart, tracksElement.end)\n .filter((element) => element.id === 0xae)\n .map((entry) =>\n {\n const fields = readEbmlElements(bytes, entry.dataStart, entry.end);\n const trackType = readEbmlUnsignedValue(bytes, fields.find((field) => field.id === 0x83));\n const video = fields.find((field) => field.id === 0xe0);\n const audio = fields.find((field) => field.id === 0xe1);\n const codecPrivate = fields.find((field) => field.id === 0x63a2);\n const result = {\n id: readEbmlUnsignedValue(bytes, fields.find((field) => field.id === 0xd7)) || 0,\n type: trackType === 1 ? \"video\" : trackType === 2 ? \"audio\" : \"unknown\",\n codec: readEbmlStringValue(bytes, fields.find((field) => field.id === 0x86)) || \"\",\n language: readEbmlStringValue(bytes, fields.find((field) => field.id === 0x22b59c)) || \"und\"\n };\n const defaultDuration = readEbmlUnsignedValue(bytes, fields.find((field) => field.id === 0x23e383));\n if (defaultDuration) result.defaultDuration = defaultDuration;\n if (codecPrivate) result.codecPrivateBytes = codecPrivate.end - codecPrivate.dataStart;\n if (video)\n {\n const videoFields = readEbmlElements(bytes, video.dataStart, video.end);\n result.width = readEbmlUnsignedValue(bytes, videoFields.find((field) => field.id === 0xb0)) || 0;\n result.height = readEbmlUnsignedValue(bytes, videoFields.find((field) => field.id === 0xba)) || 0;\n }\n if (audio)\n {\n const audioFields = readEbmlElements(bytes, audio.dataStart, audio.end);\n result.channels = readEbmlUnsignedValue(bytes, audioFields.find((field) => field.id === 0x9f)) || 0;\n result.sampleRate = readEbmlFloatValue(bytes, audioFields.find((field) => field.id === 0xb5)) || 0;\n result.bitDepth = readEbmlUnsignedValue(bytes, audioFields.find((field) => field.id === 0x6264)) || 0;\n }\n return result;\n });\n}\n\nfunction readWebmBlocks(bytes, clusters)\n{\n const trackIds = new Set();\n const clusterTimecodes = [];\n const blocks = [];\n let blockCount = 0;\n for (const cluster of clusters)\n {\n const children = readEbmlElements(bytes, cluster.dataStart, cluster.end);\n const clusterTimecode = readEbmlUnsignedValue(bytes, children.find((child) => child.id === 0xe7));\n clusterTimecodes.push(clusterTimecode);\n for (const child of children)\n {\n if (child.id === 0xa3)\n {\n blockCount++;\n const block = readWebmBlock(bytes, child, clusterTimecode, true);\n if (block)\n {\n blocks.push(block);\n trackIds.add(block.trackId);\n }\n }\n else if (child.id === 0xa0)\n {\n const groupChildren = readEbmlElements(bytes, child.dataStart, child.end);\n const reference = groupChildren.some((groupChild) => groupChild.id === 0xfb);\n for (const groupChild of groupChildren)\n {\n if (groupChild.id !== 0xa1) continue;\n blockCount++;\n const block = readWebmBlock(bytes, groupChild, clusterTimecode, false);\n if (block)\n {\n block.keyframe = !reference;\n blocks.push(block);\n trackIds.add(block.trackId);\n }\n }\n }\n }\n }\n return {\n blockCount,\n trackIds: Array.from(trackIds).sort((a, b) => a - b),\n clusterTimecodes,\n blocks\n };\n}\n\nfunction readWebmBlock(bytes, element, clusterTimecode, simple)\n{\n const track = readEbmlVint(bytes, element.dataStart, element.end, true);\n if (!track || track.value === null || element.dataStart + track.length + 3 > element.end) return null;\n const timecodeOffset = element.dataStart + track.length;\n const relativeTimecode = (bytes[timecodeOffset] << 8) | bytes[timecodeOffset + 1];\n const signedTimecode = relativeTimecode & 0x8000 ? relativeTimecode - 0x10000 : relativeTimecode;\n const flags = bytes[timecodeOffset + 2];\n const lacing = [ \"none\", \"xiph\", \"fixed\", \"ebml\" ][(flags >> 1) & 0x03];\n const frames = readWebmBlockFrames(bytes, timecodeOffset + 3, element.end, lacing);\n return {\n trackId: track.value,\n timecode: signedTimecode,\n absoluteTimecode: clusterTimecode + signedTimecode,\n keyframe: simple ? !!(flags & 0x80) : false,\n invisible: !!(flags & 0x08),\n lacing,\n frameCount: frames.frameCount,\n frameSizes: frames.frameSizes,\n payloadBytes: frames.payloadBytes,\n ...(frames.error ? { lacingError: frames.error } : {})\n };\n}\n\nfunction readWebmBlockFrames(bytes, payloadStart, payloadEnd, lacing)\n{\n const payloadBytes = Math.max(0, payloadEnd - payloadStart);\n if (payloadStart > payloadEnd) return { frameCount: 0, frameSizes: [], payloadBytes: 0, error: \"invalid-payload-range\" };\n if (lacing === \"none\") return { frameCount: 1, frameSizes: [ payloadBytes ], payloadBytes };\n if (payloadStart >= payloadEnd) return { frameCount: 0, frameSizes: [], payloadBytes, error: \"missing-lacing-header\" };\n\n const frameCount = bytes[payloadStart] + 1;\n const dataStart = payloadStart + 1;\n if (frameCount < 2) return { frameCount, frameSizes: [], payloadBytes, error: \"invalid-laced-frame-count\" };\n if (lacing === \"fixed\") return readFixedLacedFrames(payloadBytes, frameCount);\n if (lacing === \"xiph\") return readXiphLacedFrames(bytes, dataStart, payloadEnd, payloadBytes, frameCount);\n return readEbmlLacedFrames(bytes, dataStart, payloadEnd, payloadBytes, frameCount);\n}\n\nfunction readFixedLacedFrames(payloadBytes, frameCount)\n{\n const dataBytes = payloadBytes - 1;\n if (dataBytes < 0 || dataBytes % frameCount !== 0)\n {\n return { frameCount, frameSizes: [], payloadBytes, error: \"invalid-fixed-lacing-size\" };\n }\n return { frameCount, frameSizes: Array.from({ length: frameCount }, () => dataBytes / frameCount), payloadBytes };\n}\n\nfunction readXiphLacedFrames(bytes, offset, end, payloadBytes, frameCount)\n{\n const frameSizes = [];\n for (let frame = 0; frame < frameCount - 1; frame++)\n {\n let size = 0;\n let closed = false;\n while (offset < end)\n {\n const value = bytes[offset++];\n size += value;\n if (value !== 255)\n {\n closed = true;\n break;\n }\n }\n if (!closed) return { frameCount, frameSizes: [], payloadBytes, error: \"unterminated-xiph-lacing-size\" };\n frameSizes.push(size);\n }\n\n const remaining = end - offset - frameSizes.reduce((sum, size) => sum + size, 0);\n if (remaining < 0) return { frameCount, frameSizes: [], payloadBytes, error: \"invalid-xiph-lacing-size\" };\n frameSizes.push(remaining);\n return { frameCount, frameSizes, payloadBytes };\n}\n\nfunction readEbmlLacedFrames(bytes, offset, end, payloadBytes, frameCount)\n{\n const first = readEbmlVint(bytes, offset, end, true);\n if (!first || first.value === null) return { frameCount, frameSizes: [], payloadBytes, error: \"missing-ebml-lacing-size\" };\n\n const frameSizes = [ first.value ];\n offset += first.length;\n for (let frame = 1; frame < frameCount - 1; frame++)\n {\n const delta = readEbmlSignedVint(bytes, offset, end);\n if (!delta) return { frameCount, frameSizes: [], payloadBytes, error: \"missing-ebml-lacing-delta\" };\n const size = frameSizes[frame - 1] + delta.value;\n if (size < 0) return { frameCount, frameSizes: [], payloadBytes, error: \"invalid-ebml-lacing-size\" };\n frameSizes.push(size);\n offset += delta.length;\n }\n\n const remaining = end - offset - frameSizes.reduce((sum, size) => sum + size, 0);\n if (remaining < 0) return { frameCount, frameSizes: [], payloadBytes, error: \"invalid-ebml-lacing-size\" };\n frameSizes.push(remaining);\n return { frameCount, frameSizes, payloadBytes };\n}\n\nfunction readEbmlElements(bytes, start, end)\n{\n const elements = [];\n let offset = start;\n while (offset < end)\n {\n const id = readEbmlId(bytes, offset, end);\n if (!id) break;\n const size = readEbmlVint(bytes, offset + id.length, end, true);\n if (!size) break;\n const dataStart = offset + id.length + size.length;\n const elementEnd = size.value === null ? end : dataStart + size.value;\n if (elementEnd > end) break;\n elements.push({ id: id.value, dataStart, end: elementEnd });\n if (size.value === null) break;\n offset = elementEnd;\n }\n return elements;\n}\n\nfunction readEbmlId(bytes, offset, end)\n{\n if (offset >= end) return null;\n const first = bytes[offset];\n let length = 1;\n let mask = 0x80;\n while (length <= 4 && !(first & mask))\n {\n length++;\n mask >>>= 1;\n }\n if (length > 4 || offset + length > end) return null;\n let value = 0;\n for (let i = 0; i < length; i++) value = value * 256 + bytes[offset + i];\n return { value, length };\n}\n\nfunction readEbmlVint(bytes, offset, end, removeMarker)\n{\n if (offset >= end) return null;\n const first = bytes[offset];\n let length = 1;\n let mask = 0x80;\n while (length <= 8 && !(first & mask))\n {\n length++;\n mask >>>= 1;\n }\n if (length > 8 || offset + length > end) return null;\n let value = removeMarker ? first & (~mask & 0xff) : first;\n for (let i = 1; i < length; i++) value = value * 256 + bytes[offset + i];\n const unknown = removeMarker && value === Math.pow(2, length * 7) - 1;\n return { value: unknown ? null : value, length };\n}\n\nfunction readEbmlSignedVint(bytes, offset, end)\n{\n const vint = readEbmlVint(bytes, offset, end, true);\n if (!vint || vint.value === null) return null;\n const bias = Math.pow(2, (vint.length * 7) - 1) - 1;\n return { value: vint.value - bias, length: vint.length };\n}\n\nfunction readEbmlUnsignedValue(bytes, element)\n{\n if (!element) return 0;\n let value = 0;\n for (let offset = element.dataStart; offset < element.end; offset++) value = value * 256 + bytes[offset];\n return value;\n}\n\nfunction readEbmlFloatValue(bytes, element)\n{\n if (!element || ![ 4, 8 ].includes(element.end - element.dataStart)) return 0;\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n return element.end - element.dataStart === 4\n ? view.getFloat32(element.dataStart, false)\n : view.getFloat64(element.dataStart, false);\n}\n\nfunction readEbmlStringValue(bytes, element)\n{\n if (!element) return \"\";\n return new TextDecoder().decode(bytes.subarray(element.dataStart, element.end));\n}\n\nfunction fourCc(bytes, offset)\n{\n return String.fromCharCode(bytes[offset] || 0, bytes[offset + 1] || 0, bytes[offset + 2] || 0, bytes[offset + 3] || 0);\n}\n"],"names":["OUTPUT_VIDEO","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","mp4","webm","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","isSupportedWithValues","codecs","getTrackCodecSummary","mimeType","getMediaMimeType","format","supported","confidence","preferred","reason","variants","kind","codec","containerOnly","isDecoded","frameDecodeSupported","videoCodecs","audioCodecs","warnings","errors","error","message","readWithValues","container","duration","durationTimescale","tracks","sourceBytes","Error","code","Array","isArray","uniqueTrackCodecs","filter","track","type","Set","map","Boolean","some","isMP4","inspectMP4","isWebM","inspectWebM","fourCc","toJsonValue","value","output","key","entry","entries","brand","roots","readEbmlElements","fallbackRoots","segment","find","element","id","children","dataStart","end","info","infoChildren","timecodeScale","readEbmlUnsignedValue","durationTicks","readEbmlFloatValue","Math","round","clusters","blockSummary","readWebmBlocks","durationSeconds","readWebmTracks","clusterCount","length","blockCount","blockTrackIds","trackIds","clusterTimecodes","blocks","tracksElement","fields","trackType","field","video","audio","codecPrivate","result","readEbmlStringValue","language","defaultDuration","codecPrivateBytes","videoFields","width","height","audioFields","channels","sampleRate","bitDepth","cluster","clusterTimecode","child","push","block","readWebmBlock","add","trackId","groupChildren","reference","groupChild","keyframe","from","sort","a","b","simple","readEbmlVint","timecodeOffset","relativeTimecode","signedTimecode","flags","lacing","frames","readWebmBlockFrames","timecode","absoluteTimecode","invisible","frameCount","frameSizes","payloadBytes","lacingError","payloadStart","payloadEnd","max","readFixedLacedFrames","readXiphLacedFrames","readEbmlLacedFrames","dataBytes","offset","frame","size","closed","remaining","reduce","sum","first","delta","readEbmlSignedVint","start","elements","readEbmlId","elementEnd","mask","i","removeMarker","unknown","pow","vint","bias","view","DataView","getFloat32","getFloat64","TextDecoder","decode","subarray","fromCharCode"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { CjsWebmFormat, CjsWebmFormat as default } from './CjsWebmFormat.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}