@carbonenginejs/runtime-resource 0.8.0 → 0.9.1

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 (297) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +31 -29
  3. package/README.md +67 -548
  4. package/dist/CjsMotherLode.js +1271 -1271
  5. package/dist/CjsResMan.js +3005 -3005
  6. package/dist/CjsResManQueue.js +214 -214
  7. package/dist/CjsResource.js +566 -566
  8. package/dist/CjsResourceSource.js +68 -59
  9. package/dist/CjsResourceSource.js.map +1 -1
  10. package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -153
  11. package/dist/format/CjsBlueReader.js +269 -269
  12. package/dist/format/CjsFormat.js +197 -192
  13. package/dist/format/CjsFormat.js.map +1 -1
  14. package/dist/format/CjsReader.js +18 -18
  15. package/dist/format/CjsResourceProbe.js +277 -277
  16. package/dist/format/payloadContract.js +173 -173
  17. package/dist/formats/black/CjsBlackFormat.js +278 -278
  18. package/dist/formats/black/core/CjsBlackBinaryReader.js +157 -153
  19. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  20. package/dist/formats/black/core/CjsBlackPropertyReaders.js +387 -382
  21. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  22. package/dist/formats/black/core/CjsBlackReader.js +639 -639
  23. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +437 -433
  24. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  25. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -0
  26. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js.map +1 -0
  27. package/dist/formats/black/core/blackConstants.js +7 -7
  28. package/dist/formats/black/core/blackDefinitions.js +10 -10
  29. package/dist/formats/black/core/blackDefinitions.js.map +1 -1
  30. package/dist/formats/black/core/blackEnums.js +6 -6
  31. package/dist/formats/black/core/blackSchema.js +3 -3
  32. package/dist/formats/black/core/blackVersion.js +22 -22
  33. package/dist/formats/black/core/helpers.js +182 -182
  34. package/dist/formats/black/core/schema.js +4 -4
  35. package/dist/formats/black/index.js +2 -2
  36. package/dist/formats/bnk/CjsBnkFormat.js +125 -125
  37. package/dist/formats/bnk/core/graph.js +140 -140
  38. package/dist/formats/bnk/core/helpers.js +409 -409
  39. package/dist/formats/bnk/core/musicNodes.js +493 -489
  40. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  41. package/dist/formats/bnk/core/soundbanksInfo.js +246 -246
  42. package/dist/formats/bnk/index.js +2 -2
  43. package/dist/formats/cmf/CjsCmfFormat.js +497 -497
  44. package/dist/formats/cmf/core/binary.js +123 -118
  45. package/dist/formats/cmf/core/binary.js.map +1 -1
  46. package/dist/formats/cmf/core/buffers.js +233 -233
  47. package/dist/formats/cmf/core/constants.js +47 -47
  48. package/dist/formats/cmf/core/gr2Anim.js +453 -453
  49. package/dist/formats/cmf/core/helpers.js +287 -287
  50. package/dist/formats/cmf/core/pack.js +276 -276
  51. package/dist/formats/cmf/core/schema.js +364 -364
  52. package/dist/formats/cmf/core/shared.js +268 -268
  53. package/dist/formats/cmf/core/writer.js +517 -517
  54. package/dist/formats/cmf/index.js +2 -2
  55. package/dist/formats/dds/CjsDdsFormat.js +200 -193
  56. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  57. package/dist/formats/dds/core/bc6h.js +288 -288
  58. package/dist/formats/dds/core/bc7.js +256 -251
  59. package/dist/formats/dds/core/bc7.js.map +1 -1
  60. package/dist/formats/dds/core/helpers.js +815 -815
  61. package/dist/formats/dds/index.js +2 -2
  62. package/dist/formats/fbx/CjsFbxFormat.js +266 -266
  63. package/dist/formats/fbx/core/helpers.js +3911 -3901
  64. package/dist/formats/fbx/core/helpers.js.map +1 -1
  65. package/dist/formats/fbx/index.js +2 -2
  66. package/dist/formats/flac/CjsFlacFormat.js +93 -87
  67. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  68. package/dist/formats/flac/core/helpers.js +295 -295
  69. package/dist/formats/flac/index.js +2 -2
  70. package/dist/formats/gif/CjsGifFormat.js +92 -87
  71. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  72. package/dist/formats/gif/core/helpers.js +360 -360
  73. package/dist/formats/gif/index.js +2 -2
  74. package/dist/formats/gltf/CjsGltfFormat.js +290 -290
  75. package/dist/formats/gltf/core/helpers.js +292 -292
  76. package/dist/formats/gltf/core/json.js +79 -79
  77. package/dist/formats/gltf/core/parser.js +666 -666
  78. package/dist/formats/gltf/core/targets.js +163 -163
  79. package/dist/formats/gltf/index.js +2 -2
  80. package/dist/formats/gr2/CjsGr2Format.js +46 -0
  81. package/dist/formats/gr2/CjsGr2Format.js.map +1 -0
  82. package/dist/formats/gr2/core/CjsFormatGr2.js +273 -0
  83. package/dist/formats/gr2/core/CjsFormatGr2.js.map +1 -0
  84. package/dist/formats/gr2/core/bitknit2.js +280 -0
  85. package/dist/formats/gr2/core/bitknit2.js.map +1 -0
  86. package/dist/formats/gr2/core/curves.js +1047 -0
  87. package/dist/formats/gr2/core/curves.js.map +1 -0
  88. package/dist/formats/gr2/core/gsf.js +72 -0
  89. package/dist/formats/gr2/core/gsf.js.map +1 -0
  90. package/dist/formats/gr2/core/helpers.js +332 -0
  91. package/dist/formats/gr2/core/helpers.js.map +1 -0
  92. package/dist/formats/gr2/core/json.js +622 -0
  93. package/dist/formats/gr2/core/json.js.map +1 -0
  94. package/dist/formats/gr2/core/oodle1.js +388 -0
  95. package/dist/formats/gr2/core/oodle1.js.map +1 -0
  96. package/dist/formats/gr2/core/reader.js +617 -0
  97. package/dist/formats/gr2/core/reader.js.map +1 -0
  98. package/dist/formats/gr2/core/tangents.js +48 -0
  99. package/dist/formats/gr2/core/tangents.js.map +1 -0
  100. package/dist/formats/gr2/core/targets.js +351 -0
  101. package/dist/formats/gr2/core/targets.js.map +1 -0
  102. package/dist/formats/gr2/index.js +3 -0
  103. package/dist/formats/gr2/index.js.map +1 -0
  104. package/dist/formats/index.js +30 -23
  105. package/dist/formats/index.js.map +1 -1
  106. package/dist/formats/jpeg/CjsJpegFormat.js +212 -206
  107. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  108. package/dist/formats/jpeg/core/helpers.js +350 -350
  109. package/dist/formats/jpeg/core/jpeg.js +387 -377
  110. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  111. package/dist/formats/jpeg/index.js +2 -2
  112. package/dist/formats/mp3/CjsMp3Format.js +197 -192
  113. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  114. package/dist/formats/mp3/core/helpers.js +338 -338
  115. package/dist/formats/mp3/index.js +2 -2
  116. package/dist/formats/mp4/CjsMp4Format.js +197 -191
  117. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  118. package/dist/formats/mp4/core/helpers.js +449 -449
  119. package/dist/formats/mp4/index.js +2 -2
  120. package/dist/formats/obj/CjsObjFormat.js +253 -253
  121. package/dist/formats/obj/core/helpers.js +573 -573
  122. package/dist/formats/obj/core/json.js +64 -64
  123. package/dist/formats/obj/core/parser.js +321 -321
  124. package/dist/formats/obj/index.js +2 -2
  125. package/dist/formats/ogg/CjsOggFormat.js +94 -88
  126. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  127. package/dist/formats/ogg/core/helpers.js +387 -387
  128. package/dist/formats/ogg/core/imdct.js +178 -178
  129. package/dist/formats/ogg/core/vorbis.js +1004 -999
  130. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  131. package/dist/formats/ogg/index.js +2 -2
  132. package/dist/formats/png/CjsPngFormat.js +201 -195
  133. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  134. package/dist/formats/png/core/helpers.js +583 -583
  135. package/dist/formats/png/index.js +2 -2
  136. package/dist/formats/red/CjsRedFormat.js +261 -261
  137. package/dist/formats/red/core/CjsRedReader.js +194 -194
  138. package/dist/formats/red/core/blackDefinitions.js +3 -3
  139. package/dist/formats/red/core/helpers.js +139 -139
  140. package/dist/formats/red/core/redGraph.js +68 -68
  141. package/dist/formats/red/core/schema.js +4 -4
  142. package/dist/formats/red/index.js +2 -2
  143. package/dist/formats/stl/CjsStlFormat.js +365 -365
  144. package/dist/formats/stl/core/helpers.js +261 -261
  145. package/dist/formats/stl/core/json.js +51 -51
  146. package/dist/formats/stl/core/stl.js +634 -629
  147. package/dist/formats/stl/core/stl.js.map +1 -1
  148. package/dist/formats/stl/core/targets.js +163 -163
  149. package/dist/formats/stl/index.js +2 -2
  150. package/dist/formats/tga/CjsTgaFormat.js +197 -192
  151. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  152. package/dist/formats/tga/core/helpers.js +446 -446
  153. package/dist/formats/tga/index.js +2 -2
  154. package/dist/formats/wav/CjsWavFormat.js +198 -192
  155. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  156. package/dist/formats/wav/core/helpers.js +328 -328
  157. package/dist/formats/wav/index.js +2 -2
  158. package/dist/formats/webm/CjsWebmFormat.js +197 -191
  159. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  160. package/dist/formats/webm/core/helpers.js +537 -537
  161. package/dist/formats/webm/index.js +2 -2
  162. package/dist/formats/webp/CjsWebpFormat.js +91 -86
  163. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  164. package/dist/formats/webp/core/helpers.js +214 -214
  165. package/dist/formats/webp/index.js +2 -2
  166. package/dist/formats/wem/CjsWemFormat.js +242 -241
  167. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  168. package/dist/formats/wem/core/bitStream.js +259 -259
  169. package/dist/formats/wem/core/codebookLibrary.js +164 -164
  170. package/dist/formats/wem/core/helpers.js +417 -417
  171. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
  172. package/dist/formats/wem/core/ptadpcm.js +77 -77
  173. package/dist/formats/wem/core/resolve.js +121 -121
  174. package/dist/formats/wem/core/wemToOgg.js +485 -485
  175. package/dist/formats/wem/index.js +2 -2
  176. package/dist/formats/yaml/CjsYamlFormat.js +89 -83
  177. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  178. package/dist/formats/yaml/core/CjsYamlReader.js +311 -305
  179. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  180. package/dist/formats/yaml/core/helpers.js +160 -160
  181. package/dist/formats/yaml/index.js +2 -2
  182. package/dist/index.js +49 -48
  183. package/dist/index.js.map +1 -1
  184. package/dist/resourcePath.js +18 -18
  185. package/dist/resourceStates.js +9 -9
  186. package/dist/resources/AudioGeometryResData.js +47 -47
  187. package/dist/resources/GStateBindingCallbackData.js +31 -31
  188. package/dist/resources/MeshDecalData.js +37 -37
  189. package/dist/resources/MeshDecalLodData.js +34 -34
  190. package/dist/resources/Tr2EffectRes.js +71 -71
  191. package/dist/resources/Tr2GrannyIntersectionResult.js +60 -60
  192. package/dist/resources/Tr2GrannyStateRes.js +44 -44
  193. package/dist/resources/Tr2ImageRes.js +114 -114
  194. package/dist/resources/Tr2LightProfileRes.js +40 -40
  195. package/dist/resources/Tr2MaterialArea.js +34 -34
  196. package/dist/resources/Tr2MaterialMesh.js +31 -31
  197. package/dist/resources/Tr2MaterialRes.js +34 -34
  198. package/dist/resources/Tr2ShaderPermutation.js +43 -43
  199. package/dist/resources/Tr2TextureLodManager.js +80 -80
  200. package/dist/resources/Tr2TextureLodUpdateRequest.js +37 -37
  201. package/dist/resources/Tr2TexturePackChannel.js +37 -37
  202. package/dist/resources/Tr2TexturePipeline.js +52 -52
  203. package/dist/resources/Tr2TexturePipelineParams.js +34 -34
  204. package/dist/resources/Tr2TexturePipelineStepCompress.js +40 -40
  205. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js +22 -0
  206. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  207. package/dist/resources/Tr2TexturePipelineStepLimitSize.js +34 -34
  208. package/dist/resources/Tr2TexturePipelineStepLoad.js +31 -31
  209. package/dist/resources/Tr2TexturePipelineStepPack.js +43 -43
  210. package/dist/resources/TriGeometryRes.js +239 -239
  211. package/dist/resources/TriGeometryResAreaData.js +59 -59
  212. package/dist/resources/TriGeometryResJointData.js +38 -38
  213. package/dist/resources/TriGeometryResLodData.js +88 -88
  214. package/dist/resources/TriGeometryResMeshData.js +63 -63
  215. package/dist/resources/TriGeometryResSkeletonData.js +34 -34
  216. package/dist/resources/TriGrannyRes.js +43 -43
  217. package/dist/resources/TriJointBinding.js +38 -38
  218. package/dist/resources/TriMorphTargetGeometryConstants.js +46 -46
  219. package/dist/resources/TriRtGeometryConstants.js +88 -88
  220. package/dist/resources/TriTextureRes.js +304 -304
  221. package/dist/resources/enums.js +18 -18
  222. package/dist/resources/resourceBoundary.js +47 -47
  223. package/dist/resources/texturePipelineBehavior.js +308 -308
  224. package/dist/texture/CjsTextureArrayRes.js +406 -406
  225. package/dist/texture/CjsTextureParameterProxy.js +133 -133
  226. package/docs/README.md +73 -0
  227. package/docs/architecture.md +86 -0
  228. package/docs/concepts/resource-lifecycle.md +217 -0
  229. package/docs/formats/README.md +105 -0
  230. package/docs/formats/gr2.md +161 -0
  231. package/{FORMAT-PROVENANCE.md → docs/formats/provenance.md} +173 -155
  232. package/docs/formats/stl.md +37 -0
  233. package/docs/formats/wwise.md +44 -0
  234. package/docs/reference/classes/README.md +33 -0
  235. package/docs/reference/classes/core.md +106 -0
  236. package/docs/reference/classes/dropped.md +46 -0
  237. package/docs/reference/classes/formats.md +522 -0
  238. package/docs/reference/classes/resources.md +346 -0
  239. package/docs/reference/classes/texture.md +26 -0
  240. package/docs/reference/events.md +92 -0
  241. package/docs/reference/motherlode-cache.md +244 -0
  242. package/docs/reference/queues.md +102 -0
  243. package/docs/reference/reload.md +107 -0
  244. package/docs/reference/texture-arrays.md +113 -0
  245. package/docs/reference/texture-pipeline.md +53 -0
  246. package/docs/roadmap.md +104 -0
  247. package/format-notices/black/LICENSE +21 -21
  248. package/format-notices/black/NOTICE +47 -47
  249. package/format-notices/bnk/LICENSE +21 -21
  250. package/format-notices/bnk/NOTICE +20 -20
  251. package/format-notices/cmf/LICENSE +21 -21
  252. package/format-notices/cmf/NOTICE +36 -36
  253. package/format-notices/dds/LICENSE +21 -21
  254. package/format-notices/dds/NOTICE +14 -14
  255. package/format-notices/fbx/LICENSE +21 -21
  256. package/format-notices/fbx/NOTICE +14 -14
  257. package/format-notices/flac/LICENSE +21 -21
  258. package/format-notices/flac/NOTICE +14 -14
  259. package/format-notices/gif/LICENSE +21 -21
  260. package/format-notices/gif/NOTICE +14 -14
  261. package/format-notices/gltf/LICENSE +21 -21
  262. package/format-notices/gltf/NOTICE +27 -27
  263. package/format-notices/gr2/LICENSE +21 -0
  264. package/format-notices/gr2/NOTICE +60 -0
  265. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -0
  266. package/format-notices/jpeg/LICENSE +21 -21
  267. package/format-notices/jpeg/NOTICE +14 -14
  268. package/format-notices/mp3/LICENSE +21 -21
  269. package/format-notices/mp3/NOTICE +14 -14
  270. package/format-notices/mp4/LICENSE +21 -21
  271. package/format-notices/mp4/NOTICE +14 -14
  272. package/format-notices/obj/LICENSE +21 -21
  273. package/format-notices/obj/NOTICE +26 -26
  274. package/format-notices/ogg/LICENSE +21 -21
  275. package/format-notices/ogg/NOTICE +28 -28
  276. package/format-notices/png/LICENSE +21 -21
  277. package/format-notices/png/NOTICE +14 -14
  278. package/format-notices/red/LICENSE +21 -21
  279. package/format-notices/red/NOTICE +31 -31
  280. package/format-notices/stl/LICENSE +21 -21
  281. package/format-notices/stl/NOTICE +21 -21
  282. package/format-notices/tga/LICENSE +21 -21
  283. package/format-notices/tga/NOTICE +14 -14
  284. package/format-notices/wav/LICENSE +21 -21
  285. package/format-notices/wav/NOTICE +14 -14
  286. package/format-notices/webm/LICENSE +21 -21
  287. package/format-notices/webm/NOTICE +14 -14
  288. package/format-notices/webp/LICENSE +21 -21
  289. package/format-notices/webp/NOTICE +14 -14
  290. package/format-notices/wem/LICENSE +57 -57
  291. package/format-notices/wem/NOTICE +33 -33
  292. package/format-notices/yaml/LICENSE +21 -21
  293. package/format-notices/yaml/NOTICE +44 -44
  294. package/package.json +52 -51
  295. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +0 -4
  296. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +0 -1
  297. package/resource-lifecycle.md +0 -679
