@carbonenginejs/runtime-resource 0.8.0 → 0.9.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/LICENSE +21 -21
- package/NOTICE +29 -29
- package/README.md +67 -548
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3005 -3005
- package/dist/CjsResManQueue.js +214 -214
- package/dist/CjsResource.js +566 -566
- package/dist/CjsResourceSource.js +59 -59
- package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -153
- package/dist/format/CjsBlueReader.js +269 -269
- package/dist/format/CjsFormat.js +192 -192
- package/dist/format/CjsReader.js +18 -18
- package/dist/format/CjsResourceProbe.js +277 -277
- package/dist/format/payloadContract.js +173 -173
- package/dist/formats/black/CjsBlackFormat.js +278 -278
- package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -153
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -382
- package/dist/formats/black/core/CjsBlackReader.js +639 -639
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -433
- package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +182 -182
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +125 -125
- package/dist/formats/bnk/core/graph.js +140 -140
- package/dist/formats/bnk/core/helpers.js +409 -409
- package/dist/formats/bnk/core/musicNodes.js +489 -489
- package/dist/formats/bnk/core/soundbanksInfo.js +246 -246
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +118 -118
- package/dist/formats/cmf/core/buffers.js +233 -233
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +287 -287
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +364 -364
- package/dist/formats/cmf/core/shared.js +268 -268
- package/dist/formats/cmf/core/writer.js +517 -517
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +193 -193
- package/dist/formats/dds/core/bc6h.js +288 -288
- package/dist/formats/dds/core/bc7.js +251 -251
- package/dist/formats/dds/core/helpers.js +815 -815
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3901 -3901
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +87 -87
- package/dist/formats/flac/core/helpers.js +295 -295
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +87 -87
- package/dist/formats/gif/core/helpers.js +360 -360
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +290 -290
- package/dist/formats/gltf/core/helpers.js +292 -292
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +666 -666
- package/dist/formats/gltf/core/targets.js +163 -163
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +46 -0
- package/dist/formats/gr2/CjsGr2Format.js.map +1 -0
- package/dist/formats/gr2/core/CjsFormatGr2.js +273 -0
- package/dist/formats/gr2/core/CjsFormatGr2.js.map +1 -0
- package/dist/formats/gr2/core/bitknit2.js +280 -0
- package/dist/formats/gr2/core/bitknit2.js.map +1 -0
- package/dist/formats/gr2/core/curves.js +1047 -0
- package/dist/formats/gr2/core/curves.js.map +1 -0
- package/dist/formats/gr2/core/gsf.js +72 -0
- package/dist/formats/gr2/core/gsf.js.map +1 -0
- package/dist/formats/gr2/core/helpers.js +332 -0
- package/dist/formats/gr2/core/helpers.js.map +1 -0
- package/dist/formats/gr2/core/json.js +622 -0
- package/dist/formats/gr2/core/json.js.map +1 -0
- package/dist/formats/gr2/core/oodle1.js +388 -0
- package/dist/formats/gr2/core/oodle1.js.map +1 -0
- package/dist/formats/gr2/core/reader.js +617 -0
- package/dist/formats/gr2/core/reader.js.map +1 -0
- package/dist/formats/gr2/core/tangents.js +48 -0
- package/dist/formats/gr2/core/tangents.js.map +1 -0
- package/dist/formats/gr2/core/targets.js +351 -0
- package/dist/formats/gr2/core/targets.js.map +1 -0
- package/dist/formats/gr2/index.js +3 -0
- package/dist/formats/gr2/index.js.map +1 -0
- package/dist/formats/index.js +30 -23
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/jpeg/CjsJpegFormat.js +206 -206
- package/dist/formats/jpeg/core/helpers.js +350 -350
- package/dist/formats/jpeg/core/jpeg.js +377 -377
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +192 -192
- package/dist/formats/mp3/core/helpers.js +338 -338
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +191 -191
- package/dist/formats/mp4/core/helpers.js +449 -449
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +88 -88
- package/dist/formats/ogg/core/helpers.js +387 -387
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +999 -999
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +195 -195
- package/dist/formats/png/core/helpers.js +583 -583
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +261 -261
- package/dist/formats/red/core/CjsRedReader.js +194 -194
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +139 -139
- package/dist/formats/red/core/redGraph.js +68 -68
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +629 -629
- package/dist/formats/stl/core/targets.js +163 -163
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +192 -192
- package/dist/formats/tga/core/helpers.js +446 -446
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +192 -192
- package/dist/formats/wav/core/helpers.js +328 -328
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +191 -191
- package/dist/formats/webm/core/helpers.js +537 -537
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +86 -86
- package/dist/formats/webp/core/helpers.js +214 -214
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +241 -241
- package/dist/formats/wem/core/bitStream.js +259 -259
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +417 -417
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +83 -83
- package/dist/formats/yaml/core/CjsYamlReader.js +305 -305
- package/dist/formats/yaml/core/helpers.js +160 -160
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +49 -48
- package/dist/index.js.map +1 -1
- package/dist/resourcePath.js +18 -18
- package/dist/resourceStates.js +9 -9
- package/dist/resources/AudioGeometryResData.js +47 -47
- package/dist/resources/GStateBindingCallbackData.js +31 -31
- package/dist/resources/MeshDecalData.js +37 -37
- package/dist/resources/MeshDecalLodData.js +34 -34
- package/dist/resources/Tr2EffectRes.js +71 -71
- package/dist/resources/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resources/Tr2GrannyStateRes.js +44 -44
- package/dist/resources/Tr2ImageRes.js +114 -114
- package/dist/resources/Tr2LightProfileRes.js +40 -40
- package/dist/resources/Tr2MaterialArea.js +34 -34
- package/dist/resources/Tr2MaterialMesh.js +31 -31
- package/dist/resources/Tr2MaterialRes.js +34 -34
- package/dist/resources/Tr2ShaderPermutation.js +43 -43
- package/dist/resources/Tr2TextureLodManager.js +80 -80
- package/dist/resources/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resources/Tr2TexturePackChannel.js +37 -37
- package/dist/resources/Tr2TexturePipeline.js +52 -52
- package/dist/resources/Tr2TexturePipelineParams.js +34 -34
- package/dist/resources/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js +22 -0
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resources/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resources/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resources/TriGeometryRes.js +239 -239
- package/dist/resources/TriGeometryResAreaData.js +59 -59
- package/dist/resources/TriGeometryResJointData.js +38 -38
- package/dist/resources/TriGeometryResLodData.js +88 -88
- package/dist/resources/TriGeometryResMeshData.js +63 -63
- package/dist/resources/TriGeometryResSkeletonData.js +34 -34
- package/dist/resources/TriGrannyRes.js +43 -43
- package/dist/resources/TriJointBinding.js +38 -38
- package/dist/resources/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resources/TriRtGeometryConstants.js +88 -88
- package/dist/resources/TriTextureRes.js +304 -304
- package/dist/resources/enums.js +18 -18
- package/dist/resources/resourceBoundary.js +47 -47
- package/dist/resources/texturePipelineBehavior.js +308 -308
- package/dist/texture/CjsTextureArrayRes.js +406 -406
- package/dist/texture/CjsTextureParameterProxy.js +133 -133
- package/docs/README.md +69 -0
- package/docs/architecture.md +86 -0
- package/docs/concepts/resource-lifecycle.md +217 -0
- package/docs/formats/README.md +104 -0
- package/{FORMAT-PROVENANCE.md → docs/formats/provenance.md} +173 -155
- package/docs/formats/stl.md +37 -0
- package/docs/formats/wwise.md +44 -0
- package/docs/reference/events.md +92 -0
- package/docs/reference/motherlode-cache.md +244 -0
- package/docs/reference/queues.md +102 -0
- package/docs/reference/reload.md +107 -0
- package/docs/reference/texture-arrays.md +113 -0
- package/docs/reference/texture-pipeline.md +53 -0
- package/docs/roadmap.md +104 -0
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +20 -20
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -0
- package/format-notices/gr2/NOTICE +60 -0
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -0
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +52 -51
- package/resource-lifecycle.md +0 -679
|
@@ -1,433 +1,433 @@
|
|
|
1
|
-
class CjsBlackSchemaRegistry {
|
|
2
|
-
constructor(schema = null) {
|
|
3
|
-
this.shapes = CjsBlackSchemaRegistry.createShapeMap(schema);
|
|
4
|
-
}
|
|
5
|
-
GetSourceShape(kind) {
|
|
6
|
-
return this.shapes.get(kind) || null;
|
|
7
|
-
}
|
|
8
|
-
static createShapeMap(schema) {
|
|
9
|
-
const shapes = new Map();
|
|
10
|
-
if (CjsBlackSchemaRegistry.isCompactClassMap(schema)) {
|
|
11
|
-
CjsBlackSchemaRegistry.addCompactClassMap(schema, shapes);
|
|
12
|
-
return shapes;
|
|
13
|
-
}
|
|
14
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(schema, shapes, new WeakSet());
|
|
15
|
-
return shapes;
|
|
16
|
-
}
|
|
17
|
-
static collectSchemaShapes(value, shapes, seen) {
|
|
18
|
-
if (!value || typeof value !== "object") return;
|
|
19
|
-
if (seen.has(value)) return;
|
|
20
|
-
seen.add(value);
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
for (const item of value) {
|
|
23
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
24
|
-
}
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
if (CjsBlackSchemaRegistry.isClassSchema(value)) {
|
|
28
|
-
CjsBlackSchemaRegistry.addShape(value, shapes);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (Array.isArray(value.families)) {
|
|
32
|
-
for (const family of value.families) {
|
|
33
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(family, shapes, seen);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (Array.isArray(value.classes)) {
|
|
37
|
-
for (const item of value.classes) {
|
|
38
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
39
|
-
}
|
|
40
|
-
} else if (CjsBlackSchemaRegistry.isCompactClassMap(value.classes)) {
|
|
41
|
-
CjsBlackSchemaRegistry.addCompactClassMap(value.classes, shapes);
|
|
42
|
-
}
|
|
43
|
-
for (const item of Object.values(value)) {
|
|
44
|
-
if (item && typeof item === "object" && CjsBlackSchemaRegistry.isClassSchema(item)) {
|
|
45
|
-
CjsBlackSchemaRegistry.addShape(item, shapes);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
static isCompactClassMap(value) {
|
|
50
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
51
|
-
if (CjsBlackSchemaRegistry.isClassSchema(value)) return false;
|
|
52
|
-
if (value.black || value.families || Array.isArray(value.classes)) return false;
|
|
53
|
-
const entries = Object.entries(value);
|
|
54
|
-
if (!entries.length) return false;
|
|
55
|
-
return entries.every(([className, fields]) => typeof className === "string" && className.length > 0 && CjsBlackSchemaRegistry.isCompactFieldMap(fields) && CjsBlackSchemaRegistry.isCompactClassFields(fields));
|
|
56
|
-
}
|
|
57
|
-
static isCompactClassFields(fields) {
|
|
58
|
-
const specs = Object.values(fields || {});
|
|
59
|
-
return specs.every(spec => CjsBlackSchemaRegistry.isCompactFieldSpec(spec));
|
|
60
|
-
}
|
|
61
|
-
static isCompactFieldSpec(spec) {
|
|
62
|
-
if (typeof spec === "string") return true;
|
|
63
|
-
if (!spec || typeof spec !== "object" || Array.isArray(spec)) return false;
|
|
64
|
-
return typeof spec.type === "string" || typeof spec.kind === "string";
|
|
65
|
-
}
|
|
66
|
-
static addCompactClassMap(classes, shapes) {
|
|
67
|
-
for (const [className, fields] of Object.entries(classes || {})) {
|
|
68
|
-
CjsBlackSchemaRegistry.addShape({
|
|
69
|
-
className,
|
|
70
|
-
fields
|
|
71
|
-
}, shapes);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
static isClassSchema(value) {
|
|
75
|
-
if (!value || typeof value !== "object") return false;
|
|
76
|
-
if (Array.isArray(value)) return false;
|
|
77
|
-
return Boolean(value.black?.fields || value.black && (value.black.className || value.className || value.blueClass || value.cppClass) || value.className && CjsBlackSchemaRegistry.isCompactFieldMap(value.fields) || value.className && Array.isArray(value.fields) || value.blueClass && value.black);
|
|
78
|
-
}
|
|
79
|
-
static addShape(schema, shapes) {
|
|
80
|
-
const shape = CjsBlackSchemaRegistry.normalizeShape(schema);
|
|
81
|
-
if (!shape?.className) return;
|
|
82
|
-
shapes.set(shape.className, shape);
|
|
83
|
-
if (schema.blueClass) shapes.set(schema.blueClass, shape);
|
|
84
|
-
if (schema.cppClass) shapes.set(schema.cppClass, shape);
|
|
85
|
-
if (schema.name) shapes.set(schema.name, shape);
|
|
86
|
-
}
|
|
87
|
-
static normalizeShape(schema) {
|
|
88
|
-
const black = schema.black || {};
|
|
89
|
-
const className = black.className || schema.className || schema.blueClass || schema.cppClass || schema.name || null;
|
|
90
|
-
if (!className) return null;
|
|
91
|
-
const fields = CjsBlackSchemaRegistry.normalizeFields(schema);
|
|
92
|
-
const blackFieldSource = CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields) ? CjsBlackSchemaRegistry.compactBlackFields(schema.fields) : black.fields || schema.blackFields || schema.fields || [];
|
|
93
|
-
const blackFields = blackFieldSource.filter(item => item && typeof item === "object").map(item => CjsBlackSchemaRegistry.normalizeBlackField(item, fields));
|
|
94
|
-
return {
|
|
95
|
-
...schema,
|
|
96
|
-
className,
|
|
97
|
-
family: schema.family || null,
|
|
98
|
-
fields,
|
|
99
|
-
black: {
|
|
100
|
-
...black,
|
|
101
|
-
className,
|
|
102
|
-
fields: blackFields
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
static normalizeFields(schema) {
|
|
107
|
-
const fields = [];
|
|
108
|
-
const byName = new Map();
|
|
109
|
-
const add = field => {
|
|
110
|
-
if (!field || typeof field !== "object") return;
|
|
111
|
-
const name = field.name || field.fieldName || field.blueName || CjsBlackSchemaRegistry.toJsFieldName(field.cppName || field.member || "");
|
|
112
|
-
if (!name || byName.has(name)) return;
|
|
113
|
-
const normalized = {
|
|
114
|
-
...field,
|
|
115
|
-
name,
|
|
116
|
-
cppName: field.cppName || field.memberPath || field.memberRoot || field.member || null,
|
|
117
|
-
cppType: field.cppType || null
|
|
118
|
-
};
|
|
119
|
-
byName.set(name, normalized);
|
|
120
|
-
fields.push(normalized);
|
|
121
|
-
};
|
|
122
|
-
if (CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields)) {
|
|
123
|
-
for (const [blackName, fieldSpec] of Object.entries(schema.fields)) {
|
|
124
|
-
add(CjsBlackSchemaRegistry.compactField(blackName, fieldSpec));
|
|
125
|
-
}
|
|
126
|
-
} else {
|
|
127
|
-
for (const field of schema.fields || []) {
|
|
128
|
-
add(field);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
for (const attribute of schema.attributes || []) {
|
|
132
|
-
if (!attribute?.black) continue;
|
|
133
|
-
const black = CjsBlackSchemaRegistry.normalizeBlackField(attribute.black, fields);
|
|
134
|
-
add({
|
|
135
|
-
name: black.fieldName || attribute.blueName || black.name,
|
|
136
|
-
cppName: black.cppName,
|
|
137
|
-
cppType: black.cppType || attribute.cppType,
|
|
138
|
-
black
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
return fields;
|
|
142
|
-
}
|
|
143
|
-
static isCompactFieldMap(value) {
|
|
144
|
-
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
145
|
-
}
|
|
146
|
-
static compactBlackFields(fields) {
|
|
147
|
-
return Object.entries(fields || {}).map(([blackName, fieldSpec]) => CjsBlackSchemaRegistry.compactBlackField(blackName, fieldSpec));
|
|
148
|
-
}
|
|
149
|
-
static compactField(blackName, fieldSpec) {
|
|
150
|
-
const spec = CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec);
|
|
151
|
-
return {
|
|
152
|
-
name: spec.fieldName,
|
|
153
|
-
fieldName: spec.fieldName,
|
|
154
|
-
enumType: spec.enumType,
|
|
155
|
-
jsType: spec.jsType,
|
|
156
|
-
black: spec.black
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
static compactBlackField(blackName, fieldSpec) {
|
|
160
|
-
return CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec).black;
|
|
161
|
-
}
|
|
162
|
-
static normalizeCompactSpec(blackName, fieldSpec) {
|
|
163
|
-
const spec = typeof fieldSpec === "string" ? {
|
|
164
|
-
type: fieldSpec
|
|
165
|
-
} : fieldSpec || {},
|
|
166
|
-
type = spec.type || spec.kind || "unknown",
|
|
167
|
-
fieldName = spec.field || spec.fieldName || blackName,
|
|
168
|
-
descriptor = CjsBlackSchemaRegistry.compactTypeDescriptor(type, spec),
|
|
169
|
-
black = {
|
|
170
|
-
name: blackName,
|
|
171
|
-
fieldName,
|
|
172
|
-
storageName: fieldName,
|
|
173
|
-
member: blackName,
|
|
174
|
-
memberPath: fieldName,
|
|
175
|
-
memberRoot: fieldName,
|
|
176
|
-
indexKey: Object.hasOwn(spec, "index") ? spec.index : undefined,
|
|
177
|
-
indexToken: spec.token || null,
|
|
178
|
-
enumType: spec.enum || null,
|
|
179
|
-
...descriptor.black,
|
|
180
|
-
jsType: descriptor.jsType
|
|
181
|
-
};
|
|
182
|
-
return {
|
|
183
|
-
fieldName,
|
|
184
|
-
enumType: spec.enum || null,
|
|
185
|
-
jsType: descriptor.jsType,
|
|
186
|
-
black
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
static compactTypeDescriptor(type, spec) {
|
|
190
|
-
const normalized = String(type || "unknown");
|
|
191
|
-
switch (normalized) {
|
|
192
|
-
case "boolean":
|
|
193
|
-
case "bool":
|
|
194
|
-
return CjsBlackSchemaRegistry.compactBlackType("BOOL", {
|
|
195
|
-
kind: "boolean"
|
|
196
|
-
});
|
|
197
|
-
case "string":
|
|
198
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
199
|
-
kind: "string"
|
|
200
|
-
});
|
|
201
|
-
case "wstring":
|
|
202
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDWSTRING", {
|
|
203
|
-
kind: "string"
|
|
204
|
-
});
|
|
205
|
-
case "path":
|
|
206
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
207
|
-
kind: "path"
|
|
208
|
-
});
|
|
209
|
-
case "expression":
|
|
210
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
211
|
-
kind: "expression",
|
|
212
|
-
js: "string"
|
|
213
|
-
});
|
|
214
|
-
case "enum":
|
|
215
|
-
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
216
|
-
kind: "enum"
|
|
217
|
-
}, {
|
|
218
|
-
signed: true
|
|
219
|
-
});
|
|
220
|
-
case "float":
|
|
221
|
-
return CjsBlackSchemaRegistry.compactBlackType("FLOAT", {
|
|
222
|
-
kind: "float32"
|
|
223
|
-
});
|
|
224
|
-
case "double":
|
|
225
|
-
return CjsBlackSchemaRegistry.compactBlackType("DOUBLE", {
|
|
226
|
-
kind: "float64"
|
|
227
|
-
});
|
|
228
|
-
case "int":
|
|
229
|
-
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
230
|
-
kind: "int32"
|
|
231
|
-
}, {
|
|
232
|
-
signed: true
|
|
233
|
-
});
|
|
234
|
-
case "uint":
|
|
235
|
-
return CjsBlackSchemaRegistry.compactBlackType("ULONG", {
|
|
236
|
-
kind: "uint32"
|
|
237
|
-
}, {
|
|
238
|
-
signed: false
|
|
239
|
-
});
|
|
240
|
-
case "int64":
|
|
241
|
-
return CjsBlackSchemaRegistry.compactBlackType("INT64", {
|
|
242
|
-
kind: "int64"
|
|
243
|
-
}, {
|
|
244
|
-
signed: true
|
|
245
|
-
});
|
|
246
|
-
case "uint64":
|
|
247
|
-
return CjsBlackSchemaRegistry.compactBlackType("UINT64", {
|
|
248
|
-
kind: "uint64"
|
|
249
|
-
}, {
|
|
250
|
-
signed: false
|
|
251
|
-
});
|
|
252
|
-
case "byte":
|
|
253
|
-
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
254
|
-
kind: "int8"
|
|
255
|
-
}, {
|
|
256
|
-
signed: true
|
|
257
|
-
});
|
|
258
|
-
case "ubyte":
|
|
259
|
-
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
260
|
-
kind: "uint8"
|
|
261
|
-
}, {
|
|
262
|
-
signed: false
|
|
263
|
-
});
|
|
264
|
-
case "short":
|
|
265
|
-
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
266
|
-
kind: "int16"
|
|
267
|
-
}, {
|
|
268
|
-
signed: true
|
|
269
|
-
});
|
|
270
|
-
case "ushort":
|
|
271
|
-
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
272
|
-
kind: "uint16"
|
|
273
|
-
}, {
|
|
274
|
-
signed: false
|
|
275
|
-
});
|
|
276
|
-
case "vector2":
|
|
277
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector2", 2);
|
|
278
|
-
case "vector3":
|
|
279
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector3", 3);
|
|
280
|
-
case "vector4":
|
|
281
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector4", 4);
|
|
282
|
-
case "color":
|
|
283
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("color", 4);
|
|
284
|
-
case "quaternion":
|
|
285
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("quaternion", 4);
|
|
286
|
-
case "matrix3":
|
|
287
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix3", 9);
|
|
288
|
-
case "matrix4":
|
|
289
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix4", 16);
|
|
290
|
-
case "floatArray":
|
|
291
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("array", spec.length || 0);
|
|
292
|
-
case "array":
|
|
293
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
294
|
-
kind: "array"
|
|
295
|
-
}, {
|
|
296
|
-
container: "list"
|
|
297
|
-
});
|
|
298
|
-
case "dict":
|
|
299
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
300
|
-
kind: "map"
|
|
301
|
-
}, {
|
|
302
|
-
container: "dict"
|
|
303
|
-
});
|
|
304
|
-
case "object":
|
|
305
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOTPTR", {
|
|
306
|
-
kind: "objectRef"
|
|
307
|
-
});
|
|
308
|
-
case "rawStruct":
|
|
309
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
310
|
-
kind: "rawStruct"
|
|
311
|
-
});
|
|
312
|
-
case "structList":
|
|
313
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
314
|
-
kind: "array"
|
|
315
|
-
}, {
|
|
316
|
-
container: "list",
|
|
317
|
-
cppType: spec.cppType || "StructureList"
|
|
318
|
-
});
|
|
319
|
-
case "binaryBlock":
|
|
320
|
-
return CjsBlackSchemaRegistry.compactBlackType("BINARYBLOCK", {
|
|
321
|
-
kind: "typedArray"
|
|
322
|
-
});
|
|
323
|
-
default:
|
|
324
|
-
return CjsBlackSchemaRegistry.compactBlackType(null, {
|
|
325
|
-
kind: normalized
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
static compactBlackType(beType, jsType, extra = {}) {
|
|
330
|
-
return {
|
|
331
|
-
jsType,
|
|
332
|
-
black: {
|
|
333
|
-
beType,
|
|
334
|
-
wireType: CjsBlackSchemaRegistry.compactWireType(beType, extra.container),
|
|
335
|
-
...extra
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
static compactFloatArrayType(kind, length) {
|
|
340
|
-
return CjsBlackSchemaRegistry.compactBlackType("FLOATARRAY", {
|
|
341
|
-
kind,
|
|
342
|
-
length
|
|
343
|
-
}, {
|
|
344
|
-
length
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
static compactWireType(beType, container = null) {
|
|
348
|
-
switch (beType) {
|
|
349
|
-
case "BOOL":
|
|
350
|
-
return "bool";
|
|
351
|
-
case "STDSTRING":
|
|
352
|
-
case "STDWSTRING":
|
|
353
|
-
return "stringRef";
|
|
354
|
-
case "FLOAT":
|
|
355
|
-
return "float32";
|
|
356
|
-
case "DOUBLE":
|
|
357
|
-
return "float64";
|
|
358
|
-
case "LONG":
|
|
359
|
-
return "int32";
|
|
360
|
-
case "ULONG":
|
|
361
|
-
return "uint32";
|
|
362
|
-
case "INT64":
|
|
363
|
-
return "int64";
|
|
364
|
-
case "UINT64":
|
|
365
|
-
return "uint64";
|
|
366
|
-
case "BYTE":
|
|
367
|
-
return "uint8";
|
|
368
|
-
case "SHORT":
|
|
369
|
-
return "uint16";
|
|
370
|
-
case "FLOATARRAY":
|
|
371
|
-
return "floatArray";
|
|
372
|
-
case "BINARYBLOCK":
|
|
373
|
-
return "binaryBlock";
|
|
374
|
-
case "IROOTPTR":
|
|
375
|
-
return "objectRef";
|
|
376
|
-
case "IROOT":
|
|
377
|
-
return container ? "container" : "inlineObject";
|
|
378
|
-
default:
|
|
379
|
-
return null;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
static normalizeBlackField(field, sourceFields = []) {
|
|
383
|
-
const names = field.names || null;
|
|
384
|
-
const name = field.name || CjsBlackSchemaRegistry.getNameRole(names, "name") || field.nameExpression || null;
|
|
385
|
-
const fieldName = field.fieldName || CjsBlackSchemaRegistry.getNameRole(names, "fieldName") || name || null;
|
|
386
|
-
const cppName = field.cppName || CjsBlackSchemaRegistry.getNameRole(names, "cppName") || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || null;
|
|
387
|
-
const member = field.member || CjsBlackSchemaRegistry.getNameRole(names, "member") || cppName || name;
|
|
388
|
-
const memberPath = field.memberPath || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || cppName;
|
|
389
|
-
const memberRoot = field.memberRoot || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || memberPath;
|
|
390
|
-
const sourceField = sourceFields.find(item => item.name === fieldName || item.name === name || item.cppName === cppName || item.cppName === memberPath || item.cppName === memberRoot);
|
|
391
|
-
return {
|
|
392
|
-
...field,
|
|
393
|
-
names,
|
|
394
|
-
name,
|
|
395
|
-
fieldName,
|
|
396
|
-
storageName: field.storageName || fieldName || name,
|
|
397
|
-
cppName: cppName || sourceField?.cppName || null,
|
|
398
|
-
member,
|
|
399
|
-
memberPath,
|
|
400
|
-
memberRoot,
|
|
401
|
-
cppType: field.cppType || sourceField?.cppType || null,
|
|
402
|
-
beType: field.beType || null
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
static matchesBlackFieldName(field, blackName) {
|
|
406
|
-
if (!field || !blackName) return false;
|
|
407
|
-
if (field.name === blackName) return true;
|
|
408
|
-
if (field.fieldName === blackName) return true;
|
|
409
|
-
if (field.member === blackName) return true;
|
|
410
|
-
if (field.memberPath === blackName) return true;
|
|
411
|
-
if (field.memberRoot === blackName) return true;
|
|
412
|
-
if (field.cppName === blackName) return true;
|
|
413
|
-
if (field.nameExpression === blackName) return true;
|
|
414
|
-
if (field.names && typeof field.names === "object") {
|
|
415
|
-
return Object.hasOwn(field.names, blackName);
|
|
416
|
-
}
|
|
417
|
-
return false;
|
|
418
|
-
}
|
|
419
|
-
static getNameRole(names, role) {
|
|
420
|
-
if (!names || typeof names !== "object") return null;
|
|
421
|
-
for (const [name, roles] of Object.entries(names)) {
|
|
422
|
-
const roleList = Array.isArray(roles) ? roles : String(roles || "").split(/\s+/);
|
|
423
|
-
if (roleList.includes(role)) return name;
|
|
424
|
-
}
|
|
425
|
-
return null;
|
|
426
|
-
}
|
|
427
|
-
static toJsFieldName(value) {
|
|
428
|
-
return String(value || "").replace(/^m_/, "");
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
export { CjsBlackSchemaRegistry };
|
|
433
|
-
//# sourceMappingURL=CjsBlackSchemaRegistry.js.map
|
|
1
|
+
class CjsBlackSchemaRegistry {
|
|
2
|
+
constructor(schema = null) {
|
|
3
|
+
this.shapes = CjsBlackSchemaRegistry.createShapeMap(schema);
|
|
4
|
+
}
|
|
5
|
+
GetSourceShape(kind) {
|
|
6
|
+
return this.shapes.get(kind) || null;
|
|
7
|
+
}
|
|
8
|
+
static createShapeMap(schema) {
|
|
9
|
+
const shapes = new Map();
|
|
10
|
+
if (CjsBlackSchemaRegistry.isCompactClassMap(schema)) {
|
|
11
|
+
CjsBlackSchemaRegistry.addCompactClassMap(schema, shapes);
|
|
12
|
+
return shapes;
|
|
13
|
+
}
|
|
14
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(schema, shapes, new WeakSet());
|
|
15
|
+
return shapes;
|
|
16
|
+
}
|
|
17
|
+
static collectSchemaShapes(value, shapes, seen) {
|
|
18
|
+
if (!value || typeof value !== "object") return;
|
|
19
|
+
if (seen.has(value)) return;
|
|
20
|
+
seen.add(value);
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
for (const item of value) {
|
|
23
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
24
|
+
}
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (CjsBlackSchemaRegistry.isClassSchema(value)) {
|
|
28
|
+
CjsBlackSchemaRegistry.addShape(value, shapes);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(value.families)) {
|
|
32
|
+
for (const family of value.families) {
|
|
33
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(family, shapes, seen);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value.classes)) {
|
|
37
|
+
for (const item of value.classes) {
|
|
38
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
39
|
+
}
|
|
40
|
+
} else if (CjsBlackSchemaRegistry.isCompactClassMap(value.classes)) {
|
|
41
|
+
CjsBlackSchemaRegistry.addCompactClassMap(value.classes, shapes);
|
|
42
|
+
}
|
|
43
|
+
for (const item of Object.values(value)) {
|
|
44
|
+
if (item && typeof item === "object" && CjsBlackSchemaRegistry.isClassSchema(item)) {
|
|
45
|
+
CjsBlackSchemaRegistry.addShape(item, shapes);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static isCompactClassMap(value) {
|
|
50
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
51
|
+
if (CjsBlackSchemaRegistry.isClassSchema(value)) return false;
|
|
52
|
+
if (value.black || value.families || Array.isArray(value.classes)) return false;
|
|
53
|
+
const entries = Object.entries(value);
|
|
54
|
+
if (!entries.length) return false;
|
|
55
|
+
return entries.every(([className, fields]) => typeof className === "string" && className.length > 0 && CjsBlackSchemaRegistry.isCompactFieldMap(fields) && CjsBlackSchemaRegistry.isCompactClassFields(fields));
|
|
56
|
+
}
|
|
57
|
+
static isCompactClassFields(fields) {
|
|
58
|
+
const specs = Object.values(fields || {});
|
|
59
|
+
return specs.every(spec => CjsBlackSchemaRegistry.isCompactFieldSpec(spec));
|
|
60
|
+
}
|
|
61
|
+
static isCompactFieldSpec(spec) {
|
|
62
|
+
if (typeof spec === "string") return true;
|
|
63
|
+
if (!spec || typeof spec !== "object" || Array.isArray(spec)) return false;
|
|
64
|
+
return typeof spec.type === "string" || typeof spec.kind === "string";
|
|
65
|
+
}
|
|
66
|
+
static addCompactClassMap(classes, shapes) {
|
|
67
|
+
for (const [className, fields] of Object.entries(classes || {})) {
|
|
68
|
+
CjsBlackSchemaRegistry.addShape({
|
|
69
|
+
className,
|
|
70
|
+
fields
|
|
71
|
+
}, shapes);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
static isClassSchema(value) {
|
|
75
|
+
if (!value || typeof value !== "object") return false;
|
|
76
|
+
if (Array.isArray(value)) return false;
|
|
77
|
+
return Boolean(value.black?.fields || value.black && (value.black.className || value.className || value.blueClass || value.cppClass) || value.className && CjsBlackSchemaRegistry.isCompactFieldMap(value.fields) || value.className && Array.isArray(value.fields) || value.blueClass && value.black);
|
|
78
|
+
}
|
|
79
|
+
static addShape(schema, shapes) {
|
|
80
|
+
const shape = CjsBlackSchemaRegistry.normalizeShape(schema);
|
|
81
|
+
if (!shape?.className) return;
|
|
82
|
+
shapes.set(shape.className, shape);
|
|
83
|
+
if (schema.blueClass) shapes.set(schema.blueClass, shape);
|
|
84
|
+
if (schema.cppClass) shapes.set(schema.cppClass, shape);
|
|
85
|
+
if (schema.name) shapes.set(schema.name, shape);
|
|
86
|
+
}
|
|
87
|
+
static normalizeShape(schema) {
|
|
88
|
+
const black = schema.black || {};
|
|
89
|
+
const className = black.className || schema.className || schema.blueClass || schema.cppClass || schema.name || null;
|
|
90
|
+
if (!className) return null;
|
|
91
|
+
const fields = CjsBlackSchemaRegistry.normalizeFields(schema);
|
|
92
|
+
const blackFieldSource = CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields) ? CjsBlackSchemaRegistry.compactBlackFields(schema.fields) : black.fields || schema.blackFields || schema.fields || [];
|
|
93
|
+
const blackFields = blackFieldSource.filter(item => item && typeof item === "object").map(item => CjsBlackSchemaRegistry.normalizeBlackField(item, fields));
|
|
94
|
+
return {
|
|
95
|
+
...schema,
|
|
96
|
+
className,
|
|
97
|
+
family: schema.family || null,
|
|
98
|
+
fields,
|
|
99
|
+
black: {
|
|
100
|
+
...black,
|
|
101
|
+
className,
|
|
102
|
+
fields: blackFields
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
static normalizeFields(schema) {
|
|
107
|
+
const fields = [];
|
|
108
|
+
const byName = new Map();
|
|
109
|
+
const add = field => {
|
|
110
|
+
if (!field || typeof field !== "object") return;
|
|
111
|
+
const name = field.name || field.fieldName || field.blueName || CjsBlackSchemaRegistry.toJsFieldName(field.cppName || field.member || "");
|
|
112
|
+
if (!name || byName.has(name)) return;
|
|
113
|
+
const normalized = {
|
|
114
|
+
...field,
|
|
115
|
+
name,
|
|
116
|
+
cppName: field.cppName || field.memberPath || field.memberRoot || field.member || null,
|
|
117
|
+
cppType: field.cppType || null
|
|
118
|
+
};
|
|
119
|
+
byName.set(name, normalized);
|
|
120
|
+
fields.push(normalized);
|
|
121
|
+
};
|
|
122
|
+
if (CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields)) {
|
|
123
|
+
for (const [blackName, fieldSpec] of Object.entries(schema.fields)) {
|
|
124
|
+
add(CjsBlackSchemaRegistry.compactField(blackName, fieldSpec));
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
for (const field of schema.fields || []) {
|
|
128
|
+
add(field);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const attribute of schema.attributes || []) {
|
|
132
|
+
if (!attribute?.black) continue;
|
|
133
|
+
const black = CjsBlackSchemaRegistry.normalizeBlackField(attribute.black, fields);
|
|
134
|
+
add({
|
|
135
|
+
name: black.fieldName || attribute.blueName || black.name,
|
|
136
|
+
cppName: black.cppName,
|
|
137
|
+
cppType: black.cppType || attribute.cppType,
|
|
138
|
+
black
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return fields;
|
|
142
|
+
}
|
|
143
|
+
static isCompactFieldMap(value) {
|
|
144
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
145
|
+
}
|
|
146
|
+
static compactBlackFields(fields) {
|
|
147
|
+
return Object.entries(fields || {}).map(([blackName, fieldSpec]) => CjsBlackSchemaRegistry.compactBlackField(blackName, fieldSpec));
|
|
148
|
+
}
|
|
149
|
+
static compactField(blackName, fieldSpec) {
|
|
150
|
+
const spec = CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec);
|
|
151
|
+
return {
|
|
152
|
+
name: spec.fieldName,
|
|
153
|
+
fieldName: spec.fieldName,
|
|
154
|
+
enumType: spec.enumType,
|
|
155
|
+
jsType: spec.jsType,
|
|
156
|
+
black: spec.black
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
static compactBlackField(blackName, fieldSpec) {
|
|
160
|
+
return CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec).black;
|
|
161
|
+
}
|
|
162
|
+
static normalizeCompactSpec(blackName, fieldSpec) {
|
|
163
|
+
const spec = typeof fieldSpec === "string" ? {
|
|
164
|
+
type: fieldSpec
|
|
165
|
+
} : fieldSpec || {},
|
|
166
|
+
type = spec.type || spec.kind || "unknown",
|
|
167
|
+
fieldName = spec.field || spec.fieldName || blackName,
|
|
168
|
+
descriptor = CjsBlackSchemaRegistry.compactTypeDescriptor(type, spec),
|
|
169
|
+
black = {
|
|
170
|
+
name: blackName,
|
|
171
|
+
fieldName,
|
|
172
|
+
storageName: fieldName,
|
|
173
|
+
member: blackName,
|
|
174
|
+
memberPath: fieldName,
|
|
175
|
+
memberRoot: fieldName,
|
|
176
|
+
indexKey: Object.hasOwn(spec, "index") ? spec.index : undefined,
|
|
177
|
+
indexToken: spec.token || null,
|
|
178
|
+
enumType: spec.enum || null,
|
|
179
|
+
...descriptor.black,
|
|
180
|
+
jsType: descriptor.jsType
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
fieldName,
|
|
184
|
+
enumType: spec.enum || null,
|
|
185
|
+
jsType: descriptor.jsType,
|
|
186
|
+
black
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
static compactTypeDescriptor(type, spec) {
|
|
190
|
+
const normalized = String(type || "unknown");
|
|
191
|
+
switch (normalized) {
|
|
192
|
+
case "boolean":
|
|
193
|
+
case "bool":
|
|
194
|
+
return CjsBlackSchemaRegistry.compactBlackType("BOOL", {
|
|
195
|
+
kind: "boolean"
|
|
196
|
+
});
|
|
197
|
+
case "string":
|
|
198
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
199
|
+
kind: "string"
|
|
200
|
+
});
|
|
201
|
+
case "wstring":
|
|
202
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDWSTRING", {
|
|
203
|
+
kind: "string"
|
|
204
|
+
});
|
|
205
|
+
case "path":
|
|
206
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
207
|
+
kind: "path"
|
|
208
|
+
});
|
|
209
|
+
case "expression":
|
|
210
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
211
|
+
kind: "expression",
|
|
212
|
+
js: "string"
|
|
213
|
+
});
|
|
214
|
+
case "enum":
|
|
215
|
+
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
216
|
+
kind: "enum"
|
|
217
|
+
}, {
|
|
218
|
+
signed: true
|
|
219
|
+
});
|
|
220
|
+
case "float":
|
|
221
|
+
return CjsBlackSchemaRegistry.compactBlackType("FLOAT", {
|
|
222
|
+
kind: "float32"
|
|
223
|
+
});
|
|
224
|
+
case "double":
|
|
225
|
+
return CjsBlackSchemaRegistry.compactBlackType("DOUBLE", {
|
|
226
|
+
kind: "float64"
|
|
227
|
+
});
|
|
228
|
+
case "int":
|
|
229
|
+
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
230
|
+
kind: "int32"
|
|
231
|
+
}, {
|
|
232
|
+
signed: true
|
|
233
|
+
});
|
|
234
|
+
case "uint":
|
|
235
|
+
return CjsBlackSchemaRegistry.compactBlackType("ULONG", {
|
|
236
|
+
kind: "uint32"
|
|
237
|
+
}, {
|
|
238
|
+
signed: false
|
|
239
|
+
});
|
|
240
|
+
case "int64":
|
|
241
|
+
return CjsBlackSchemaRegistry.compactBlackType("INT64", {
|
|
242
|
+
kind: "int64"
|
|
243
|
+
}, {
|
|
244
|
+
signed: true
|
|
245
|
+
});
|
|
246
|
+
case "uint64":
|
|
247
|
+
return CjsBlackSchemaRegistry.compactBlackType("UINT64", {
|
|
248
|
+
kind: "uint64"
|
|
249
|
+
}, {
|
|
250
|
+
signed: false
|
|
251
|
+
});
|
|
252
|
+
case "byte":
|
|
253
|
+
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
254
|
+
kind: "int8"
|
|
255
|
+
}, {
|
|
256
|
+
signed: true
|
|
257
|
+
});
|
|
258
|
+
case "ubyte":
|
|
259
|
+
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
260
|
+
kind: "uint8"
|
|
261
|
+
}, {
|
|
262
|
+
signed: false
|
|
263
|
+
});
|
|
264
|
+
case "short":
|
|
265
|
+
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
266
|
+
kind: "int16"
|
|
267
|
+
}, {
|
|
268
|
+
signed: true
|
|
269
|
+
});
|
|
270
|
+
case "ushort":
|
|
271
|
+
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
272
|
+
kind: "uint16"
|
|
273
|
+
}, {
|
|
274
|
+
signed: false
|
|
275
|
+
});
|
|
276
|
+
case "vector2":
|
|
277
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector2", 2);
|
|
278
|
+
case "vector3":
|
|
279
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector3", 3);
|
|
280
|
+
case "vector4":
|
|
281
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector4", 4);
|
|
282
|
+
case "color":
|
|
283
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("color", 4);
|
|
284
|
+
case "quaternion":
|
|
285
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("quaternion", 4);
|
|
286
|
+
case "matrix3":
|
|
287
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix3", 9);
|
|
288
|
+
case "matrix4":
|
|
289
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix4", 16);
|
|
290
|
+
case "floatArray":
|
|
291
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("array", spec.length || 0);
|
|
292
|
+
case "array":
|
|
293
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
294
|
+
kind: "array"
|
|
295
|
+
}, {
|
|
296
|
+
container: "list"
|
|
297
|
+
});
|
|
298
|
+
case "dict":
|
|
299
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
300
|
+
kind: "map"
|
|
301
|
+
}, {
|
|
302
|
+
container: "dict"
|
|
303
|
+
});
|
|
304
|
+
case "object":
|
|
305
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOTPTR", {
|
|
306
|
+
kind: "objectRef"
|
|
307
|
+
});
|
|
308
|
+
case "rawStruct":
|
|
309
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
310
|
+
kind: "rawStruct"
|
|
311
|
+
});
|
|
312
|
+
case "structList":
|
|
313
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
314
|
+
kind: "array"
|
|
315
|
+
}, {
|
|
316
|
+
container: "list",
|
|
317
|
+
cppType: spec.cppType || "StructureList"
|
|
318
|
+
});
|
|
319
|
+
case "binaryBlock":
|
|
320
|
+
return CjsBlackSchemaRegistry.compactBlackType("BINARYBLOCK", {
|
|
321
|
+
kind: "typedArray"
|
|
322
|
+
});
|
|
323
|
+
default:
|
|
324
|
+
return CjsBlackSchemaRegistry.compactBlackType(null, {
|
|
325
|
+
kind: normalized
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
static compactBlackType(beType, jsType, extra = {}) {
|
|
330
|
+
return {
|
|
331
|
+
jsType,
|
|
332
|
+
black: {
|
|
333
|
+
beType,
|
|
334
|
+
wireType: CjsBlackSchemaRegistry.compactWireType(beType, extra.container),
|
|
335
|
+
...extra
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
static compactFloatArrayType(kind, length) {
|
|
340
|
+
return CjsBlackSchemaRegistry.compactBlackType("FLOATARRAY", {
|
|
341
|
+
kind,
|
|
342
|
+
length
|
|
343
|
+
}, {
|
|
344
|
+
length
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
static compactWireType(beType, container = null) {
|
|
348
|
+
switch (beType) {
|
|
349
|
+
case "BOOL":
|
|
350
|
+
return "bool";
|
|
351
|
+
case "STDSTRING":
|
|
352
|
+
case "STDWSTRING":
|
|
353
|
+
return "stringRef";
|
|
354
|
+
case "FLOAT":
|
|
355
|
+
return "float32";
|
|
356
|
+
case "DOUBLE":
|
|
357
|
+
return "float64";
|
|
358
|
+
case "LONG":
|
|
359
|
+
return "int32";
|
|
360
|
+
case "ULONG":
|
|
361
|
+
return "uint32";
|
|
362
|
+
case "INT64":
|
|
363
|
+
return "int64";
|
|
364
|
+
case "UINT64":
|
|
365
|
+
return "uint64";
|
|
366
|
+
case "BYTE":
|
|
367
|
+
return "uint8";
|
|
368
|
+
case "SHORT":
|
|
369
|
+
return "uint16";
|
|
370
|
+
case "FLOATARRAY":
|
|
371
|
+
return "floatArray";
|
|
372
|
+
case "BINARYBLOCK":
|
|
373
|
+
return "binaryBlock";
|
|
374
|
+
case "IROOTPTR":
|
|
375
|
+
return "objectRef";
|
|
376
|
+
case "IROOT":
|
|
377
|
+
return container ? "container" : "inlineObject";
|
|
378
|
+
default:
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
static normalizeBlackField(field, sourceFields = []) {
|
|
383
|
+
const names = field.names || null;
|
|
384
|
+
const name = field.name || CjsBlackSchemaRegistry.getNameRole(names, "name") || field.nameExpression || null;
|
|
385
|
+
const fieldName = field.fieldName || CjsBlackSchemaRegistry.getNameRole(names, "fieldName") || name || null;
|
|
386
|
+
const cppName = field.cppName || CjsBlackSchemaRegistry.getNameRole(names, "cppName") || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || null;
|
|
387
|
+
const member = field.member || CjsBlackSchemaRegistry.getNameRole(names, "member") || cppName || name;
|
|
388
|
+
const memberPath = field.memberPath || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || cppName;
|
|
389
|
+
const memberRoot = field.memberRoot || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || memberPath;
|
|
390
|
+
const sourceField = sourceFields.find(item => item.name === fieldName || item.name === name || item.cppName === cppName || item.cppName === memberPath || item.cppName === memberRoot);
|
|
391
|
+
return {
|
|
392
|
+
...field,
|
|
393
|
+
names,
|
|
394
|
+
name,
|
|
395
|
+
fieldName,
|
|
396
|
+
storageName: field.storageName || fieldName || name,
|
|
397
|
+
cppName: cppName || sourceField?.cppName || null,
|
|
398
|
+
member,
|
|
399
|
+
memberPath,
|
|
400
|
+
memberRoot,
|
|
401
|
+
cppType: field.cppType || sourceField?.cppType || null,
|
|
402
|
+
beType: field.beType || null
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
static matchesBlackFieldName(field, blackName) {
|
|
406
|
+
if (!field || !blackName) return false;
|
|
407
|
+
if (field.name === blackName) return true;
|
|
408
|
+
if (field.fieldName === blackName) return true;
|
|
409
|
+
if (field.member === blackName) return true;
|
|
410
|
+
if (field.memberPath === blackName) return true;
|
|
411
|
+
if (field.memberRoot === blackName) return true;
|
|
412
|
+
if (field.cppName === blackName) return true;
|
|
413
|
+
if (field.nameExpression === blackName) return true;
|
|
414
|
+
if (field.names && typeof field.names === "object") {
|
|
415
|
+
return Object.hasOwn(field.names, blackName);
|
|
416
|
+
}
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
static getNameRole(names, role) {
|
|
420
|
+
if (!names || typeof names !== "object") return null;
|
|
421
|
+
for (const [name, roles] of Object.entries(names)) {
|
|
422
|
+
const roleList = Array.isArray(roles) ? roles : String(roles || "").split(/\s+/);
|
|
423
|
+
if (roleList.includes(role)) return name;
|
|
424
|
+
}
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
static toJsFieldName(value) {
|
|
428
|
+
return String(value || "").replace(/^m_/, "");
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
export { CjsBlackSchemaRegistry };
|
|
433
|
+
//# sourceMappingURL=CjsBlackSchemaRegistry.js.map
|