@carbonenginejs/runtime-resource 0.1.0 → 0.7.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.
- package/FORMAT-PROVENANCE.md +14 -5
- package/README.md +537 -241
- package/dist/CjsMotherLode.js +1244 -29
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +2537 -272
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResource.js +218 -18
- package/dist/CjsResource.js.map +1 -1
- package/dist/format/CjsBlueReader.js +269 -0
- package/dist/format/CjsBlueReader.js.map +1 -0
- package/dist/format/CjsFormat.js +44 -30
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +18 -0
- package/dist/format/CjsReader.js.map +1 -0
- package/dist/format/CjsResourceProbe.js +12 -4
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +12 -6
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +27 -148
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +140 -147
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/graph.js +140 -0
- package/dist/formats/bnk/core/graph.js.map +1 -0
- package/dist/formats/bnk/core/helpers.js +58 -3
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +521 -0
- package/dist/formats/bnk/core/musicNodes.js.map +1 -0
- package/dist/formats/bnk/index.js +0 -1
- package/dist/formats/bnk/index.js.map +1 -1
- package/dist/formats/cmf/CjsCmfFormat.js +14 -8
- package/dist/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/formats/dds/CjsDdsFormat.js +12 -6
- package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/formats/fbx/CjsFbxFormat.js +12 -6
- package/dist/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +10 -4
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +11 -5
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gltf/CjsGltfFormat.js +12 -6
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/jpeg/CjsJpegFormat.js +11 -5
- package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/formats/mp3/CjsMp3Format.js +11 -5
- package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/formats/mp4/CjsMp4Format.js +10 -4
- package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/formats/obj/CjsObjFormat.js +12 -6
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +9 -3
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/png/CjsPngFormat.js +11 -5
- package/dist/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +19 -5
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +63 -70
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +3 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/CjsStlFormat.js +77 -16
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +4 -0
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +100 -15
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/tga/CjsTgaFormat.js +11 -5
- package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/formats/wav/CjsWavFormat.js +11 -5
- package/dist/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/formats/webm/CjsWebmFormat.js +10 -4
- package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +9 -3
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +50 -6
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +84 -3
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/wem/core/ptadpcm.js +77 -0
- package/dist/formats/wem/core/ptadpcm.js.map +1 -0
- package/dist/formats/wem/core/resolve.js +121 -0
- package/dist/formats/wem/core/resolve.js.map +1 -0
- package/dist/formats/yaml/CjsYamlFormat.js +11 -5
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +3 -2
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/index.js +28 -32
- package/dist/index.js.map +1 -1
- package/dist/{generated/resources → resources}/AudioGeometryResData.js +2 -2
- package/dist/resources/AudioGeometryResData.js.map +1 -0
- package/dist/{generated/resources → resources}/GStateBindingCallbackData.js +2 -2
- package/dist/resources/GStateBindingCallbackData.js.map +1 -0
- package/dist/{generated/resources → resources}/MeshDecalData.js +2 -2
- package/dist/resources/MeshDecalData.js.map +1 -0
- package/dist/{generated/resources → resources}/MeshDecalLodData.js +2 -2
- package/dist/resources/MeshDecalLodData.js.map +1 -0
- package/dist/resources/Tr2GrannyIntersectionResult.js +60 -0
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialArea.js +2 -2
- package/dist/resources/Tr2MaterialArea.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialMesh.js +2 -2
- package/dist/resources/Tr2MaterialMesh.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialRes.js +2 -2
- package/dist/resources/Tr2MaterialRes.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2ShaderPermutation.js +2 -2
- package/dist/resources/Tr2ShaderPermutation.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TextureLodManager.js +50 -10
- package/dist/resources/Tr2TextureLodManager.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TextureLodUpdateRequest.js +2 -2
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePackChannel.js +2 -2
- package/dist/resources/Tr2TexturePackChannel.js.map +1 -0
- package/dist/resources/Tr2TexturePipeline.js +68 -0
- package/dist/resources/Tr2TexturePipeline.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineParams.js +2 -2
- package/dist/resources/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepCompress.js +3 -3
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepLimitSize.js +2 -2
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepLoad.js +2 -2
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepPack.js +3 -3
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResAreaData.js +2 -2
- package/dist/resources/TriGeometryResAreaData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResJointData.js +2 -2
- package/dist/resources/TriGeometryResJointData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResLodData.js +2 -2
- package/dist/resources/TriGeometryResLodData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResMeshData.js +2 -2
- package/dist/resources/TriGeometryResMeshData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResSkeletonData.js +2 -2
- package/dist/resources/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriJointBinding.js +2 -2
- package/dist/resources/TriJointBinding.js.map +1 -0
- package/dist/{generated/resources → resources}/TriMorphTargetGeometryConstants.js +2 -2
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{generated/resources → resources}/TriRtGeometryConstants.js +2 -2
- package/dist/resources/TriRtGeometryConstants.js.map +1 -0
- package/dist/resources/enums.js.map +1 -0
- package/dist/resources/texturePipelineBehavior.js +320 -0
- package/dist/resources/texturePipelineBehavior.js.map +1 -0
- package/format-notices/bnk/NOTICE +7 -4
- package/package.json +51 -51
- package/resource-lifecycle.md +262 -70
- package/dist/generated/resources/AudioGeometryResData.js.map +0 -1
- package/dist/generated/resources/CmfVertexReader.js +0 -46
- package/dist/generated/resources/CmfVertexReader.js.map +0 -1
- package/dist/generated/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/generated/resources/MeshDecalData.js.map +0 -1
- package/dist/generated/resources/MeshDecalLodData.js.map +0 -1
- package/dist/generated/resources/Tr2AsyncSave.js +0 -46
- package/dist/generated/resources/Tr2AsyncSave.js.map +0 -1
- package/dist/generated/resources/Tr2CmfContents.js +0 -37
- package/dist/generated/resources/Tr2CmfContents.js.map +0 -1
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js +0 -58
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/generated/resources/Tr2LoadPrepareFence.js +0 -37
- package/dist/generated/resources/Tr2LoadPrepareFence.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/generated/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/generated/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/generated/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipeline.js +0 -44
- package/dist/generated/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/generated/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/generated/resources/TriJointBinding.js.map +0 -1
- package/dist/generated/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/generated/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/generated/resources/enums.js.map +0 -1
- package/dist/generated/resources/index.js +0 -32
- package/dist/generated/resources/index.js.map +0 -1
- /package/dist/{generated/resources → resources}/enums.js +0 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { resolveHydrationAdapter } from '@carbonenginejs/core-types/hydration';
|
|
2
|
+
import { normalizeCarbonTypeDescriptor, CARBON_TYPE, normalizeCarbonValue } from '@carbonenginejs/core-types/types';
|
|
3
|
+
import { CjsReader } from './CjsReader.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Shared output and hydration backend for Blue persistence readers.
|
|
7
|
+
*
|
|
8
|
+
* Transports retain framing, source buffers, reference-token parsing, member
|
|
9
|
+
* decoding, skip/recovery behavior, and format-specific metadata. This backend
|
|
10
|
+
* owns common payload/runtime targets, reference emission, hydration adapter
|
|
11
|
+
* phases, reports, and finalization. It also provides reusable class/shape,
|
|
12
|
+
* descriptor assignment, and normalization helpers for transports that resolve
|
|
13
|
+
* persisted fields through a schema. Red does not opt into that descriptor
|
|
14
|
+
* path yet and retains its lenient named-field behavior.
|
|
15
|
+
*/
|
|
16
|
+
class CjsBlueReader extends CjsReader {
|
|
17
|
+
constructor(options = {}, config = {}) {
|
|
18
|
+
super({
|
|
19
|
+
...options
|
|
20
|
+
});
|
|
21
|
+
this.schemaRegistry = config.schemaRegistry || null;
|
|
22
|
+
this.schemaShapes = this.schemaRegistry ? this.schemaRegistry.createShapeMap(options.schema) : new Map();
|
|
23
|
+
this.defaultRegistry = config.defaultRegistry || null;
|
|
24
|
+
this.includeShapeContext = Boolean(config.includeShapeContext);
|
|
25
|
+
this.includeSourceShape = Boolean(config.includeSourceShape);
|
|
26
|
+
this.includeEmptyPayloadType = Boolean(config.includeEmptyPayloadType);
|
|
27
|
+
this.requirePayloadReferenceTarget = Boolean(config.requirePayloadReferenceTarget);
|
|
28
|
+
this.includePayloadValuesField = Boolean(config.includePayloadValuesField);
|
|
29
|
+
this.validatePayloadReservedFields = Boolean(config.validatePayloadReservedFields);
|
|
30
|
+
this.payloadReservedFields = null;
|
|
31
|
+
this.adapter = resolveHydrationAdapter(options);
|
|
32
|
+
this.hydrationOptions = {
|
|
33
|
+
...options,
|
|
34
|
+
markDirty: false,
|
|
35
|
+
skipUpdate: true,
|
|
36
|
+
skipEvents: true
|
|
37
|
+
};
|
|
38
|
+
this.ResetBlueReadState();
|
|
39
|
+
}
|
|
40
|
+
ResetBlueReadState() {
|
|
41
|
+
this.reports = [];
|
|
42
|
+
this.runtimeInstances = [];
|
|
43
|
+
}
|
|
44
|
+
FinalizeRuntimeInstances() {
|
|
45
|
+
for (const record of this.runtimeInstances) {
|
|
46
|
+
this.adapter.finalize(record.instance, this.CreateRuntimeContext(record.kind, record.shape, false));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
CreateRuntimeTarget(kind, shape = null) {
|
|
50
|
+
const built = this.adapter.construct(kind, this.CreateRuntimeContext(kind, shape, true, this.options));
|
|
51
|
+
if (built !== undefined) return built;
|
|
52
|
+
const ClassConstructor = this.ResolveClass(kind);
|
|
53
|
+
if (ClassConstructor) return new ClassConstructor();
|
|
54
|
+
return this.CreateRuntimeFallback(kind, shape);
|
|
55
|
+
}
|
|
56
|
+
CreateRuntimeFallback(kind, shape = null) {
|
|
57
|
+
const target = {
|
|
58
|
+
_sourceClassName: this.includeSourceShape ? kind : kind || null
|
|
59
|
+
};
|
|
60
|
+
if (this.includeSourceShape) target._sourceShape = shape || null;
|
|
61
|
+
return target;
|
|
62
|
+
}
|
|
63
|
+
ApplyRuntimeValues(target, values, kind, shape = null) {
|
|
64
|
+
this.adapter.applyValues(target, values, this.CreateRuntimeContext(kind, shape, true, this.hydrationOptions));
|
|
65
|
+
this.runtimeInstances.push({
|
|
66
|
+
instance: target,
|
|
67
|
+
kind,
|
|
68
|
+
shape
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
CreateRuntimeContext(kind, shape, includeOptions, options = null) {
|
|
72
|
+
const context = {
|
|
73
|
+
kind
|
|
74
|
+
};
|
|
75
|
+
if (this.includeShapeContext) context.shape = shape;
|
|
76
|
+
if (includeOptions) context.options = options;
|
|
77
|
+
return context;
|
|
78
|
+
}
|
|
79
|
+
CreatePayloadTarget(kind) {
|
|
80
|
+
const typeField = this.GetPayloadTypeField();
|
|
81
|
+
return typeField && (kind || this.includeEmptyPayloadType) ? {
|
|
82
|
+
[typeField]: kind
|
|
83
|
+
} : {};
|
|
84
|
+
}
|
|
85
|
+
CreatePayloadReference(targetObject, referenceId) {
|
|
86
|
+
const idField = this.GetPayloadIdField();
|
|
87
|
+
const referenceField = this.GetPayloadReferenceField();
|
|
88
|
+
if (idField && this.requirePayloadReferenceTarget) {
|
|
89
|
+
this.AssignPayloadReferenceId(targetObject, idField, referenceId);
|
|
90
|
+
} else if (idField && targetObject && typeof targetObject === "object") {
|
|
91
|
+
this.AssignPayloadReferenceId(targetObject, idField, referenceId);
|
|
92
|
+
}
|
|
93
|
+
return referenceField ? {
|
|
94
|
+
[referenceField]: referenceId
|
|
95
|
+
} : targetObject;
|
|
96
|
+
}
|
|
97
|
+
GetPayloadTypeField() {
|
|
98
|
+
return this.GetPayloadField("payloadTypeField", "_type");
|
|
99
|
+
}
|
|
100
|
+
GetPayloadIdField() {
|
|
101
|
+
return this.GetPayloadField("payloadIdField", "_id");
|
|
102
|
+
}
|
|
103
|
+
GetPayloadReferenceField() {
|
|
104
|
+
return this.GetPayloadField("payloadReferenceField", "_reference");
|
|
105
|
+
}
|
|
106
|
+
GetPayloadValuesField() {
|
|
107
|
+
return this.GetPayloadField("payloadValuesField", "_values");
|
|
108
|
+
}
|
|
109
|
+
GetPayloadField(name, fallback) {
|
|
110
|
+
const value = this.options[name];
|
|
111
|
+
if (!this.validatePayloadReservedFields) {
|
|
112
|
+
return value === false ? null : value || fallback;
|
|
113
|
+
}
|
|
114
|
+
if (value === false) return null;
|
|
115
|
+
if (value === undefined) return fallback;
|
|
116
|
+
if (typeof value === "string" && value) return value;
|
|
117
|
+
throw this.PayloadError("PAYLOAD_MARKER_CONFIGURATION", `${name} must be a non-empty string or false`);
|
|
118
|
+
}
|
|
119
|
+
ValidatePayloadConfiguration() {
|
|
120
|
+
if (!this.validatePayloadReservedFields) {
|
|
121
|
+
this.payloadReservedFields = null;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const fields = [["type", this.GetPayloadTypeField()], ["id", this.GetPayloadIdField()], ["reference", this.GetPayloadReferenceField()]];
|
|
125
|
+
const idField = this.GetPayloadIdField();
|
|
126
|
+
const referenceField = this.GetPayloadReferenceField();
|
|
127
|
+
const valuesField = this.includePayloadValuesField && idField ? this.GetPayloadValuesField() : null;
|
|
128
|
+
if (valuesField) fields.push(["values", valuesField]);
|
|
129
|
+
if (referenceField && !idField) {
|
|
130
|
+
throw this.PayloadError("PAYLOAD_MARKER_CONFIGURATION", "payloadReferenceField requires payloadIdField");
|
|
131
|
+
}
|
|
132
|
+
if (idField && this.includePayloadValuesField && !valuesField) {
|
|
133
|
+
throw this.PayloadError("PAYLOAD_MARKER_CONFIGURATION", "payloadIdField requires payloadValuesField for sequence identity");
|
|
134
|
+
}
|
|
135
|
+
const reserved = new Map();
|
|
136
|
+
for (const [role, field] of fields) {
|
|
137
|
+
if (!field) continue;
|
|
138
|
+
if (reserved.has(field)) {
|
|
139
|
+
throw this.PayloadError("PAYLOAD_MARKER_CONFIGURATION", `payload ${role} field "${field}" duplicates the ${reserved.get(field)} field`);
|
|
140
|
+
}
|
|
141
|
+
reserved.set(field, role);
|
|
142
|
+
}
|
|
143
|
+
this.payloadReservedFields = reserved;
|
|
144
|
+
}
|
|
145
|
+
AssertPayloadFieldAvailable(field) {
|
|
146
|
+
if (!this.validatePayloadReservedFields) return;
|
|
147
|
+
if (!this.payloadReservedFields) this.ValidatePayloadConfiguration();
|
|
148
|
+
const role = this.payloadReservedFields.get(field);
|
|
149
|
+
if (!role) return;
|
|
150
|
+
throw this.PayloadError("PAYLOAD_RESERVED_FIELD_COLLISION", `payload field "${field}" is reserved for the ${role} marker`);
|
|
151
|
+
}
|
|
152
|
+
AssignPayloadValues(targetObject, values) {
|
|
153
|
+
for (const [field, value] of Object.entries(values)) {
|
|
154
|
+
this.AssertPayloadFieldAvailable(field);
|
|
155
|
+
this.DefinePayloadProperty(targetObject, field, value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
AssignPayloadReferenceId(targetObject, idField, referenceId) {
|
|
159
|
+
if (!Object.hasOwn(targetObject, idField)) {
|
|
160
|
+
this.DefinePayloadProperty(targetObject, idField, referenceId);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (!this.validatePayloadReservedFields) return;
|
|
164
|
+
if (targetObject[idField] === referenceId) return;
|
|
165
|
+
throw this.PayloadError("PAYLOAD_RESERVED_FIELD_COLLISION", `payload ID field "${idField}" conflicts with reference ${referenceId}`);
|
|
166
|
+
}
|
|
167
|
+
PayloadError(code, message) {
|
|
168
|
+
const error = new TypeError(`${code}: ${message}`);
|
|
169
|
+
error.code = code;
|
|
170
|
+
return error;
|
|
171
|
+
}
|
|
172
|
+
DefinePayloadProperty(targetObject, field, value) {
|
|
173
|
+
Object.defineProperty(targetObject, field, {
|
|
174
|
+
value,
|
|
175
|
+
enumerable: true,
|
|
176
|
+
configurable: true,
|
|
177
|
+
writable: true
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
AssignRuntimeFieldValue(targetObject, target, value) {
|
|
181
|
+
if (target.unknown) {
|
|
182
|
+
targetObject[target.wireName] = value;
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (target.indexed) {
|
|
186
|
+
let current = targetObject[target.field.name];
|
|
187
|
+
if (!current || typeof current !== "object") {
|
|
188
|
+
current = Number.isInteger(target.index) ? [] : {};
|
|
189
|
+
targetObject[target.field.name] = current;
|
|
190
|
+
}
|
|
191
|
+
current[target.key] = this.NormalizeRuntimeFieldValue(value, target.field);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
targetObject[target.field.name] = this.NormalizeRuntimeFieldValue(value, target.field);
|
|
195
|
+
}
|
|
196
|
+
AssignPayloadFieldValue(targetObject, target, value) {
|
|
197
|
+
this.AssertPayloadFieldAvailable(target.unknown ? target.wireName : target.field.name);
|
|
198
|
+
if (target.unknown) {
|
|
199
|
+
if (this.validatePayloadReservedFields) {
|
|
200
|
+
this.DefinePayloadProperty(targetObject, target.wireName, value);
|
|
201
|
+
} else {
|
|
202
|
+
targetObject[target.wireName] = value;
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (target.indexed) {
|
|
207
|
+
let current = this.validatePayloadReservedFields ? Object.hasOwn(targetObject, target.field.name) ? targetObject[target.field.name] : null : targetObject[target.field.name];
|
|
208
|
+
if (!current || typeof current !== "object") {
|
|
209
|
+
current = Number.isInteger(target.index) ? [] : {};
|
|
210
|
+
if (this.validatePayloadReservedFields) {
|
|
211
|
+
this.DefinePayloadProperty(targetObject, target.field.name, current);
|
|
212
|
+
} else {
|
|
213
|
+
targetObject[target.field.name] = current;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
current[target.key] = value;
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (this.validatePayloadReservedFields) {
|
|
220
|
+
this.DefinePayloadProperty(targetObject, target.field.name, value);
|
|
221
|
+
} else {
|
|
222
|
+
targetObject[target.field.name] = value;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
NormalizeRuntimeFieldValue(value, field) {
|
|
226
|
+
if (!field) return value;
|
|
227
|
+
|
|
228
|
+
// Object-graph fields already contain constructed instances. Preserve
|
|
229
|
+
// those identities and normalize only scalar/math leaf values.
|
|
230
|
+
const descriptor = normalizeCarbonTypeDescriptor(field);
|
|
231
|
+
const kind = descriptor.kind;
|
|
232
|
+
if (kind === CARBON_TYPE.ARRAY && Array.isArray(value)) return value;
|
|
233
|
+
if ((kind === CARBON_TYPE.OBJECT_REF || kind === CARBON_TYPE.STRUCT || kind === CARBON_TYPE.RAW_STRUCT || kind === CARBON_TYPE.UNKNOWN) && value && typeof value === "object") {
|
|
234
|
+
return value;
|
|
235
|
+
}
|
|
236
|
+
if (CjsBlueReader.isShapeIncompatibleMathArray(value, descriptor)) return value;
|
|
237
|
+
return normalizeCarbonValue(value, field);
|
|
238
|
+
}
|
|
239
|
+
ResolveSourceShape(kind) {
|
|
240
|
+
const registry = this.options.registry || null;
|
|
241
|
+
if (registry?.GetSourceShape) return registry.GetSourceShape(kind);
|
|
242
|
+
const sourceShapes = this.options.sourceShapes || null;
|
|
243
|
+
if (sourceShapes?.GetSourceShape) return sourceShapes.GetSourceShape(kind);
|
|
244
|
+
if (sourceShapes) {
|
|
245
|
+
const shape = sourceShapes instanceof Map ? sourceShapes.get(kind) : sourceShapes[kind];
|
|
246
|
+
if (shape) {
|
|
247
|
+
return this.schemaRegistry?.normalizeShape ? this.schemaRegistry.normalizeShape(shape) : shape;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return this.schemaShapes.get(kind) || null;
|
|
251
|
+
}
|
|
252
|
+
ResolveClass(kind) {
|
|
253
|
+
if (!kind) return null;
|
|
254
|
+
const classes = this.options.classes || {};
|
|
255
|
+
const Registry = this.options.registry || this.defaultRegistry;
|
|
256
|
+
return classes[kind] || (Registry ? Registry.GetConstructor(kind) : null);
|
|
257
|
+
}
|
|
258
|
+
TransformPath(value) {
|
|
259
|
+
const handler = this.options.pathHandler;
|
|
260
|
+
return typeof handler === "function" ? handler(value) : value;
|
|
261
|
+
}
|
|
262
|
+
static isShapeIncompatibleMathArray(value, descriptor) {
|
|
263
|
+
const expectedLength = descriptor?.length;
|
|
264
|
+
return Array.isArray(value) && Number.isInteger(expectedLength) && value.length !== expectedLength;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export { CjsBlueReader };
|
|
269
|
+
//# sourceMappingURL=CjsBlueReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CjsBlueReader.js","sources":["../../../src/format/CjsBlueReader.js"],"sourcesContent":["import { resolveHydrationAdapter } from \"@carbonenginejs/core-types/hydration\";\nimport {\n CARBON_TYPE,\n normalizeCarbonTypeDescriptor,\n normalizeCarbonValue\n} from \"@carbonenginejs/core-types/types\";\n\nimport { CjsReader } from \"./CjsReader.js\";\n\n/**\n * Shared output and hydration backend for Blue persistence readers.\n *\n * Transports retain framing, source buffers, reference-token parsing, member\n * decoding, skip/recovery behavior, and format-specific metadata. This backend\n * owns common payload/runtime targets, reference emission, hydration adapter\n * phases, reports, and finalization. It also provides reusable class/shape,\n * descriptor assignment, and normalization helpers for transports that resolve\n * persisted fields through a schema. Red does not opt into that descriptor\n * path yet and retains its lenient named-field behavior.\n */\nexport class CjsBlueReader extends CjsReader\n{\n constructor(options = {}, config = {})\n {\n super({ ...options });\n\n this.schemaRegistry = config.schemaRegistry || null;\n this.schemaShapes = this.schemaRegistry\n ? this.schemaRegistry.createShapeMap(options.schema)\n : new Map();\n this.defaultRegistry = config.defaultRegistry || null;\n this.includeShapeContext = Boolean(config.includeShapeContext);\n this.includeSourceShape = Boolean(config.includeSourceShape);\n this.includeEmptyPayloadType = Boolean(config.includeEmptyPayloadType);\n this.requirePayloadReferenceTarget = Boolean(config.requirePayloadReferenceTarget);\n this.includePayloadValuesField = Boolean(config.includePayloadValuesField);\n this.validatePayloadReservedFields = Boolean(config.validatePayloadReservedFields);\n this.payloadReservedFields = null;\n this.adapter = resolveHydrationAdapter(options);\n this.hydrationOptions = {\n ...options,\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n };\n this.ResetBlueReadState();\n }\n\n ResetBlueReadState()\n {\n this.reports = [];\n this.runtimeInstances = [];\n }\n\n FinalizeRuntimeInstances()\n {\n for (const record of this.runtimeInstances)\n {\n this.adapter.finalize(\n record.instance,\n this.CreateRuntimeContext(record.kind, record.shape, false)\n );\n }\n }\n\n CreateRuntimeTarget(kind, shape = null)\n {\n const built = this.adapter.construct(\n kind,\n this.CreateRuntimeContext(kind, shape, true, this.options)\n );\n if (built !== undefined) return built;\n\n const ClassConstructor = this.ResolveClass(kind);\n if (ClassConstructor) return new ClassConstructor();\n\n return this.CreateRuntimeFallback(kind, shape);\n }\n\n CreateRuntimeFallback(kind, shape = null)\n {\n const target = { _sourceClassName: this.includeSourceShape ? kind : (kind || null) };\n if (this.includeSourceShape) target._sourceShape = shape || null;\n return target;\n }\n\n ApplyRuntimeValues(target, values, kind, shape = null)\n {\n this.adapter.applyValues(\n target,\n values,\n this.CreateRuntimeContext(kind, shape, true, this.hydrationOptions)\n );\n this.runtimeInstances.push({ instance: target, kind, shape });\n }\n\n CreateRuntimeContext(kind, shape, includeOptions, options = null)\n {\n const context = { kind };\n if (this.includeShapeContext) context.shape = shape;\n if (includeOptions) context.options = options;\n return context;\n }\n\n CreatePayloadTarget(kind)\n {\n const typeField = this.GetPayloadTypeField();\n return typeField && (kind || this.includeEmptyPayloadType) ? { [typeField]: kind } : {};\n }\n\n CreatePayloadReference(targetObject, referenceId)\n {\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n\n if (idField && this.requirePayloadReferenceTarget)\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n else if (idField && targetObject && typeof targetObject === \"object\")\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n\n return referenceField ? { [referenceField]: referenceId } : targetObject;\n }\n\n GetPayloadTypeField()\n {\n return this.GetPayloadField(\"payloadTypeField\", \"_type\");\n }\n\n GetPayloadIdField()\n {\n return this.GetPayloadField(\"payloadIdField\", \"_id\");\n }\n\n GetPayloadReferenceField()\n {\n return this.GetPayloadField(\"payloadReferenceField\", \"_reference\");\n }\n\n GetPayloadValuesField()\n {\n return this.GetPayloadField(\"payloadValuesField\", \"_values\");\n }\n\n GetPayloadField(name, fallback)\n {\n const value = this.options[name];\n if (!this.validatePayloadReservedFields)\n {\n return value === false ? null : (value || fallback);\n }\n if (value === false) return null;\n if (value === undefined) return fallback;\n if (typeof value === \"string\" && value) return value;\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `${name} must be a non-empty string or false`\n );\n }\n\n ValidatePayloadConfiguration()\n {\n if (!this.validatePayloadReservedFields)\n {\n this.payloadReservedFields = null;\n return;\n }\n\n const fields = [\n [ \"type\", this.GetPayloadTypeField() ],\n [ \"id\", this.GetPayloadIdField() ],\n [ \"reference\", this.GetPayloadReferenceField() ]\n ];\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n const valuesField = this.includePayloadValuesField && idField\n ? this.GetPayloadValuesField()\n : null;\n if (valuesField) fields.push([ \"values\", valuesField ]);\n if (referenceField && !idField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadReferenceField requires payloadIdField\"\n );\n }\n if (idField && this.includePayloadValuesField && !valuesField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadIdField requires payloadValuesField for sequence identity\"\n );\n }\n\n const reserved = new Map();\n for (const [ role, field ] of fields)\n {\n if (!field) continue;\n if (reserved.has(field))\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `payload ${role} field \"${field}\" duplicates the ${reserved.get(field)} field`\n );\n }\n reserved.set(field, role);\n }\n this.payloadReservedFields = reserved;\n }\n\n AssertPayloadFieldAvailable(field)\n {\n if (!this.validatePayloadReservedFields) return;\n if (!this.payloadReservedFields) this.ValidatePayloadConfiguration();\n const role = this.payloadReservedFields.get(field);\n if (!role) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload field \"${field}\" is reserved for the ${role} marker`\n );\n }\n\n AssignPayloadValues(targetObject, values)\n {\n for (const [ field, value ] of Object.entries(values))\n {\n this.AssertPayloadFieldAvailable(field);\n this.DefinePayloadProperty(targetObject, field, value);\n }\n }\n\n AssignPayloadReferenceId(targetObject, idField, referenceId)\n {\n if (!Object.hasOwn(targetObject, idField))\n {\n this.DefinePayloadProperty(targetObject, idField, referenceId);\n return;\n }\n if (!this.validatePayloadReservedFields) return;\n if (targetObject[idField] === referenceId) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload ID field \"${idField}\" conflicts with reference ${referenceId}`\n );\n }\n\n PayloadError(code, message)\n {\n const error = new TypeError(`${code}: ${message}`);\n error.code = code;\n return error;\n }\n\n DefinePayloadProperty(targetObject, field, value)\n {\n Object.defineProperty(targetObject, field, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n\n AssignRuntimeFieldValue(targetObject, target, value)\n {\n if (target.unknown)\n {\n targetObject[target.wireName] = value;\n return;\n }\n\n if (target.indexed)\n {\n let current = targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n targetObject[target.field.name] = current;\n }\n\n current[target.key] = this.NormalizeRuntimeFieldValue(value, target.field);\n return;\n }\n\n targetObject[target.field.name] = this.NormalizeRuntimeFieldValue(value, target.field);\n }\n\n AssignPayloadFieldValue(targetObject, target, value)\n {\n this.AssertPayloadFieldAvailable(target.unknown ? target.wireName : target.field.name);\n if (target.unknown)\n {\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.wireName, value);\n }\n else\n {\n targetObject[target.wireName] = value;\n }\n return;\n }\n\n if (target.indexed)\n {\n let current = this.validatePayloadReservedFields\n ? (Object.hasOwn(targetObject, target.field.name) ? targetObject[target.field.name] : null)\n : targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, current);\n }\n else\n {\n targetObject[target.field.name] = current;\n }\n }\n\n current[target.key] = value;\n return;\n }\n\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, value);\n }\n else\n {\n targetObject[target.field.name] = value;\n }\n }\n\n NormalizeRuntimeFieldValue(value, field)\n {\n if (!field) return value;\n\n // Object-graph fields already contain constructed instances. Preserve\n // those identities and normalize only scalar/math leaf values.\n const descriptor = normalizeCarbonTypeDescriptor(field);\n const kind = descriptor.kind;\n\n if (kind === CARBON_TYPE.ARRAY && Array.isArray(value)) return value;\n if ((kind === CARBON_TYPE.OBJECT_REF\n || kind === CARBON_TYPE.STRUCT\n || kind === CARBON_TYPE.RAW_STRUCT\n || kind === CARBON_TYPE.UNKNOWN)\n && value && typeof value === \"object\")\n {\n return value;\n }\n if (CjsBlueReader.isShapeIncompatibleMathArray(value, descriptor)) return value;\n\n return normalizeCarbonValue(value, field);\n }\n\n ResolveSourceShape(kind)\n {\n const registry = this.options.registry || null;\n if (registry?.GetSourceShape) return registry.GetSourceShape(kind);\n\n const sourceShapes = this.options.sourceShapes || null;\n if (sourceShapes?.GetSourceShape) return sourceShapes.GetSourceShape(kind);\n if (sourceShapes)\n {\n const shape = sourceShapes instanceof Map ? sourceShapes.get(kind) : sourceShapes[kind];\n if (shape)\n {\n return this.schemaRegistry?.normalizeShape\n ? this.schemaRegistry.normalizeShape(shape)\n : shape;\n }\n }\n\n return this.schemaShapes.get(kind) || null;\n }\n\n ResolveClass(kind)\n {\n if (!kind) return null;\n\n const classes = this.options.classes || {};\n const Registry = this.options.registry || this.defaultRegistry;\n return classes[kind] || (Registry ? Registry.GetConstructor(kind) : null);\n }\n\n TransformPath(value)\n {\n const handler = this.options.pathHandler;\n return typeof handler === \"function\" ? handler(value) : value;\n }\n\n static isShapeIncompatibleMathArray(value, descriptor)\n {\n const expectedLength = descriptor?.length;\n return Array.isArray(value)\n && Number.isInteger(expectedLength)\n && value.length !== expectedLength;\n }\n}\n\nexport default CjsBlueReader;\n"],"names":["CjsBlueReader","CjsReader","constructor","options","config","schemaRegistry","schemaShapes","createShapeMap","schema","Map","defaultRegistry","includeShapeContext","Boolean","includeSourceShape","includeEmptyPayloadType","requirePayloadReferenceTarget","includePayloadValuesField","validatePayloadReservedFields","payloadReservedFields","adapter","resolveHydrationAdapter","hydrationOptions","markDirty","skipUpdate","skipEvents","ResetBlueReadState","reports","runtimeInstances","FinalizeRuntimeInstances","record","finalize","instance","CreateRuntimeContext","kind","shape","CreateRuntimeTarget","built","construct","undefined","ClassConstructor","ResolveClass","CreateRuntimeFallback","target","_sourceClassName","_sourceShape","ApplyRuntimeValues","values","applyValues","push","includeOptions","context","CreatePayloadTarget","typeField","GetPayloadTypeField","CreatePayloadReference","targetObject","referenceId","idField","GetPayloadIdField","referenceField","GetPayloadReferenceField","AssignPayloadReferenceId","GetPayloadField","GetPayloadValuesField","name","fallback","value","PayloadError","ValidatePayloadConfiguration","fields","valuesField","reserved","role","field","has","get","set","AssertPayloadFieldAvailable","AssignPayloadValues","Object","entries","DefinePayloadProperty","hasOwn","code","message","error","TypeError","defineProperty","enumerable","configurable","writable","AssignRuntimeFieldValue","unknown","wireName","indexed","current","Number","isInteger","index","key","NormalizeRuntimeFieldValue","AssignPayloadFieldValue","descriptor","normalizeCarbonTypeDescriptor","CARBON_TYPE","ARRAY","Array","isArray","OBJECT_REF","STRUCT","RAW_STRUCT","UNKNOWN","isShapeIncompatibleMathArray","normalizeCarbonValue","ResolveSourceShape","registry","GetSourceShape","sourceShapes","normalizeShape","classes","Registry","GetConstructor","TransformPath","handler","pathHandler","expectedLength","length"],"mappings":";;;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,aAAa,SAASC,SAAS,CAC5C;EACIC,WAAWA,CAACC,OAAO,GAAG,EAAE,EAAEC,MAAM,GAAG,EAAE,EACrC;AACI,IAAA,KAAK,CAAC;MAAE,GAAGD;AAAQ,KAAC,CAAC;AAErB,IAAA,IAAI,CAACE,cAAc,GAAGD,MAAM,CAACC,cAAc,IAAI,IAAI;IACnD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACD,cAAc,GACjC,IAAI,CAACA,cAAc,CAACE,cAAc,CAACJ,OAAO,CAACK,MAAM,CAAC,GAClD,IAAIC,GAAG,EAAE;AACf,IAAA,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe,IAAI,IAAI;IACrD,IAAI,CAACC,mBAAmB,GAAGC,OAAO,CAACR,MAAM,CAACO,mBAAmB,CAAC;IAC9D,IAAI,CAACE,kBAAkB,GAAGD,OAAO,CAACR,MAAM,CAACS,kBAAkB,CAAC;IAC5D,IAAI,CAACC,uBAAuB,GAAGF,OAAO,CAACR,MAAM,CAACU,uBAAuB,CAAC;IACtE,IAAI,CAACC,6BAA6B,GAAGH,OAAO,CAACR,MAAM,CAACW,6BAA6B,CAAC;IAClF,IAAI,CAACC,yBAAyB,GAAGJ,OAAO,CAACR,MAAM,CAACY,yBAAyB,CAAC;IAC1E,IAAI,CAACC,6BAA6B,GAAGL,OAAO,CAACR,MAAM,CAACa,6BAA6B,CAAC;IAClF,IAAI,CAACC,qBAAqB,GAAG,IAAI;AACjC,IAAA,IAAI,CAACC,OAAO,GAAGC,uBAAuB,CAACjB,OAAO,CAAC;IAC/C,IAAI,CAACkB,gBAAgB,GAAG;AACpB,MAAA,GAAGlB,OAAO;AACVmB,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,UAAU,EAAE;KACf;IACD,IAAI,CAACC,kBAAkB,EAAE;AAC7B,EAAA;AAEAA,EAAAA,kBAAkBA,GAClB;IACI,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB,IAAI,CAACC,gBAAgB,GAAG,EAAE;AAC9B,EAAA;AAEAC,EAAAA,wBAAwBA,GACxB;AACI,IAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACF,gBAAgB,EAC1C;MACI,IAAI,CAACR,OAAO,CAACW,QAAQ,CACjBD,MAAM,CAACE,QAAQ,EACf,IAAI,CAACC,oBAAoB,CAACH,MAAM,CAACI,IAAI,EAAEJ,MAAM,CAACK,KAAK,EAAE,KAAK,CAC9D,CAAC;AACL,IAAA;AACJ,EAAA;AAEAC,EAAAA,mBAAmBA,CAACF,IAAI,EAAEC,KAAK,GAAG,IAAI,EACtC;IACI,MAAME,KAAK,GAAG,IAAI,CAACjB,OAAO,CAACkB,SAAS,CAChCJ,IAAI,EACJ,IAAI,CAACD,oBAAoB,CAACC,IAAI,EAAEC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC/B,OAAO,CAC7D,CAAC;AACD,IAAA,IAAIiC,KAAK,KAAKE,SAAS,EAAE,OAAOF,KAAK;AAErC,IAAA,MAAMG,gBAAgB,GAAG,IAAI,CAACC,YAAY,CAACP,IAAI,CAAC;AAChD,IAAA,IAAIM,gBAAgB,EAAE,OAAO,IAAIA,gBAAgB,EAAE;AAEnD,IAAA,OAAO,IAAI,CAACE,qBAAqB,CAACR,IAAI,EAAEC,KAAK,CAAC;AAClD,EAAA;AAEAO,EAAAA,qBAAqBA,CAACR,IAAI,EAAEC,KAAK,GAAG,IAAI,EACxC;AACI,IAAA,MAAMQ,MAAM,GAAG;MAAEC,gBAAgB,EAAE,IAAI,CAAC9B,kBAAkB,GAAGoB,IAAI,GAAIA,IAAI,IAAI;KAAO;IACpF,IAAI,IAAI,CAACpB,kBAAkB,EAAE6B,MAAM,CAACE,YAAY,GAAGV,KAAK,IAAI,IAAI;AAChE,IAAA,OAAOQ,MAAM;AACjB,EAAA;EAEAG,kBAAkBA,CAACH,MAAM,EAAEI,MAAM,EAAEb,IAAI,EAAEC,KAAK,GAAG,IAAI,EACrD;IACI,IAAI,CAACf,OAAO,CAAC4B,WAAW,CACpBL,MAAM,EACNI,MAAM,EACN,IAAI,CAACd,oBAAoB,CAACC,IAAI,EAAEC,KAAK,EAAE,IAAI,EAAE,IAAI,CAACb,gBAAgB,CACtE,CAAC;AACD,IAAA,IAAI,CAACM,gBAAgB,CAACqB,IAAI,CAAC;AAAEjB,MAAAA,QAAQ,EAAEW,MAAM;MAAET,IAAI;AAAEC,MAAAA;AAAM,KAAC,CAAC;AACjE,EAAA;EAEAF,oBAAoBA,CAACC,IAAI,EAAEC,KAAK,EAAEe,cAAc,EAAE9C,OAAO,GAAG,IAAI,EAChE;AACI,IAAA,MAAM+C,OAAO,GAAG;AAAEjB,MAAAA;KAAM;IACxB,IAAI,IAAI,CAACtB,mBAAmB,EAAEuC,OAAO,CAAChB,KAAK,GAAGA,KAAK;AACnD,IAAA,IAAIe,cAAc,EAAEC,OAAO,CAAC/C,OAAO,GAAGA,OAAO;AAC7C,IAAA,OAAO+C,OAAO;AAClB,EAAA;EAEAC,mBAAmBA,CAAClB,IAAI,EACxB;AACI,IAAA,MAAMmB,SAAS,GAAG,IAAI,CAACC,mBAAmB,EAAE;IAC5C,OAAOD,SAAS,KAAKnB,IAAI,IAAI,IAAI,CAACnB,uBAAuB,CAAC,GAAG;AAAE,MAAA,CAACsC,SAAS,GAAGnB;KAAM,GAAG,EAAE;AAC3F,EAAA;AAEAqB,EAAAA,sBAAsBA,CAACC,YAAY,EAAEC,WAAW,EAChD;AACI,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,iBAAiB,EAAE;AACxC,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACC,wBAAwB,EAAE;AAEtD,IAAA,IAAIH,OAAO,IAAI,IAAI,CAAC1C,6BAA6B,EACjD;MACI,IAAI,CAAC8C,wBAAwB,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;IACrE,CAAC,MACI,IAAIC,OAAO,IAAIF,YAAY,IAAI,OAAOA,YAAY,KAAK,QAAQ,EACpE;MACI,IAAI,CAACM,wBAAwB,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;AACrE,IAAA;AAEA,IAAA,OAAOG,cAAc,GAAG;AAAE,MAAA,CAACA,cAAc,GAAGH;AAAY,KAAC,GAAGD,YAAY;AAC5E,EAAA;AAEAF,EAAAA,mBAAmBA,GACnB;AACI,IAAA,OAAO,IAAI,CAACS,eAAe,CAAC,kBAAkB,EAAE,OAAO,CAAC;AAC5D,EAAA;AAEAJ,EAAAA,iBAAiBA,GACjB;AACI,IAAA,OAAO,IAAI,CAACI,eAAe,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACxD,EAAA;AAEAF,EAAAA,wBAAwBA,GACxB;AACI,IAAA,OAAO,IAAI,CAACE,eAAe,CAAC,uBAAuB,EAAE,YAAY,CAAC;AACtE,EAAA;AAEAC,EAAAA,qBAAqBA,GACrB;AACI,IAAA,OAAO,IAAI,CAACD,eAAe,CAAC,oBAAoB,EAAE,SAAS,CAAC;AAChE,EAAA;AAEAA,EAAAA,eAAeA,CAACE,IAAI,EAAEC,QAAQ,EAC9B;AACI,IAAA,MAAMC,KAAK,GAAG,IAAI,CAAC/D,OAAO,CAAC6D,IAAI,CAAC;AAChC,IAAA,IAAI,CAAC,IAAI,CAAC/C,6BAA6B,EACvC;MACI,OAAOiD,KAAK,KAAK,KAAK,GAAG,IAAI,GAAIA,KAAK,IAAID,QAAS;AACvD,IAAA;AACA,IAAA,IAAIC,KAAK,KAAK,KAAK,EAAE,OAAO,IAAI;AAChC,IAAA,IAAIA,KAAK,KAAK5B,SAAS,EAAE,OAAO2B,QAAQ;IACxC,IAAI,OAAOC,KAAK,KAAK,QAAQ,IAAIA,KAAK,EAAE,OAAOA,KAAK;IACpD,MAAM,IAAI,CAACC,YAAY,CACnB,8BAA8B,EAC9B,CAAA,EAAGH,IAAI,CAAA,oCAAA,CACX,CAAC;AACL,EAAA;AAEAI,EAAAA,4BAA4BA,GAC5B;AACI,IAAA,IAAI,CAAC,IAAI,CAACnD,6BAA6B,EACvC;MACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;AACjC,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMmD,MAAM,GAAG,CACX,CAAE,MAAM,EAAE,IAAI,CAAChB,mBAAmB,EAAE,CAAE,EACtC,CAAE,IAAI,EAAE,IAAI,CAACK,iBAAiB,EAAE,CAAE,EAClC,CAAE,WAAW,EAAE,IAAI,CAACE,wBAAwB,EAAE,CAAE,CACnD;AACD,IAAA,MAAMH,OAAO,GAAG,IAAI,CAACC,iBAAiB,EAAE;AACxC,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACC,wBAAwB,EAAE;AACtD,IAAA,MAAMU,WAAW,GAAG,IAAI,CAACtD,yBAAyB,IAAIyC,OAAO,GACvD,IAAI,CAACM,qBAAqB,EAAE,GAC5B,IAAI;IACV,IAAIO,WAAW,EAAED,MAAM,CAACrB,IAAI,CAAC,CAAE,QAAQ,EAAEsB,WAAW,CAAE,CAAC;AACvD,IAAA,IAAIX,cAAc,IAAI,CAACF,OAAO,EAC9B;AACI,MAAA,MAAM,IAAI,CAACU,YAAY,CACnB,8BAA8B,EAC9B,+CACJ,CAAC;AACL,IAAA;IACA,IAAIV,OAAO,IAAI,IAAI,CAACzC,yBAAyB,IAAI,CAACsD,WAAW,EAC7D;AACI,MAAA,MAAM,IAAI,CAACH,YAAY,CACnB,8BAA8B,EAC9B,kEACJ,CAAC;AACL,IAAA;AAEA,IAAA,MAAMI,QAAQ,GAAG,IAAI9D,GAAG,EAAE;IAC1B,KAAK,MAAM,CAAE+D,IAAI,EAAEC,KAAK,CAAE,IAAIJ,MAAM,EACpC;MACI,IAAI,CAACI,KAAK,EAAE;AACZ,MAAA,IAAIF,QAAQ,CAACG,GAAG,CAACD,KAAK,CAAC,EACvB;AACI,QAAA,MAAM,IAAI,CAACN,YAAY,CACnB,8BAA8B,EAC9B,WAAWK,IAAI,CAAA,QAAA,EAAWC,KAAK,CAAA,iBAAA,EAAoBF,QAAQ,CAACI,GAAG,CAACF,KAAK,CAAC,QAC1E,CAAC;AACL,MAAA;AACAF,MAAAA,QAAQ,CAACK,GAAG,CAACH,KAAK,EAAED,IAAI,CAAC;AAC7B,IAAA;IACA,IAAI,CAACtD,qBAAqB,GAAGqD,QAAQ;AACzC,EAAA;EAEAM,2BAA2BA,CAACJ,KAAK,EACjC;AACI,IAAA,IAAI,CAAC,IAAI,CAACxD,6BAA6B,EAAE;IACzC,IAAI,CAAC,IAAI,CAACC,qBAAqB,EAAE,IAAI,CAACkD,4BAA4B,EAAE;IACpE,MAAMI,IAAI,GAAG,IAAI,CAACtD,qBAAqB,CAACyD,GAAG,CAACF,KAAK,CAAC;IAClD,IAAI,CAACD,IAAI,EAAE;IACX,MAAM,IAAI,CAACL,YAAY,CACnB,kCAAkC,EAClC,CAAA,eAAA,EAAkBM,KAAK,CAAA,sBAAA,EAAyBD,IAAI,CAAA,OAAA,CACxD,CAAC;AACL,EAAA;AAEAM,EAAAA,mBAAmBA,CAACvB,YAAY,EAAET,MAAM,EACxC;AACI,IAAA,KAAK,MAAM,CAAE2B,KAAK,EAAEP,KAAK,CAAE,IAAIa,MAAM,CAACC,OAAO,CAAClC,MAAM,CAAC,EACrD;AACI,MAAA,IAAI,CAAC+B,2BAA2B,CAACJ,KAAK,CAAC;MACvC,IAAI,CAACQ,qBAAqB,CAAC1B,YAAY,EAAEkB,KAAK,EAAEP,KAAK,CAAC;AAC1D,IAAA;AACJ,EAAA;AAEAL,EAAAA,wBAAwBA,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,EAC3D;IACI,IAAI,CAACuB,MAAM,CAACG,MAAM,CAAC3B,YAAY,EAAEE,OAAO,CAAC,EACzC;MACI,IAAI,CAACwB,qBAAqB,CAAC1B,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;AAC9D,MAAA;AACJ,IAAA;AACA,IAAA,IAAI,CAAC,IAAI,CAACvC,6BAA6B,EAAE;AACzC,IAAA,IAAIsC,YAAY,CAACE,OAAO,CAAC,KAAKD,WAAW,EAAE;IAC3C,MAAM,IAAI,CAACW,YAAY,CACnB,kCAAkC,EAClC,CAAA,kBAAA,EAAqBV,OAAO,CAAA,2BAAA,EAA8BD,WAAW,CAAA,CACzE,CAAC;AACL,EAAA;AAEAW,EAAAA,YAAYA,CAACgB,IAAI,EAAEC,OAAO,EAC1B;IACI,MAAMC,KAAK,GAAG,IAAIC,SAAS,CAAC,GAAGH,IAAI,CAAA,EAAA,EAAKC,OAAO,CAAA,CAAE,CAAC;IAClDC,KAAK,CAACF,IAAI,GAAGA,IAAI;AACjB,IAAA,OAAOE,KAAK;AAChB,EAAA;AAEAJ,EAAAA,qBAAqBA,CAAC1B,YAAY,EAAEkB,KAAK,EAAEP,KAAK,EAChD;AACIa,IAAAA,MAAM,CAACQ,cAAc,CAAChC,YAAY,EAAEkB,KAAK,EAAE;MACvCP,KAAK;AACLsB,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE;AACd,KAAC,CAAC;AACN,EAAA;AAEAC,EAAAA,uBAAuBA,CAACpC,YAAY,EAAEb,MAAM,EAAEwB,KAAK,EACnD;IACI,IAAIxB,MAAM,CAACkD,OAAO,EAClB;AACIrC,MAAAA,YAAY,CAACb,MAAM,CAACmD,QAAQ,CAAC,GAAG3B,KAAK;AACrC,MAAA;AACJ,IAAA;IAEA,IAAIxB,MAAM,CAACoD,OAAO,EAClB;MACI,IAAIC,OAAO,GAAGxC,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;AAC7C,MAAA,IAAI,CAAC+B,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACIA,QAAAA,OAAO,GAAGC,MAAM,CAACC,SAAS,CAACvD,MAAM,CAACwD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;QAClD3C,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG+B,OAAO;AAC7C,MAAA;AAEAA,MAAAA,OAAO,CAACrD,MAAM,CAACyD,GAAG,CAAC,GAAG,IAAI,CAACC,0BAA0B,CAAClC,KAAK,EAAExB,MAAM,CAAC+B,KAAK,CAAC;AAC1E,MAAA;AACJ,IAAA;AAEAlB,IAAAA,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG,IAAI,CAACoC,0BAA0B,CAAClC,KAAK,EAAExB,MAAM,CAAC+B,KAAK,CAAC;AAC1F,EAAA;AAEA4B,EAAAA,uBAAuBA,CAAC9C,YAAY,EAAEb,MAAM,EAAEwB,KAAK,EACnD;AACI,IAAA,IAAI,CAACW,2BAA2B,CAACnC,MAAM,CAACkD,OAAO,GAAGlD,MAAM,CAACmD,QAAQ,GAAGnD,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;IACtF,IAAItB,MAAM,CAACkD,OAAO,EAClB;MACI,IAAI,IAAI,CAAC3E,6BAA6B,EACtC;QACI,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAACmD,QAAQ,EAAE3B,KAAK,CAAC;AACpE,MAAA,CAAC,MAED;AACIX,QAAAA,YAAY,CAACb,MAAM,CAACmD,QAAQ,CAAC,GAAG3B,KAAK;AACzC,MAAA;AACA,MAAA;AACJ,IAAA;IAEA,IAAIxB,MAAM,CAACoD,OAAO,EAClB;AACI,MAAA,IAAIC,OAAO,GAAG,IAAI,CAAC9E,6BAA6B,GACzC8D,MAAM,CAACG,MAAM,CAAC3B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAGT,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG,IAAI,GACxFT,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;AACrC,MAAA,IAAI,CAAC+B,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACIA,QAAAA,OAAO,GAAGC,MAAM,CAACC,SAAS,CAACvD,MAAM,CAACwD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;QAClD,IAAI,IAAI,CAACjF,6BAA6B,EACtC;AACI,UAAA,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,EAAE+B,OAAO,CAAC;AACxE,QAAA,CAAC,MAED;UACIxC,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG+B,OAAO;AAC7C,QAAA;AACJ,MAAA;AAEAA,MAAAA,OAAO,CAACrD,MAAM,CAACyD,GAAG,CAAC,GAAGjC,KAAK;AAC3B,MAAA;AACJ,IAAA;IAEA,IAAI,IAAI,CAACjD,6BAA6B,EACtC;AACI,MAAA,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,EAAEE,KAAK,CAAC;AACtE,IAAA,CAAC,MAED;MACIX,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAGE,KAAK;AAC3C,IAAA;AACJ,EAAA;AAEAkC,EAAAA,0BAA0BA,CAAClC,KAAK,EAAEO,KAAK,EACvC;AACI,IAAA,IAAI,CAACA,KAAK,EAAE,OAAOP,KAAK;;AAExB;AACA;AACA,IAAA,MAAMoC,UAAU,GAAGC,6BAA6B,CAAC9B,KAAK,CAAC;AACvD,IAAA,MAAMxC,IAAI,GAAGqE,UAAU,CAACrE,IAAI;AAE5B,IAAA,IAAIA,IAAI,KAAKuE,WAAW,CAACC,KAAK,IAAIC,KAAK,CAACC,OAAO,CAACzC,KAAK,CAAC,EAAE,OAAOA,KAAK;AACpE,IAAA,IAAI,CAACjC,IAAI,KAAKuE,WAAW,CAACI,UAAU,IAC7B3E,IAAI,KAAKuE,WAAW,CAACK,MAAM,IAC3B5E,IAAI,KAAKuE,WAAW,CAACM,UAAU,IAC/B7E,IAAI,KAAKuE,WAAW,CAACO,OAAO,KAC5B7C,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EACzC;AACI,MAAA,OAAOA,KAAK;AAChB,IAAA;IACA,IAAIlE,aAAa,CAACgH,4BAA4B,CAAC9C,KAAK,EAAEoC,UAAU,CAAC,EAAE,OAAOpC,KAAK;AAE/E,IAAA,OAAO+C,oBAAoB,CAAC/C,KAAK,EAAEO,KAAK,CAAC;AAC7C,EAAA;EAEAyC,kBAAkBA,CAACjF,IAAI,EACvB;IACI,MAAMkF,QAAQ,GAAG,IAAI,CAAChH,OAAO,CAACgH,QAAQ,IAAI,IAAI;IAC9C,IAAIA,QAAQ,EAAEC,cAAc,EAAE,OAAOD,QAAQ,CAACC,cAAc,CAACnF,IAAI,CAAC;IAElE,MAAMoF,YAAY,GAAG,IAAI,CAAClH,OAAO,CAACkH,YAAY,IAAI,IAAI;IACtD,IAAIA,YAAY,EAAED,cAAc,EAAE,OAAOC,YAAY,CAACD,cAAc,CAACnF,IAAI,CAAC;AAC1E,IAAA,IAAIoF,YAAY,EAChB;AACI,MAAA,MAAMnF,KAAK,GAAGmF,YAAY,YAAY5G,GAAG,GAAG4G,YAAY,CAAC1C,GAAG,CAAC1C,IAAI,CAAC,GAAGoF,YAAY,CAACpF,IAAI,CAAC;AACvF,MAAA,IAAIC,KAAK,EACT;AACI,QAAA,OAAO,IAAI,CAAC7B,cAAc,EAAEiH,cAAc,GACpC,IAAI,CAACjH,cAAc,CAACiH,cAAc,CAACpF,KAAK,CAAC,GACzCA,KAAK;AACf,MAAA;AACJ,IAAA;IAEA,OAAO,IAAI,CAAC5B,YAAY,CAACqE,GAAG,CAAC1C,IAAI,CAAC,IAAI,IAAI;AAC9C,EAAA;EAEAO,YAAYA,CAACP,IAAI,EACjB;AACI,IAAA,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;IAEtB,MAAMsF,OAAO,GAAG,IAAI,CAACpH,OAAO,CAACoH,OAAO,IAAI,EAAE;IAC1C,MAAMC,QAAQ,GAAG,IAAI,CAACrH,OAAO,CAACgH,QAAQ,IAAI,IAAI,CAACzG,eAAe;AAC9D,IAAA,OAAO6G,OAAO,CAACtF,IAAI,CAAC,KAAKuF,QAAQ,GAAGA,QAAQ,CAACC,cAAc,CAACxF,IAAI,CAAC,GAAG,IAAI,CAAC;AAC7E,EAAA;EAEAyF,aAAaA,CAACxD,KAAK,EACnB;AACI,IAAA,MAAMyD,OAAO,GAAG,IAAI,CAACxH,OAAO,CAACyH,WAAW;IACxC,OAAO,OAAOD,OAAO,KAAK,UAAU,GAAGA,OAAO,CAACzD,KAAK,CAAC,GAAGA,KAAK;AACjE,EAAA;AAEA,EAAA,OAAO8C,4BAA4BA,CAAC9C,KAAK,EAAEoC,UAAU,EACrD;AACI,IAAA,MAAMuB,cAAc,GAAGvB,UAAU,EAAEwB,MAAM;AACzC,IAAA,OAAOpB,KAAK,CAACC,OAAO,CAACzC,KAAK,CAAC,IACpB8B,MAAM,CAACC,SAAS,CAAC4B,cAAc,CAAC,IAChC3D,KAAK,CAAC4D,MAAM,KAAKD,cAAc;AAC1C,EAAA;AACJ;;;;"}
|
package/dist/format/CjsFormat.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MediaType, PayloadType } from '@carbonenginejs/runtime-const/media';
|
|
1
2
|
import { CjsResourceProbe as _CjsResourceProbe } from './CjsResourceProbe.js';
|
|
2
3
|
|
|
3
4
|
class CjsFormat {
|
|
@@ -55,6 +56,30 @@ class CjsFormat {
|
|
|
55
56
|
static inspect(input, options = null) {
|
|
56
57
|
return this.isSupported(input, options);
|
|
57
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
|
+
}
|
|
58
83
|
constructor(options = null) {
|
|
59
84
|
this.options = {
|
|
60
85
|
...(options || {})
|
|
@@ -104,50 +129,39 @@ class CjsFormat {
|
|
|
104
129
|
}
|
|
105
130
|
|
|
106
131
|
/**
|
|
107
|
-
* Canonical package-family group names
|
|
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.
|
|
108
136
|
*/
|
|
109
|
-
static Type =
|
|
110
|
-
AUDIO: "audio",
|
|
111
|
-
DATA: "data",
|
|
112
|
-
GEOMETRY: "geometry",
|
|
113
|
-
IMAGE: "image",
|
|
114
|
-
SCHEMA: "schema",
|
|
115
|
-
SHADER: "shader",
|
|
116
|
-
TEXTURE: "texture",
|
|
117
|
-
VIDEO: "video"
|
|
118
|
-
});
|
|
137
|
+
static Type = MediaType;
|
|
119
138
|
|
|
120
139
|
/**
|
|
121
|
-
* Canonical media-type groups used by format registration
|
|
140
|
+
* Canonical media-type groups used by format registration - the shared
|
|
141
|
+
* runtime-const MediaType object (see Type above).
|
|
122
142
|
*/
|
|
123
|
-
static MediaType =
|
|
124
|
-
AUDIO: "audio",
|
|
125
|
-
DATA: "data",
|
|
126
|
-
GEOMETRY: "geometry",
|
|
127
|
-
IMAGE: "image",
|
|
128
|
-
SHADER: "shader",
|
|
129
|
-
SCHEMA: "schema",
|
|
130
|
-
TEXTURE: "texture",
|
|
131
|
-
VIDEO: "video"
|
|
132
|
-
});
|
|
143
|
+
static MediaType = MediaType;
|
|
133
144
|
|
|
134
145
|
/**
|
|
135
|
-
* Canonical output-type tokens used by format emit contracts.
|
|
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.
|
|
136
150
|
*/
|
|
137
151
|
static OutputType = Object.freeze({
|
|
138
|
-
AUDIO:
|
|
152
|
+
AUDIO: PayloadType.AUDIO,
|
|
139
153
|
CMF: "cmf",
|
|
140
154
|
GR2: "gr2",
|
|
141
|
-
IMAGE:
|
|
155
|
+
IMAGE: PayloadType.IMAGE,
|
|
142
156
|
JSON: "json",
|
|
143
157
|
PCM: "pcm",
|
|
144
|
-
RAW:
|
|
158
|
+
RAW: PayloadType.RAW,
|
|
145
159
|
RGBA: "rgba",
|
|
146
|
-
SCHEMA:
|
|
147
|
-
SHADER:
|
|
160
|
+
SCHEMA: PayloadType.SCHEMA,
|
|
161
|
+
SHADER: PayloadType.SHADER,
|
|
148
162
|
SHARED: "shared",
|
|
149
|
-
TEXTURE:
|
|
150
|
-
VIDEO:
|
|
163
|
+
TEXTURE: PayloadType.TEXTURE,
|
|
164
|
+
VIDEO: PayloadType.VIDEO,
|
|
151
165
|
OBJ_JSON: "objJson"
|
|
152
166
|
});
|
|
153
167
|
static type = Object.freeze([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsFormat.js","sources":["../../../src/format/CjsFormat.js"],"sourcesContent":["import { 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 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.\n */\n static Type = Object.freeze({\n AUDIO: \"audio\",\n DATA: \"data\",\n GEOMETRY: \"geometry\",\n IMAGE: \"image\",\n SCHEMA: \"schema\",\n SHADER: \"shader\",\n TEXTURE: \"texture\",\n VIDEO: \"video\"\n });\n\n /**\n * Canonical media-type groups used by format registration.\n */\n static MediaType = Object.freeze({\n AUDIO: \"audio\",\n DATA: \"data\",\n GEOMETRY: \"geometry\",\n IMAGE: \"image\",\n SHADER: \"shader\",\n SCHEMA: \"schema\",\n TEXTURE: \"texture\",\n VIDEO: \"video\"\n });\n\n /**\n * Canonical output-type tokens used by format emit contracts.\n */\n static OutputType = Object.freeze({\n AUDIO: \"audio\",\n CMF: \"cmf\",\n GR2: \"gr2\",\n IMAGE: \"image\",\n JSON: \"json\",\n PCM: \"pcm\",\n RAW: \"raw\",\n RGBA: \"rgba\",\n SCHEMA: \"schema\",\n SHADER: \"shader\",\n SHARED: \"shared\",\n TEXTURE: \"texture\",\n VIDEO: \"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","constructor","SetValues","values","Object","prototype","hasOwnProperty","call","GetValues","Initialize","Error","Type","freeze","AUDIO","DATA","GEOMETRY","IMAGE","SCHEMA","SHADER","TEXTURE","VIDEO","MediaType","OutputType","CMF","GR2","JSON","PCM","RAW","RGBA","SHARED","OBJ_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","ValidateFormatContract","Constructor","TypeError","hasOutput","Array","isArray","length","hasInput","hasMedia","hasType","hasDebug"],"mappings":";;AAEO,MAAMA,SAAS,CACtB;EACEC,OAAO,GAAG,EAAE;;AAEZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOC,IAAIA,CAACC,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;IACjC,MAAMG,MAAM,GAAG,IAAI,IAAI,CAACH,OAAO,IAAI,EAAE,CAAC;IACtC,OAAOG,MAAM,CAACC,IAAI,CAACF,KAAK,EAAEF,OAAO,IAAI,EAAE,CAAC;AAC1C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,aAAaK,SAASA,CAACH,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;IAC5C,MAAMG,MAAM,GAAG,IAAI,IAAI,CAACH,OAAO,IAAI,EAAE,CAAC;IACtC,OAAOG,MAAM,CAACG,SAAS,CAACJ,KAAK,EAAEF,OAAO,IAAI,EAAE,CAAC;AAC/C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOO,WAAWA,CAACL,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;IACxC,MAAMQ,MAAM,GAAG,OAAON,KAAK,KAAK,QAAQ,GAAG,MAAM,GAAG,QAAQ;AAC5D,IAAA,MAAMO,UAAU,GAAG,IAAI,CAACC,IAAI,GACxB,IAAI,CAACA,IAAI,CAACC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAACC,WAAW,EAAE,GACpE,QAAQ;AACZ,IAAA,OAAOC,iBAAgB,CAACC,iBAAiB,CAACL,UAAU,EAAE,0BAA0B,EAAE;MAAED,MAAM;MAAE,GAAGR;AAAQ,KAAC,CAAC;AAC3G,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOe,OAAOA,CAACb,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;AACpC,IAAA,OAAO,IAAI,CAACO,WAAW,CAACL,KAAK,EAAEF,OAAO,CAAC;AACzC,EAAA;AAEAgB,EAAAA,WAAWA,CAAChB,OAAO,GAAG,IAAI,EAAE;IAC1B,IAAI,CAACA,OAAO,GAAG;MAAE,IAAIA,OAAO,IAAI,EAAE;KAAG;AACvC,EAAA;AAEAiB,EAAAA,SAASA,CAACC,MAAM,GAAG,IAAI,EAAE;AACvB,IAAA,IAAI,CAACA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AACzC,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,IAAIC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,MAAM,EAAE,SAAS,CAAC,EAAE;MAC3D,IAAI,CAAClB,OAAO,GAAG;AAAE,QAAA,IAAIkB,MAAM,CAAClB,OAAO,IAAI,EAAE;OAAG;AAC9C,IAAA,CAAC,MAAM;MACL,IAAI,CAACA,OAAO,GAAG;QAAE,GAAG,IAAI,CAACA,OAAO;QAAE,GAAGkB;OAAQ;AAC/C,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AAEAK,EAAAA,SAASA,GAAG;IACV,OAAO;AAAEvB,MAAAA,OAAO,EAAE;AAAE,QAAA,GAAG,IAAI,CAACA;AAAQ;KAAG;AACzC,EAAA;AAEAwB,EAAAA,UAAUA,CAACN,MAAM,GAAG,IAAI,EAAE;IACxB,OAAO,IAAI,CAACD,SAAS,CAACC,MAAM,IAAI,EAAE,CAAC;AACrC,EAAA;;AAEA;AACF;AACA;AACA;AACEd,EAAAA,IAAIA,CAACF,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;IAC1B,MAAM,IAAIyB,KAAK,CAAC,CAAA,EAAG,IAAI,CAACT,WAAW,CAACN,IAAI,CAAA,8CAAA,CAAgD,CAAC;AAC3F,EAAA;;AAEA;AACF;AACA;AACA;AACE,EAAA,MAAMJ,SAASA,CAACJ,KAAK,EAAEF,OAAO,GAAG,IAAI,EAAE;AACrC,IAAA,OAAO,IAAI,CAACI,IAAI,CAACF,KAAK,EAAEF,OAAO,CAAC;AAClC,EAAA;;AAEA;AACF;AACA;AACE,EAAA,OAAO0B,IAAI,GAAGP,MAAM,CAACQ,MAAM,CAAC;AAC1BC,IAAAA,KAAK,EAAE,OAAO;AACdC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,KAAK,EAAE,OAAO;AACdC,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,KAAK,EAAE;AACT,GAAC,CAAC;;AAEF;AACF;AACA;AACE,EAAA,OAAOC,SAAS,GAAGjB,MAAM,CAACQ,MAAM,CAAC;AAC/BC,IAAAA,KAAK,EAAE,OAAO;AACdC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,KAAK,EAAE,OAAO;AACdE,IAAAA,MAAM,EAAE,QAAQ;AAChBD,IAAAA,MAAM,EAAE,QAAQ;AAChBE,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,KAAK,EAAE;AACT,GAAC,CAAC;;AAEF;AACF;AACA;AACE,EAAA,OAAOE,UAAU,GAAGlB,MAAM,CAACQ,MAAM,CAAC;AAChCC,IAAAA,KAAK,EAAE,OAAO;AACdU,IAAAA,GAAG,EAAE,KAAK;AACVC,IAAAA,GAAG,EAAE,KAAK;AACVR,IAAAA,KAAK,EAAE,OAAO;AACdS,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,GAAG,EAAE,KAAK;AACVC,IAAAA,GAAG,EAAE,KAAK;AACVC,IAAAA,IAAI,EAAE,MAAM;AACZX,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,MAAM,EAAE,QAAQ;AAChBW,IAAAA,MAAM,EAAE,QAAQ;AAChBV,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,KAAK,EAAE,OAAO;AACdU,IAAAA,QAAQ,EAAE;AACZ,GAAC,CAAC;AAEF,EAAA,OAAOC,IAAI,GAAG3B,MAAM,CAACQ,MAAM,CAAC,EAAE,CAAC;AAC/B,EAAA,OAAOoB,UAAU,GAAG5B,MAAM,CAACQ,MAAM,CAAC,EAAE,CAAC;AACrC,EAAA,OAAOqB,UAAU,GAAG7B,MAAM,CAACQ,MAAM,CAAC,EAAE,CAAC;AACrC,EAAA,OAAOsB,WAAW,GAAG9B,MAAM,CAACQ,MAAM,CAAC,EAAE,CAAC;EACtC,OAAOuB,gBAAgB,GAAG/B,MAAM,CAACQ,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D;;AAEA;AACA;AACA;AACO,SAASwB,sBAAsBA,CAACC,WAAW,EAAE;EAClD,IAAI,CAACA,WAAW,EAAE;AAChB,IAAA,MAAM,IAAIC,SAAS,CAAC,iDAAiD,CAAC;AACxE,EAAA;AACA,EAAA,MAAMC,SAAS,GAAGC,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACH,WAAW,CAAC,IAAIG,WAAW,CAACH,WAAW,CAACQ,MAAM,GAAG,CAAC;AAC9F,EAAA,MAAMC,QAAQ,GAAGH,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACJ,UAAU,CAAC,IAAII,WAAW,CAACJ,UAAU,CAACS,MAAM,GAAG,CAAC;AAC3F,EAAA,MAAME,QAAQ,GAAGJ,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACL,UAAU,CAAC,IAAIK,WAAW,CAACL,UAAU,CAACU,MAAM,GAAG,CAAC;AAC3F,EAAA,MAAMG,OAAO,GAAGL,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACN,IAAI,CAAC,IAAIM,WAAW,CAACN,IAAI,CAACW,MAAM,GAAG,CAAC;AAC9E,EAAA,MAAMI,QAAQ,GAAGN,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACF,gBAAgB,CAAC,IAAIE,WAAW,CAACF,gBAAgB,CAACO,MAAM,GAAG,CAAC;AACvG,EAAA,IAAI,CAACG,OAAO,IAAI,CAACD,QAAQ,IAAI,CAACD,QAAQ,IAAI,CAACJ,SAAS,IAAI,CAACO,QAAQ,EAAE;AACjE,IAAA,MAAM,IAAIR,SAAS,CAAC,CAAA,uCAAA,EAA0CO,OAAO,CAAA,YAAA,EAAeD,QAAQ,CAAA,YAAA,EAAeD,QAAQ,CAAA,aAAA,EAAgBJ,SAAS,CAAA,kBAAA,EAAqBO,QAAQ,EAAE,CAAC;AAC9K,EAAA;AACF;;;;"}
|
|
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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"}
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CjsReader.js","sources":["../../../src/format/CjsReader.js"],"sourcesContent":["/**\n * Internal base for construction-bound readers.\n *\n * A reader instance is created for one source and normally used and dropped.\n * JavaScript garbage collection reclaims its parser and graph state, so readers\n * do not require `dispose()` or `clear()` for correctness. This differs from\n * native Blue readers such as `BlackReader`, whose cleanup releases manually\n * allocated buffers and refcounted maps. Subclasses retain ownership of their\n * source-specific state and reset behavior.\n */\nexport class CjsReader\n{\n constructor(options = {})\n {\n this.options = options;\n }\n}\n\nexport default CjsReader;\n"],"names":["CjsReader","constructor","options"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,SAAS,CACtB;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;IACI,IAAI,CAACA,OAAO,GAAGA,OAAO;AAC1B,EAAA;AACJ;;;;"}
|
|
@@ -2,7 +2,7 @@ import { applyDecs2311 as _applyDecs2311 } from '../_virtual/_rollupPluginBabelH
|
|
|
2
2
|
import { CjsModel } from '@carbonenginejs/core-types/model';
|
|
3
3
|
import { io, type } from '@carbonenginejs/core-types/schema';
|
|
4
4
|
|
|
5
|
-
let _initClass, _init_format, _init_extra_format, _init_source, _init_extra_source, _init_supported, _init_extra_supported, _init_confidence, _init_extra_confidence, _init_preferred, _init_extra_preferred, _init_reason, _init_extra_reason, _init_metadata, _init_extra_metadata, _init_variant, _init_extra_variant, _init_variants, _init_extra_variants, _init_warnings, _init_extra_warnings, _init_errors, _init_extra_errors;
|
|
5
|
+
let _initClass, _init_format, _init_extra_format, _init_source, _init_extra_source, _init_supported, _init_extra_supported, _init_verified, _init_extra_verified, _init_confidence, _init_extra_confidence, _init_preferred, _init_extra_preferred, _init_reason, _init_extra_reason, _init_metadata, _init_extra_metadata, _init_variant, _init_extra_variant, _init_variants, _init_extra_variants, _init_warnings, _init_extra_warnings, _init_errors, _init_extra_errors;
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Standard probe report for resource formats and a reusable base for format-specific probes.
|
|
@@ -19,17 +19,25 @@ let _CjsResourceProbe;
|
|
|
19
19
|
class CjsResourceProbe extends CjsModel {
|
|
20
20
|
static {
|
|
21
21
|
({
|
|
22
|
-
e: [_init_format, _init_extra_format, _init_source, _init_extra_source, _init_supported, _init_extra_supported, _init_confidence, _init_extra_confidence, _init_preferred, _init_extra_preferred, _init_reason, _init_extra_reason, _init_metadata, _init_extra_metadata, _init_variant, _init_extra_variant, _init_variants, _init_extra_variants, _init_warnings, _init_extra_warnings, _init_errors, _init_extra_errors],
|
|
22
|
+
e: [_init_format, _init_extra_format, _init_source, _init_extra_source, _init_supported, _init_extra_supported, _init_verified, _init_extra_verified, _init_confidence, _init_extra_confidence, _init_preferred, _init_extra_preferred, _init_reason, _init_extra_reason, _init_metadata, _init_extra_metadata, _init_variant, _init_extra_variant, _init_variants, _init_extra_variants, _init_warnings, _init_extra_warnings, _init_errors, _init_extra_errors],
|
|
23
23
|
c: [_CjsResourceProbe, _initClass]
|
|
24
24
|
} = _applyDecs2311(this, [type.define({
|
|
25
25
|
className: "CjsResourceProbe",
|
|
26
26
|
family: "resource"
|
|
27
|
-
})], [[[io, io.persist, type, type.string], 16, "format"], [[io, io.persist, type, type.string], 16, "source"], [[io, io.persist, type, type.string], 16, "supported"], [[io, io.persist, type, type.float64], 16, "confidence"], [[io, io.persist, type, type.string], 16, "preferred"], [[io, io.persist, type, type.string], 16, "reason"], [[io, io.persist, type, type.unknown], 16, "metadata"], [[io, io.persist, type, type.unknown], 16, "variant"], [[io, io.persist, void 0, type.list("unknown")], 16, "variants"], [[io, io.persist, void 0, type.list("string")], 16, "warnings"], [[io, io.persist, void 0, type.list("string")], 16, "errors"]], 0, void 0, CjsModel));
|
|
27
|
+
})], [[[io, io.persist, type, type.string], 16, "format"], [[io, io.persist, type, type.string], 16, "source"], [[io, io.persist, type, type.string], 16, "supported"], [[io, io.persist, type, type.boolean], 16, "verified"], [[io, io.persist, type, type.float64], 16, "confidence"], [[io, io.persist, type, type.string], 16, "preferred"], [[io, io.persist, type, type.string], 16, "reason"], [[io, io.persist, type, type.unknown], 16, "metadata"], [[io, io.persist, type, type.unknown], 16, "variant"], [[io, io.persist, void 0, type.list("unknown")], 16, "variants"], [[io, io.persist, void 0, type.list("string")], 16, "warnings"], [[io, io.persist, void 0, type.list("string")], 16, "errors"]], 0, void 0, CjsModel));
|
|
28
28
|
}
|
|
29
29
|
format = _init_format(this, "");
|
|
30
30
|
source = (_init_extra_format(this), _init_source(this, ""));
|
|
31
31
|
supported = (_init_extra_source(this), _init_supported(this, "none"));
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* True when the report's variant flags are CONTENT-verified (a bounded
|
|
35
|
+
* resolveType() check ran), false when they are declaration-derived
|
|
36
|
+
* (inspect/isSupported). Declared/resolved/mismatch evidence rides in
|
|
37
|
+
* `metadata` per the kb §5 content-verified type resolution contract.
|
|
38
|
+
*/
|
|
39
|
+
verified = (_init_extra_supported(this), _init_verified(this, false));
|
|
40
|
+
confidence = (_init_extra_verified(this), _init_confidence(this, 0));
|
|
33
41
|
preferred = (_init_extra_confidence(this), _init_preferred(this, ""));
|
|
34
42
|
reason = (_init_extra_preferred(this), _init_reason(this, ""));
|
|
35
43
|
metadata = (_init_extra_reason(this), _init_metadata(this, null));
|