@@ -1,192 +1,197 @@
1
- import { MediaType, PayloadType } from '@carbonenginejs/runtime-const/media';
2
- import { CjsResourceProbe as _CjsResourceProbe } from './CjsResourceProbe.js';
3
-
4
- class CjsFormat {
5
- options = {};
6
-
7
- /**
8
- * Convenience factory for simple format helpers.
9
- * Keep this lightweight so format classes can stay pure-reader implementations.
10
- *
11
- * @param {*} input
12
- * @param {object} options
13
- * @returns {Promise<*>|*}
14
- */
15
- static read(input, options = null) {
16
- const reader = new this(options || {});
17
- return reader.Read(input, options || {});
18
- }
19
-
20
- /**
21
- * Async convenience factory for format readers.
22
- *
23
- * @param {*} input
24
- * @param {object} options
25
- * @returns {Promise<*>}
26
- */
27
- static async readAsync(input, options = null) {
28
- const reader = new this(options || {});
29
- return reader.ReadAsync(input, options || {});
30
- }
31
-
32
- /**
33
- * Canonical support probe entrypoint.
34
- * Returns a probe report including compressed/raw capability variants when implemented.
35
- *
36
- * @param {*} input
37
- * @param {object} options
38
- * @returns {CjsResourceProbe}
39
- */
40
- static isSupported(input, options = null) {
41
- const source = typeof input === "string" ? "path" : "buffer";
42
- const formatName = this.name ? this.name.replace(/^Cjs/u, "").replace(/Format$/u, "").toLowerCase() : "format";
43
- return _CjsResourceProbe.createUnsupported(formatName, "No probe implementation.", {
44
- source,
45
- ...options
46
- });
47
- }
48
-
49
- /**
50
- * Alias for canonical naming.
51
- *
52
- * @param {*} input
53
- * @param {object} options
54
- * @returns {CjsResourceProbe}
55
- */
56
- static inspect(input, options = null) {
57
- return this.isSupported(input, options);
58
- }
59
-
60
- /**
61
- * Content-verified type/route resolution (kb §5, optional per format).
62
- *
63
- * Where inspect()/isSupported() report what the container CLAIMS,
64
- * resolveType() performs one bounded asynchronous content check (magic, a
65
- * first frame/block, a setup header) and reports what the reader has
66
- * evidence it can actually decode. Overrides return a CjsResourceProbe
67
- * with `verified: true` and declared/resolved/mismatch evidence in
68
- * `metadata`; `preferred` names the resolved decode route. A caller-forced
69
- * emit always wins over a resolution, and this base implementation - the
70
- * zero-extra-work path for formats without an override - delegates to
71
- * isSupported() with `verified` false so an unverified result never
72
- * changes a route.
73
- *
74
- * @param {*} input Bytes (or path where the format supports it).
75
- * @param {object|null} options Format options.
76
- * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.
77
- */
78
- static async resolveType(input, options = null) {
79
- const report = _CjsResourceProbe.from(this.isSupported(input, options));
80
- report.verified = false;
81
- return report;
82
- }
83
- constructor(options = null) {
84
- this.options = {
85
- ...(options || {})
86
- };
87
- }
88
- SetValues(values = null) {
89
- if (!values || typeof values !== "object") {
90
- return this;
91
- }
92
- if (Object.prototype.hasOwnProperty.call(values, "options")) {
93
- this.options = {
94
- ...(values.options || {})
95
- };
96
- } else {
97
- this.options = {
98
- ...this.options,
99
- ...values
100
- };
101
- }
102
- return this;
103
- }
104
- GetValues() {
105
- return {
106
- options: {
107
- ...this.options
108
- }
109
- };
110
- }
111
- Initialize(values = null) {
112
- return this.SetValues(values || {});
113
- }
114
-
115
- /**
116
- * Primary instance read entrypoint for synchronous readers.
117
- * Implementations may override with async handling in readAsync only if needed.
118
- */
119
- Read(input, options = null) {
120
- throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);
121
- }
122
-
123
- /**
124
- * Primary async read entrypoint for asynchronous readers.
125
- * Defaults to sync Read for compatibility.
126
- */
127
- async ReadAsync(input, options = null) {
128
- return this.Read(input, options);
129
- }
130
-
131
- /**
132
- * Canonical package-family group names - the shared vocabulary object from
133
- * runtime-const (kb: runtime-const owns cross-package media vocabulary).
134
- * Same object identity as `@carbonenginejs/runtime-const/media` MediaType,
135
- * so tokens can never drift between packages.
136
- */
137
- static Type = MediaType;
138
-
139
- /**
140
- * Canonical media-type groups used by format registration - the shared
141
- * runtime-const MediaType object (see Type above).
142
- */
143
- static MediaType = MediaType;
144
-
145
- /**
146
- * Canonical output-type tokens used by format emit contracts. Shared
147
- * payload ROLES come from runtime-const PayloadType; the remaining tokens
148
- * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by
149
- * their formats and enumerated here for discoverability only.
150
- */
151
- static OutputType = Object.freeze({
152
- AUDIO: PayloadType.AUDIO,
153
- CMF: "cmf",
154
- GR2: "gr2",
155
- IMAGE: PayloadType.IMAGE,
156
- JSON: "json",
157
- PCM: "pcm",
158
- RAW: PayloadType.RAW,
159
- RGBA: "rgba",
160
- SCHEMA: PayloadType.SCHEMA,
161
- SHADER: PayloadType.SHADER,
162
- SHARED: "shared",
163
- TEXTURE: PayloadType.TEXTURE,
164
- VIDEO: PayloadType.VIDEO,
165
- OBJ_JSON: "objJson"
166
- });
167
- static type = Object.freeze([]);
168
- static mediaTypes = Object.freeze([]);
169
- static inputTypes = Object.freeze([]);
170
- static outputTypes = Object.freeze([]);
171
- static debugOutputTypes = Object.freeze(["json", "raw"]);
172
- }
173
-
174
- /**
175
- * Shared utility for asserting required format metadata exists.
176
- */
177
- function ValidateFormatContract(Constructor) {
178
- if (!Constructor) {
179
- throw new TypeError("ValidateFormatContract requires a format class.");
180
- }
181
- const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;
182
- const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;
183
- const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;
184
- const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;
185
- const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;
186
- if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {
187
- throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);
188
- }
189
- }
190
-
191
- export { CjsFormat, ValidateFormatContract };
192
- //# sourceMappingURL=CjsFormat.js.map
1
+ import { MediaType, PayloadType } from '@carbonenginejs/runtime-const/media';
2
+ import { CjsResourceProbe as _CjsResourceProbe } from './CjsResourceProbe.js';
3
+
4
+ /**
5
+ * Base class for format readers that defines the static
6
+ * `read`/`readAsync`/`isSupported`/`resolveType` contract and instance
7
+ * option handling that concrete format packages implement.
8
+ */
9
+ class CjsFormat {
10
+ options = {};
11
+
12
+ /**
13
+ * Convenience factory for simple format helpers.
14
+ * Keep this lightweight so format classes can stay pure-reader implementations.
15
+ *
16
+ * @param {*} input
17
+ * @param {object} options
18
+ * @returns {Promise<*>|*}
19
+ */
20
+ static read(input, options = null) {
21
+ const reader = new this(options || {});
22
+ return reader.Read(input, options || {});
23
+ }
24
+
25
+ /**
26
+ * Async convenience factory for format readers.
27
+ *
28
+ * @param {*} input
29
+ * @param {object} options
30
+ * @returns {Promise<*>}
31
+ */
32
+ static async readAsync(input, options = null) {
33
+ const reader = new this(options || {});
34
+ return reader.ReadAsync(input, options || {});
35
+ }
36
+
37
+ /**
38
+ * Canonical support probe entrypoint.
39
+ * Returns a probe report including compressed/raw capability variants when implemented.
40
+ *
41
+ * @param {*} input
42
+ * @param {object} options
43
+ * @returns {CjsResourceProbe}
44
+ */
45
+ static isSupported(input, options = null) {
46
+ const source = typeof input === "string" ? "path" : "buffer";
47
+ const formatName = this.name ? this.name.replace(/^Cjs/u, "").replace(/Format$/u, "").toLowerCase() : "format";
48
+ return _CjsResourceProbe.createUnsupported(formatName, "No probe implementation.", {
49
+ source,
50
+ ...options
51
+ });
52
+ }
53
+
54
+ /**
55
+ * Alias for canonical naming.
56
+ *
57
+ * @param {*} input
58
+ * @param {object} options
59
+ * @returns {CjsResourceProbe}
60
+ */
61
+ static inspect(input, options = null) {
62
+ return this.isSupported(input, options);
63
+ }
64
+
65
+ /**
66
+ * Content-verified type/route resolution (kb §5, optional per format).
67
+ *
68
+ * Where inspect()/isSupported() report what the container CLAIMS,
69
+ * resolveType() performs one bounded asynchronous content check (magic, a
70
+ * first frame/block, a setup header) and reports what the reader has
71
+ * evidence it can actually decode. Overrides return a CjsResourceProbe
72
+ * with `verified: true` and declared/resolved/mismatch evidence in
73
+ * `metadata`; `preferred` names the resolved decode route. A caller-forced
74
+ * emit always wins over a resolution, and this base implementation - the
75
+ * zero-extra-work path for formats without an override - delegates to
76
+ * isSupported() with `verified` false so an unverified result never
77
+ * changes a route.
78
+ *
79
+ * @param {*} input Bytes (or path where the format supports it).
80
+ * @param {object|null} options Format options.
81
+ * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.
82
+ */
83
+ static async resolveType(input, options = null) {
84
+ const report = _CjsResourceProbe.from(this.isSupported(input, options));
85
+ report.verified = false;
86
+ return report;
87
+ }
88
+ constructor(options = null) {
89
+ this.options = {
90
+ ...(options || {})
91
+ };
92
+ }
93
+ SetValues(values = null) {
94
+ if (!values || typeof values !== "object") {
95
+ return this;
96
+ }
97
+ if (Object.prototype.hasOwnProperty.call(values, "options")) {
98
+ this.options = {
99
+ ...(values.options || {})
100
+ };
101
+ } else {
102
+ this.options = {
103
+ ...this.options,
104
+ ...values
105
+ };
106
+ }
107
+ return this;
108
+ }
109
+ GetValues() {
110
+ return {
111
+ options: {
112
+ ...this.options
113
+ }
114
+ };
115
+ }
116
+ Initialize(values = null) {
117
+ return this.SetValues(values || {});
118
+ }
119
+
120
+ /**
121
+ * Primary instance read entrypoint for synchronous readers.
122
+ * Implementations may override with async handling in readAsync only if needed.
123
+ */
124
+ Read(input, options = null) {
125
+ throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);
126
+ }
127
+
128
+ /**
129
+ * Primary async read entrypoint for asynchronous readers.
130
+ * Defaults to sync Read for compatibility.
131
+ */
132
+ async ReadAsync(input, options = null) {
133
+ return this.Read(input, options);
134
+ }
135
+
136
+ /**
137
+ * Canonical package-family group names - the shared vocabulary object from
138
+ * runtime-const (kb: runtime-const owns cross-package media vocabulary).
139
+ * Same object identity as `@carbonenginejs/runtime-const/media` MediaType,
140
+ * so tokens can never drift between packages.
141
+ */
142
+ static Type = MediaType;
143
+
144
+ /**
145
+ * Canonical media-type groups used by format registration - the shared
146
+ * runtime-const MediaType object (see Type above).
147
+ */
148
+ static MediaType = MediaType;
149
+
150
+ /**
151
+ * Canonical output-type tokens used by format emit contracts. Shared
152
+ * payload ROLES come from runtime-const PayloadType; the remaining tokens
153
+ * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by
154
+ * their formats and enumerated here for discoverability only.
155
+ */
156
+ static OutputType = Object.freeze({
157
+ AUDIO: PayloadType.AUDIO,
158
+ CMF: "cmf",
159
+ GR2: "gr2",
160
+ IMAGE: PayloadType.IMAGE,
161
+ JSON: "json",
162
+ PCM: "pcm",
163
+ RAW: PayloadType.RAW,
164
+ RGBA: "rgba",
165
+ SCHEMA: PayloadType.SCHEMA,
166
+ SHADER: PayloadType.SHADER,
167
+ SHARED: "shared",
168
+ TEXTURE: PayloadType.TEXTURE,
169
+ VIDEO: PayloadType.VIDEO,
170
+ OBJ_JSON: "objJson"
171
+ });
172
+ static type = Object.freeze([]);
173
+ static mediaTypes = Object.freeze([]);
174
+ static inputTypes = Object.freeze([]);
175
+ static outputTypes = Object.freeze([]);
176
+ static debugOutputTypes = Object.freeze(["json", "raw"]);
177
+ }
178
+
179
+ /**
180
+ * Shared utility for asserting required format metadata exists.
181
+ */
182
+ function ValidateFormatContract(Constructor) {
183
+ if (!Constructor) {
184
+ throw new TypeError("ValidateFormatContract requires a format class.");
185
+ }
186
+ const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;
187
+ const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;
188
+ const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;
189
+ const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;
190
+ const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;
191
+ if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {
192
+ throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);
193
+ }
194
+ }
195
+
196
+ export { CjsFormat, ValidateFormatContract };
197
+ //# sourceMappingURL=CjsFormat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CjsFormat.js","sources":["../../../src/format/CjsFormat.js"],"sourcesContent":["import { MediaType, PayloadType } from \"@carbonenginejs/runtime-const/media\";\nimport { CjsResourceProbe } from \"./CjsResourceProbe.js\";\n\nexport class CjsFormat\n{\n options = {};\n\n /**\n * Convenience factory for simple format helpers.\n * Keep this lightweight so format classes can stay pure-reader implementations.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>|*}\n */\n static read(input, options = null) {\n const reader = new this(options || {});\n return reader.Read(input, options || {});\n }\n\n /**\n * Async convenience factory for format readers.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>}\n */\n static async readAsync(input, options = null) {\n const reader = new this(options || {});\n return reader.ReadAsync(input, options || {});\n }\n\n /**\n * Canonical support probe entrypoint.\n * Returns a probe report including compressed/raw capability variants when implemented.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static isSupported(input, options = null) {\n const source = typeof input === \"string\" ? \"path\" : \"buffer\";\n const formatName = this.name\n ? this.name.replace(/^Cjs/u, \"\").replace(/Format$/u, \"\").toLowerCase()\n : \"format\";\n return CjsResourceProbe.createUnsupported(formatName, \"No probe implementation.\", { source, ...options });\n }\n\n /**\n * Alias for canonical naming.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static inspect(input, options = null) {\n return this.isSupported(input, options);\n }\n\n /**\n * Content-verified type/route resolution (kb §5, optional per format).\n *\n * Where inspect()/isSupported() report what the container CLAIMS,\n * resolveType() performs one bounded asynchronous content check (magic, a\n * first frame/block, a setup header) and reports what the reader has\n * evidence it can actually decode. Overrides return a CjsResourceProbe\n * with `verified: true` and declared/resolved/mismatch evidence in\n * `metadata`; `preferred` names the resolved decode route. A caller-forced\n * emit always wins over a resolution, and this base implementation - the\n * zero-extra-work path for formats without an override - delegates to\n * isSupported() with `verified` false so an unverified result never\n * changes a route.\n *\n * @param {*} input Bytes (or path where the format supports it).\n * @param {object|null} options Format options.\n * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.\n */\n static async resolveType(input, options = null) {\n const report = CjsResourceProbe.from(this.isSupported(input, options));\n report.verified = false;\n return report;\n }\n\n constructor(options = null) {\n this.options = { ...(options || {}) };\n }\n\n SetValues(values = null) {\n if (!values || typeof values !== \"object\") {\n return this;\n }\n if (Object.prototype.hasOwnProperty.call(values, \"options\")) {\n this.options = { ...(values.options || {}) };\n } else {\n this.options = { ...this.options, ...values };\n }\n return this;\n }\n\n GetValues() {\n return { options: { ...this.options } };\n }\n\n Initialize(values = null) {\n return this.SetValues(values || {});\n }\n\n /**\n * Primary instance read entrypoint for synchronous readers.\n * Implementations may override with async handling in readAsync only if needed.\n */\n Read(input, options = null) {\n throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);\n }\n\n /**\n * Primary async read entrypoint for asynchronous readers.\n * Defaults to sync Read for compatibility.\n */\n async ReadAsync(input, options = null) {\n return this.Read(input, options);\n }\n\n /**\n * Canonical package-family group names - the shared vocabulary object from\n * runtime-const (kb: runtime-const owns cross-package media vocabulary).\n * Same object identity as `@carbonenginejs/runtime-const/media` MediaType,\n * so tokens can never drift between packages.\n */\n static Type = MediaType;\n\n /**\n * Canonical media-type groups used by format registration - the shared\n * runtime-const MediaType object (see Type above).\n */\n static MediaType = MediaType;\n\n /**\n * Canonical output-type tokens used by format emit contracts. Shared\n * payload ROLES come from runtime-const PayloadType; the remaining tokens\n * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by\n * their formats and enumerated here for discoverability only.\n */\n static OutputType = Object.freeze({\n AUDIO: PayloadType.AUDIO,\n CMF: \"cmf\",\n GR2: \"gr2\",\n IMAGE: PayloadType.IMAGE,\n JSON: \"json\",\n PCM: \"pcm\",\n RAW: PayloadType.RAW,\n RGBA: \"rgba\",\n SCHEMA: PayloadType.SCHEMA,\n SHADER: PayloadType.SHADER,\n SHARED: \"shared\",\n TEXTURE: PayloadType.TEXTURE,\n VIDEO: PayloadType.VIDEO,\n OBJ_JSON: \"objJson\"\n });\n\n static type = Object.freeze([]);\n static mediaTypes = Object.freeze([]);\n static inputTypes = Object.freeze([]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([\"json\", \"raw\"]);\n}\n\n/**\n * Shared utility for asserting required format metadata exists.\n */\nexport function ValidateFormatContract(Constructor) {\n if (!Constructor) {\n throw new TypeError(\"ValidateFormatContract requires a format class.\");\n }\n const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;\n const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;\n const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;\n const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;\n const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;\n if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {\n throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);\n }\n}\n"],"names":["CjsFormat","options","read","input","reader","Read","readAsync","ReadAsync","isSupported","source","formatName","name","replace","toLowerCase","CjsResourceProbe","createUnsupported","inspect","resolveType","report","from","verified","constructor","SetValues","values","Object","prototype","hasOwnProperty","call","GetValues","Initialize","Error","Type","MediaType","OutputType","freeze","AUDIO","PayloadType","CMF","GR2","IMAGE","JSON","PCM","RAW","RGBA","SCHEMA","SHADER","SHARED","TEXTURE","VIDEO","OBJ_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","ValidateFormatContract","Constructor","TypeError","hasOutput","Array","isArray","length","hasInput","hasMedia","hasType","hasDebug"],"mappings":"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"}
1
+ {"version":3,"file":"CjsFormat.js","sources":["../../../src/format/CjsFormat.js"],"sourcesContent":["import { MediaType, PayloadType } from \"@carbonenginejs/runtime-const/media\";\nimport { CjsResourceProbe } from \"./CjsResourceProbe.js\";\n\n/**\n * Base class for format readers that defines the static\n * `read`/`readAsync`/`isSupported`/`resolveType` contract and instance\n * option handling that concrete format packages implement.\n */\nexport class CjsFormat\n{\n options = {};\n\n /**\n * Convenience factory for simple format helpers.\n * Keep this lightweight so format classes can stay pure-reader implementations.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>|*}\n */\n static read(input, options = null) {\n const reader = new this(options || {});\n return reader.Read(input, options || {});\n }\n\n /**\n * Async convenience factory for format readers.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>}\n */\n static async readAsync(input, options = null) {\n const reader = new this(options || {});\n return reader.ReadAsync(input, options || {});\n }\n\n /**\n * Canonical support probe entrypoint.\n * Returns a probe report including compressed/raw capability variants when implemented.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static isSupported(input, options = null) {\n const source = typeof input === \"string\" ? \"path\" : \"buffer\";\n const formatName = this.name\n ? this.name.replace(/^Cjs/u, \"\").replace(/Format$/u, \"\").toLowerCase()\n : \"format\";\n return CjsResourceProbe.createUnsupported(formatName, \"No probe implementation.\", { source, ...options });\n }\n\n /**\n * Alias for canonical naming.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static inspect(input, options = null) {\n return this.isSupported(input, options);\n }\n\n /**\n * Content-verified type/route resolution (kb §5, optional per format).\n *\n * Where inspect()/isSupported() report what the container CLAIMS,\n * resolveType() performs one bounded asynchronous content check (magic, a\n * first frame/block, a setup header) and reports what the reader has\n * evidence it can actually decode. Overrides return a CjsResourceProbe\n * with `verified: true` and declared/resolved/mismatch evidence in\n * `metadata`; `preferred` names the resolved decode route. A caller-forced\n * emit always wins over a resolution, and this base implementation - the\n * zero-extra-work path for formats without an override - delegates to\n * isSupported() with `verified` false so an unverified result never\n * changes a route.\n *\n * @param {*} input Bytes (or path where the format supports it).\n * @param {object|null} options Format options.\n * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.\n */\n static async resolveType(input, options = null) {\n const report = CjsResourceProbe.from(this.isSupported(input, options));\n report.verified = false;\n return report;\n }\n\n constructor(options = null) {\n this.options = { ...(options || {}) };\n }\n\n SetValues(values = null) {\n if (!values || typeof values !== \"object\") {\n return this;\n }\n if (Object.prototype.hasOwnProperty.call(values, \"options\")) {\n this.options = { ...(values.options || {}) };\n } else {\n this.options = { ...this.options, ...values };\n }\n return this;\n }\n\n GetValues() {\n return { options: { ...this.options } };\n }\n\n Initialize(values = null) {\n return this.SetValues(values || {});\n }\n\n /**\n * Primary instance read entrypoint for synchronous readers.\n * Implementations may override with async handling in readAsync only if needed.\n */\n Read(input, options = null) {\n throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);\n }\n\n /**\n * Primary async read entrypoint for asynchronous readers.\n * Defaults to sync Read for compatibility.\n */\n async ReadAsync(input, options = null) {\n return this.Read(input, options);\n }\n\n /**\n * Canonical package-family group names - the shared vocabulary object from\n * runtime-const (kb: runtime-const owns cross-package media vocabulary).\n * Same object identity as `@carbonenginejs/runtime-const/media` MediaType,\n * so tokens can never drift between packages.\n */\n static Type = MediaType;\n\n /**\n * Canonical media-type groups used by format registration - the shared\n * runtime-const MediaType object (see Type above).\n */\n static MediaType = MediaType;\n\n /**\n * Canonical output-type tokens used by format emit contracts. Shared\n * payload ROLES come from runtime-const PayloadType; the remaining tokens\n * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by\n * their formats and enumerated here for discoverability only.\n */\n static OutputType = Object.freeze({\n AUDIO: PayloadType.AUDIO,\n CMF: \"cmf\",\n GR2: \"gr2\",\n IMAGE: PayloadType.IMAGE,\n JSON: \"json\",\n PCM: \"pcm\",\n RAW: PayloadType.RAW,\n RGBA: \"rgba\",\n SCHEMA: PayloadType.SCHEMA,\n SHADER: PayloadType.SHADER,\n SHARED: \"shared\",\n TEXTURE: PayloadType.TEXTURE,\n VIDEO: PayloadType.VIDEO,\n OBJ_JSON: \"objJson\"\n });\n\n static type = Object.freeze([]);\n static mediaTypes = Object.freeze([]);\n static inputTypes = Object.freeze([]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([\"json\", \"raw\"]);\n}\n\n/**\n * Shared utility for asserting required format metadata exists.\n */\nexport function ValidateFormatContract(Constructor) {\n if (!Constructor) {\n throw new TypeError(\"ValidateFormatContract requires a format class.\");\n }\n const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;\n const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;\n const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;\n const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;\n const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;\n if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {\n throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);\n }\n}\n"],"names":["CjsFormat","options","read","input","reader","Read","readAsync","ReadAsync","isSupported","source","formatName","name","replace","toLowerCase","CjsResourceProbe","createUnsupported","inspect","resolveType","report","from","verified","constructor","SetValues","values","Object","prototype","hasOwnProperty","call","GetValues","Initialize","Error","Type","MediaType","OutputType","freeze","AUDIO","PayloadType","CMF","GR2","IMAGE","JSON","PCM","RAW","RGBA","SCHEMA","SHADER","SHARED","TEXTURE","VIDEO","OBJ_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","ValidateFormatContract","Constructor","TypeError","hasOutput","Array","isArray","length","hasInput","hasMedia","hasType","hasDebug"],"mappings":"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"}
@@ -1,18 +1,18 @@
1
- /**
2
- * Internal base for construction-bound readers.
3
- *
4
- * A reader instance is created for one source and normally used and dropped.
5
- * JavaScript garbage collection reclaims its parser and graph state, so readers
6
- * do not require `dispose()` or `clear()` for correctness. This differs from
7
- * native Blue readers such as `BlackReader`, whose cleanup releases manually
8
- * allocated buffers and refcounted maps. Subclasses retain ownership of their
9
- * source-specific state and reset behavior.
10
- */
11
- class CjsReader {
12
- constructor(options = {}) {
13
- this.options = options;
14
- }
15
- }
16
-
17
- export { CjsReader };
18
- //# sourceMappingURL=CjsReader.js.map
1
+ /**
2
+ * Internal base for construction-bound readers.
3
+ *
4
+ * A reader instance is created for one source and normally used and dropped.
5
+ * JavaScript garbage collection reclaims its parser and graph state, so readers
6
+ * do not require `dispose()` or `clear()` for correctness. This differs from
7
+ * native Blue readers such as `BlackReader`, whose cleanup releases manually
8
+ * allocated buffers and refcounted maps. Subclasses retain ownership of their
9
+ * source-specific state and reset behavior.
10
+ */
11
+ class CjsReader {
12
+ constructor(options = {}) {
13
+ this.options = options;
14
+ }
15
+ }
16
+
17
+ export { CjsReader };
18
+ //# sourceMappingURL=CjsReader.js.map