@loaders.gl/scene 5.0.0-alpha.1 → 5.0.0-alpha.2

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 CHANGED
@@ -24,8 +24,20 @@ THE SOFTWARE.
24
24
 
25
25
  Copyright (c) 2015 Uber Technologies, Inc.
26
26
 
27
- loaders.gl includes certain files from Cesium (https://github.com/AnalyticalGraphicsInc/cesium)
28
- under the Apache 2 License (found in the submodule: modules/3d-tiles):)
27
+ Portions of modules/images/src/lib/category-api/binary-image-api.ts are based on
28
+ binary-gltf-utils (https://github.com/Qantas94Heavy/binary-gltf-utils) under the
29
+ MIT License reproduced above.
30
+
31
+ Copyright (c) 2016-17 Karl Cheng
32
+
33
+ Portions of modules/schema-utils/src/lib/utils/async-queue.ts are adapted from
34
+ async-iter-demo (https://github.com/rauschma/async-iter-demo) under the MIT
35
+ License reproduced above.
36
+
37
+ Copyright (c) 2016 Axel Rauschmayer
38
+
39
+ loaders.gl includes certain files from Cesium (https://github.com/CesiumGS/cesium)
40
+ under the Apache 2.0 License, including files in modules/3d-tiles and modules/math.
29
41
 
30
42
  Copyright 2011-2018 CesiumJS Contributors
31
43
 
@@ -38,4 +50,3 @@ Unless required by applicable law or agreed to in writing, software
38
50
  distributed under the License is distributed on an "AS IS" BASIS,
39
51
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40
52
  See the License for the specific language governing permissions and limitations under the License.
41
-
package/dist/dist.dev.js CHANGED
@@ -12,11 +12,20 @@ var __exports__ = (() => {
12
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
13
13
  var __getProtoOf = Object.getPrototypeOf;
14
14
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __esm = (fn, res) => function __init() {
16
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ var __esm = (fn, res, err) => function __init() {
16
+ if (err) throw err[0];
17
+ try {
18
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
19
+ } catch (e) {
20
+ throw err = [e], e;
21
+ }
17
22
  };
18
23
  var __commonJS = (cb, mod) => function __require() {
19
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
24
+ try {
25
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
26
+ } catch (e) {
27
+ throw mod = 0, e;
28
+ }
20
29
  };
21
30
  var __export = (target, all) => {
22
31
  for (var name in all)
package/dist/dist.min.js CHANGED
@@ -4,11 +4,11 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var q=Object.create;var y=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var k=(t,e)=>()=>(t&&(e=t(t=0)),e);var J=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),O=(t,e)=>{for(var s in e)y(t,s,{get:e[s],enumerable:!0})},w=(t,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of G(e))!K.call(t,r)&&r!==s&&y(t,r,{get:()=>e[r],enumerable:!(n=B(e,r))||n.enumerable});return t},S=(t,e,s)=>(w(t,e,"default"),s&&w(s,e,"default")),ee=(t,e,s)=>(s=t!=null?q(X(t)):{},w(e||!t||!t.__esModule?y(s,"default",{value:t,enumerable:!0}):s,t)),te=t=>w(y({},"__esModule",{value:!0}),t);var C=J((we,I)=>{I.exports=globalThis.loaders});function _(t,e){if(!t.trimStart().startsWith("#usda"))throw new Error("OpenUSD ASCII layers must begin with the #usda header.");return new E(t,e).parse()}var se,re,E,b,N=k(()=>{"use strict";se=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/,re=new Set(["uniform","varying","custom","prepend","append","add","delete","reorder"]);E=class{tokenizer;url;constructor(e,s){this.tokenizer=new b(e),this.url=s}parse(){let e=this.tokenizer.match("(")?this.parseMetadata(")"):{},s=[];for(;!this.tokenizer.isAtEnd();)this.isPrimDeclaration()?s.push(this.parsePrim("")):this.tokenizer.read();return{format:"usda",url:this.url,metadata:e,rootPrims:s,layers:this.url?[this.url]:[]}}parsePrim(e){let n=this.tokenizer.read().value,r=this.tokenizer.read(),i=this.tokenizer.peek().kind==="string",a=i?r.value:"",c=i?this.tokenizer.read().value:r.value,f=`${e}/${c}`,h=this.tokenizer.match("(")?this.parseMetadata(")"):{};this.tokenizer.expect("{");let o=this.parsePrimContents(f);return{name:c,path:f,sourceUrl:this.url,type:a,specifier:n,attributes:o.attributes,metadata:{...h,...o.metadata},variants:o.variants,children:o.children}}parsePrimContents(e){let s={},n={},r=[],i={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match("}");)if(this.isPrimDeclaration())r.push(this.parsePrim(e));else if(this.tokenizer.peek().value==="variantSet")this.parseVariantSet(e,i);else{let a=this.parseAttribute();a&&(s[a.name]=a)}return{attributes:s,metadata:n,children:r,variants:i}}parseVariantSet(e,s){this.tokenizer.expect("variantSet");let n=this.tokenizer.read().value;this.tokenizer.expect("="),this.tokenizer.expect("{");let r={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match("}");){let i=this.tokenizer.read().value;this.tokenizer.expect("{");let a=this.parsePrimContents(e);r[i]={attributes:a.attributes,metadata:a.metadata,children:a.children}}s[n]=r}parseAttribute(){let e=this.tokenizer.read();if(e.kind==="end")return null;let s=[e];for(;!this.tokenizer.isAtEnd()&&this.tokenizer.peek().line===e.line;){let h=this.tokenizer.peek();if(h.value==="="){this.tokenizer.read();break}if(h.value==="{"||h.value==="}")return null;s.push(this.tokenizer.read())}if(!(this.tokenizer.previousValue==="="))return null;let r=s.filter(h=>!re.has(h.value));if(r.length===0)return null;let i=r[r.length-1].value,a=r.slice(0,-1).map(h=>h.value).join(""),c=this.parseValue(),f=this.tokenizer.match("(")?this.parseMetadata(")"):{};return{name:i,type:a,value:c,metadata:f}}parseMetadata(e){let s={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match(e);){if(this.tokenizer.match(","),this.tokenizer.peek().value===e){this.tokenizer.read();break}let n=this.tokenizer.read(),r=[n];for(;!this.tokenizer.isAtEnd()&&this.tokenizer.peek().line===n.line;){if(this.tokenizer.peek().value==="="||this.tokenizer.peek().value===":"){this.tokenizer.read();break}if(this.tokenizer.peek().value===e)break;r.push(this.tokenizer.read())}if(this.tokenizer.previousValue!=="="&&this.tokenizer.previousValue!==":")continue;let i=r[r.length-1].value;s[i]=this.parseValue(),this.tokenizer.match(",")}return s}parseValue(){let e=this.tokenizer.read();if(e.value==="[")return this.parseList("]");if(e.value==="(")return this.parseList(")");if(e.value==="{")return this.parseMetadata("}");if(e.kind==="asset"){let s={assetPath:e.value};return this.tokenizer.peek().kind==="path"&&this.tokenizer.peek().line===e.line&&(s.primPath=this.tokenizer.read().value),s}return e.kind==="path"?{path:e.value}:e.kind==="number"?Number(e.value):e.value==="true"?!0:e.value==="false"?!1:e.value==="None"||e.value==="null"?null:e.value}parseList(e){let s=[];for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match(e);)this.tokenizer.match(",")||(s.push(this.parseValue()),this.tokenizer.match(","));return s}isPrimDeclaration(){let e=this.tokenizer.peek().value;return e==="def"||e==="over"||e==="class"}},b=class{source;offset=0;line=1;bufferedToken=null;previousValue="";constructor(e){this.source=e}peek(){return this.bufferedToken||=this.readToken(),this.bufferedToken}read(){let e=this.peek();return this.bufferedToken=null,this.previousValue=e.value,e}match(e){return this.peek().value!==e?!1:(this.read(),!0)}expect(e){let s=this.read();if(s.value!==e)throw new Error(`Expected "${e}" at USDA line ${s.line}, received "${s.value}".`)}isAtEnd(){return this.peek().kind==="end"}readToken(){this.skipIgnoredText();let e=this.line,s=this.source[this.offset];if(s===void 0)return{value:"",line:e,kind:"end"};if("{}[](),=".includes(s))return this.offset++,{value:s,line:e,kind:"punctuation"};if(s==='"'||s==="'")return{value:this.readQuotedString(s),line:e,kind:"string"};if(s==="@")return{value:this.readDelimitedValue("@"),line:e,kind:"asset"};if(s==="<")return{value:this.readDelimitedValue(">"),line:e,kind:"path"};let n=this.source.slice(this.offset).match(se);if(n)return this.offset+=n[0].length,{value:n[0],line:e,kind:"number"};let r=this.offset;for(;this.offset<this.source.length;){let i=this.source[this.offset];if(/\s/.test(i)||"{}[](),=@<>".includes(i))break;this.offset++}return this.offset===r&&this.offset++,{value:this.source.slice(r,this.offset),line:e,kind:"word"}}skipIgnoredText(){for(;this.offset<this.source.length;){let e=this.source[this.offset];if(e===`
7
+ "use strict";var __exports__=(()=>{var q=Object.create;var y=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var k=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(n){throw t=[n],n}};var J=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},O=(s,e)=>{for(var t in e)y(s,t,{get:e[t],enumerable:!0})},w=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of G(e))!K.call(s,r)&&r!==t&&y(s,r,{get:()=>e[r],enumerable:!(n=B(e,r))||n.enumerable});return s},S=(s,e,t)=>(w(s,e,"default"),t&&w(t,e,"default")),ee=(s,e,t)=>(t=s!=null?q(X(s)):{},w(e||!s||!s.__esModule?y(t,"default",{value:s,enumerable:!0}):t,s)),te=s=>w(y({},"__esModule",{value:!0}),s);var C=J((we,I)=>{I.exports=globalThis.loaders});function _(s,e){if(!s.trimStart().startsWith("#usda"))throw new Error("OpenUSD ASCII layers must begin with the #usda header.");return new E(s,e).parse()}var se,re,E,b,N=k(()=>{"use strict";se=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/,re=new Set(["uniform","varying","custom","prepend","append","add","delete","reorder"]);E=class{tokenizer;url;constructor(e,t){this.tokenizer=new b(e),this.url=t}parse(){let e=this.tokenizer.match("(")?this.parseMetadata(")"):{},t=[];for(;!this.tokenizer.isAtEnd();)this.isPrimDeclaration()?t.push(this.parsePrim("")):this.tokenizer.read();return{format:"usda",url:this.url,metadata:e,rootPrims:t,layers:this.url?[this.url]:[]}}parsePrim(e){let n=this.tokenizer.read().value,r=this.tokenizer.read(),i=this.tokenizer.peek().kind==="string",a=i?r.value:"",c=i?this.tokenizer.read().value:r.value,f=`${e}/${c}`,h=this.tokenizer.match("(")?this.parseMetadata(")"):{};this.tokenizer.expect("{");let o=this.parsePrimContents(f);return{name:c,path:f,sourceUrl:this.url,type:a,specifier:n,attributes:o.attributes,metadata:{...h,...o.metadata},variants:o.variants,children:o.children}}parsePrimContents(e){let t={},n={},r=[],i={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match("}");)if(this.isPrimDeclaration())r.push(this.parsePrim(e));else if(this.tokenizer.peek().value==="variantSet")this.parseVariantSet(e,i);else{let a=this.parseAttribute();a&&(t[a.name]=a)}return{attributes:t,metadata:n,children:r,variants:i}}parseVariantSet(e,t){this.tokenizer.expect("variantSet");let n=this.tokenizer.read().value;this.tokenizer.expect("="),this.tokenizer.expect("{");let r={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match("}");){let i=this.tokenizer.read().value;this.tokenizer.expect("{");let a=this.parsePrimContents(e);r[i]={attributes:a.attributes,metadata:a.metadata,children:a.children}}t[n]=r}parseAttribute(){let e=this.tokenizer.read();if(e.kind==="end")return null;let t=[e];for(;!this.tokenizer.isAtEnd()&&this.tokenizer.peek().line===e.line;){let h=this.tokenizer.peek();if(h.value==="="){this.tokenizer.read();break}if(h.value==="{"||h.value==="}")return null;t.push(this.tokenizer.read())}if(!(this.tokenizer.previousValue==="="))return null;let r=t.filter(h=>!re.has(h.value));if(r.length===0)return null;let i=r[r.length-1].value,a=r.slice(0,-1).map(h=>h.value).join(""),c=this.parseValue(),f=this.tokenizer.match("(")?this.parseMetadata(")"):{};return{name:i,type:a,value:c,metadata:f}}parseMetadata(e){let t={};for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match(e);){if(this.tokenizer.match(","),this.tokenizer.peek().value===e){this.tokenizer.read();break}let n=this.tokenizer.read(),r=[n];for(;!this.tokenizer.isAtEnd()&&this.tokenizer.peek().line===n.line;){if(this.tokenizer.peek().value==="="||this.tokenizer.peek().value===":"){this.tokenizer.read();break}if(this.tokenizer.peek().value===e)break;r.push(this.tokenizer.read())}if(this.tokenizer.previousValue!=="="&&this.tokenizer.previousValue!==":")continue;let i=r[r.length-1].value;t[i]=this.parseValue(),this.tokenizer.match(",")}return t}parseValue(){let e=this.tokenizer.read();if(e.value==="[")return this.parseList("]");if(e.value==="(")return this.parseList(")");if(e.value==="{")return this.parseMetadata("}");if(e.kind==="asset"){let t={assetPath:e.value};return this.tokenizer.peek().kind==="path"&&this.tokenizer.peek().line===e.line&&(t.primPath=this.tokenizer.read().value),t}return e.kind==="path"?{path:e.value}:e.kind==="number"?Number(e.value):e.value==="true"?!0:e.value==="false"?!1:e.value==="None"||e.value==="null"?null:e.value}parseList(e){let t=[];for(;!this.tokenizer.isAtEnd()&&!this.tokenizer.match(e);)this.tokenizer.match(",")||(t.push(this.parseValue()),this.tokenizer.match(","));return t}isPrimDeclaration(){let e=this.tokenizer.peek().value;return e==="def"||e==="over"||e==="class"}},b=class{source;offset=0;line=1;bufferedToken=null;previousValue="";constructor(e){this.source=e}peek(){return this.bufferedToken||=this.readToken(),this.bufferedToken}read(){let e=this.peek();return this.bufferedToken=null,this.previousValue=e.value,e}match(e){return this.peek().value!==e?!1:(this.read(),!0)}expect(e){let t=this.read();if(t.value!==e)throw new Error(`Expected "${e}" at USDA line ${t.line}, received "${t.value}".`)}isAtEnd(){return this.peek().kind==="end"}readToken(){this.skipIgnoredText();let e=this.line,t=this.source[this.offset];if(t===void 0)return{value:"",line:e,kind:"end"};if("{}[](),=".includes(t))return this.offset++,{value:t,line:e,kind:"punctuation"};if(t==='"'||t==="'")return{value:this.readQuotedString(t),line:e,kind:"string"};if(t==="@")return{value:this.readDelimitedValue("@"),line:e,kind:"asset"};if(t==="<")return{value:this.readDelimitedValue(">"),line:e,kind:"path"};let n=this.source.slice(this.offset).match(se);if(n)return this.offset+=n[0].length,{value:n[0],line:e,kind:"number"};let r=this.offset;for(;this.offset<this.source.length;){let i=this.source[this.offset];if(/\s/.test(i)||"{}[](),=@<>".includes(i))break;this.offset++}return this.offset===r&&this.offset++,{value:this.source.slice(r,this.offset),line:e,kind:"word"}}skipIgnoredText(){for(;this.offset<this.source.length;){let e=this.source[this.offset];if(e===`
8
8
  `)this.line++,this.offset++;else if(/\s/.test(e))this.offset++;else if(e==="#")for(;this.offset<this.source.length&&this.source[this.offset]!==`
9
9
  `;)this.offset++;else if(e==="/"&&this.source[this.offset+1]==="*"){for(this.offset+=2;this.offset<this.source.length&&!this.source.startsWith("*/",this.offset);)this.source[this.offset]===`
10
10
  `&&this.line++,this.offset++;this.offset+=2}else if(this.source.startsWith('"""',this.offset)){for(this.offset+=3;this.offset<this.source.length&&!this.source.startsWith('"""',this.offset);)this.source[this.offset]===`
11
- `&&this.line++,this.offset++;this.offset+=3}else break}}readQuotedString(e){this.offset++;let s="";for(;this.offset<this.source.length;){let n=this.source[this.offset++];if(n===e)break;if(n==="\\"&&this.offset<this.source.length){let r=this.source[this.offset++];s+=r==="n"?`
12
- `:r}else s+=n}return s}readDelimitedValue(e){this.offset++;let s=this.offset;for(;this.offset<this.source.length&&this.source[this.offset]!==e;)this.offset++;let n=this.source.slice(s,this.offset);return this.offset++,n}}});function V(t){let e=new DataView(t),s=ne(e),n=e.getUint16(s+10,!0),r=e.getUint32(s+16,!0),i=new Map,a=new TextDecoder;for(let c=0;c<n;c++){if(e.getUint32(r,!0)!==33639248)throw new Error("USDZ archive contains an invalid ZIP central-directory entry.");let f=e.getUint16(r+10,!0),h=e.getUint32(r+20,!0),o=e.getUint16(r+28,!0),p=e.getUint16(r+30,!0),m=e.getUint16(r+32,!0),u=e.getUint32(r+42,!0),d=a.decode(new Uint8Array(t,r+46,o));if(f!==0)throw new Error(`USDZ entry "${d}" is compressed; USDZ requires stored ZIP entries.`);if(e.getUint32(u,!0)!==67324752)throw new Error(`USDZ entry "${d}" has an invalid local ZIP header.`);let l=e.getUint16(u+26,!0),D=e.getUint16(u+28,!0),g=u+30+l+D;i.set(d,t.slice(g,g+h)),r+=46+o+p+m}return i}function ne(t){let e=Math.max(0,t.byteLength-65557);for(let s=t.byteLength-22;s>=e;s--)if(t.getUint32(s,!0)===101010256)return s;throw new Error("USDZ archive does not contain a ZIP end-of-central-directory record.")}var $=k(()=>{"use strict"});async function R(t,e={},s){let n=oe(e.core?.baseUrl,s?.url),r={fetch:async a=>{let c=await(s?.fetch||fetch)(a);if(!(c instanceof Response))throw new Error(`OpenUSD reference "${a}" did not return an HTTP response.`);if(!c.ok)throw new Error(`Unable to load OpenUSD reference "${a}": ${c.status}.`);return c},cache:new Map,archiveFiles:new Map,layers:new Set,options:{...e,usd:{...he,...e.usd}}},i;if(de(t)){let a=V(t),c=Array.from(a.keys()).find(o=>/\.usda?$/i.test(o));if(!c)throw new Error("USDZ archives with binary USDC root layers are not implemented yet.");let f="https://usd.archive/";for(let[o,p]of a)r.archiveFiles.set(new URL(o,f).href,p);let h=new URL(c,f).href;i=P(a.get(c),h),i.format="usdz"}else i=P(t,n);return i.url&&r.layers.add(i.url),r.options.usd?.compose!==!1&&(i.rootPrims=await A(i.rootPrims,i.url,{},r,0)),i.layers=Array.from(r.layers),n&&(i.url=n),i}function oe(t,e){let s=Z(t);return s||Z(e)||t||e}function Z(t){try{return t?new URL(t).href:void 0}catch{return}}function ce(t,e){try{return new URL(t,e).href}catch{let s=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return s>=0?`${e.slice(0,s+1)}${t}`:t}}function P(t,e){if(M.decode(t.slice(0,8))===ie)throw new Error("Binary USDC crate layers are not implemented yet; use ASCII USDA layers.");return _(M.decode(t),e)}async function A(t,e,s,n,r){if(r>(n.options.usd?.maxReferenceDepth??12))throw new Error("OpenUSD reference composition exceeded the configured depth limit.");let i=[];for(let a of t){if(a.specifier==="class")continue;let f={...le(a.metadata.variants),...s,...n.options.usd?.variantSelections},h=a.sourceUrl||e,o=v(a);for(let[m,u]of Object.entries(o.variants)){let d=f[m]||Object.keys(u)[0],l=u[d];l&&(o=T(o,{...o,attributes:l.attributes,metadata:l.metadata,children:l.children,variants:{}}))}let p=W(o);if(n.options.usd?.loadReferences!==!1&&p.length>0)for(let m of p){if(!h)throw new Error("OpenUSD references require a source URL or options.core.baseUrl.");let u=ce(m.assetPath,h),d=await fe(u,n),l=ue(d,m.primPath),D=await A(l,u,f,n,r+1);for(let g of D)o=T(j(g,o.path),o)}o.children=await A(o.children,h,f,n,r),i.push(o)}return i}async function fe(t,e){let s=e.cache.get(t);return s||(s=(async()=>{let r=e.archiveFiles.get(t);if(!r){let a;try{a=await e.fetch(t)}catch(c){throw new Error(`Unable to fetch USD layer "${t}": ${String(c)}`)}r=a.arrayBuffer()}let i=P(await r,t);return e.layers.add(t),i})(),e.cache.set(t,s)),s}function ue(t,e){let s=e||t.metadata.defaultPrim;if(typeof s!="string")return t.rootPrims;let n=s.startsWith("/")?s:`/${s}`,r=F(t.rootPrims,n);return r?[r]:[]}function F(t,e){for(let s of t){if(s.path===e)return s;let n=F(s.children,e);if(n)return n}}function W(t){let e=[];for(let s of[t.metadata.references,t.metadata.payload,t.metadata.payloads])Array.isArray(s)?e.push(...s.filter(x)):x(s)&&e.push(s);return e}function le(t){return!t||typeof t!="object"||Array.isArray(t)||x(t)?{}:Object.fromEntries(Object.entries(t).filter(e=>typeof e[1]=="string"))}function x(t){return Boolean(t&&typeof t=="object"&&!Array.isArray(t)&&"assetPath"in t)}function v(t){return{...t,attributes:{...t.attributes},metadata:{...t.metadata},variants:{...t.variants},children:t.children.map(v)}}function j(t,e){let s=v(t);return s.path=e,s.children=s.children.map(n=>j(n,`${e}/${n.name}`)),s}function T(t,e){let s=t.children.map(v);for(let n of e.children){let r=s.findIndex(i=>i.name===n.name);r>=0?s[r]=T(s[r],n):s.push(v(n))}return{...t,...e,sourceUrl:W(e).length>0?e.sourceUrl:t.sourceUrl||e.sourceUrl,type:e.type||t.type,attributes:{...t.attributes,...e.attributes},metadata:{...t.metadata,...e.metadata},variants:{...t.variants,...e.variants},children:s}}function de(t){return t.byteLength>=4&&new DataView(t).getUint32(0,!0)===ae}var M,ie,ae,he,Y=k(()=>{"use strict";N();$();M=new TextDecoder,ie="PXR-USDC",ae=67324752;he={compose:!0,loadReferences:!0,maxReferenceDepth:12,variantSelections:{}}});var H={};O(H,{USDLoaderWithParser:()=>me});async function ke(t,e,s){return R(new TextEncoder().encode(t).buffer,e,s)}var Ae,pe,me,Q=k(()=>{"use strict";Y();L();({preload:Ae,...pe}=z),me={...pe,parse:R,parseText:ke}});async function Ue(){let{USDLoaderWithParser:t}=await Promise.resolve().then(()=>(Q(),H));return t}var ve,z,L=k(()=>{"use strict";ve="5.0.0-alpha.1";z={dataType:null,batchType:null,name:"Universal Scene Description",id:"usd",module:"scene",version:ve,extensions:["usd","usda","usdz"],mimeTypes:["model/vnd.usd","model/vnd.usda","model/vnd.usdz+zip"],text:!0,binary:!0,tests:["#usda","PK"],options:{usd:{compose:!0,loadReferences:!0,maxReferenceDepth:12,variantSelections:{}}},preload:Ue}});var U={};O(U,{USDLoader:()=>z});S(U,ee(C(),1));L();return te(U);})();
11
+ `&&this.line++,this.offset++;this.offset+=3}else break}}readQuotedString(e){this.offset++;let t="";for(;this.offset<this.source.length;){let n=this.source[this.offset++];if(n===e)break;if(n==="\\"&&this.offset<this.source.length){let r=this.source[this.offset++];t+=r==="n"?`
12
+ `:r}else t+=n}return t}readDelimitedValue(e){this.offset++;let t=this.offset;for(;this.offset<this.source.length&&this.source[this.offset]!==e;)this.offset++;let n=this.source.slice(t,this.offset);return this.offset++,n}}});function V(s){let e=new DataView(s),t=ne(e),n=e.getUint16(t+10,!0),r=e.getUint32(t+16,!0),i=new Map,a=new TextDecoder;for(let c=0;c<n;c++){if(e.getUint32(r,!0)!==33639248)throw new Error("USDZ archive contains an invalid ZIP central-directory entry.");let f=e.getUint16(r+10,!0),h=e.getUint32(r+20,!0),o=e.getUint16(r+28,!0),p=e.getUint16(r+30,!0),m=e.getUint16(r+32,!0),u=e.getUint32(r+42,!0),d=a.decode(new Uint8Array(s,r+46,o));if(f!==0)throw new Error(`USDZ entry "${d}" is compressed; USDZ requires stored ZIP entries.`);if(e.getUint32(u,!0)!==67324752)throw new Error(`USDZ entry "${d}" has an invalid local ZIP header.`);let l=e.getUint16(u+26,!0),D=e.getUint16(u+28,!0),g=u+30+l+D;i.set(d,s.slice(g,g+h)),r+=46+o+p+m}return i}function ne(s){let e=Math.max(0,s.byteLength-65557);for(let t=s.byteLength-22;t>=e;t--)if(s.getUint32(t,!0)===101010256)return t;throw new Error("USDZ archive does not contain a ZIP end-of-central-directory record.")}var $=k(()=>{"use strict"});async function R(s,e={},t){let n=oe(e.core?.baseUrl,t?.url),r={fetch:async a=>{let c=await(t?.fetch||fetch)(a);if(!(c instanceof Response))throw new Error(`OpenUSD reference "${a}" did not return an HTTP response.`);if(!c.ok)throw new Error(`Unable to load OpenUSD reference "${a}": ${c.status}.`);return c},cache:new Map,archiveFiles:new Map,layers:new Set,options:{...e,usd:{...he,...e.usd}}},i;if(de(s)){let a=V(s),c=Array.from(a.keys()).find(o=>/\.usda?$/i.test(o));if(!c)throw new Error("USDZ archives with binary USDC root layers are not implemented yet.");let f="https://usd.archive/";for(let[o,p]of a)r.archiveFiles.set(new URL(o,f).href,p);let h=new URL(c,f).href;i=P(a.get(c),h),i.format="usdz"}else i=P(s,n);return i.url&&r.layers.add(i.url),r.options.usd?.compose!==!1&&(i.rootPrims=await A(i.rootPrims,i.url,{},r,0)),i.layers=Array.from(r.layers),n&&(i.url=n),i}function oe(s,e){let t=Z(s);return t||Z(e)||s||e}function Z(s){try{return s?new URL(s).href:void 0}catch{return}}function ce(s,e){try{return new URL(s,e).href}catch{let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t>=0?`${e.slice(0,t+1)}${s}`:s}}function P(s,e){if(M.decode(s.slice(0,8))===ie)throw new Error("Binary USDC crate layers are not implemented yet; use ASCII USDA layers.");return _(M.decode(s),e)}async function A(s,e,t,n,r){if(r>(n.options.usd?.maxReferenceDepth??12))throw new Error("OpenUSD reference composition exceeded the configured depth limit.");let i=[];for(let a of s){if(a.specifier==="class")continue;let f={...le(a.metadata.variants),...t,...n.options.usd?.variantSelections},h=a.sourceUrl||e,o=v(a);for(let[m,u]of Object.entries(o.variants)){let d=f[m]||Object.keys(u)[0],l=u[d];l&&(o=T(o,{...o,attributes:l.attributes,metadata:l.metadata,children:l.children,variants:{}}))}let p=W(o);if(n.options.usd?.loadReferences!==!1&&p.length>0)for(let m of p){if(!h)throw new Error("OpenUSD references require a source URL or options.core.baseUrl.");let u=ce(m.assetPath,h),d=await fe(u,n),l=ue(d,m.primPath),D=await A(l,u,f,n,r+1);for(let g of D)o=T(j(g,o.path),o)}o.children=await A(o.children,h,f,n,r),i.push(o)}return i}async function fe(s,e){let t=e.cache.get(s);return t||(t=(async()=>{let r=e.archiveFiles.get(s);if(!r){let a;try{a=await e.fetch(s)}catch(c){throw new Error(`Unable to fetch USD layer "${s}": ${String(c)}`)}r=a.arrayBuffer()}let i=P(await r,s);return e.layers.add(s),i})(),e.cache.set(s,t)),t}function ue(s,e){let t=e||s.metadata.defaultPrim;if(typeof t!="string")return s.rootPrims;let n=t.startsWith("/")?t:`/${t}`,r=F(s.rootPrims,n);return r?[r]:[]}function F(s,e){for(let t of s){if(t.path===e)return t;let n=F(t.children,e);if(n)return n}}function W(s){let e=[];for(let t of[s.metadata.references,s.metadata.payload,s.metadata.payloads])Array.isArray(t)?e.push(...t.filter(x)):x(t)&&e.push(t);return e}function le(s){return!s||typeof s!="object"||Array.isArray(s)||x(s)?{}:Object.fromEntries(Object.entries(s).filter(e=>typeof e[1]=="string"))}function x(s){return!!(s&&typeof s=="object"&&!Array.isArray(s)&&"assetPath"in s)}function v(s){return{...s,attributes:{...s.attributes},metadata:{...s.metadata},variants:{...s.variants},children:s.children.map(v)}}function j(s,e){let t=v(s);return t.path=e,t.children=t.children.map(n=>j(n,`${e}/${n.name}`)),t}function T(s,e){let t=s.children.map(v);for(let n of e.children){let r=t.findIndex(i=>i.name===n.name);r>=0?t[r]=T(t[r],n):t.push(v(n))}return{...s,...e,sourceUrl:W(e).length>0?e.sourceUrl:s.sourceUrl||e.sourceUrl,type:e.type||s.type,attributes:{...s.attributes,...e.attributes},metadata:{...s.metadata,...e.metadata},variants:{...s.variants,...e.variants},children:t}}function de(s){return s.byteLength>=4&&new DataView(s).getUint32(0,!0)===ae}var M,ie,ae,he,Y=k(()=>{"use strict";N();$();M=new TextDecoder,ie="PXR-USDC",ae=67324752;he={compose:!0,loadReferences:!0,maxReferenceDepth:12,variantSelections:{}}});var H={};O(H,{USDLoaderWithParser:()=>me});async function ke(s,e,t){return R(new TextEncoder().encode(s).buffer,e,t)}var Ae,pe,me,Q=k(()=>{"use strict";Y();L();({preload:Ae,...pe}=z),me={...pe,parse:R,parseText:ke}});async function Ue(){let{USDLoaderWithParser:s}=await Promise.resolve().then(()=>(Q(),H));return s}var ve,z,L=k(()=>{"use strict";ve="5.0.0-alpha.2";z={dataType:null,batchType:null,name:"Universal Scene Description",id:"usd",module:"scene",version:ve,extensions:["usd","usda","usdz"],mimeTypes:["model/vnd.usd","model/vnd.usda","model/vnd.usdz+zip"],text:!0,binary:!0,tests:["#usda","PK"],options:{usd:{compose:!0,loadReferences:!0,maxReferenceDepth:12,variantSelections:{}}},preload:Ue}});var U={};O(U,{USDLoader:()=>z});S(U,ee(C(),1));L();return te(U);})();
13
13
  return __exports__;
14
14
  });
