@forgeax/engine-gltf 0.1.21 → 0.1.24
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/README.md +115 -3
- package/dist/__tests__/lod-import.integration.test.d.ts +2 -0
- package/dist/__tests__/lod-import.integration.test.d.ts.map +1 -0
- package/dist/__tests__/lod-meta-publication.integration.test.d.ts +2 -0
- package/dist/__tests__/lod-meta-publication.integration.test.d.ts.map +1 -0
- package/dist/__tests__/physical-clearcoat.unit.test.d.ts +2 -0
- package/dist/__tests__/physical-clearcoat.unit.test.d.ts.map +1 -0
- package/dist/__tests__/physical-material-import.integration.test.d.ts +2 -0
- package/dist/__tests__/physical-material-import.integration.test.d.ts.map +1 -0
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/check-extensions.d.ts +1 -1
- package/dist/check-extensions.d.ts.map +1 -1
- package/dist/cli-gltf.mjs +362 -14
- package/dist/cli-gltf.mjs.map +1 -1
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/gltf-importer.d.ts.map +1 -1
- package/dist/image-color-space.d.ts +12 -0
- package/dist/image-color-space.d.ts.map +1 -1
- package/dist/importer-entry.mjs +516 -25
- package/dist/importer-entry.mjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +609 -28
- package/dist/index.mjs.map +1 -1
- package/dist/lod/parse-lod.d.ts +15 -0
- package/dist/lod/parse-lod.d.ts.map +1 -0
- package/dist/lod/project-meta.d.ts +23 -0
- package/dist/lod/project-meta.d.ts.map +1 -0
- package/dist/material/parse-material.d.ts +66 -0
- package/dist/material/parse-material.d.ts.map +1 -1
- package/dist/node-file-entry.mjs +265 -8
- package/dist/node-file-entry.mjs.map +1 -1
- package/dist/parse-gltf.d.ts +3 -1
- package/dist/parse-gltf.d.ts.map +1 -1
- package/dist/reimport-reuse-meta.d.ts +1 -1
- package/dist/reimport-reuse-meta.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/__tests__/bridge-material-values.unit.test.ts +84 -1
- package/src/__tests__/bridge-skin-stride.unit.test.ts +22 -0
- package/src/__tests__/fixtures/lod/core-only.gltf +1 -0
- package/src/__tests__/fixtures/lod/msft-lod-malformed.gltf +1 -0
- package/src/__tests__/fixtures/lod/msft-lod-multi-root.gltf +1 -0
- package/src/__tests__/fixtures/lod/msft-lod-node-extras.gltf +1 -0
- package/src/__tests__/fixtures/lod/msft-lod.gltf +1 -0
- package/src/__tests__/gltf-error-derived-views.test-d.ts +8 -0
- package/src/__tests__/gltf-error-migration.test.ts +3 -3
- package/src/__tests__/gltf.unit.test.ts +60 -5
- package/src/__tests__/lod-import.integration.test.ts +106 -0
- package/src/__tests__/lod-meta-publication.integration.test.ts +24 -0
- package/src/__tests__/material-pack-refs.integration.test.ts +53 -0
- package/src/__tests__/parse-gltf.unit.test.ts +50 -0
- package/src/__tests__/physical-clearcoat.unit.test.ts +110 -0
- package/src/__tests__/physical-material-import.integration.test.ts +239 -0
- package/src/__tests__/source-key-producer.integration.test.ts +6 -2
- package/src/bridge.ts +259 -14
- package/src/check-extensions.ts +16 -8
- package/src/errors.ts +32 -2
- package/src/gltf-importer.ts +122 -1
- package/src/image-color-space.ts +29 -4
- package/src/index.ts +10 -1
- package/src/lod/parse-lod.ts +129 -0
- package/src/lod/project-meta.ts +48 -0
- package/src/material/parse-material.ts +307 -0
- package/src/parse-gltf.ts +97 -1
- package/src/reimport-reuse-meta.ts +3 -1
- package/dist/.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -21,6 +21,36 @@ the render phase. The carrier validates the source, Pack, GUID load, and rendere
|
|
|
21
21
|
|
|
22
22
|
If a source requests a UV set that the primitive does not provide, handle `gltf-material-uv-set-missing` using its material, primitive, slot, requested set, and available sets. Add the source UV set and re-import; do not substitute a custom mesh or discard the slot transform.
|
|
23
23
|
|
|
24
|
+
### KHR physical material extensions
|
|
25
|
+
|
|
26
|
+
The importer accepts the five second-stage material extensions below in both
|
|
27
|
+
`extensionsUsed` and `extensionsRequired`. A required extension outside the
|
|
28
|
+
supported set fails closed with `gltf-extension-unsupported`; a supported
|
|
29
|
+
extension is projected into the same Standard `MaterialAsset` root rather than
|
|
30
|
+
an extension-specific runtime type.
|
|
31
|
+
|
|
32
|
+
| Extension | Standard values / slots | Channel and color-space rule | Admission / recovery |
|
|
33
|
+
|:--|:--|:--|:--|
|
|
34
|
+
| `KHR_materials_clearcoat` | `clearcoat`, `clearcoatRoughness`, `clearcoatTexture`, `clearcoatRoughnessTexture`, `clearcoatNormalTexture`, `clearcoatNormalScale` | weight R, roughness G, coat normal RG; data textures are linear | coat normal uses the mesh tangent producer |
|
|
35
|
+
| `KHR_materials_anisotropy` | `anisotropyStrength`, `anisotropyRotation`, `anisotropyTexture` | direction RG, strength B; linear data | scalar and mapped forms both require a tangent frame |
|
|
36
|
+
| `KHR_materials_sheen` | `sheenColor`, `sheenRoughness`, `sheenColorTexture`, `sheenRoughnessTexture` | color RGB is sRGB; roughness A is linear | preserve each slot's UV transform; repair `gltf-material-uv-set-missing` on conflict |
|
|
37
|
+
| `KHR_materials_iridescence` | `iridescence`, `iridescenceIor`, `iridescenceThicknessMinimum/Maximum`, `iridescenceTexture`, `iridescenceThicknessTexture` | strength R and thickness G; both maps are linear | minimum greater than maximum is accepted per glTF semantics |
|
|
38
|
+
| `KHR_materials_specular` | `specular`, `specularTexture`, `specularColor`, `specularColorTexture` | weight A is linear; color RGB is sRGB | texture declarations select the physical Forward contract |
|
|
39
|
+
|
|
40
|
+
All five paths preserve `textureInfo.texCoord` and
|
|
41
|
+
`KHR_texture_transform` into `MaterialTextureValue.coordinates`. A material
|
|
42
|
+
with any of these declarations owns an extended Standard root, so its scalar
|
|
43
|
+
defaults and only its authored physical texture bindings participate in cook,
|
|
44
|
+
reflection, Pack refs, Catalog/load, and runtime sampling.
|
|
45
|
+
|
|
46
|
+
> [!IMPORTANT]
|
|
47
|
+
> `KHR_materials_anisotropy` always needs a finite tangent frame, even when
|
|
48
|
+
> only `anisotropyStrength` or `anisotropyRotation` is authored. If `TANGENT`
|
|
49
|
+
> is absent, the producer may generate it from `NORMAL + TEXCOORD_n + triangle
|
|
50
|
+
> topology`; if those inputs are missing or degenerate, import returns the
|
|
51
|
+
> structured `material-tangent-required` error. The importer persists generated
|
|
52
|
+
> tangents in `MeshAsset.attributes.tangent` and never writes an identity guess.
|
|
53
|
+
|
|
24
54
|
> Runtime glTF 2.0 importer (Tier-C subset). Pure-function pipeline `parseGlb` / `parseGltf` / `toAssetPack` consumed by build-time CLI plugin bin `forgeax-engine-remote-gltf` (resolved via PATH-prefix scan for `forgeax-engine-remote-`) writing `<source>.meta.json` (external-asset-package; dispatch on top-level `importer: 'gltf'`); runtime spawn happens via the existing `loadByGuid<SceneAsset>` plus `world.instantiateScene` 4-step recipe (no `loadGltf(url)` parallel API).
|
|
25
55
|
|
|
26
56
|
> [!IMPORTANT]
|
|
@@ -39,7 +69,7 @@ This package consumes:
|
|
|
39
69
|
- `scenes` + `nodes` (TRS or matrix decomposed via `mat4.decompose` wrapper)
|
|
40
70
|
- `meshes` with **multiple primitives** -- each primitive produces an independent `MeshIr` with UUIDv7 GUID; `SceneAsset` nodes reference individual primitive-level mesh sub-assets
|
|
41
71
|
- Vertex attributes: `POSITION` (VEC3, mandatory), `NORMAL` (VEC3), `TEXCOORD_0` (VEC2), `TANGENT` (VEC4, optional), and `COLOR_0` (see the support matrix below) -- decoded via the accessor SoA path; `INDICES` (U8/U16/U32 scalar — U8 widens to U16; U32 preserved, narrowed to U16 by bridge when maxIndex < 65536)
|
|
42
|
-
- `materials` with metallic-roughness
|
|
72
|
+
- `materials` with metallic-roughness and five KHR physical extensions mapped to pass-based `MaterialAsset` (see MaterialIr table below)
|
|
43
73
|
- `textures` / `images` / `samplers` top-level arrays parsed into `GltfDoc` IR; texture index -> image index -> URI two-hop resolution via `externalLoader`
|
|
44
74
|
- `cameras` of `type: 'perspective'`
|
|
45
75
|
|
|
@@ -102,6 +132,21 @@ The complete closed error/detail union remains owned by
|
|
|
102
132
|
| `metallicRoughnessTexture` | `number` (texture index) | no | Same two-hop resolution |
|
|
103
133
|
| `normalTexture` | `number` (texture index) | no | Same two-hop resolution; TANGENT optional decode |
|
|
104
134
|
|
|
135
|
+
The physical extension fields are projected into the same IR object:
|
|
136
|
+
|
|
137
|
+
| Extension | Scalar fields | Texture fields |
|
|
138
|
+
|:--|:--|:--|
|
|
139
|
+
| `KHR_materials_clearcoat` | `clearcoatFactor`, `clearcoatRoughnessFactor` | `clearcoatTexture`, `clearcoatRoughnessTexture`, `clearcoatNormalTexture` |
|
|
140
|
+
| `KHR_materials_anisotropy` | `anisotropyStrength`, `anisotropyRotation` | `anisotropyTexture` |
|
|
141
|
+
| `KHR_materials_sheen` | `sheenColorFactor`, `sheenRoughnessFactor` | `sheenColorTexture`, `sheenRoughnessTexture` |
|
|
142
|
+
| `KHR_materials_iridescence` | `iridescenceFactor`, `iridescenceIor`, `iridescenceThicknessMinimum/Maximum` | `iridescenceTexture`, `iridescenceThicknessTexture` |
|
|
143
|
+
| `KHR_materials_specular` | `specularFactor`, `specularColorFactor` | `specularTexture`, `specularColorTexture` |
|
|
144
|
+
|
|
145
|
+
Each texture field is a `GltfTextureInfoIr | number` with an explicit texture
|
|
146
|
+
index and optional UV/transform facts. The bridge creates a complete extended
|
|
147
|
+
root for the declarations it sees; base-only materials may still inherit the
|
|
148
|
+
configured `standardMaterialGuid`.
|
|
149
|
+
|
|
105
150
|
### GltfDoc IR (textures / images / samplers)
|
|
106
151
|
|
|
107
152
|
| Array | Element | Notes |
|
|
@@ -119,7 +164,7 @@ only its slot index. Canonical `SceneAsset` nodes carry `MeshFilter` plus an
|
|
|
119
164
|
empty `MeshRenderer.materials` override vector, so imported defaults remain
|
|
120
165
|
mesh-owned and reimport-safe.
|
|
121
166
|
|
|
122
|
-
Out of scope (each routed to its own `feat-future-*` anchor in `requirements.md` OOS-1 .. OOS-15): KHR extensions other than the supported
|
|
167
|
+
Out of scope (each routed to its own `feat-future-*` anchor in `requirements.md` OOS-1 .. OOS-15): KHR material extensions other than the supported transmission/IOR/volume, clearcoat, anisotropy, sheen, iridescence, and specular paths / morph targets other than the explicit `COLOR_0` deferred signal / orthographic camera / sparse accessors / inspector future fields / pixel-parity vs three.js. Dense interleaved `COLOR_0` is supported; other interleaved accessor consumers retain their existing scope. v1.1 OOS additions (locked by feat-20260518-gltf-instancing-and-name-component): multi-primitive instancing / mesh-level + material-level + scene-level Name (only node.name lands as ECS `Name`) / instancing hard cap / SoA TRS direct-to-GPU pipe / IR-to-GPU direct path / ROTATION BYTE/SHORT normalized encoding / Babylon thin-instances style SoA channel / Bevy multi-tier Name propagation.
|
|
123
168
|
|
|
124
169
|
## Importer sub-asset PODs (7 kinds)
|
|
125
170
|
|
|
@@ -150,7 +195,7 @@ Sample reference: `apps/hello/skin` -- 3 Khronos Fox foxes side-by-side, each ru
|
|
|
150
195
|
| `gltf-malformed-header` | GLB magic / version / length header rejection or missing JSON chunk |
|
|
151
196
|
| `gltf-version-unsupported` | `asset.version` is not `'2.0'` |
|
|
152
197
|
| `gltf-buffer-out-of-bounds` | accessor reads past `bufferView.byteLength` |
|
|
153
|
-
| `gltf-extension-unsupported` | `extensionsRequired[]` lists an extension outside the supported allowlist (`EXT_mesh_gpu_instancing`, `KHR_texture_transform
|
|
198
|
+
| `gltf-extension-unsupported` | `extensionsRequired[]` lists an extension outside the supported allowlist exported as `EXTENSION_ALLOWLIST` (`EXT_mesh_gpu_instancing`, `EXT_meshopt_compression`, `KHR_lights_punctual`, `KHR_texture_transform`, transmission/IOR/volume, clearcoat, anisotropy, sheen, iridescence, specular) |
|
|
154
199
|
| `gltf-accessor-type-mismatch` | sparse / morph / interleaved / unknown componentType accessor (4 reasons) |
|
|
155
200
|
| `gltf-texture-load-failed` | `externalLoader` rejected for a texture `uri`; `detail.uri` carries the failing URI; hint: `'check sidecar meta.json + textures/ directory + vite-plugin-pack /__pack/lookup'` |
|
|
156
201
|
| `gltf-meta-missing` | sidecar `<source>.meta.json` is absent next to the `.gltf` / `.glb` source file |
|
|
@@ -162,6 +207,14 @@ Sample reference: `apps/hello/skin` -- 3 Khronos Fox foxes side-by-side, each ru
|
|
|
162
207
|
| `gltf-morph-unsupported` | animation channel targets morph weights (`path==='weights'`, OOS-skin-morph-anim) |
|
|
163
208
|
| `gltf-color-accessor-unsupported` | `COLOR_0` type/component/normalized combination, sparse input, or morph-target input is deferred |
|
|
164
209
|
| `gltf-color-accessor-malformed` | `COLOR_0` count, finite/range, buffer bounds, or reference validation failed |
|
|
210
|
+
| `gltf-material-physical-invalid` | a clearcoat/anisotropy/sheen/iridescence/specular scalar or color violates its finite glTF range |
|
|
211
|
+
|
|
212
|
+
Mesh tangent admission is a material error because the geometry producer owns
|
|
213
|
+
the repairable frame. Branch on `material-tangent-required` and read its
|
|
214
|
+
`detail.material`, `detail.mesh`, `detail.layer`, `detail.uv`,
|
|
215
|
+
`detail.attributes`, and `detail.reason`; fix the source attributes and rerun
|
|
216
|
+
the same importer. Do not parse the human-facing message or silently continue
|
|
217
|
+
with an identity tangent.
|
|
165
218
|
|
|
166
219
|
Source-key conflicts are producer failures, not automatic renames. A
|
|
167
220
|
`duplicate-source-key` or `ambiguous-source-key` detail includes the semantic
|
|
@@ -210,4 +263,63 @@ forgeax-engine-remote-gltf import apps/hello/gltf/assets/box.glb
|
|
|
210
263
|
forgeax-engine-remote-gltf import apps/hello/gltf/assets/ --check
|
|
211
264
|
```
|
|
212
265
|
|
|
266
|
+
### End-to-end source-to-Pack route
|
|
267
|
+
|
|
268
|
+
The CLI creates the authoring sidecar; the shared import runner is the single
|
|
269
|
+
Pack/DDC publication path. Keep these steps together when adding a glTF LOD:
|
|
270
|
+
|
|
271
|
+
```mermaid
|
|
272
|
+
flowchart LR
|
|
273
|
+
source["source .gltf/.glb"] --> cli["remote-gltf import"]
|
|
274
|
+
cli --> meta["source.meta.json"]
|
|
275
|
+
meta --> registry["ImporterRegistry + gltfImporter"]
|
|
276
|
+
registry --> runner["runImport"]
|
|
277
|
+
runner --> pack["Pack/DDC + Catalog"]
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
1. Run `forgeax-engine-remote-gltf import <source>` to create or refresh the
|
|
281
|
+
adjacent `<source>.meta.json` and its stable sub-asset GUIDs.
|
|
282
|
+
2. Register `gltfImporter` with the build-time `ImporterRegistry` and pass the
|
|
283
|
+
sidecar to `runImport`; this validates the declared LOD GUID closure and
|
|
284
|
+
writes the Pack/DDC output.
|
|
285
|
+
3. Verify the resulting Catalog/receipt and load the root GUID at runtime. The
|
|
286
|
+
complete `ImporterRegistry`/`runImport` example, including the filesystem
|
|
287
|
+
adapter, lives in [`@forgeax/engine-import`](../import/README.md#the-importload-split).
|
|
288
|
+
|
|
213
289
|
See `.forgeax-harness/forgeax-loop/feat-20260515-gltf-loader-via-asset-system/plan-strategy.md` for the full roadmap.
|
|
290
|
+
|
|
291
|
+
## LOD extensions
|
|
292
|
+
|
|
293
|
+
The glTF adapter admits `MSFT_lod` at node level. The extension's `ids` array
|
|
294
|
+
is preserved in producer order; each referenced root or lower node must resolve
|
|
295
|
+
to a non-empty mesh sub-asset. Material, name, and guessed suffix conventions
|
|
296
|
+
do not create LOD relations.
|
|
297
|
+
|
|
298
|
+
The portable Khronos form stores coverage on the root LOD node:
|
|
299
|
+
|
|
300
|
+
```json
|
|
301
|
+
{
|
|
302
|
+
"extensions": { "MSFT_lod": { "ids": [1, 2] } },
|
|
303
|
+
"extras": { "MSFT_screencoverage": [0.5, 0.2, 0.01] }
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
The array describes the root and lower ranges and includes a terminal discard
|
|
308
|
+
threshold. The adapter keeps `[0.5, 0.2]` as the two lower-level absolute
|
|
309
|
+
`MeshAsset.lods[].screenCoverage` values and drops only that terminal discard
|
|
310
|
+
entry, which has no `MeshAsset` representation. The historical document-level
|
|
311
|
+
`extensions.MSFT_screencoverage.scales` form remains an internal fixture
|
|
312
|
+
adapter; node `extras` takes precedence when both forms are present.
|
|
313
|
+
|
|
314
|
+
| Source fact | Projection | Recovery |
|
|
315
|
+
|:--|:--|:--|
|
|
316
|
+
| `MSFT_lod.ids` | root MeshAsset `lods[]` and `refs[]` | repair node references and reimport |
|
|
317
|
+
| root `extras.MSFT_screencoverage` | absolute coverage values (terminal discard omitted) | repair values and reimport |
|
|
318
|
+
| legacy document `MSFT_screencoverage.scales` | explicit fixture coverage values | migrate to node `extras`, then recook |
|
|
319
|
+
| no coverage extension | shared importer defaults | keep existing sidecar values, then recook |
|
|
320
|
+
|
|
321
|
+
On malformed extension data, a required-but-missing `MSFT_lod` group, an empty
|
|
322
|
+
referenced mesh, or an unresolved mesh sub-asset, the importer returns
|
|
323
|
+
`gltf-lod-invalid` before publication. The old sidecar and Catalog LKG are the
|
|
324
|
+
recovery boundary; no relation is silently dropped by `flatMap` or a partial
|
|
325
|
+
Pack is published.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lod-import.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/lod-import.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lod-meta-publication.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/lod-meta-publication.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-clearcoat.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/physical-clearcoat.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-material-import.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/physical-material-import.integration.test.ts"],"names":[],"mappings":""}
|
package/dist/bridge.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ export interface MaterialBridgeContext {
|
|
|
98
98
|
readonly skinned?: boolean;
|
|
99
99
|
}
|
|
100
100
|
export declare function validateMaterialUvSets(mat: GltfMaterialIr, primitive: string, availableSets: readonly number[]): Result<void, MaterialError>;
|
|
101
|
+
export declare function validateMaterialTangentInputs(mat: GltfMaterialIr, mesh: GltfMeshIr, layer?: string): Result<void, MaterialError>;
|
|
101
102
|
/** Convert a parsed GltfMaterialIr into a standard-root derived MaterialAsset. */
|
|
102
103
|
export declare function toMaterialAsset(mat: GltfMaterialIr, ctx?: MaterialBridgeContext): MaterialAsset;
|
|
103
104
|
//# sourceMappingURL=bridge.d.ts.map
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EAEN,aAAa,EACb,aAAa,EAEb,SAAS,EAIT,MAAM,EACN,UAAU,EAIX,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EAEN,aAAa,EACb,aAAa,EAEb,SAAS,EAIT,MAAM,EACN,UAAU,EAIX,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAA4B,KAAK,SAAS,EAAe,MAAM,aAAa,CAAC;AACpF,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,UAAU,EACV,UAAU,EAGX,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,SAAS,GAAE;IACT,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpD,GACL,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CA0V9B;AAED,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzE,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjF;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChE;AA+DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA8NpF;AAED,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACtC;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAuKD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAsC7B;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,UAAU,EAChB,KAAK,SAAc,GAClB,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAoD7B;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,qBAAqB,GAAG,aAAa,CA2H/F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type GltfError, type Result } from './errors.js';
|
|
2
|
-
/**
|
|
2
|
+
/** Public supported extension list used by the required/used declaration gate. */
|
|
3
3
|
export declare const EXTENSION_ALLOWLIST: readonly string[];
|
|
4
4
|
export interface ExtensionsCheckResult {
|
|
5
5
|
/** Names listed in extensionsUsed but not in the supported extension set. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-extensions.d.ts","sourceRoot":"","sources":["../src/check-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check-extensions.d.ts","sourceRoot":"","sources":["../src/check-extensions.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAO,KAAK,SAAS,EAAe,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5E,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAahD,CAAC;AAOF,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,GACvB,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAsB1C"}
|