@carbonenginejs/runtime-resource 0.7.0 → 0.8.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 (219) hide show
  1. package/FORMAT-PROVENANCE.md +155 -144
  2. package/LICENSE +21 -21
  3. package/NOTICE +29 -29
  4. package/README.md +11 -0
  5. package/dist/CjsMotherLode.js +1271 -1271
  6. package/dist/CjsResMan.js +3005 -3005
  7. package/dist/CjsResManQueue.js +214 -214
  8. package/dist/CjsResource.js +566 -566
  9. package/dist/CjsResourceSource.js +59 -59
  10. package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -153
  11. package/dist/format/CjsBlueReader.js +269 -269
  12. package/dist/format/CjsFormat.js +192 -192
  13. package/dist/format/CjsReader.js +18 -18
  14. package/dist/format/CjsResourceProbe.js +277 -277
  15. package/dist/format/payloadContract.js +173 -173
  16. package/dist/formats/black/CjsBlackFormat.js +278 -278
  17. package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -153
  18. package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -382
  19. package/dist/formats/black/core/CjsBlackReader.js +639 -639
  20. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -433
  21. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -4
  22. package/dist/formats/black/core/blackConstants.js +7 -7
  23. package/dist/formats/black/core/blackDefinitions.js +10 -10
  24. package/dist/formats/black/core/blackEnums.js +6 -6
  25. package/dist/formats/black/core/blackSchema.js +3 -3
  26. package/dist/formats/black/core/blackVersion.js +22 -22
  27. package/dist/formats/black/core/helpers.js +182 -182
  28. package/dist/formats/black/core/schema.js +4 -4
  29. package/dist/formats/black/index.js +2 -2
  30. package/dist/formats/bnk/CjsBnkFormat.js +125 -125
  31. package/dist/formats/bnk/core/graph.js +140 -140
  32. package/dist/formats/bnk/core/helpers.js +409 -409
  33. package/dist/formats/bnk/core/musicNodes.js +489 -489
  34. package/dist/formats/bnk/core/soundbanksInfo.js +246 -246
  35. package/dist/formats/bnk/index.js +2 -2
  36. package/dist/formats/cmf/CjsCmfFormat.js +497 -497
  37. package/dist/formats/cmf/core/binary.js +118 -118
  38. package/dist/formats/cmf/core/buffers.js +233 -233
  39. package/dist/formats/cmf/core/constants.js +47 -47
  40. package/dist/formats/cmf/core/gr2Anim.js +453 -453
  41. package/dist/formats/cmf/core/helpers.js +287 -287
  42. package/dist/formats/cmf/core/pack.js +276 -276
  43. package/dist/formats/cmf/core/schema.js +364 -364
  44. package/dist/formats/cmf/core/shared.js +268 -268
  45. package/dist/formats/cmf/core/writer.js +517 -517
  46. package/dist/formats/cmf/index.js +2 -2
  47. package/dist/formats/dds/CjsDdsFormat.js +193 -193
  48. package/dist/formats/dds/core/bc6h.js +288 -0
  49. package/dist/formats/dds/core/bc6h.js.map +1 -0
  50. package/dist/formats/dds/core/bc7.js +251 -0
  51. package/dist/formats/dds/core/bc7.js.map +1 -0
  52. package/dist/formats/dds/core/helpers.js +815 -812
  53. package/dist/formats/dds/core/helpers.js.map +1 -1
  54. package/dist/formats/dds/index.js +2 -2
  55. package/dist/formats/fbx/CjsFbxFormat.js +266 -266
  56. package/dist/formats/fbx/core/helpers.js +3901 -3901
  57. package/dist/formats/fbx/index.js +2 -2
  58. package/dist/formats/flac/CjsFlacFormat.js +87 -87
  59. package/dist/formats/flac/core/helpers.js +295 -295
  60. package/dist/formats/flac/index.js +2 -2
  61. package/dist/formats/gif/CjsGifFormat.js +87 -87
  62. package/dist/formats/gif/core/helpers.js +360 -360
  63. package/dist/formats/gif/index.js +2 -2
  64. package/dist/formats/gltf/CjsGltfFormat.js +290 -290
  65. package/dist/formats/gltf/core/helpers.js +292 -292
  66. package/dist/formats/gltf/core/json.js +79 -79
  67. package/dist/formats/gltf/core/parser.js +666 -666
  68. package/dist/formats/gltf/core/targets.js +163 -163
  69. package/dist/formats/gltf/index.js +2 -2
  70. package/dist/formats/index.js +23 -23
  71. package/dist/formats/jpeg/CjsJpegFormat.js +206 -206
  72. package/dist/formats/jpeg/core/helpers.js +350 -350
  73. package/dist/formats/jpeg/core/jpeg.js +377 -377
  74. package/dist/formats/jpeg/index.js +2 -2
  75. package/dist/formats/mp3/CjsMp3Format.js +192 -192
  76. package/dist/formats/mp3/core/helpers.js +338 -338
  77. package/dist/formats/mp3/index.js +2 -2
  78. package/dist/formats/mp4/CjsMp4Format.js +191 -191
  79. package/dist/formats/mp4/core/helpers.js +449 -449
  80. package/dist/formats/mp4/index.js +2 -2
  81. package/dist/formats/obj/CjsObjFormat.js +253 -253
  82. package/dist/formats/obj/core/helpers.js +573 -573
  83. package/dist/formats/obj/core/json.js +64 -64
  84. package/dist/formats/obj/core/parser.js +321 -321
  85. package/dist/formats/obj/index.js +2 -2
  86. package/dist/formats/ogg/CjsOggFormat.js +88 -88
  87. package/dist/formats/ogg/core/helpers.js +387 -387
  88. package/dist/formats/ogg/core/imdct.js +178 -178
  89. package/dist/formats/ogg/core/vorbis.js +999 -999
  90. package/dist/formats/ogg/index.js +2 -2
  91. package/dist/formats/png/CjsPngFormat.js +195 -195
  92. package/dist/formats/png/core/helpers.js +583 -583
  93. package/dist/formats/png/index.js +2 -2
  94. package/dist/formats/red/CjsRedFormat.js +261 -261
  95. package/dist/formats/red/core/CjsRedReader.js +194 -194
  96. package/dist/formats/red/core/blackDefinitions.js +3 -3
  97. package/dist/formats/red/core/helpers.js +139 -139
  98. package/dist/formats/red/core/redGraph.js +68 -68
  99. package/dist/formats/red/core/schema.js +4 -4
  100. package/dist/formats/red/index.js +2 -2
  101. package/dist/formats/stl/CjsStlFormat.js +365 -365
  102. package/dist/formats/stl/core/helpers.js +261 -261
  103. package/dist/formats/stl/core/json.js +51 -51
  104. package/dist/formats/stl/core/stl.js +629 -629
  105. package/dist/formats/stl/core/targets.js +163 -163
  106. package/dist/formats/stl/index.js +2 -2
  107. package/dist/formats/tga/CjsTgaFormat.js +192 -192
  108. package/dist/formats/tga/core/helpers.js +446 -446
  109. package/dist/formats/tga/index.js +2 -2
  110. package/dist/formats/wav/CjsWavFormat.js +192 -192
  111. package/dist/formats/wav/core/helpers.js +328 -328
  112. package/dist/formats/wav/index.js +2 -2
  113. package/dist/formats/webm/CjsWebmFormat.js +191 -191
  114. package/dist/formats/webm/core/helpers.js +537 -537
  115. package/dist/formats/webm/index.js +2 -2
  116. package/dist/formats/webp/CjsWebpFormat.js +86 -86
  117. package/dist/formats/webp/core/helpers.js +214 -214
  118. package/dist/formats/webp/index.js +2 -2
  119. package/dist/formats/wem/CjsWemFormat.js +241 -241
  120. package/dist/formats/wem/core/bitStream.js +259 -259
  121. package/dist/formats/wem/core/codebookLibrary.js +164 -164
  122. package/dist/formats/wem/core/helpers.js +417 -417
  123. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
  124. package/dist/formats/wem/core/ptadpcm.js +77 -77
  125. package/dist/formats/wem/core/resolve.js +121 -121
  126. package/dist/formats/wem/core/wemToOgg.js +485 -485
  127. package/dist/formats/wem/index.js +2 -2
  128. package/dist/formats/yaml/CjsYamlFormat.js +83 -83
  129. package/dist/formats/yaml/core/CjsYamlReader.js +305 -305
  130. package/dist/formats/yaml/core/helpers.js +160 -160
  131. package/dist/formats/yaml/index.js +2 -2
  132. package/dist/index.js +48 -48
  133. package/dist/resourcePath.js +18 -18
  134. package/dist/resourceStates.js +9 -9
  135. package/dist/resources/AudioGeometryResData.js +47 -47
  136. package/dist/resources/GStateBindingCallbackData.js +31 -31
  137. package/dist/resources/MeshDecalData.js +37 -37
  138. package/dist/resources/MeshDecalLodData.js +34 -34
  139. package/dist/resources/Tr2EffectRes.js +71 -71
  140. package/dist/resources/Tr2GrannyIntersectionResult.js +60 -60
  141. package/dist/resources/Tr2GrannyStateRes.js +44 -44
  142. package/dist/resources/Tr2ImageRes.js +114 -114
  143. package/dist/resources/Tr2LightProfileRes.js +40 -40
  144. package/dist/resources/Tr2MaterialArea.js +34 -34
  145. package/dist/resources/Tr2MaterialMesh.js +31 -31
  146. package/dist/resources/Tr2MaterialRes.js +34 -34
  147. package/dist/resources/Tr2ShaderPermutation.js +43 -43
  148. package/dist/resources/Tr2TextureLodManager.js +80 -80
  149. package/dist/resources/Tr2TextureLodUpdateRequest.js +37 -37
  150. package/dist/resources/Tr2TexturePackChannel.js +37 -37
  151. package/dist/resources/Tr2TexturePipeline.js +52 -52
  152. package/dist/resources/Tr2TexturePipelineParams.js +34 -34
  153. package/dist/resources/Tr2TexturePipelineStepCompress.js +40 -40
  154. package/dist/resources/Tr2TexturePipelineStepLimitSize.js +34 -34
  155. package/dist/resources/Tr2TexturePipelineStepLoad.js +31 -31
  156. package/dist/resources/Tr2TexturePipelineStepPack.js +43 -43
  157. package/dist/resources/TriGeometryRes.js +239 -216
  158. package/dist/resources/TriGeometryRes.js.map +1 -1
  159. package/dist/resources/TriGeometryResAreaData.js +59 -59
  160. package/dist/resources/TriGeometryResJointData.js +38 -38
  161. package/dist/resources/TriGeometryResLodData.js +88 -88
  162. package/dist/resources/TriGeometryResMeshData.js +63 -63
  163. package/dist/resources/TriGeometryResSkeletonData.js +34 -34
  164. package/dist/resources/TriGrannyRes.js +43 -43
  165. package/dist/resources/TriJointBinding.js +38 -38
  166. package/dist/resources/TriMorphTargetGeometryConstants.js +46 -46
  167. package/dist/resources/TriRtGeometryConstants.js +88 -88
  168. package/dist/resources/TriTextureRes.js +304 -304
  169. package/dist/resources/enums.js +18 -18
  170. package/dist/resources/resourceBoundary.js +47 -47
  171. package/dist/resources/texturePipelineBehavior.js +308 -308
  172. package/dist/texture/CjsTextureArrayRes.js +406 -406
  173. package/dist/texture/CjsTextureParameterProxy.js +133 -133
  174. package/format-notices/black/LICENSE +21 -21
  175. package/format-notices/black/NOTICE +47 -47
  176. package/format-notices/bnk/LICENSE +21 -21
  177. package/format-notices/bnk/NOTICE +20 -20
  178. package/format-notices/cmf/LICENSE +21 -21
  179. package/format-notices/cmf/NOTICE +36 -36
  180. package/format-notices/dds/LICENSE +21 -21
  181. package/format-notices/dds/NOTICE +14 -14
  182. package/format-notices/fbx/LICENSE +21 -21
  183. package/format-notices/fbx/NOTICE +14 -14
  184. package/format-notices/flac/LICENSE +21 -21
  185. package/format-notices/flac/NOTICE +14 -14
  186. package/format-notices/gif/LICENSE +21 -21
  187. package/format-notices/gif/NOTICE +14 -14
  188. package/format-notices/gltf/LICENSE +21 -21
  189. package/format-notices/gltf/NOTICE +27 -27
  190. package/format-notices/jpeg/LICENSE +21 -21
  191. package/format-notices/jpeg/NOTICE +14 -14
  192. package/format-notices/mp3/LICENSE +21 -21
  193. package/format-notices/mp3/NOTICE +14 -14
  194. package/format-notices/mp4/LICENSE +21 -21
  195. package/format-notices/mp4/NOTICE +14 -14
  196. package/format-notices/obj/LICENSE +21 -21
  197. package/format-notices/obj/NOTICE +26 -26
  198. package/format-notices/ogg/LICENSE +21 -21
  199. package/format-notices/ogg/NOTICE +28 -28
  200. package/format-notices/png/LICENSE +21 -21
  201. package/format-notices/png/NOTICE +14 -14
  202. package/format-notices/red/LICENSE +21 -21
  203. package/format-notices/red/NOTICE +31 -31
  204. package/format-notices/stl/LICENSE +21 -21
  205. package/format-notices/stl/NOTICE +21 -21
  206. package/format-notices/tga/LICENSE +21 -21
  207. package/format-notices/tga/NOTICE +14 -14
  208. package/format-notices/wav/LICENSE +21 -21
  209. package/format-notices/wav/NOTICE +14 -14
  210. package/format-notices/webm/LICENSE +21 -21
  211. package/format-notices/webm/NOTICE +14 -14
  212. package/format-notices/webp/LICENSE +21 -21
  213. package/format-notices/webp/NOTICE +14 -14
  214. package/format-notices/wem/LICENSE +57 -57
  215. package/format-notices/wem/NOTICE +33 -33
  216. package/format-notices/yaml/LICENSE +21 -21
  217. package/format-notices/yaml/NOTICE +44 -44
  218. package/package.json +2 -2
  219. package/resource-lifecycle.md +679 -679
@@ -1,192 +1,192 @@
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
+ 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,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