package/dist/index.cjs CHANGED
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __esm = (fn, res, err) => function __init() {
7
+ if (err) throw err[0];
8
+ try {
9
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
+ } catch (e) {
11
+ throw err = [e], e;
12
+ }
13
+ };
8
14
  var __export = (target, all) => {
9
15
  for (var name in all)
10
16
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -17,36 +23,798 @@ var __copyProps = (to, from, except, desc) => {
17
23
  }
18
24
  return to;
19
25
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
27
 
28
+ // src/lib/parse-usda.ts
29
+ function parseUSDA(source, url) {
30
+ if (!source.trimStart().startsWith("#usda")) {
31
+ throw new Error("OpenUSD ASCII layers must begin with the #usda header.");
32
+ }
33
+ return new USDAParser(source, url).parse();
34
+ }
35
+ var NUMBER_PATTERN, QUALIFIERS, USDAParser, USDTokenizer;
36
+ var init_parse_usda = __esm({
37
+ "src/lib/parse-usda.ts"() {
38
+ "use strict";
39
+ NUMBER_PATTERN = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/;
40
+ QUALIFIERS = /* @__PURE__ */ new Set([
41
+ "uniform",
42
+ "varying",
43
+ "custom",
44
+ "prepend",
45
+ "append",
46
+ "add",
47
+ "delete",
48
+ "reorder"
49
+ ]);
50
+ USDAParser = class {
51
+ /** Token stream for the source layer. */
52
+ tokenizer;
53
+ /** URL of the source layer. */
54
+ url;
55
+ /** Creates a USDA parser. */
56
+ constructor(source, url) {
57
+ this.tokenizer = new USDTokenizer(source);
58
+ this.url = url;
59
+ }
60
+ /** Parses the complete USDA layer. */
61
+ parse() {
62
+ const metadata = this.tokenizer.match("(") ? this.parseMetadata(")") : {};
63
+ const rootPrims = [];
64
+ while (!this.tokenizer.isAtEnd()) {
65
+ if (this.isPrimDeclaration()) {
66
+ rootPrims.push(this.parsePrim(""));
67
+ } else {
68
+ this.tokenizer.read();
69
+ }
70
+ }
71
+ return {
72
+ format: "usda",
73
+ url: this.url,
74
+ metadata,
75
+ rootPrims,
76
+ layers: this.url ? [this.url] : []
77
+ };
78
+ }
79
+ /** Parses a prim and its descendants. */
80
+ parsePrim(parentPath) {
81
+ const declaration = this.tokenizer.read();
82
+ const specifier = declaration.value;
83
+ const firstToken = this.tokenizer.read();
84
+ const hasExplicitType = this.tokenizer.peek().kind === "string";
85
+ const type = hasExplicitType ? firstToken.value : "";
86
+ const name = hasExplicitType ? this.tokenizer.read().value : firstToken.value;
87
+ const path = `${parentPath}/${name}`;
88
+ const metadata = this.tokenizer.match("(") ? this.parseMetadata(")") : {};
89
+ this.tokenizer.expect("{");
90
+ const contents = this.parsePrimContents(path);
91
+ return {
92
+ name,
93
+ path,
94
+ sourceUrl: this.url,
95
+ type,
96
+ specifier,
97
+ attributes: contents.attributes,
98
+ metadata: { ...metadata, ...contents.metadata },
99
+ variants: contents.variants,
100
+ children: contents.children
101
+ };
102
+ }
103
+ /** Parses the attributes, variants, and child prims inside a prim body. */
104
+ parsePrimContents(parentPath) {
105
+ const attributes = {};
106
+ const metadata = {};
107
+ const children = [];
108
+ const variants = {};
109
+ while (!this.tokenizer.isAtEnd() && !this.tokenizer.match("}")) {
110
+ if (this.isPrimDeclaration()) {
111
+ children.push(this.parsePrim(parentPath));
112
+ } else if (this.tokenizer.peek().value === "variantSet") {
113
+ this.parseVariantSet(parentPath, variants);
114
+ } else {
115
+ const attribute = this.parseAttribute();
116
+ if (attribute) {
117
+ attributes[attribute.name] = attribute;
118
+ }
119
+ }
120
+ }
121
+ return { attributes, metadata, children, variants };
122
+ }
123
+ /** Parses one named variant set. */
124
+ parseVariantSet(parentPath, variants) {
125
+ this.tokenizer.expect("variantSet");
126
+ const variantSetName = this.tokenizer.read().value;
127
+ this.tokenizer.expect("=");
128
+ this.tokenizer.expect("{");
129
+ const variantSet = {};
130
+ while (!this.tokenizer.isAtEnd() && !this.tokenizer.match("}")) {
131
+ const variantName = this.tokenizer.read().value;
132
+ this.tokenizer.expect("{");
133
+ const contents = this.parsePrimContents(parentPath);
134
+ variantSet[variantName] = {
135
+ attributes: contents.attributes,
136
+ metadata: contents.metadata,
137
+ children: contents.children
138
+ };
139
+ }
140
+ variants[variantSetName] = variantSet;
141
+ }
142
+ /** Parses an attribute declaration at the current token. */
143
+ parseAttribute() {
144
+ const firstToken = this.tokenizer.read();
145
+ if (firstToken.kind === "end") {
146
+ return null;
147
+ }
148
+ const declarationTokens = [firstToken];
149
+ while (!this.tokenizer.isAtEnd() && this.tokenizer.peek().line === firstToken.line) {
150
+ const nextToken = this.tokenizer.peek();
151
+ if (nextToken.value === "=") {
152
+ this.tokenizer.read();
153
+ break;
154
+ }
155
+ if (nextToken.value === "{" || nextToken.value === "}") {
156
+ return null;
157
+ }
158
+ declarationTokens.push(this.tokenizer.read());
159
+ }
160
+ const hasAssignment = this.tokenizer.previousValue === "=";
161
+ if (!hasAssignment) {
162
+ return null;
163
+ }
164
+ const significantTokens = declarationTokens.filter((token) => !QUALIFIERS.has(token.value));
165
+ if (significantTokens.length === 0) {
166
+ return null;
167
+ }
168
+ const name = significantTokens[significantTokens.length - 1].value;
169
+ const type = significantTokens.slice(0, -1).map((token) => token.value).join("");
170
+ const value = this.parseValue();
171
+ const metadata = this.tokenizer.match("(") ? this.parseMetadata(")") : {};
172
+ return { name, type, value, metadata };
173
+ }
174
+ /** Parses a metadata dictionary through the requested terminator. */
175
+ parseMetadata(terminator) {
176
+ const metadata = {};
177
+ while (!this.tokenizer.isAtEnd() && !this.tokenizer.match(terminator)) {
178
+ this.tokenizer.match(",");
179
+ if (this.tokenizer.peek().value === terminator) {
180
+ this.tokenizer.read();
181
+ break;
182
+ }
183
+ const firstToken = this.tokenizer.read();
184
+ const declarationTokens = [firstToken];
185
+ while (!this.tokenizer.isAtEnd() && this.tokenizer.peek().line === firstToken.line) {
186
+ if (this.tokenizer.peek().value === "=" || this.tokenizer.peek().value === ":") {
187
+ this.tokenizer.read();
188
+ break;
189
+ }
190
+ if (this.tokenizer.peek().value === terminator) {
191
+ break;
192
+ }
193
+ declarationTokens.push(this.tokenizer.read());
194
+ }
195
+ if (this.tokenizer.previousValue !== "=" && this.tokenizer.previousValue !== ":") {
196
+ continue;
197
+ }
198
+ const name = declarationTokens[declarationTokens.length - 1].value;
199
+ metadata[name] = this.parseValue();
200
+ this.tokenizer.match(",");
201
+ }
202
+ return metadata;
203
+ }
204
+ /** Parses one scalar, list, tuple, dictionary, asset path, or scene path value. */
205
+ parseValue() {
206
+ const token = this.tokenizer.read();
207
+ if (token.value === "[") {
208
+ return this.parseList("]");
209
+ }
210
+ if (token.value === "(") {
211
+ return this.parseList(")");
212
+ }
213
+ if (token.value === "{") {
214
+ return this.parseMetadata("}");
215
+ }
216
+ if (token.kind === "asset") {
217
+ const reference = { assetPath: token.value };
218
+ if (this.tokenizer.peek().kind === "path" && this.tokenizer.peek().line === token.line) {
219
+ reference.primPath = this.tokenizer.read().value;
220
+ }
221
+ return reference;
222
+ }
223
+ if (token.kind === "path") {
224
+ return { path: token.value };
225
+ }
226
+ if (token.kind === "number") {
227
+ return Number(token.value);
228
+ }
229
+ if (token.value === "true") {
230
+ return true;
231
+ }
232
+ if (token.value === "false") {
233
+ return false;
234
+ }
235
+ if (token.value === "None" || token.value === "null") {
236
+ return null;
237
+ }
238
+ return token.value;
239
+ }
240
+ /** Parses a comma-separated list or tuple. */
241
+ parseList(terminator) {
242
+ const values = [];
243
+ while (!this.tokenizer.isAtEnd() && !this.tokenizer.match(terminator)) {
244
+ if (this.tokenizer.match(",")) {
245
+ continue;
246
+ }
247
+ values.push(this.parseValue());
248
+ this.tokenizer.match(",");
249
+ }
250
+ return values;
251
+ }
252
+ /** Returns whether the current token starts a prim declaration. */
253
+ isPrimDeclaration() {
254
+ const value = this.tokenizer.peek().value;
255
+ return value === "def" || value === "over" || value === "class";
256
+ }
257
+ };
258
+ USDTokenizer = class {
259
+ /** Complete source text. */
260
+ source;
261
+ /** Current character offset. */
262
+ offset = 0;
263
+ /** Current one-based line number. */
264
+ line = 1;
265
+ /** Lookahead token, when one has been read. */
266
+ bufferedToken = null;
267
+ /** Value of the most recently consumed token. */
268
+ previousValue = "";
269
+ /** Creates a tokenizer for USDA source text. */
270
+ constructor(source) {
271
+ this.source = source;
272
+ }
273
+ /** Returns the next token without consuming it. */
274
+ peek() {
275
+ this.bufferedToken ||= this.readToken();
276
+ return this.bufferedToken;
277
+ }
278
+ /** Consumes and returns the next token. */
279
+ read() {
280
+ const token = this.peek();
281
+ this.bufferedToken = null;
282
+ this.previousValue = token.value;
283
+ return token;
284
+ }
285
+ /** Consumes a token when its value matches. */
286
+ match(value) {
287
+ if (this.peek().value !== value) {
288
+ return false;
289
+ }
290
+ this.read();
291
+ return true;
292
+ }
293
+ /** Consumes an expected token or throws a line-numbered parse error. */
294
+ expect(value) {
295
+ const token = this.read();
296
+ if (token.value !== value) {
297
+ throw new Error(`Expected "${value}" at USDA line ${token.line}, received "${token.value}".`);
298
+ }
299
+ }
300
+ /** Returns whether the token stream is exhausted. */
301
+ isAtEnd() {
302
+ return this.peek().kind === "end";
303
+ }
304
+ /** Reads the next token from the current character offset. */
305
+ readToken() {
306
+ this.skipIgnoredText();
307
+ const line = this.line;
308
+ const character = this.source[this.offset];
309
+ if (character === void 0) {
310
+ return { value: "", line, kind: "end" };
311
+ }
312
+ if ("{}[](),=".includes(character)) {
313
+ this.offset++;
314
+ return { value: character, line, kind: "punctuation" };
315
+ }
316
+ if (character === '"' || character === "'") {
317
+ return { value: this.readQuotedString(character), line, kind: "string" };
318
+ }
319
+ if (character === "@") {
320
+ return { value: this.readDelimitedValue("@"), line, kind: "asset" };
321
+ }
322
+ if (character === "<") {
323
+ return { value: this.readDelimitedValue(">"), line, kind: "path" };
324
+ }
325
+ const numericMatch = this.source.slice(this.offset).match(NUMBER_PATTERN);
326
+ if (numericMatch) {
327
+ this.offset += numericMatch[0].length;
328
+ return { value: numericMatch[0], line, kind: "number" };
329
+ }
330
+ const startOffset = this.offset;
331
+ while (this.offset < this.source.length) {
332
+ const nextCharacter = this.source[this.offset];
333
+ if (/\s/.test(nextCharacter) || "{}[](),=@<>".includes(nextCharacter)) {
334
+ break;
335
+ }
336
+ this.offset++;
337
+ }
338
+ if (this.offset === startOffset) {
339
+ this.offset++;
340
+ }
341
+ return { value: this.source.slice(startOffset, this.offset), line, kind: "word" };
342
+ }
343
+ /** Skips whitespace, comments, and triple-quoted documentation blocks. */
344
+ skipIgnoredText() {
345
+ while (this.offset < this.source.length) {
346
+ const character = this.source[this.offset];
347
+ if (character === "\n") {
348
+ this.line++;
349
+ this.offset++;
350
+ } else if (/\s/.test(character)) {
351
+ this.offset++;
352
+ } else if (character === "#") {
353
+ while (this.offset < this.source.length && this.source[this.offset] !== "\n") {
354
+ this.offset++;
355
+ }
356
+ } else if (character === "/" && this.source[this.offset + 1] === "*") {
357
+ this.offset += 2;
358
+ while (this.offset < this.source.length && !this.source.startsWith("*/", this.offset)) {
359
+ if (this.source[this.offset] === "\n") {
360
+ this.line++;
361
+ }
362
+ this.offset++;
363
+ }
364
+ this.offset += 2;
365
+ } else if (this.source.startsWith('"""', this.offset)) {
366
+ this.offset += 3;
367
+ while (this.offset < this.source.length && !this.source.startsWith('"""', this.offset)) {
368
+ if (this.source[this.offset] === "\n") {
369
+ this.line++;
370
+ }
371
+ this.offset++;
372
+ }
373
+ this.offset += 3;
374
+ } else {
375
+ break;
376
+ }
377
+ }
378
+ }
379
+ /** Reads a quoted string and decodes common escapes. */
380
+ readQuotedString(delimiter) {
381
+ this.offset++;
382
+ let value = "";
383
+ while (this.offset < this.source.length) {
384
+ const character = this.source[this.offset++];
385
+ if (character === delimiter) {
386
+ break;
387
+ }
388
+ if (character === "\\" && this.offset < this.source.length) {
389
+ const escapedCharacter = this.source[this.offset++];
390
+ value += escapedCharacter === "n" ? "\n" : escapedCharacter;
391
+ } else {
392
+ value += character;
393
+ }
394
+ }
395
+ return value;
396
+ }
397
+ /** Reads an asset or scene path through its closing delimiter. */
398
+ readDelimitedValue(delimiter) {
399
+ this.offset++;
400
+ const startOffset = this.offset;
401
+ while (this.offset < this.source.length && this.source[this.offset] !== delimiter) {
402
+ this.offset++;
403
+ }
404
+ const value = this.source.slice(startOffset, this.offset);
405
+ this.offset++;
406
+ return value;
407
+ }
408
+ };
409
+ }
410
+ });
411
+
412
+ // src/lib/parse-usdz.ts
413
+ function parseUSDZArchive(arrayBuffer) {
414
+ const view = new DataView(arrayBuffer);
415
+ const directoryOffset = findCentralDirectory(view);
416
+ const entryCount = view.getUint16(directoryOffset + 10, true);
417
+ let entryOffset = view.getUint32(directoryOffset + 16, true);
418
+ const files = /* @__PURE__ */ new Map();
419
+ const textDecoder = new TextDecoder();
420
+ for (let entryIndex = 0; entryIndex < entryCount; entryIndex++) {
421
+ if (view.getUint32(entryOffset, true) !== CENTRAL_DIRECTORY_ENTRY) {
422
+ throw new Error("USDZ archive contains an invalid ZIP central-directory entry.");
423
+ }
424
+ const compression = view.getUint16(entryOffset + 10, true);
425
+ const compressedLength = view.getUint32(entryOffset + 20, true);
426
+ const filenameLength = view.getUint16(entryOffset + 28, true);
427
+ const extraLength = view.getUint16(entryOffset + 30, true);
428
+ const commentLength = view.getUint16(entryOffset + 32, true);
429
+ const localOffset = view.getUint32(entryOffset + 42, true);
430
+ const filename = textDecoder.decode(
431
+ new Uint8Array(arrayBuffer, entryOffset + 46, filenameLength)
432
+ );
433
+ if (compression !== 0) {
434
+ throw new Error(`USDZ entry "${filename}" is compressed; USDZ requires stored ZIP entries.`);
435
+ }
436
+ if (view.getUint32(localOffset, true) !== LOCAL_FILE_HEADER) {
437
+ throw new Error(`USDZ entry "${filename}" has an invalid local ZIP header.`);
438
+ }
439
+ const localNameLength = view.getUint16(localOffset + 26, true);
440
+ const localExtraLength = view.getUint16(localOffset + 28, true);
441
+ const contentOffset = localOffset + 30 + localNameLength + localExtraLength;
442
+ files.set(filename, arrayBuffer.slice(contentOffset, contentOffset + compressedLength));
443
+ entryOffset += 46 + filenameLength + extraLength + commentLength;
444
+ }
445
+ return files;
446
+ }
447
+ function findCentralDirectory(view) {
448
+ const minimumOffset = Math.max(0, view.byteLength - 65557);
449
+ for (let offset = view.byteLength - 22; offset >= minimumOffset; offset--) {
450
+ if (view.getUint32(offset, true) === END_OF_CENTRAL_DIRECTORY) {
451
+ return offset;
452
+ }
453
+ }
454
+ throw new Error("USDZ archive does not contain a ZIP end-of-central-directory record.");
455
+ }
456
+ var END_OF_CENTRAL_DIRECTORY, CENTRAL_DIRECTORY_ENTRY, LOCAL_FILE_HEADER;
457
+ var init_parse_usdz = __esm({
458
+ "src/lib/parse-usdz.ts"() {
459
+ "use strict";
460
+ END_OF_CENTRAL_DIRECTORY = 101010256;
461
+ CENTRAL_DIRECTORY_ENTRY = 33639248;
462
+ LOCAL_FILE_HEADER = 67324752;
463
+ }
464
+ });
465
+
466
+ // src/lib/parse-usd.ts
467
+ async function parseUSD(data, options = {}, context) {
468
+ var _a, _b;
469
+ const url = getSourceLocation((_a = options.core) == null ? void 0 : _a.baseUrl, context == null ? void 0 : context.url);
470
+ const environment = {
471
+ fetch: async (resourceUrl) => {
472
+ const response = await ((context == null ? void 0 : context.fetch) || fetch)(resourceUrl);
473
+ if (!(response instanceof Response)) {
474
+ throw new Error(`OpenUSD reference "${resourceUrl}" did not return an HTTP response.`);
475
+ }
476
+ if (!response.ok) {
477
+ throw new Error(`Unable to load OpenUSD reference "${resourceUrl}": ${response.status}.`);
478
+ }
479
+ return response;
480
+ },
481
+ cache: /* @__PURE__ */ new Map(),
482
+ archiveFiles: /* @__PURE__ */ new Map(),
483
+ layers: /* @__PURE__ */ new Set(),
484
+ options: {
485
+ ...options,
486
+ usd: { ...USD_LOADER_DEFAULT_OPTIONS, ...options.usd }
487
+ }
488
+ };
489
+ let stage;
490
+ if (isZIPArchive(data)) {
491
+ const archive = parseUSDZArchive(data);
492
+ const rootFilename = Array.from(archive.keys()).find((filename) => /\.usda?$/i.test(filename));
493
+ if (!rootFilename) {
494
+ throw new Error("USDZ archives with binary USDC root layers are not implemented yet.");
495
+ }
496
+ const archiveBase = "https://usd.archive/";
497
+ for (const [filename, content] of archive) {
498
+ environment.archiveFiles.set(new URL(filename, archiveBase).href, content);
499
+ }
500
+ const rootUrl = new URL(rootFilename, archiveBase).href;
501
+ stage = parseUSDLayer(archive.get(rootFilename), rootUrl);
502
+ stage.format = "usdz";
503
+ } else {
504
+ stage = parseUSDLayer(data, url);
505
+ }
506
+ if (stage.url) {
507
+ environment.layers.add(stage.url);
508
+ }
509
+ if (((_b = environment.options.usd) == null ? void 0 : _b.compose) !== false) {
510
+ stage.rootPrims = await composePrims(stage.rootPrims, stage.url, {}, environment, 0);
511
+ }
512
+ stage.layers = Array.from(environment.layers);
513
+ if (url) {
514
+ stage.url = url;
515
+ }
516
+ return stage;
517
+ }
518
+ function getSourceLocation(configuredLocation, contextLocation) {
519
+ const configuredUrl = getAbsoluteUrl(configuredLocation);
520
+ if (configuredUrl) {
521
+ return configuredUrl;
522
+ }
523
+ const contextUrl = getAbsoluteUrl(contextLocation);
524
+ return contextUrl || configuredLocation || contextLocation;
525
+ }
526
+ function getAbsoluteUrl(candidate) {
527
+ try {
528
+ return candidate ? new URL(candidate).href : void 0;
529
+ } catch {
530
+ return void 0;
531
+ }
532
+ }
533
+ function resolveAssetPath(assetPath, sourceLocation) {
534
+ try {
535
+ return new URL(assetPath, sourceLocation).href;
536
+ } catch {
537
+ const slashIndex = Math.max(sourceLocation.lastIndexOf("/"), sourceLocation.lastIndexOf("\\"));
538
+ return slashIndex >= 0 ? `${sourceLocation.slice(0, slashIndex + 1)}${assetPath}` : assetPath;
539
+ }
540
+ }
541
+ function parseUSDLayer(data, url) {
542
+ const signature = TEXT_DECODER.decode(data.slice(0, 8));
543
+ if (signature === CRATE_SIGNATURE) {
544
+ throw new Error("Binary USDC crate layers are not implemented yet; use ASCII USDA layers.");
545
+ }
546
+ return parseUSDA(TEXT_DECODER.decode(data), url);
547
+ }
548
+ async function composePrims(prims, sourceUrl, inheritedVariants, environment, depth) {
549
+ var _a, _b, _c;
550
+ if (depth > (((_a = environment.options.usd) == null ? void 0 : _a.maxReferenceDepth) ?? 12)) {
551
+ throw new Error("OpenUSD reference composition exceeded the configured depth limit.");
552
+ }
553
+ const composedPrims = [];
554
+ for (const sourcePrim of prims) {
555
+ if (sourcePrim.specifier === "class") {
556
+ continue;
557
+ }
558
+ const localSelections = getVariantSelections(sourcePrim.metadata["variants"]);
559
+ const selections = {
560
+ ...localSelections,
561
+ ...inheritedVariants,
562
+ ...(_b = environment.options.usd) == null ? void 0 : _b.variantSelections
563
+ };
564
+ const primSourceUrl = sourcePrim.sourceUrl || sourceUrl;
565
+ let composedPrim = clonePrim(sourcePrim);
566
+ for (const [variantSetName, variantSet] of Object.entries(composedPrim.variants)) {
567
+ const selection = selections[variantSetName] || Object.keys(variantSet)[0];
568
+ const variant = variantSet[selection];
569
+ if (variant) {
570
+ composedPrim = mergePrim(composedPrim, {
571
+ ...composedPrim,
572
+ attributes: variant.attributes,
573
+ metadata: variant.metadata,
574
+ children: variant.children,
575
+ variants: {}
576
+ });
577
+ }
578
+ }
579
+ const references = getPrimReferences(composedPrim);
580
+ if (((_c = environment.options.usd) == null ? void 0 : _c.loadReferences) !== false && references.length > 0) {
581
+ for (const reference of references) {
582
+ if (!primSourceUrl) {
583
+ throw new Error("OpenUSD references require a source URL or options.core.baseUrl.");
584
+ }
585
+ const referencedUrl = resolveAssetPath(reference.assetPath, primSourceUrl);
586
+ const stage = await loadReferencedStage(referencedUrl, environment);
587
+ const referencedPrims = selectReferencedPrims(stage, reference.primPath);
588
+ const resolvedPrims = await composePrims(
589
+ referencedPrims,
590
+ referencedUrl,
591
+ selections,
592
+ environment,
593
+ depth + 1
594
+ );
595
+ for (const referencedPrim of resolvedPrims) {
596
+ composedPrim = mergePrim(rebasePrim(referencedPrim, composedPrim.path), composedPrim);
597
+ }
598
+ }
599
+ }
600
+ composedPrim.children = await composePrims(
601
+ composedPrim.children,
602
+ primSourceUrl,
603
+ selections,
604
+ environment,
605
+ depth
606
+ );
607
+ composedPrims.push(composedPrim);
608
+ }
609
+ return composedPrims;
610
+ }
611
+ async function loadReferencedStage(url, environment) {
612
+ let pendingStage = environment.cache.get(url);
613
+ if (!pendingStage) {
614
+ pendingStage = (async () => {
615
+ const archiveContent = environment.archiveFiles.get(url);
616
+ let content = archiveContent;
617
+ if (!content) {
618
+ let response;
619
+ try {
620
+ response = await environment.fetch(url);
621
+ } catch (error) {
622
+ throw new Error(`Unable to fetch USD layer "${url}": ${String(error)}`);
623
+ }
624
+ content = response.arrayBuffer();
625
+ }
626
+ const stage = parseUSDLayer(await content, url);
627
+ environment.layers.add(url);
628
+ return stage;
629
+ })();
630
+ environment.cache.set(url, pendingStage);
631
+ }
632
+ return pendingStage;
633
+ }
634
+ function selectReferencedPrims(stage, primPath) {
635
+ const targetPath = primPath || stage.metadata["defaultPrim"];
636
+ if (typeof targetPath !== "string") {
637
+ return stage.rootPrims;
638
+ }
639
+ const normalizedPath = targetPath.startsWith("/") ? targetPath : `/${targetPath}`;
640
+ const target = findPrim(stage.rootPrims, normalizedPath);
641
+ return target ? [target] : [];
642
+ }
643
+ function findPrim(prims, path) {
644
+ for (const prim of prims) {
645
+ if (prim.path === path) {
646
+ return prim;
647
+ }
648
+ const child = findPrim(prim.children, path);
649
+ if (child) {
650
+ return child;
651
+ }
652
+ }
653
+ return void 0;
654
+ }
655
+ function getPrimReferences(prim) {
656
+ const references = [];
657
+ for (const value of [
658
+ prim.metadata["references"],
659
+ prim.metadata["payload"],
660
+ prim.metadata["payloads"]
661
+ ]) {
662
+ if (Array.isArray(value)) {
663
+ references.push(...value.filter(isAssetPath));
664
+ } else if (isAssetPath(value)) {
665
+ references.push(value);
666
+ }
667
+ }
668
+ return references;
669
+ }
670
+ function getVariantSelections(value) {
671
+ if (!value || typeof value !== "object" || Array.isArray(value) || isAssetPath(value)) {
672
+ return {};
673
+ }
674
+ return Object.fromEntries(
675
+ Object.entries(value).filter((entry) => typeof entry[1] === "string")
676
+ );
677
+ }
678
+ function isAssetPath(value) {
679
+ return Boolean(
680
+ value && typeof value === "object" && !Array.isArray(value) && "assetPath" in value
681
+ );
682
+ }
683
+ function clonePrim(prim) {
684
+ return {
685
+ ...prim,
686
+ attributes: { ...prim.attributes },
687
+ metadata: { ...prim.metadata },
688
+ variants: { ...prim.variants },
689
+ children: prim.children.map(clonePrim)
690
+ };
691
+ }
692
+ function rebasePrim(prim, path) {
693
+ const rebased = clonePrim(prim);
694
+ rebased.path = path;
695
+ rebased.children = rebased.children.map((child) => rebasePrim(child, `${path}/${child.name}`));
696
+ return rebased;
697
+ }
698
+ function mergePrim(reference, override) {
699
+ const children = reference.children.map(clonePrim);
700
+ for (const overridingChild of override.children) {
701
+ const matchingIndex = children.findIndex((child) => child.name === overridingChild.name);
702
+ if (matchingIndex >= 0) {
703
+ children[matchingIndex] = mergePrim(children[matchingIndex], overridingChild);
704
+ } else {
705
+ children.push(clonePrim(overridingChild));
706
+ }
707
+ }
708
+ return {
709
+ ...reference,
710
+ ...override,
711
+ sourceUrl: getPrimReferences(override).length > 0 ? override.sourceUrl : reference.sourceUrl || override.sourceUrl,
712
+ type: override.type || reference.type,
713
+ attributes: { ...reference.attributes, ...override.attributes },
714
+ metadata: { ...reference.metadata, ...override.metadata },
715
+ variants: { ...reference.variants, ...override.variants },
716
+ children
717
+ };
718
+ }
719
+ function isZIPArchive(arrayBuffer) {
720
+ return arrayBuffer.byteLength >= 4 && new DataView(arrayBuffer).getUint32(0, true) === ZIP_SIGNATURE;
721
+ }
722
+ var TEXT_DECODER, CRATE_SIGNATURE, ZIP_SIGNATURE, USD_LOADER_DEFAULT_OPTIONS;
723
+ var init_parse_usd = __esm({
724
+ "src/lib/parse-usd.ts"() {
725
+ "use strict";
726
+ init_parse_usda();
727
+ init_parse_usdz();
728
+ TEXT_DECODER = new TextDecoder();
729
+ CRATE_SIGNATURE = "PXR-USDC";
730
+ ZIP_SIGNATURE = 67324752;
731
+ USD_LOADER_DEFAULT_OPTIONS = {
732
+ compose: true,
733
+ loadReferences: true,
734
+ maxReferenceDepth: 12,
735
+ variantSelections: {}
736
+ };
737
+ }
738
+ });
739
+
740
+ // src/usd-loader-types.ts
741
+ async function preload() {
742
+ const { USDLoaderWithParser: USDLoaderWithParser2 } = await Promise.resolve().then(() => (init_usd_loader(), usd_loader_exports));
743
+ return USDLoaderWithParser2;
744
+ }
745
+ var VERSION, USDLoader;
746
+ var init_usd_loader_types = __esm({
747
+ "src/usd-loader-types.ts"() {
748
+ "use strict";
749
+ VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
750
+ USDLoader = {
751
+ dataType: null,
752
+ batchType: null,
753
+ name: "Universal Scene Description",
754
+ id: "usd",
755
+ module: "scene",
756
+ version: VERSION,
757
+ extensions: ["usd", "usda", "usdz"],
758
+ mimeTypes: ["model/vnd.usd", "model/vnd.usda", "model/vnd.usdz+zip"],
759
+ text: true,
760
+ binary: true,
761
+ tests: ["#usda", "PK"],
762
+ options: {
763
+ usd: {
764
+ compose: true,
765
+ loadReferences: true,
766
+ maxReferenceDepth: 12,
767
+ variantSelections: {}
768
+ }
769
+ },
770
+ preload
771
+ };
772
+ }
773
+ });
774
+
775
+ // src/usd-loader.ts
776
+ var usd_loader_exports = {};
777
+ __export(usd_loader_exports, {
778
+ USDLoaderWithParser: () => USDLoaderWithParser
779
+ });
780
+ async function parseText(text, options, context) {
781
+ return parseUSD(new TextEncoder().encode(text).buffer, options, context);
782
+ }
783
+ var _USDLoaderPreload, USDLoaderMetadataWithoutPreload, USDLoaderWithParser;
784
+ var init_usd_loader = __esm({
785
+ "src/usd-loader.ts"() {
786
+ "use strict";
787
+ init_parse_usd();
788
+ init_usd_loader_types();
789
+ ({ preload: _USDLoaderPreload, ...USDLoaderMetadataWithoutPreload } = USDLoader);
790
+ USDLoaderWithParser = {
791
+ ...USDLoaderMetadataWithoutPreload,
792
+ parse: parseUSD,
793
+ parseText
794
+ };
795
+ }
796
+ });
797
+
30
798
  // dist/index.js
31
- var dist_exports = {};
32
- __export(dist_exports, {
33
- USDLoader: () => USDLoader
799
+ var index_exports = {};
800
+ __export(index_exports, {
801
+ USDLoader: () => USDLoader2
34
802
  });
35
- module.exports = __toCommonJS(dist_exports);
803
+ module.exports = __toCommonJS(index_exports);
36
804
 
37
805
  // dist/usd-loader-types.js
38
- var VERSION = true ? "5.0.0-alpha.1" : "latest";
39
- async function preload() {
40
- const { USDLoaderWithParser } = await import("@loaders.gl/scene/usd-loader");
41
- return USDLoaderWithParser;
806
+ var VERSION2 = true ? "5.0.0-alpha.2" : "latest";
807
+ async function preload2() {
808
+ const { USDLoaderWithParser: USDLoaderWithParser2 } = await Promise.resolve().then(() => (init_usd_loader(), usd_loader_exports));
809
+ return USDLoaderWithParser2;
42
810
  }
43
- var USDLoader = {
811
+ var USDLoader2 = {
44
812
  dataType: null,
45
813
  batchType: null,
46
814
  name: "Universal Scene Description",
47
815
  id: "usd",
48
816
  module: "scene",
49
- version: VERSION,
817
+ version: VERSION2,
50
818
  extensions: ["usd", "usda", "usdz"],
51
819
  mimeTypes: ["model/vnd.usd", "model/vnd.usda", "model/vnd.usdz+zip"],
52
820
  text: true,
@@ -60,6 +828,6 @@ var USDLoader = {
60
828
  variantSelections: {}
61
829
  }
62
830
  },
63
- preload
831
+ preload: preload2
64
832
  };
65
833
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/usd-loader-types.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {USDLoader} from './usd-loader-types';\nexport type {\n USDAssetPath,\n USDAttribute,\n USDLoaderOptions,\n USDPrim,\n USDScenePath,\n USDStage,\n USDValue,\n USDVariant\n} from './lib/usd-types';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {USDLoaderOptions, USDStage} from './lib/usd-types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Loads the parser-bearing USD loader implementation. */\nasync function preload() {\n const {USDLoaderWithParser} = await import('@loaders.gl/scene/usd-loader');\n return USDLoaderWithParser;\n}\n\n/** Metadata-only loader for OpenUSD ASCII and uncompressed USDZ scenes. */\nexport const USDLoader = {\n dataType: null as unknown as USDStage,\n batchType: null as never,\n name: 'Universal Scene Description',\n id: 'usd',\n module: 'scene',\n version: VERSION,\n extensions: ['usd', 'usda', 'usdz'],\n mimeTypes: ['model/vnd.usd', 'model/vnd.usda', 'model/vnd.usdz+zip'],\n text: true,\n binary: true,\n tests: ['#usda', 'PK'],\n options: {\n usd: {\n compose: true,\n loadReferences: true,\n maxReferenceDepth: 12,\n variantSelections: {}\n }\n },\n preload\n} as const satisfies Loader<USDStage, never, USDLoaderOptions>;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACSA,IAAM,UAAU,OAAoC,kBAAe;AAGnE,eAAe,UAAO;AACpB,QAAM,EAAC,oBAAmB,IAAI,MAAM,OAAO,8BAA8B;AACzE,SAAO;AACT;AAGO,IAAM,YAAY;EACvB,UAAU;EACV,WAAW;EACX,MAAM;EACN,IAAI;EACJ,QAAQ;EACR,SAAS;EACT,YAAY,CAAC,OAAO,QAAQ,MAAM;EAClC,WAAW,CAAC,iBAAiB,kBAAkB,oBAAoB;EACnE,MAAM;EACN,QAAQ;EACR,OAAO,CAAC,SAAS,IAAI;EACrB,SAAS;IACP,KAAK;MACH,SAAS;MACT,gBAAgB;MAChB,mBAAmB;MACnB,mBAAmB,CAAA;;;EAGvB;;",
6
- "names": []
3
+ "sources": ["../src/lib/parse-usda.ts", "../src/lib/parse-usdz.ts", "../src/lib/parse-usd.ts", "../src/usd-loader-types.ts", "../src/usd-loader.ts", "../src/index.ts", "../src/usd-loader-types.ts"],
4
+ "mappings": "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",
5
+ "names": ["USDLoaderWithParser", "USDLoader", "VERSION", "preload", "USDLoaderWithParser", "USDLoader"]
7
6
  }
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  // __VERSION__ is injected by babel-plugin-version-inline
5
5
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
- const VERSION = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : 'latest';
6
+ const VERSION = typeof "5.0.0-alpha.2" !== 'undefined' ? "5.0.0-alpha.2" : 'latest';
7
7
  /** Loads the parser-bearing USD loader implementation. */
8
8
  async function preload() {
9
9
  const { USDLoaderWithParser } = await import('@loaders.gl/scene/usd-loader');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/scene",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "Framework-independent loaders for scene description formats",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,10 +46,10 @@
46
46
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
47
47
  },
48
48
  "dependencies": {
49
- "@loaders.gl/loader-utils": "5.0.0-alpha.1"
49
+ "@loaders.gl/loader-utils": "5.0.0-alpha.2"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@loaders.gl/core": "~5.0.0-alpha.0"
53
53
  },
54
- "gitHead": "77a55028e8204e09df1258f10cb61ed35353b258"
54
+ "gitHead": "27bcc0db684abb66a83003263c9d1cafd9e5b2dd"
55
55
  }