@loaders.gl/core 4.4.0-alpha.9 → 4.4.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/dist/dist.min.js CHANGED
@@ -4,12 +4,12 @@
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 Te=Object.defineProperty;var Yt=Object.getOwnPropertyDescriptor;var Zt=Object.getOwnPropertyNames;var Xt=Object.prototype.hasOwnProperty;var eo=(e,r,t)=>r in e?Te(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var Mr=(e,r)=>{for(var t in r)Te(e,t,{get:r[t],enumerable:!0})},ro=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Zt(r))!Xt.call(e,n)&&n!==t&&Te(e,n,{get:()=>r[n],enumerable:!(o=Yt(r,n))||o.enumerable});return e};var to=e=>ro(Te({},"__esModule",{value:!0}),e);var Wr=(e,r,t)=>(eo(e,typeof r!="symbol"?r+"":r,t),t);var An={};Mr(An,{FetchError:()=>Z,JSONLoader:()=>lr,NullLoader:()=>Qt,NullWorkerLoader:()=>Ht,RequestScheduler:()=>Y,_BrowserFileSystem:()=>Ne,_fetchProgress:()=>Jt,_selectSource:()=>qt,_unregisterLoaders:()=>kt,assert:()=>z,concatenateArrayBuffersAsync:()=>U,createDataSource:()=>zt,document:()=>Ue,encode:()=>$t,encodeInBatches:()=>vt,encodeSync:()=>Rr,encodeTable:()=>Er,encodeTableAsText:()=>Pt,encodeTableInBatches:()=>Lr,encodeText:()=>Dt,encodeTextSync:()=>jt,encodeURLtoURL:()=>Ir,fetchFile:()=>j,forEach:()=>ar,getLoaderOptions:()=>B,getPathPrefix:()=>ur,global:()=>Pe,isAsyncIterable:()=>H,isBrowser:()=>p,isIterable:()=>C,isIterator:()=>Q,isPromise:()=>ae,isPureObject:()=>G,isReadableStream:()=>L,isResponse:()=>l,isWorker:()=>$e,isWritableStream:()=>qe,load:()=>Nt,loadInBatches:()=>Ct,makeIterator:()=>oe,makeLineIterator:()=>sr,makeNumberedLineIterator:()=>ir,makeStream:()=>Vt,makeTextDecoderIterator:()=>or,makeTextEncoderIterator:()=>nr,parse:()=>k,parseInBatches:()=>M,parseSync:()=>Wt,readArrayBuffer:()=>ht,registerLoaders:()=>Tt,resolvePath:()=>I,selectLoader:()=>te,selectLoaderSync:()=>re,self:()=>Fe,setLoaderOptions:()=>br,setPathPrefix:()=>fr,window:()=>Ce});function z(e,r){if(!e)throw new Error(r||"loader assertion failed.")}var x={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Fe=x.self||x.window||x.global||{},Ce=x.window||x.self||x.global||{},Pe=x.global||x.self||x.window||{},Ue=x.document||{};var p=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser),$e=typeof importScripts=="function",Nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),oo=Nr&&parseFloat(Nr[1])||0;var Ae=globalThis,no=globalThis.document||{},ke=globalThis.process||{},so=globalThis.console,En=globalThis.navigator||{};function Fr(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let r=typeof navigator<"u"&&navigator.userAgent,t=e||r;return Boolean(t&&t.indexOf("Electron")>=0)}function W(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||Fr()}var De="4.0.7";function ao(e){try{let r=window[e],t="__storage_test__";return r.setItem(t,t),r.removeItem(t),r}catch{return null}}var Se=class{constructor(r,t,o="sessionStorage"){this.storage=ao(o),this.id=r,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(r){if(Object.assign(this.config,r),this.storage){let t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}}_loadConfiguration(){let r={};if(this.storage){let t=this.storage.getItem(this.id);r=t?JSON.parse(t):{}}return Object.assign(this.config,r),this}};function Cr(e){let r;return e<10?r=`${e.toFixed(2)}ms`:e<100?r=`${e.toFixed(1)}ms`:e<1e3?r=`${e.toFixed(0)}ms`:r=`${(e/1e3).toFixed(2)}s`,r}function Pr(e,r=8){let t=Math.max(r-e.length,0);return`${" ".repeat(t)}${e}`}var _e;(function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(_e||(_e={}));var co=10;function Ur(e){return typeof e!="string"?e:(e=e.toUpperCase(),_e[e]||_e.WHITE)}function $r(e,r,t){return!W&&typeof e=="string"&&(r&&(e=`\x1B[${Ur(r)}m${e}\x1B[39m`),t&&(e=`\x1B[${Ur(t)+co}m${e}\x1B[49m`)),e}function Dr(e,r=["constructor"]){let t=Object.getPrototypeOf(e),o=Object.getOwnPropertyNames(t),n=e;for(let s of o){let i=n[s];typeof i=="function"&&(r.find(a=>s===a)||(n[s]=i.bind(e)))}}function ie(e,r){if(!e)throw new Error(r||"Assertion failed")}function N(){let e;if(W()&&Ae.performance)e=Ae?.performance?.now?.();else if("hrtime"in ke){let r=ke?.hrtime?.();e=r[0]*1e3+r[1]/1e6}else e=Date.now();return e}var q={debug:W()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},fo={enabled:!0,level:0};function V(){}var jr={},vr={once:!0},T=class{constructor({id:r}={id:""}){this.VERSION=De,this._startTs=N(),this._deltaTs=N(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=r,this.userData={},this._storage=new Se(`__probe-${this.id}__`,fo),this.timeStamp(`${this.id} started`),Dr(this),Object.seal(this)}set level(r){this.setLevel(r)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((N()-this._startTs).toPrecision(10))}getDelta(){return Number((N()-this._deltaTs).toPrecision(10))}set priority(r){this.level=r}get priority(){return this.level}getPriority(){return this.level}enable(r=!0){return this._storage.setConfiguration({enabled:r}),this}setLevel(r){return this._storage.setConfiguration({level:r}),this}get(r){return this._storage.config[r]}set(r,t){this._storage.setConfiguration({[r]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(r,t){if(!r)throw new Error(t||"Assertion failed")}warn(r){return this._getLogFunction(0,r,q.warn,arguments,vr)}error(r){return this._getLogFunction(0,r,q.error,arguments)}deprecated(r,t){return this.warn(`\`${r}\` is deprecated and will be removed in a later version. Use \`${t}\` instead`)}removed(r,t){return this.error(`\`${r}\` has been removed. Use \`${t}\` instead`)}probe(r,t){return this._getLogFunction(r,t,q.log,arguments,{time:!0,once:!0})}log(r,t){return this._getLogFunction(r,t,q.debug,arguments)}info(r,t){return this._getLogFunction(r,t,console.info,arguments)}once(r,t){return this._getLogFunction(r,t,q.debug||q.info,arguments,vr)}table(r,t,o){return t?this._getLogFunction(r,t,console.table||V,o&&[o],{tag:lo(t)}):V}time(r,t){return this._getLogFunction(r,t,console.time?console.time:console.info)}timeEnd(r,t){return this._getLogFunction(r,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(r,t){return this._getLogFunction(r,t,console.timeStamp||V)}group(r,t,o={collapsed:!1}){let n=zr({logLevel:r,message:t,opts:o}),{collapsed:s}=o;return n.method=(s?console.groupCollapsed:console.group)||console.info,this._getLogFunction(n)}groupCollapsed(r,t,o={}){return this.group(r,t,Object.assign({},o,{collapsed:!0}))}groupEnd(r){return this._getLogFunction(r,"",console.groupEnd||V)}withGroup(r,t,o){this.group(r,t)();try{o()}finally{this.groupEnd(r)()}}trace(){console.trace&&console.trace()}_shouldLog(r){return this.isEnabled()&&this.getLevel()>=qr(r)}_getLogFunction(r,t,o,n,s){if(this._shouldLog(r)){s=zr({logLevel:r,message:t,args:n,opts:s}),o=o||s.method,ie(o),s.total=this.getTotal(),s.delta=this.getDelta(),this._deltaTs=N();let i=s.tag||s.message;if(s.once&&i)if(!jr[i])jr[i]=N();else return V;return t=uo(this.id,s.message,s),o.bind(console,t,...s.args)}return V}};T.VERSION=De;function qr(e){if(!e)return 0;let r;switch(typeof e){case"number":r=e;break;case"object":r=e.logLevel||e.priority||0;break;default:return 0}return ie(Number.isFinite(r)&&r>=0),r}function zr(e){let{logLevel:r,message:t}=e;e.logLevel=qr(r);let o=e.args?Array.from(e.args):[];for(;o.length&&o.shift()!==t;);switch(typeof r){case"string":case"function":t!==void 0&&o.unshift(t),e.message=r;break;case"object":Object.assign(e,r);break;default:}typeof e.message=="function"&&(e.message=e.message());let n=typeof e.message;return ie(n==="string"||n==="object"),Object.assign(e,{args:o},e.opts)}function uo(e,r,t){if(typeof r=="string"){let o=t.time?Pr(Cr(t.total)):"";r=t.time?`${e}: ${o} ${r}`:`${e}: ${r}`,r=$r(r,t.color,t.background)}return r}function lo(e){for(let r in e)for(let t in e[r])return t||"untitled";return"empty"}globalThis.probe={};var Zn=new T({id:"@probe.gl/log"});var je="4.4.0-alpha.9",mo=je[0]>="0"&&je[0]<="9"?`v${je}`:"";function po(){let e=new T({id:"loaders.gl"});return globalThis.loaders=globalThis.loaders||{},globalThis.loaders.log=e,globalThis.loaders.version=mo,globalThis.probe=globalThis.probe||{},globalThis.probe.loaders=e,e}var ve=po();var Vr=e=>typeof e=="boolean",u=e=>typeof e=="function",d=e=>e!==null&&typeof e=="object",G=e=>d(e)&&e.constructor==={}.constructor;var ze=e=>typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer,F=e=>d(e)&&typeof e.byteLength=="number"&&typeof e.slice=="function",ae=e=>d(e)&&"then"in e&&u(e.then),C=e=>Boolean(e)&&u(e[Symbol.iterator]),H=e=>Boolean(e)&&u(e[Symbol.asyncIterator]),Q=e=>Boolean(e)&&u(e.next),l=e=>typeof Response<"u"&&e instanceof Response||d(e)&&u(e.arrayBuffer)&&u(e.text)&&u(e.json);var h=e=>typeof Blob<"u"&&e instanceof Blob;var Gr=e=>d(e)&&u(e.abort)&&u(e.getWriter),Hr=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||d(e)&&u(e.tee)&&u(e.cancel)&&u(e.getReader),Qr=e=>d(e)&&u(e.end)&&u(e.write)&&Vr(e.writable),Jr=e=>d(e)&&u(e.read)&&u(e.pipe)&&Vr(e.readable),L=e=>Hr(e)||Jr(e),qe=e=>Gr(e)||Qr(e);function Ve(e,r){return Kr(e||{},r)}function Kr(e,r,t=0){if(t>3)return r;let o={...e};for(let[n,s]of Object.entries(r))s&&typeof s=="object"&&!Array.isArray(s)?o[n]=Kr(o[n]||{},r[n],t+1):o[n]=r[n];return o}function Ge(e){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,e)}var Yr="beta";function ho(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.9"),globalThis._loadersgl_.version}var ce=ho();function m(e,r){if(!e)throw new Error(r||"loaders.gl assertion failed.")}var A={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},us=A.self||A.window||A.global||{},ls=A.window||A.self||A.global||{},ms=A.global||A.self||A.window||{},ps=A.document||{};var y=typeof process!="object"||String(process)!=="[object process]"||process.browser;var Xr=typeof window<"u"&&typeof window.orientation<"u",Zr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),hs=Zr&&parseFloat(Zr[1])||0;var fe=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(r,t){this.name=r,this.workerThread=t,this.result=new Promise((o,n)=>{this._resolve=o,this._reject=n})}postMessage(r,t){this.workerThread.postMessage({source:"loaders.gl",type:r,payload:t})}done(r){m(this.isRunning),this.isRunning=!1,this._resolve(r)}error(r){m(this.isRunning),this.isRunning=!1,this._reject(r)}};var J=class{terminate(){}};var He=new Map;function et(e){m(e.source&&!e.url||!e.source&&e.url);let r=He.get(e.source||e.url);return r||(e.url&&(r=yo(e.url),He.set(e.url,r)),e.source&&(r=rt(e.source),He.set(e.source,r))),m(r),r}function yo(e){if(!e.startsWith("http"))return e;let r=go(e);return rt(r)}function rt(e){let r=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(r)}function go(e){return`try {
7
+ "use strict";var __exports__=(()=>{var Ae=Object.defineProperty;var Zt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var eo=Object.prototype.hasOwnProperty;var ro=(e,r,t)=>r in e?Ae(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var Nr=(e,r)=>{for(var t in r)Ae(e,t,{get:r[t],enumerable:!0})},to=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Xt(r))!eo.call(e,n)&&n!==t&&Ae(e,n,{get:()=>r[n],enumerable:!(o=Zt(r,n))||o.enumerable});return e};var oo=e=>to(Ae({},"__esModule",{value:!0}),e);var Pr=(e,r,t)=>(ro(e,typeof r!="symbol"?r+"":r,t),t);var An={};Nr(An,{FetchError:()=>re,JSONLoader:()=>dr,NullLoader:()=>Jt,NullWorkerLoader:()=>Qt,RequestScheduler:()=>ee,_BrowserFileSystem:()=>Pe,_fetchProgress:()=>Kt,_selectSource:()=>Vt,_unregisterLoaders:()=>_t,assert:()=>V,concatenateArrayBuffersAsync:()=>j,createDataSource:()=>qt,document:()=>ve,encode:()=>vt,encodeInBatches:()=>zt,encodeSync:()=>Cr,encodeTable:()=>Ir,encodeTableAsText:()=>Ut,encodeTableInBatches:()=>Or,encodeText:()=>Dt,encodeTextSync:()=>jt,encodeURLtoURL:()=>Wr,fetchFile:()=>q,forEach:()=>lr,getLoaderOptions:()=>L,getPathPrefix:()=>hr,global:()=>$e,isAsyncIterable:()=>K,isBrowser:()=>p,isIterable:()=>v,isIterator:()=>Y,isPromise:()=>ce,isPureObject:()=>J,isReadableStream:()=>I,isResponse:()=>l,isWorker:()=>De,isWritableStream:()=>Qe,load:()=>Nt,loadInBatches:()=>Ft,makeIterator:()=>se,makeLineIterator:()=>fr,makeNumberedLineIterator:()=>ur,makeStream:()=>Gt,makeTextDecoderIterator:()=>ar,makeTextEncoderIterator:()=>cr,parse:()=>_,parseInBatches:()=>P,parseSync:()=>Mt,readArrayBuffer:()=>ht,registerLoaders:()=>Tt,resolvePath:()=>C,selectLoader:()=>ne,selectLoaderSync:()=>N,self:()=>Fe,setLoaderOptions:()=>Ar,setPathPrefix:()=>pr,window:()=>Ue});function V(e,r){if(!e)throw new Error(r||"loader assertion failed.")}var T={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Fe=T.self||T.window||T.global||{},Ue=T.window||T.self||T.global||{},$e=T.global||T.self||T.window||{},ve=T.document||{};var p=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser),De=typeof importScripts=="function",Fr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),no=Fr&&parseFloat(Fr[1])||0;var _e=globalThis,so=globalThis.document||{},ke=globalThis.process||{},io=globalThis.console,En=globalThis.navigator||{};function Ur(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let r=typeof navigator<"u"&&navigator.userAgent,t=e||r;return Boolean(t&&t.indexOf("Electron")>=0)}function F(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||Ur()}var je="4.1.1";function G(e,r){if(!e)throw new Error(r||"Assertion failed")}function ze(e){if(!e)return 0;let r;switch(typeof e){case"number":r=e;break;case"object":r=e.logLevel||e.priority||0;break;default:return 0}return G(Number.isFinite(r)&&r>=0),r}function $r(e){let{logLevel:r,message:t}=e;e.logLevel=ze(r);let o=e.args?Array.from(e.args):[];for(;o.length&&o.shift()!==t;);switch(typeof r){case"string":case"function":t!==void 0&&o.unshift(t),e.message=r;break;case"object":Object.assign(e,r);break;default:}typeof e.message=="function"&&(e.message=e.message());let n=typeof e.message;return G(n==="string"||n==="object"),Object.assign(e,{args:o},e.opts)}var U=()=>{},Se=class{constructor({level:r=0}={}){this.userData={},this._onceCache=new Set,this._level=r}set level(r){this.setLevel(r)}get level(){return this.getLevel()}setLevel(r){return this._level=r,this}getLevel(){return this._level}warn(r,...t){return this._log("warn",0,r,t,{once:!0})}error(r,...t){return this._log("error",0,r,t)}log(r,t,...o){return this._log("log",r,t,o)}info(r,t,...o){return this._log("info",r,t,o)}once(r,t,...o){return this._log("once",r,t,o,{once:!0})}_log(r,t,o,n,s={}){let i=$r({logLevel:t,message:o,args:this._buildArgs(t,o,n),opts:s});return this._createLogFunction(r,i,s)}_buildArgs(r,t,o){return[r,t,...o]}_createLogFunction(r,t,o){if(!this._shouldLog(t.logLevel))return U;let n=this._getOnceTag(o.tag??t.tag??t.message);if((o.once||t.once)&&n!==void 0){if(this._onceCache.has(n))return U;this._onceCache.add(n)}return this._emit(r,t)}_shouldLog(r){return this.getLevel()>=ze(r)}_getOnceTag(r){if(r!==void 0)try{return typeof r=="string"?r:String(r)}catch{return}}};function co(e){try{let r=window[e],t="__storage_test__";return r.setItem(t,t),r.removeItem(t),r}catch{return null}}var Be=class{constructor(r,t,o="sessionStorage"){this.storage=co(o),this.id=r,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(r){if(Object.assign(this.config,r),this.storage){let t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}}_loadConfiguration(){let r={};if(this.storage){let t=this.storage.getItem(this.id);r=t?JSON.parse(t):{}}return Object.assign(this.config,r),this}};function vr(e){let r;return e<10?r=`${e.toFixed(2)}ms`:e<100?r=`${e.toFixed(1)}ms`:e<1e3?r=`${e.toFixed(0)}ms`:r=`${(e/1e3).toFixed(2)}s`,r}function Dr(e,r=8){let t=Math.max(r-e.length,0);return`${" ".repeat(t)}${e}`}var Ee;(function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(Ee||(Ee={}));var fo=10;function jr(e){return typeof e!="string"?e:(e=e.toUpperCase(),Ee[e]||Ee.WHITE)}function zr(e,r,t){return!F&&typeof e=="string"&&(r&&(e=`\x1B[${jr(r)}m${e}\x1B[39m`),t&&(e=`\x1B[${jr(t)+fo}m${e}\x1B[49m`)),e}function qr(e,r=["constructor"]){let t=Object.getPrototypeOf(e),o=Object.getOwnPropertyNames(t),n=e;for(let s of o){let i=n[s];typeof i=="function"&&(r.find(a=>s===a)||(n[s]=i.bind(e)))}}function H(){let e;if(F()&&_e.performance)e=_e?.performance?.now?.();else if("hrtime"in ke){let r=ke?.hrtime?.();e=r[0]*1e3+r[1]/1e6}else e=Date.now();return e}var Q={debug:F()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},qe={enabled:!0,level:0},w=class extends Se{constructor({id:r}={id:""}){super({level:0}),this.VERSION=je,this._startTs=H(),this._deltaTs=H(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=r,this.userData={},this._storage=new Be(`__probe-${this.id}__`,{[this.id]:qe}),this.timeStamp(`${this.id} started`),qr(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((H()-this._startTs).toPrecision(10))}getDelta(){return Number((H()-this._deltaTs).toPrecision(10))}set priority(r){this.level=r}get priority(){return this.level}getPriority(){return this.level}enable(r=!0){return this._updateConfiguration({enabled:r}),this}setLevel(r){return this._updateConfiguration({level:r}),this}get(r){return this._getConfiguration()[r]}set(r,t){this._updateConfiguration({[r]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(r,t){if(!r)throw new Error(t||"Assertion failed")}warn(r,...t){return this._log("warn",0,r,t,{method:Q.warn,once:!0})}error(r,...t){return this._log("error",0,r,t,{method:Q.error})}deprecated(r,t){return this.warn(`\`${r}\` is deprecated and will be removed in a later version. Use \`${t}\` instead`)}removed(r,t){return this.error(`\`${r}\` has been removed. Use \`${t}\` instead`)}probe(r,t,...o){return this._log("log",r,t,o,{method:Q.log,time:!0,once:!0})}log(r,t,...o){return this._log("log",r,t,o,{method:Q.debug})}info(r,t,...o){return this._log("info",r,t,o,{method:console.info})}once(r,t,...o){return this._log("once",r,t,o,{method:Q.debug||Q.info,once:!0})}table(r,t,o){return t?this._log("table",r,t,o&&[o]||[],{method:console.table||U,tag:lo(t)}):U}time(r,t){return this._log("time",r,t,[],{method:console.time?console.time:console.info})}timeEnd(r,t){return this._log("time",r,t,[],{method:console.timeEnd?console.timeEnd:console.info})}timeStamp(r,t){return this._log("time",r,t,[],{method:console.timeStamp||U})}group(r,t,o={collapsed:!1}){let n=(o.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",r,t,[],{method:n})}groupCollapsed(r,t,o={}){return this.group(r,t,Object.assign({},o,{collapsed:!0}))}groupEnd(r){return this._log("groupEnd",r,"",[],{method:console.groupEnd||U})}withGroup(r,t,o){this.group(r,t)();try{o()}finally{this.groupEnd(r)()}}trace(){console.trace&&console.trace()}_shouldLog(r){return this.isEnabled()&&super._shouldLog(r)}_emit(r,t){let o=t.method;G(o),t.total=this.getTotal(),t.delta=this.getDelta(),this._deltaTs=H();let n=uo(this.id,t.message,t);return o.bind(console,n,...t.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(qe),this._storage.config[this.id]}_updateConfiguration(r){let t=this._storage.config[this.id]||{...qe};this._storage.setConfiguration({[this.id]:{...t,...r}})}};w.VERSION=je;function uo(e,r,t){if(typeof r=="string"){let o=t.time?Dr(vr(t.total)):"";r=t.time?`${e}: ${o} ${r}`:`${e}: ${r}`,r=zr(r,t.color,t.background)}return r}function lo(e){for(let r in e)for(let t in e[r])return t||"untitled";return"empty"}globalThis.probe={};var os=new w({id:"@probe.gl/log"});var Ve="4.4.0",mo=Ve[0]>="0"&&Ve[0]<="9"?`v${Ve}`:"";function po(){let e=new w({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=e,globalThis.loaders.version=mo,globalThis.probe||={},globalThis.probe.loaders=e,e}var Ge=po();var Vr=e=>typeof e=="boolean",u=e=>typeof e=="function",d=e=>e!==null&&typeof e=="object",J=e=>d(e)&&e.constructor==={}.constructor;var He=e=>typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer,$=e=>d(e)&&typeof e.byteLength=="number"&&typeof e.slice=="function",ce=e=>d(e)&&"then"in e&&u(e.then),v=e=>Boolean(e)&&u(e[Symbol.iterator]),K=e=>Boolean(e)&&u(e[Symbol.asyncIterator]),Y=e=>Boolean(e)&&u(e.next),l=e=>typeof Response<"u"&&e instanceof Response||d(e)&&u(e.arrayBuffer)&&u(e.text)&&u(e.json);var h=e=>typeof Blob<"u"&&e instanceof Blob;var Gr=e=>d(e)&&u(e.abort)&&u(e.getWriter),Hr=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||d(e)&&u(e.tee)&&u(e.cancel)&&u(e.getReader),Qr=e=>d(e)&&u(e.end)&&u(e.write)&&Vr(e.writable),Jr=e=>d(e)&&u(e.read)&&u(e.pipe)&&Vr(e.readable),I=e=>Hr(e)||Jr(e),Qe=e=>Gr(e)||Qr(e);function Je(e,r){return Kr(e||{},r)}function Kr(e,r,t=0){if(t>3)return r;let o={...e};for(let[n,s]of Object.entries(r))s&&typeof s=="object"&&!Array.isArray(s)?o[n]=Kr(o[n]||{},r[n],t+1):o[n]=r[n];return o}function Ke(e){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,e)}var Yr="beta";function ho(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0"),globalThis._loadersgl_.version}var fe=ho();function m(e,r){if(!e)throw new Error(r||"loaders.gl assertion failed.")}var A={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},ds=A.self||A.window||A.global||{},ys=A.window||A.self||A.global||{},gs=A.global||A.self||A.window||{},ws=A.document||{};var y=typeof process!="object"||String(process)!=="[object process]"||process.browser;var Xr=typeof window<"u"&&typeof window.orientation<"u",Zr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),bs=Zr&&parseFloat(Zr[1])||0;var ue=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(r,t){this.name=r,this.workerThread=t,this.result=new Promise((o,n)=>{this._resolve=o,this._reject=n})}postMessage(r,t){this.workerThread.postMessage({source:"loaders.gl",type:r,payload:t})}done(r){m(this.isRunning),this.isRunning=!1,this._resolve(r)}error(r){m(this.isRunning),this.isRunning=!1,this._reject(r)}};var Z=class{terminate(){}};var Ye=new Map;function et(e){m(e.source&&!e.url||!e.source&&e.url);let r=Ye.get(e.source||e.url);return r||(e.url&&(r=yo(e.url),Ye.set(e.url,r)),e.source&&(r=rt(e.source),Ye.set(e.source,r))),m(r),r}function yo(e){if(!e.startsWith("http"))return e;let r=go(e);return rt(r)}function rt(e){let r=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(r)}function go(e){return`try {
8
8
  importScripts('${e}');
9
9
  } catch (error) {
10
10
  console.error(error);
11
11
  throw error;
12
- }`}function Qe(e,r=!0,t){let o=t||new Set;if(e){if(tt(e))o.add(e);else if(tt(e.buffer))o.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(r&&typeof e=="object")for(let n in e)Qe(e[n],r,o)}}return t===void 0?Array.from(o):[]}function tt(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}function Je(e){if(e===null)return{};let r=Object.assign({},e);return Object.keys(r).forEach(t=>{typeof e[t]=="object"&&!ArrayBuffer.isView(e[t])&&!(e[t]instanceof Array)?r[t]=Je(e[t]):typeof r[t]=="function"||r[t]instanceof RegExp?r[t]={}:r[t]=e[t]}),r}var Ke=()=>{},R=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&y||typeof J<"u"&&!y}constructor(r){let{name:t,source:o,url:n}=r;m(o||n),this.name=t,this.source=o,this.url=n,this.onMessage=Ke,this.onError=s=>console.log(s),this.worker=y?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Ke,this.onError=Ke,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(r,t){t=t||Qe(r),this.worker.postMessage(r,t)}_getErrorFromErrorEvent(r){let t="Failed to load ";return t+=`worker ${this.name} from ${this.url}. `,r.message&&(t+=`${r.message} in `),r.lineno&&(t+=`:${r.lineno}:${r.colno}`),new Error(t)}_createBrowserWorker(){this._loadableURL=et({source:this.source,url:this.url});let r=new Worker(this._loadableURL,{name:this.name});return r.onmessage=t=>{t.data?this.onMessage(t.data):this.onError(new Error("No data received"))},r.onerror=t=>{this.onError(this._getErrorFromErrorEvent(t)),this.terminated=!0},r.onmessageerror=t=>console.error(t),r}_createNodeWorker(){let r;if(this.url){let o=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,n=this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs";r=new J(o,{eval:!1,type:n})}else if(this.source)r=new J(this.source,{eval:!0});else throw new Error("no worker");return r.on("message",t=>{this.onMessage(t)}),r.on("error",t=>{this.onError(t)}),r.on("exit",t=>{}),r}};var ue=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return R.isSupported()}constructor(r){this.source=r.source,this.url=r.url,this.setProps(r)}destroy(){this.idleQueue.forEach(r=>r.destroy()),this.isDestroyed=!0}setProps(r){this.props={...this.props,...r},r.name!==void 0&&(this.name=r.name),r.maxConcurrency!==void 0&&(this.maxConcurrency=r.maxConcurrency),r.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=r.maxMobileConcurrency),r.reuseWorkers!==void 0&&(this.reuseWorkers=r.reuseWorkers),r.onDebug!==void 0&&(this.onDebug=r.onDebug)}async startJob(r,t=(n,s,i)=>n.done(i),o=(n,s)=>n.error(s)){let n=new Promise(s=>(this.jobQueue.push({name:r,onMessage:t,onError:o,onStart:s}),this));return this._startQueuedJob(),await n}async _startQueuedJob(){if(!this.jobQueue.length)return;let r=this._getAvailableWorker();if(!r)return;let t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:r,backlog:this.jobQueue.length});let o=new fe(t.name,r);r.onMessage=n=>t.onMessage(o,n.type,n.payload),r.onError=n=>t.onError(o,n),t.onStart(o);try{await o.result}catch(n){console.error(`Worker exception: ${n}`)}finally{this.returnWorkerToQueue(r)}}}returnWorkerToQueue(r){!y||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(r.destroy(),this.count--):this.idleQueue.push(r),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let r=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new R({name:r,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Xr?this.maxMobileConcurrency:this.maxConcurrency}};var wo={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},P=class{props;workerPools=new Map;static isSupported(){return R.isSupported()}static getWorkerFarm(r={}){return P._workerFarm=P._workerFarm||new P({}),P._workerFarm.setProps(r),P._workerFarm}constructor(r){this.props={...wo},this.setProps(r),this.workerPools=new Map}destroy(){for(let r of this.workerPools.values())r.destroy();this.workerPools=new Map}setProps(r){this.props={...this.props,...r};for(let t of this.workerPools.values())t.setProps(this._getWorkerPoolProps())}getWorkerPool(r){let{name:t,source:o,url:n}=r,s=this.workerPools.get(t);return s||(s=new ue({name:t,source:o,url:n}),s.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,s)),s}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},g=P;Wr(g,"_workerFarm");function ot(e){let r=e.version!==ce?` (worker-utils@${ce})`:"";return`${e.name}@${e.version}${r}`}function le(e,r={}){let t=r[e.id]||{},o=y?`${e.id}-worker.js`:`${e.id}-worker-node.js`,n=t.workerUrl;if(!n&&e.id==="compression"&&(n=r.workerUrl),(r._workerType||r?.core?._workerType)==="test"&&(y?n=`modules/${e.module}/dist/${o}`:n=`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!n){let i=e.version;i==="latest"&&(i=Yr);let a=i?`@${i}`:"";n=`https://unpkg.com/@loaders.gl/${e.module}${a}/dist/${o}`}return m(n),n}async function Ye(e,r,t={},o={}){let n=ot(e),s=g.getWorkerFarm(t),{source:i}=t,a={name:n,source:i};i||(a.url=le(e,t));let c=s.getWorkerPool(a),f=t.jobName||e.name,S=await c.startJob(f,bo.bind(null,o)),E=Je(t);return S.postMessage("process",{input:r,options:E}),(await S.result).result}async function bo(e,r,t,o){switch(t){case"done":r.done(o);break;case"error":r.error(new Error(o.error));break;case"process":let{id:n,input:s,options:i}=o;try{if(!e.process){r.postMessage("error",{id:n,error:"Worker not set up to process on main thread"});return}let a=await e.process(s,i);r.postMessage("done",{id:n,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";r.postMessage("error",{id:n,error:c})}break;default:console.warn(`process-on-worker: unknown message ${t}`)}}function Ze(e,r=ce){m(e,"no worker provided");let t=e.version;return!(!r||!t)}function Xe(e,r){if(!g.isSupported())return!1;let t=r?._nodeWorkers??r?.core?._nodeWorkers;if(!y&&!t)return!1;let o=r?.worker??r?.core?.worker;return Boolean(e.worker&&o)}async function er(e,r,t,o,n){let s=e.id,i=le(e,t),c=g.getWorkerFarm(t?.core).getWorkerPool({name:s,url:i});t=JSON.parse(JSON.stringify(t)),o=JSON.parse(JSON.stringify(o||{}));let f=await c.startJob("process-on-worker",xo.bind(null,n));return f.postMessage("process",{input:r,options:t,context:o}),await(await f.result).result}async function xo(e,r,t,o){switch(t){case"done":r.done(o);break;case"error":r.error(new Error(o.error));break;case"process":let{id:n,input:s,options:i}=o;try{let a=await e(s,i);r.postMessage("done",{id:n,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";r.postMessage("error",{id:n,error:c})}break;default:console.warn(`parse-with-worker unknown message ${t}`)}}function rr(e,r){if(!g.isSupported())return!1;let t=r?._nodeWorkers??r?.core?._nodeWorkers,o=r?.worker??r?.core?.worker;return!p&&!t?!1:Boolean(e.worker&&o)}function tr(e,r,t){if(t=t||e.byteLength,e.byteLength<t||r.byteLength<t)return!1;let o=new Uint8Array(e),n=new Uint8Array(r);for(let s=0;s<o.length;++s)if(o[s]!==n[s])return!1;return!0}function me(...e){return nt(e)}function nt(e){let r=e.map(s=>s instanceof ArrayBuffer?new Uint8Array(s):s),t=r.reduce((s,i)=>s+i.byteLength,0),o=new Uint8Array(t),n=0;for(let s of r)o.set(s,n),n+=s.byteLength;return o.buffer}async function*or(e,r={}){let t=new TextDecoder(void 0,r);for await(let o of e)yield typeof o=="string"?o:t.decode(o,{stream:!0})}async function*nr(e){let r=new TextEncoder;for await(let t of e)yield typeof t=="string"?r.encode(t).buffer:t}async function*sr(e){let r="";for await(let t of e){r+=t;let o;for(;(o=r.indexOf(`
13
- `))>=0;){let n=r.slice(0,o+1);r=r.slice(o+1),yield n}}r.length>0&&(yield r)}async function*ir(e){let r=1;for await(let t of e)yield{counter:r,line:t},r++}async function ar(e,r){let t=Ao(e);for(;;){let{done:o,value:n}=await t.next();if(o){t.return&&t.return();return}if(r(n))return}}async function U(e){let r=[];for await(let t of e)r.push(To(t));return me(...r)}function To(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:t,byteLength:o}=e;return st(r,t,o)}return st(e)}function st(e,r=0,t=e.byteLength-r){let o=new Uint8Array(e,r,t),n=new Uint8Array(o.length);return n.set(o),n.buffer}function Ao(e){if(typeof e[Symbol.asyncIterator]=="function")return e[Symbol.asyncIterator]();if(typeof e[Symbol.iterator]=="function"){let r=e[Symbol.iterator]();return ko(r)}return e}function ko(e){return{next(r){return Promise.resolve(e.next(r))},return(r){return typeof e.return=="function"?Promise.resolve(e.return(r)):Promise.resolve({done:!0,value:r})},throw(r){return typeof e.throw=="function"?Promise.resolve(e.throw(r)):Promise.reject(r)}}}function pe(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let r=process.hrtime();e=r[0]*1e3+r[1]/1e6}else e=Date.now();return e}var $=class{constructor(r,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=r,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(r){return this.sampleSize=r,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(r){return this._count+=r,this._samples++,this._checkSampling(),this}subtractCount(r){return this._count-=r,this._samples++,this._checkSampling(),this}addTime(r){return this._time+=r,this.lastTiming=r,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=pe(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(pe()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var K=class{constructor(r){this.stats={},this.id=r.id,this.stats={},this._initializeStats(r.stats),Object.seal(this)}get(r,t="count"){return this._getOrCreate({name:r,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(let r of Object.values(this.stats))r.reset();return this}forEach(r){for(let t of Object.values(this.stats))r(t)}getTable(){let r={};return this.forEach(t=>{r[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),r}_initializeStats(r=[]){r.forEach(t=>this._getOrCreate(t))}_getOrCreate(r){let{name:t,type:o}=r,n=this.stats[t];return n||(r instanceof $?n=r:n=new $(t,o),this.stats[t]=n),n}};var So="Queued Requests",_o="Active Requests",Bo="Cancelled Requests",Eo="Queued Requests Ever",Lo="Active Requests Ever",Ro={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},Y=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(r={}){this.props={...Ro,...r},this.stats=new K({id:this.props.id}),this.stats.get(So),this.stats.get(_o),this.stats.get(Bo),this.stats.get(Eo),this.stats.get(Lo)}setProps(r){r.throttleRequests!==void 0&&(this.props.throttleRequests=r.throttleRequests),r.maxRequests!==void 0&&(this.props.maxRequests=r.maxRequests),r.debounceTime!==void 0&&(this.props.debounceTime=r.debounceTime)}scheduleRequest(r,t=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(r))return this.requestMap.get(r);let o={handle:r,priority:0,getPriority:t},n=new Promise(s=>(o.resolve=s,o));return this.requestQueue.push(o),this.requestMap.set(r,n),this._issueNewRequests(),n}_issueRequest(r){let{handle:t,resolve:o}=r,n=!1,s=()=>{n||(n=!0,this.requestMap.delete(t),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,o?o({done:s}):Promise.resolve({done:s})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let r=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(r!==0){this._updateAllRequests();for(let t=0;t<r;++t){let o=this.requestQueue.shift();o&&this._issueRequest(o)}}}_updateAllRequests(){let r=this.requestQueue;for(let t=0;t<r.length;++t){let o=r[t];this._updateRequest(o)||(r.splice(t,1),this.requestMap.delete(o.handle),t--)}r.sort((t,o)=>t.priority-o.priority)}_updateRequest(r){return r.priority=r.getPriority(r.handle),r.priority<0?(r.resolve(null),!1):!0}};var cr="",it={};function fr(e){cr=e}function ur(){return cr}function I(e){for(let r in it)if(e.startsWith(r)){let t=it[r];e=e.replace(r,t)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${cr}${e}`),e}var Io="4.4.0-alpha.9",lr={dataType:null,batchType:null,name:"JSON",id:"json",module:"json",version:Io,extensions:["json","geojson"],mimeTypes:["application/json"],category:"json",text:!0,parseTextSync:at,parse:async e=>at(new TextDecoder().decode(e)),options:{}};function at(e){return JSON.parse(e)}function Ee(e){return e&&typeof e=="object"&&e.isBuffer}function O(e){if(Ee(e))return e;if(e instanceof ArrayBuffer)return e;if(ze(e))return Be(e);if(ArrayBuffer.isView(e)){let r=e.buffer;return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?r:r.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(typeof e=="string"){let r=e;return new TextEncoder().encode(r).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function _(e){if(e instanceof ArrayBuffer)return e;if(ze(e))return Be(e);let{buffer:r,byteOffset:t,byteLength:o}=e;return r instanceof ArrayBuffer&&t===0&&o===r.byteLength?r:Be(r,t,o)}function Be(e,r=0,t=e.byteLength-r){let o=new Uint8Array(e,r,t),n=new Uint8Array(o.length);return n.set(o),n.buffer}function mr(e){return ArrayBuffer.isView(e)?e:new Uint8Array(e)}var D={};Mr(D,{dirname:()=>Mo,filename:()=>Oo,join:()=>Wo,resolve:()=>No});function ct(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Oo(e){let r=e?e.lastIndexOf("/"):-1;return r>=0?e.substr(r+1):e}function Mo(e){let r=e?e.lastIndexOf("/"):-1;return r>=0?e.substr(0,r):""}function Wo(...e){let r="/";return e=e.map((t,o)=>(o&&(t=t.replace(new RegExp(`^${r}`),"")),o!==e.length-1&&(t=t.replace(new RegExp(`${r}$`),"")),t)),e.join(r)}function No(...e){let r=[];for(let s=0;s<e.length;s++)r[s]=e[s];let t="",o=!1,n;for(let s=r.length-1;s>=-1&&!o;s--){let i;s>=0?i=r[s]:(n===void 0&&(n=ct()),i=n),i.length!==0&&(t=`${i}/${t}`,o=i.charCodeAt(0)===he)}return t=Fo(t,!o),o?`/${t}`:t.length>0?t:"."}var he=47,pr=46;function Fo(e,r){let t="",o=-1,n=0,s,i=!1;for(let a=0;a<=e.length;++a){if(a<e.length)s=e.charCodeAt(a);else{if(s===he)break;s=he}if(s===he){if(!(o===a-1||n===1))if(o!==a-1&&n===2){if(t.length<2||!i||t.charCodeAt(t.length-1)!==pr||t.charCodeAt(t.length-2)!==pr){if(t.length>2){let c=t.length-1,f=c;for(;f>=0&&t.charCodeAt(f)!==he;--f);if(f!==c){t=f===-1?"":t.slice(0,f),o=a,n=0,i=!1;continue}}else if(t.length===2||t.length===1){t="",o=a,n=0,i=!1;continue}}r&&(t.length>0?t+="/..":t="..",i=!0)}else{let c=e.slice(o+1,a);t.length>0?t+=`/${c}`:t=c,i=!1}o=a,n=0}else s===pr&&n!==-1?++n:n=-1}return t}var de=class{handle;size;bigsize;url;constructor(r){this.handle=r instanceof ArrayBuffer?new Blob([r]):r,this.size=r instanceof ArrayBuffer?r.byteLength:r.size,this.bigsize=BigInt(this.size),this.url=r instanceof File?r.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(r,t){return await this.handle.slice(Number(r),Number(r)+Number(t)).arrayBuffer()}};var ye=new Error("Not implemented"),ge=class{handle;size=0;bigsize=0n;url="";constructor(r,t,o){if(globalThis.loaders?.NodeFile)return new globalThis.loaders.NodeFile(r,t,o);throw p?new Error("Can't instantiate NodeFile in browser."):new Error("Can't instantiate NodeFile. Make sure to import @loaders.gl/polyfills first.")}async read(r,t){throw ye}async write(r,t,o){throw ye}async stat(){throw ye}async truncate(r){throw ye}async append(r){throw ye}async close(){}};var Z=class extends Error{constructor(r,t){super(r),this.reason=t.reason,this.url=t.url,this.response=t.response}reason;url;response};var Co=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Po=/^([-\w.]+\/[-\w.+]+)/;function hr(e,r){return e.toLowerCase()===r.toLowerCase()}function ft(e){let r=Po.exec(e);return r?r[1]:e}function dr(e){let r=Co.exec(e);return r?r[1]:""}var ut=/\?.*/;function lt(e){let r=e.match(ut);return r&&r[0]}function X(e){return e.replace(ut,"")}function mt(e){if(e.length<50)return e;let r=e.slice(e.length-15);return`${e.substr(0,32)}...${r}`}function w(e){return l(e)?e.url:h(e)?("name"in e?e.name:"")||"":typeof e=="string"?e:""}function we(e){if(l(e)){let r=e.headers.get("content-type")||"",t=X(e.url);return ft(r)||dr(t)}return h(e)?e.type||"":typeof e=="string"?dr(e):""}function pt(e){return l(e)?e.headers["content-length"]||-1:h(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function Le(e){if(l(e))return e;let r={},t=pt(e);t>=0&&(r["content-length"]=String(t));let o=w(e),n=we(e);n&&(r["content-type"]=n);let s=await $o(e);s&&(r["x-first-bytes"]=s),typeof e=="string"&&(e=new TextEncoder().encode(e));let i=new Response(e,{headers:r});return Object.defineProperty(i,"url",{value:o}),i}async function yr(e){if(!e.ok)throw await Uo(e)}async function Uo(e){let r=mt(e.url),t=`Failed to fetch resource (${e.status}) ${e.statusText}: ${r}`;t=t.length>100?`${t.slice(0,100)}...`:t;let o={reason:e.statusText,url:e.url,response:e};try{let n=e.headers.get("Content-Type");o.reason=!e.bodyUsed&&n?.includes("application/json")?await e.json():await e.text()}catch{}return new Z(t,o)}async function $o(e){if(typeof e=="string")return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let t=e.slice(0,5);return await new Promise(o=>{let n=new FileReader;n.onload=s=>o(s?.target?.result),n.readAsDataURL(t)})}if(e instanceof ArrayBuffer){let t=e.slice(0,5);return`data:base64,${Do(t)}`}return null}function Do(e){let r="",t=new Uint8Array(e);for(let o=0;o<t.byteLength;o++)r+=String.fromCharCode(t[o]);return btoa(r)}function jo(e){return!vo(e)&&!zo(e)}function vo(e){return e.startsWith("http:")||e.startsWith("https:")}function zo(e){return e.startsWith("data:")}async function j(e,r){if(typeof e=="string"){let t=I(e);return jo(t)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(t,r):await fetch(t,r)}return await Le(e)}async function ht(e,r,t){e instanceof Blob||(e=new Blob([e]));let o=e.slice(r,r+t);return await qo(o)}async function qo(e){return await new Promise((r,t)=>{let o=new FileReader;o.onload=n=>r(n?.target?.result),o.onerror=n=>t(n),o.readAsArrayBuffer(e)})}var gr=new T({id:"loaders.gl"}),Re=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},Ie=class{console;constructor(){this.console=console}log(...r){return this.console.log.bind(this.console,...r)}info(...r){return this.console.info.bind(this.console,...r)}warn(...r){return this.console.warn.bind(this.console,...r)}error(...r){return this.console.error.bind(this.console,...r)}};var Oe={core:{baseUri:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Ie,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:p,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},dt={baseUri:"core.baseUri",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",maxMobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};var wr=["baseUri","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function be(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function B(){let e=be();return e.globalOptions=e.globalOptions||{...Oe,core:{...Oe.core}},v(e.globalOptions)}function br(e){let r=be(),t=B();r.globalOptions=wt(t,e),Ge(e.modules)}function ee(e,r,t,o){return t=t||[],t=Array.isArray(t)?t:[t],Vo(e,t),v(wt(r,e,o))}function v(e){let r=Qo(e);bt(r);for(let t of wr)r.core&&r.core[t]!==void 0&&delete r[t];return r.core&&r.core._workerType!==void 0&&delete r._worker,r}function Vo(e,r){yt(e,null,Oe,dt,r);for(let t of r){let o=e&&e[t.id]||{},n=t.options&&t.options[t.id]||{},s=t.deprecatedOptions&&t.deprecatedOptions[t.id]||{};yt(o,t.id,n,s,r)}}function yt(e,r,t,o,n){let s=r||"Top level",i=r?`${r}.`:"";for(let a in e){let c=!r&&d(e[a]),f=a==="baseUri"&&!r,S=a==="workerUrl"&&r;if(!(a in t)&&!f&&!S){if(a in o)gr.warn(`${s} loader option '${i}${a}' no longer supported, use '${o[a]}'`)();else if(!c){let E=Go(a,n);gr.warn(`${s} loader option '${i}${a}' not recognized. ${E}`)()}}}}function Go(e,r){let t=e.toLowerCase(),o="";for(let n of r)for(let s in n.options){if(e===s)return`Did you mean '${n.id}.${s}'?`;let i=s.toLowerCase();(t.startsWith(i)||i.startsWith(t))&&(o=o||`Did you mean '${n.id}.${s}'?`)}return o}function wt(e,r,t){let o=e.options||{},n={...o};o.core&&(n.core={...o.core}),bt(n),n.core?.log===null&&(n.core={...n.core,log:new Re}),gt(n,v(B()));let s=v(r);return gt(n,s),Ho(n,t),Jo(n),n}function gt(e,r){for(let t in r)if(t in r){let o=r[t];G(o)&&G(e[t])?e[t]={...e[t],...r[t]}:e[t]=r[t]}}function Ho(e,r){if(!r)return;let t=e.baseUri!==void 0,o=e.core?.baseUri!==void 0;!t&&!o&&(e.core||={},e.core.baseUri=r)}function Qo(e){let r={...e};return e.core&&(r.core={...e.core}),r}function bt(e){for(let t of wr)if(e[t]!==void 0){let n=e.core=e.core||{};n[t]===void 0&&(n[t]=e[t])}let r=e._worker;r!==void 0&&(e.core||={},e.core._workerType===void 0&&(e.core._workerType=r))}function Jo(e){let r=e.core;if(r)for(let t of wr)r[t]!==void 0&&(e[t]=r[t])}function b(e){return e?(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions)):!1}function xe(e){z(e,"null loader"),z(b(e),"invalid loader");let r;return Array.isArray(e)&&(r=e[1],e=e[0],e={...e,options:{...e.options,...r}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var xt=()=>{let e=be();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function Tt(e){let r=xt();e=Array.isArray(e)?e:[e];for(let t of e){let o=xe(t);r.find(n=>o===n)||r.unshift(o)}}function At(){return xt()}function kt(){let e=be();e.loaderRegistry=[]}var Ko=/\.([^.]+)$/;async function te(e,r=[],t,o){if(!_t(e))return null;let n=v(t||{});n.core||={};let s=re(e,r,{...n,core:{...n.core,nothrow:!0}},o);if(s)return s;if(h(e)&&(e=await e.slice(0,10).arrayBuffer(),s=re(e,r,n,o)),!s&&!n.core.nothrow)throw new Error(Bt(e));return s}function re(e,r=[],t,o){if(!_t(e))return null;let n=v(t||{});if(n.core||={},r&&!Array.isArray(r))return xe(r);let s=[];r&&(s=s.concat(r)),n.core.ignoreRegisteredLoaders||s.push(...At()),Zo(s);let i=Yo(e,s,n,o);if(!i&&!n.core.nothrow)throw new Error(Bt(e));return i}function Yo(e,r,t,o){let n=w(e),s=we(e),i=X(n)||o?.url,a=null,c="";return t?.core?.mimeType&&(a=xr(r,t?.core?.mimeType),c=`match forced by supplied MIME type ${t?.core?.mimeType}`),a=a||Xo(r,i),c=c||(a?`matched url ${i}`:""),a=a||xr(r,s),c=c||(a?`matched MIME type ${s}`:""),a=a||rn(r,e),c=c||(a?`matched initial data ${Et(e)}`:""),t?.core?.fallbackMimeType&&(a=a||xr(r,t?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${s}`:"")),c&&ve.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function _t(e){return!(e instanceof Response&&e.status===204)}function Bt(e){let r=w(e),t=we(e),o="No valid loader found (";o+=r?`${D.filename(r)}, `:"no url provided, ",o+=`MIME type: ${t?`"${t}"`:"not provided"}, `;let n=e?Et(e):"";return o+=n?` first bytes: "${n}"`:"first bytes: not available",o+=")",o}function Zo(e){for(let r of e)xe(r)}function Xo(e,r){let t=r&&Ko.exec(r),o=t&&t[1];return o?en(e,o):null}function en(e,r){r=r.toLowerCase();for(let t of e)for(let o of t.extensions)if(o.toLowerCase()===r)return t;return null}function xr(e,r){for(let t of e)if(t.mimeTypes?.some(o=>hr(r,o))||hr(r,`application/x.${t.id}`))return t;return null}function rn(e,r){if(!r)return null;for(let t of e)if(typeof r=="string"){if(tn(r,t))return t}else if(ArrayBuffer.isView(r)){if(St(r.buffer,r.byteOffset,t))return t}else if(r instanceof ArrayBuffer&&St(r,0,t))return t;return null}function tn(e,r){return r.testText?r.testText(e):(Array.isArray(r.tests)?r.tests:[r.tests]).some(o=>e.startsWith(o))}function St(e,r,t){return(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>on(e,r,t,n))}function on(e,r,t,o){if(F(o))return tr(o,e,o.byteLength);switch(typeof o){case"function":return o(_(e));case"string":let n=Tr(e,r,o.length);return o===n;default:return!1}}function Et(e,r=5){return typeof e=="string"?e.slice(0,r):ArrayBuffer.isView(e)?Tr(e.buffer,e.byteOffset,r):e instanceof ArrayBuffer?Tr(e,0,r):""}function Tr(e,r,t){if(e.byteLength<r+t)return"";let o=new DataView(e),n="";for(let s=0;s<t;s++)n+=String.fromCharCode(o.getUint8(r+s));return n}var nn=256*1024;function*Lt(e,r){let t=r?.chunkSize||nn,o=0,n=new TextEncoder;for(;o<e.length;){let s=Math.min(e.length-o,t),i=e.slice(o,o+s);o+=s,yield _(n.encode(i))}}function*Rt(e,r={}){let{chunkSize:t=262144}=r,o=0;for(;o<e.byteLength;){let n=Math.min(e.byteLength-o,t),s=new ArrayBuffer(n),i=new Uint8Array(e,o,n);new Uint8Array(s).set(i),o+=n,yield s}}async function*It(e,r){let t=r?.chunkSize||1048576,o=0;for(;o<e.size;){let n=o+t,s=await e.slice(o,n).arrayBuffer();o=n,yield s}}function Ar(e,r){return p?sn(e,r):an(e,r)}async function*sn(e,r){let t=e.getReader(),o;try{for(;;){let n=o||t.read();r?._streamReadAhead&&(o=t.read());let{done:s,value:i}=await n;if(s)return;yield O(i)}}catch{t.releaseLock()}}async function*an(e,r){for await(let t of e)yield O(t)}function oe(e,r){if(typeof e=="string")return Lt(e,r);if(e instanceof ArrayBuffer)return Rt(e,r);if(h(e))return It(e,r);if(L(e))return Ar(e,r);if(l(e)){let t=e.body;if(!t)throw new Error("Readable stream not available on Response");return Ar(t,r)}throw new Error("makeIterator")}var Me="Cannot convert supplied data type";function kr(e,r,t){if(r.text&&typeof e=="string")return e;if(Ee(e)&&(e=e.buffer),F(e)){let o=mr(e);return r.text&&!r.binary?new TextDecoder("utf8").decode(o):O(o)}throw new Error(Me)}async function Ot(e,r,t){if(typeof e=="string"||F(e))return kr(e,r,t);if(h(e)&&(e=await Le(e)),l(e))return await yr(e),r.binary?await e.arrayBuffer():await e.text();if(L(e)&&(e=oe(e,t)),C(e)||H(e))return U(e);throw new Error(Me)}async function Mt(e,r){if(ae(e)&&(e=await e),Q(e))return e;if(l(e)){await yr(e);let t=await e.body;if(!t)throw new Error(Me);return oe(t,r)}return h(e)||L(e)?oe(e,r):H(e)||C(e)?e:cn(e)}function cn(e){if(ArrayBuffer.isView(e))return function*(){yield O(e)}();if(F(e))return function*(){yield O(e)}();if(Q(e))return e;if(C(e))return e[Symbol.iterator]();throw new Error(Me)}function ne(e,r){let t=B(),o=e||t,n=o.fetch??o.core?.fetch;return typeof n=="function"?n:d(n)?s=>j(s,n):r?.fetch?r?.fetch:j}function se(e,r,t){if(t)return t;let o={fetch:ne(r,e),...e};if(o.url){let n=X(o.url);o.baseUrl=n,o.queryString=lt(o.url),o.filename=D.filename(n),o.baseUrl=D.dirname(n)}return Array.isArray(o.loaders)||(o.loaders=null),o}function We(e,r){if(e&&!Array.isArray(e))return e;let t;if(e&&(t=Array.isArray(e)?e:[e]),r&&r.loaders){let o=Array.isArray(r.loaders)?r.loaders:[r.loaders];t=t?[...t,...o]:o}return t&&t.length?t:void 0}async function k(e,r,t,o){r&&!Array.isArray(r)&&!b(r)&&(o=void 0,t=r,r=void 0),e=await e,t=t||{};let n=w(e),i=We(r,o),a=await te(e,i,t);if(!a)return null;let c=ee(t,a,i,n);return o=se({url:n,_parse:k,loaders:i},c,o||null),await fn(a,e,c,o)}async function fn(e,r,t,o){if(Ze(e),t=Ve(e.options,t),l(r)){let{ok:s,redirected:i,status:a,statusText:c,type:f,url:S}=r,E=Object.fromEntries(r.headers.entries());o.response={headers:E,ok:s,redirected:i,status:a,statusText:c,type:f,url:S}}r=await Ot(r,e,t);let n=e;if(n.parseTextSync&&typeof r=="string")return n.parseTextSync(r,t,o);if(Xe(e,t))return await er(e,r,t,o,k);if(n.parseText&&typeof r=="string")return await n.parseText(r,t,o);if(n.parse)return await n.parse(r,t,o);throw m(!n.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}function Wt(e,r,t,o){!Array.isArray(r)&&!b(r)&&(o=void 0,t=r,r=void 0),t=t||{};let s=We(r,o),i=re(e,s,t);if(!i)return null;let a=ee(t,i,s),c=w(e),f=()=>{throw new Error("parseSync called parse (which is async")};return o=se({url:c,_parseSync:f,_parse:f,loaders:r},a,o||null),un(i,e,a,o)}function un(e,r,t,o){if(r=kr(r,e,t),e.parseTextSync&&typeof r=="string")return e.parseTextSync(r,t);if(e.parseSync&&r instanceof ArrayBuffer)return e.parseSync(r,t,o);throw new Error(`${e.name} loader: 'parseSync' not supported by this loader, use 'parse' instead. ${o.url||""}`)}function Sr(e){switch(typeof e=="object"&&e?.shape){case"array-row-table":case"object-row-table":return Array.isArray(e.data);case"geojson-table":return Array.isArray(e.features);case"columnar-table":return e.data&&typeof e.data=="object";case"arrow-table":return Boolean(e?.data?.numRows!==void 0);default:return!1}}function _r(e){switch(e.shape){case"array-row-table":case"object-row-table":return e.data.length;case"geojson-table":return e.features.length;case"arrow-table":return e.data.numRows;case"columnar-table":for(let t of Object.values(e.data))return t.length||0;return 0;default:throw new Error("table")}}function Br(e){return{...e,length:_r(e),batchType:"data"}}async function M(e,r,t,o){let n=Array.isArray(r)?r:void 0;!Array.isArray(r)&&!b(r)&&(o=void 0,t=r,r=void 0),e=await e,t=t||{};let s=w(e),i=await te(e,r,t);if(!i)return[];let a=ee(t,i,n,s);return o=se({url:s,_parseInBatches:M,_parse:k,loaders:n},a,o||null),await ln(i,e,a,o)}async function ln(e,r,t,o){let n=await mn(e,r,t,o);if(!t?.core?.metadata)return n;let s={shape:"metadata",batchType:"metadata",metadata:{_loader:e,_context:o},data:[],bytesUsed:0};async function*i(a){yield s,yield*a}return i(n)}async function mn(e,r,t,o){let n=await Mt(r,t),s=await dn(n,t?.core?.transforms||[]);return e.parseInBatches?e.parseInBatches(s,t,o):pn(s,e,t,o)}async function*pn(e,r,t,o){let n=await U(e),s=await k(n,r,{...t,core:{...t?.core,mimeType:r.mimeTypes[0]}},o);yield hn(s,r)}function hn(e,r){let t=Sr(e)?Br(e):{shape:"unknown",batchType:"data",data:e,length:Array.isArray(e)?e.length:1};return t.mimeType=r.mimeTypes[0],t}async function dn(e,r=[]){let t=e;for await(let o of r)t=o(t);return t}async function Nt(e,r,t,o){let n,s;!Array.isArray(r)&&!b(r)?(n=[],s=r,o=void 0):(n=r,s=t);let i=ne(s),a=e;return typeof e=="string"&&(a=await i(e)),h(e)&&(a=await i(e)),Array.isArray(n)?await k(a,n,s):await k(a,n,s)}function Ct(e,r,t,o){let n;!Array.isArray(r)&&!b(r)?(o=void 0,t=r,n=void 0):n=r;let s=ne(t||{});return Array.isArray(e)?e.map(a=>Ft(a,n,t||{},s)):Ft(e,n,t||{},s)}async function Ft(e,r,t,o){if(typeof e=="string"){let s=await o(e);return Array.isArray(r)?await M(s,r,t):await M(s,r,t)}return Array.isArray(r)?await M(e,r,t):await M(e,r,t)}async function Er(e,r,t){if(r.encode)return await r.encode(e,t);if(r.encodeText){let o=await r.encodeText(e,t);return _(new TextEncoder().encode(o))}if(r.encodeInBatches){let o=Lr(e,r,t),n=[];for await(let s of o)n.push(s);return me(...n)}throw new Error("Writer could not encode data")}async function Pt(e,r,t){if(r.text&&r.encodeText)return await r.encodeText(e,t);if(r.text){let o=await Er(e,r,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function Lr(e,r,t){if(r.encodeInBatches){let o=yn(e);return r.encodeInBatches(o,t)}throw new Error("Writer could not encode data in batches")}function yn(e){return[{...e,start:0,end:e.length}]}async function $t(e,r,t){let n={...B(),...t};return r.encodeURLtoURL?gn(r,e,n):rr(r,n)?await Ye(r,e,n):await r.encode(e,n)}function Rr(e,r,t){if(r.encodeSync)return r.encodeSync(e,t);if(r.encodeTextSync)return _(new TextEncoder().encode(r.encodeTextSync(e,t)));throw new Error(`Writer ${r.name} could not synchronously encode data`)}async function Dt(e,r,t){if(r.encodeText)return await r.encodeText(e,t);if(r.encodeTextSync)return r.encodeTextSync(e,t);if(r.text){let o=await r.encode(e,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function jt(e,r,t){if(r.encodeTextSync)return r.encodeTextSync(e,t);if(r.text&&r.encodeSync){let o=Rr(e,r,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function vt(e,r,t){if(r.encodeInBatches){let o=wn(e);return r.encodeInBatches(o,t)}throw new Error(`Writer ${r.name} could not encode in batches`)}async function Ir(e,r,t,o){if(e=I(e),r=I(r),p||!t.encodeURLtoURL)throw new Error;return await t.encodeURLtoURL(e,r,o)}async function gn(e,r,t){if(p)throw new Error(`Writer ${e.name} not supported in browser`);let o=Ut("input");await new ge(o,"w").write(r);let s=Ut("output"),i=await Ir(o,s,e,t);return(await j(i)).arrayBuffer()}function wn(e){return[{...e,start:0,end:e.length}]}function Ut(e){return`/tmp/${e}`}function zt(e,r,t){let o=t?.core?.type||t.type||"auto",n=o==="auto"?bn(e,r):xn(o,r);if(!n)throw new Error("Not a valid source type");return n.createDataSource(e,t)}function bn(e,r){for(let t of r)if(t.testURL&&t.testURL(e))return t;return null}function xn(e,r){for(let t of r)if(t.type===e)return t;return null}function qt(e,r,t){let o=t?.type||"auto",n=null;if(o==="auto"){for(let s of r)if(typeof e=="string"&&s.testURL&&s.testURL(e))return s}else n=Tn(o,r);if(!n&&!t?.nothrow)throw new Error("Not a valid image source type");return n}function Tn(e,r){for(let t of r)if(t.type===e)return t;return null}function Vt(e,r){if(globalThis.loaders.makeNodeStream)return globalThis.loaders.makeNodeStream(e,r);let t=e[Symbol.asyncIterator]?e[Symbol.asyncIterator]():e[Symbol.iterator]();return new ReadableStream({type:"bytes",async pull(o){try{let{done:n,value:s}=await t.next();n?o.close():o.enqueue(new Uint8Array(s))}catch(n){o.error(n)}},async cancel(){await t?.return?.()}},{highWaterMark:2**24,...r})}var Gt="4.4.0-alpha.9",Ht={dataType:null,batchType:null,name:"Null loader",id:"null",module:"core",version:Gt,worker:!0,mimeTypes:["application/x.empty"],extensions:["null"],tests:[()=>!1],options:{null:{}}},Qt={dataType:null,batchType:null,name:"Null loader",id:"null",module:"core",version:Gt,mimeTypes:["application/x.empty"],extensions:["null"],parse:async(e,r,t)=>Or(e,r||{},t),parseSync:Or,parseInBatches:async function*(r,t,o){for await(let n of r)yield Or(n,t,o)},tests:[()=>!1],options:{null:{}}};function Or(e,r,t){return null}async function Jt(e,r,t=()=>{},o=()=>{}){if(e=await e,!e.ok)return e;let n=e.body;if(!n)return e;let s=e.headers.get("content-length")||0,i=s?parseInt(s):0;if(!(i>0)||typeof ReadableStream>"u"||!n.getReader)return e;let a=new ReadableStream({async start(c){let f=n.getReader();await Kt(c,f,0,i,r,t,o)}});return new Response(a)}async function Kt(e,r,t,o,n,s,i){try{let{done:a,value:c}=await r.read();if(a){s(),e.close();return}t+=c.byteLength;let f=Math.round(t/o*100);n(f,{loadedBytes:t,totalBytes:o}),e.enqueue(c),await Kt(e,r,t,o,n,s,i)}catch(a){e.error(a),i(a)}}var Ne=class{_fetch;files={};lowerCaseFiles={};usedFiles={};constructor(r,t){this._fetch=t?.fetch||fetch;for(let o=0;o<r.length;++o){let n=r[o];this.files[n.name]=n,this.lowerCaseFiles[n.name.toLowerCase()]=n,this.usedFiles[n.name]=!1}this.fetch=this.fetch.bind(this)}async fetch(r,t){if(r.includes("://"))return this._fetch(r,t);let o=this.files[r];if(!o)return new Response(r,{status:400,statusText:"NOT FOUND"});let s=new Headers(t?.headers).get("Range"),i=s&&/bytes=($1)-($2)/.exec(s);if(i){let c=parseInt(i[1]),f=parseInt(i[2]),S=await o.slice(c,f).arrayBuffer(),E=new Response(S);return Object.defineProperty(E,"url",{value:r}),E}let a=new Response(o);return Object.defineProperty(a,"url",{value:r}),a}async readdir(r){let t=[];for(let o in this.files)t.push(o);return t}async stat(r,t){let o=this.files[r];if(!o)throw new Error(r);return{size:o.size}}async unlink(r){delete this.files[r],delete this.lowerCaseFiles[r],this.usedFiles[r]=!0}async openReadableFile(r,t){return new de(this.files[r])}_getFile(r,t){let o=this.files[r]||this.lowerCaseFiles[r];return o&&t&&(this.usedFiles[r]=!0),o}};return to(An);})();
12
+ }`}function Ze(e,r=!0,t){let o=t||new Set;if(e){if(tt(e))o.add(e);else if(tt(e.buffer))o.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(r&&typeof e=="object")for(let n in e)Ze(e[n],r,o)}}return t===void 0?Array.from(o):[]}function tt(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}function Xe(e){if(e===null)return{};let r=Object.assign({},e);return Object.keys(r).forEach(t=>{typeof e[t]=="object"&&!ArrayBuffer.isView(e[t])&&!(e[t]instanceof Array)?r[t]=Xe(e[t]):typeof r[t]=="function"||r[t]instanceof RegExp?r[t]={}:r[t]=e[t]}),r}var er=()=>{},O=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&y||typeof Z<"u"&&!y}constructor(r){let{name:t,source:o,url:n}=r;m(o||n),this.name=t,this.source=o,this.url=n,this.onMessage=er,this.onError=s=>console.log(s),this.worker=y?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=er,this.onError=er,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(r,t){t=t||Ze(r),this.worker.postMessage(r,t)}_getErrorFromErrorEvent(r){let t="Failed to load ";return t+=`worker ${this.name} from ${this.url}. `,r.message&&(t+=`${r.message} in `),r.lineno&&(t+=`:${r.lineno}:${r.colno}`),new Error(t)}_createBrowserWorker(){this._loadableURL=et({source:this.source,url:this.url});let r=new Worker(this._loadableURL,{name:this.name});return r.onmessage=t=>{t.data?this.onMessage(t.data):this.onError(new Error("No data received"))},r.onerror=t=>{this.onError(this._getErrorFromErrorEvent(t)),this.terminated=!0},r.onmessageerror=t=>console.error(t),r}_createNodeWorker(){let r;if(this.url){let o=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,n=this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs";r=new Z(o,{eval:!1,type:n})}else if(this.source)r=new Z(this.source,{eval:!0});else throw new Error("no worker");return r.on("message",t=>{this.onMessage(t)}),r.on("error",t=>{this.onError(t)}),r.on("exit",t=>{}),r}};var le=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return O.isSupported()}constructor(r){this.source=r.source,this.url=r.url,this.setProps(r)}destroy(){this.idleQueue.forEach(r=>r.destroy()),this.isDestroyed=!0}setProps(r){this.props={...this.props,...r},r.name!==void 0&&(this.name=r.name),r.maxConcurrency!==void 0&&(this.maxConcurrency=r.maxConcurrency),r.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=r.maxMobileConcurrency),r.reuseWorkers!==void 0&&(this.reuseWorkers=r.reuseWorkers),r.onDebug!==void 0&&(this.onDebug=r.onDebug)}async startJob(r,t=(n,s,i)=>n.done(i),o=(n,s)=>n.error(s)){let n=new Promise(s=>(this.jobQueue.push({name:r,onMessage:t,onError:o,onStart:s}),this));return this._startQueuedJob(),await n}async _startQueuedJob(){if(!this.jobQueue.length)return;let r=this._getAvailableWorker();if(!r)return;let t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:r,backlog:this.jobQueue.length});let o=new ue(t.name,r);r.onMessage=n=>t.onMessage(o,n.type,n.payload),r.onError=n=>t.onError(o,n),t.onStart(o);try{await o.result}catch(n){console.error(`Worker exception: ${n}`)}finally{this.returnWorkerToQueue(r)}}}returnWorkerToQueue(r){!y||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(r.destroy(),this.count--):this.idleQueue.push(r),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let r=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new O({name:r,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Xr?this.maxMobileConcurrency:this.maxConcurrency}};var wo={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},D=class{props;workerPools=new Map;static isSupported(){return O.isSupported()}static getWorkerFarm(r={}){return D._workerFarm=D._workerFarm||new D({}),D._workerFarm.setProps(r),D._workerFarm}constructor(r){this.props={...wo},this.setProps(r),this.workerPools=new Map}destroy(){for(let r of this.workerPools.values())r.destroy();this.workerPools=new Map}setProps(r){this.props={...this.props,...r};for(let t of this.workerPools.values())t.setProps(this._getWorkerPoolProps())}getWorkerPool(r){let{name:t,source:o,url:n}=r,s=this.workerPools.get(t);return s||(s=new le({name:t,source:o,url:n}),s.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,s)),s}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},g=D;Pr(g,"_workerFarm");function ot(e){let r=e.version!==fe?` (worker-utils@${fe})`:"";return`${e.name}@${e.version}${r}`}function me(e,r={}){let t=r[e.id]||{},o=y?`${e.id}-worker.js`:`${e.id}-worker-node.js`,n=t.workerUrl;if(!n&&e.id==="compression"&&(n=r.workerUrl),(r._workerType||r?.core?._workerType)==="test"&&(y?n=`modules/${e.module}/dist/${o}`:n=`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!n){let i=e.version;i==="latest"&&(i=Yr);let a=i?`@${i}`:"";n=`https://unpkg.com/@loaders.gl/${e.module}${a}/dist/${o}`}return m(n),n}async function rr(e,r,t={},o={}){let n=ot(e),s=g.getWorkerFarm(t),{source:i}=t,a={name:n,source:i};i||(a.url=me(e,t));let c=s.getWorkerPool(a),f=t.jobName||e.name,k=await c.startJob(f,bo.bind(null,o)),R=Xe(t);return k.postMessage("process",{input:r,options:R}),(await k.result).result}async function bo(e,r,t,o){switch(t){case"done":r.done(o);break;case"error":r.error(new Error(o.error));break;case"process":let{id:n,input:s,options:i}=o;try{if(!e.process){r.postMessage("error",{id:n,error:"Worker not set up to process on main thread"});return}let a=await e.process(s,i);r.postMessage("done",{id:n,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";r.postMessage("error",{id:n,error:c})}break;default:console.warn(`process-on-worker: unknown message ${t}`)}}function tr(e,r=fe){m(e,"no worker provided");let t=e.version;return!(!r||!t)}function or(e,r){if(!g.isSupported())return!1;let t=r?._nodeWorkers??r?.core?._nodeWorkers;if(!y&&!t)return!1;let o=r?.worker??r?.core?.worker;return Boolean(e.worker&&o)}async function nr(e,r,t,o,n){let s=e.id,i=me(e,t),c=g.getWorkerFarm(t?.core).getWorkerPool({name:s,url:i});t=JSON.parse(JSON.stringify(t)),o=JSON.parse(JSON.stringify(o||{}));let f=await c.startJob("process-on-worker",xo.bind(null,n));return f.postMessage("process",{input:r,options:t,context:o}),await(await f.result).result}async function xo(e,r,t,o){switch(t){case"done":r.done(o);break;case"error":r.error(new Error(o.error));break;case"process":let{id:n,input:s,options:i}=o;try{let a=await e(s,i);r.postMessage("done",{id:n,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";r.postMessage("error",{id:n,error:c})}break;default:console.warn(`parse-with-worker unknown message ${t}`)}}function sr(e,r){if(!g.isSupported())return!1;let t=r?._nodeWorkers??r?.core?._nodeWorkers,o=r?.worker??r?.core?.worker;return!p&&!t?!1:Boolean(e.worker&&o)}function ir(e,r,t){if(t=t||e.byteLength,e.byteLength<t||r.byteLength<t)return!1;let o=new Uint8Array(e),n=new Uint8Array(r);for(let s=0;s<o.length;++s)if(o[s]!==n[s])return!1;return!0}function pe(...e){return nt(e)}function nt(e){let r=e.map(s=>s instanceof ArrayBuffer?new Uint8Array(s):s),t=r.reduce((s,i)=>s+i.byteLength,0),o=new Uint8Array(t),n=0;for(let s of r)o.set(s,n),n+=s.byteLength;return o.buffer}async function*ar(e,r={}){let t=new TextDecoder(void 0,r);for await(let o of e)yield typeof o=="string"?o:t.decode(o,{stream:!0})}async function*cr(e){let r=new TextEncoder;for await(let t of e)yield typeof t=="string"?r.encode(t).buffer:t}async function*fr(e){let r="";for await(let t of e){r+=t;let o;for(;(o=r.indexOf(`
13
+ `))>=0;){let n=r.slice(0,o+1);r=r.slice(o+1),yield n}}r.length>0&&(yield r)}async function*ur(e){let r=1;for await(let t of e)yield{counter:r,line:t},r++}async function lr(e,r){let t=Ao(e);for(;;){let{done:o,value:n}=await t.next();if(o){t.return&&t.return();return}if(r(n))return}}async function j(e){let r=[];for await(let t of e)r.push(To(t));return pe(...r)}function To(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){let{buffer:r,byteOffset:t,byteLength:o}=e;return st(r,t,o)}return st(e)}function st(e,r=0,t=e.byteLength-r){let o=new Uint8Array(e,r,t),n=new Uint8Array(o.length);return n.set(o),n.buffer}function Ao(e){if(typeof e[Symbol.asyncIterator]=="function")return e[Symbol.asyncIterator]();if(typeof e[Symbol.iterator]=="function"){let r=e[Symbol.iterator]();return _o(r)}return e}function _o(e){return{next(r){return Promise.resolve(e.next(r))},return(r){return typeof e.return=="function"?Promise.resolve(e.return(r)):Promise.resolve({done:!0,value:r})},throw(r){return typeof e.throw=="function"?Promise.resolve(e.throw(r)):Promise.reject(r)}}}function he(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let r=process.hrtime();e=r[0]*1e3+r[1]/1e6}else e=Date.now();return e}var z=class{constructor(r,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=r,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(r){return this.sampleSize=r,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(r){return this._count+=r,this._samples++,this._checkSampling(),this}subtractCount(r){return this._count-=r,this._samples++,this._checkSampling(),this}addTime(r){return this._time+=r,this.lastTiming=r,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=he(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(he()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var X=class{constructor(r){this.stats={},this.id=r.id,this.stats={},this._initializeStats(r.stats),Object.seal(this)}get(r,t="count"){return this._getOrCreate({name:r,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(let r of Object.values(this.stats))r.reset();return this}forEach(r){for(let t of Object.values(this.stats))r(t)}getTable(){let r={};return this.forEach(t=>{r[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),r}_initializeStats(r=[]){r.forEach(t=>this._getOrCreate(t))}_getOrCreate(r){let{name:t,type:o}=r,n=this.stats[t];return n||(r instanceof z?n=r:n=new z(t,o),this.stats[t]=n),n}};var ko="Queued Requests",So="Active Requests",Bo="Cancelled Requests",Eo="Queued Requests Ever",Lo="Active Requests Ever",Ro={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},ee=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(r={}){this.props={...Ro,...r},this.stats=new X({id:this.props.id}),this.stats.get(ko),this.stats.get(So),this.stats.get(Bo),this.stats.get(Eo),this.stats.get(Lo)}setProps(r){r.throttleRequests!==void 0&&(this.props.throttleRequests=r.throttleRequests),r.maxRequests!==void 0&&(this.props.maxRequests=r.maxRequests),r.debounceTime!==void 0&&(this.props.debounceTime=r.debounceTime)}scheduleRequest(r,t=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(r))return this.requestMap.get(r);let o={handle:r,priority:0,getPriority:t},n=new Promise(s=>(o.resolve=s,o));return this.requestQueue.push(o),this.requestMap.set(r,n),this._issueNewRequests(),n}_issueRequest(r){let{handle:t,resolve:o}=r,n=!1,s=()=>{n||(n=!0,this.requestMap.delete(t),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,o?o({done:s}):Promise.resolve({done:s})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let r=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(r!==0){this._updateAllRequests();for(let t=0;t<r;++t){let o=this.requestQueue.shift();o&&this._issueRequest(o)}}}_updateAllRequests(){let r=this.requestQueue;for(let t=0;t<r.length;++t){let o=r[t];this._updateRequest(o)||(r.splice(t,1),this.requestMap.delete(o.handle),t--)}r.sort((t,o)=>t.priority-o.priority)}_updateRequest(r){return r.priority=r.getPriority(r.handle),r.priority<0?(r.resolve(null),!1):!0}};var mr="",it={};function pr(e){mr=e}function hr(){return mr}function C(e){for(let r in it)if(e.startsWith(r)){let t=it[r];e=e.replace(r,t)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${mr}${e}`),e}var Io="4.4.0",dr={dataType:null,batchType:null,name:"JSON",id:"json",module:"json",version:Io,extensions:["json","geojson"],mimeTypes:["application/json"],category:"json",text:!0,parseTextSync:at,parse:async e=>at(new TextDecoder().decode(e)),options:{}};function at(e){return JSON.parse(e)}function Re(e){return e&&typeof e=="object"&&e.isBuffer}function W(e){if(Re(e))return e;if(e instanceof ArrayBuffer)return e;if(He(e))return Le(e);if(ArrayBuffer.isView(e)){let r=e.buffer;return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?r:r.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(typeof e=="string"){let r=e;return new TextEncoder().encode(r).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function S(e){if(e instanceof ArrayBuffer)return e;if(He(e))return Le(e);let{buffer:r,byteOffset:t,byteLength:o}=e;return r instanceof ArrayBuffer&&t===0&&o===r.byteLength?r:Le(r,t,o)}function Le(e,r=0,t=e.byteLength-r){let o=new Uint8Array(e,r,t),n=new Uint8Array(o.length);return n.set(o),n.buffer}function yr(e){return ArrayBuffer.isView(e)?e:new Uint8Array(e)}var B={};Nr(B,{dirname:()=>Co,filename:()=>Oo,join:()=>Wo,resolve:()=>Mo});function ct(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Oo(e){let r=e?e.lastIndexOf("/"):-1;return r>=0?e.substr(r+1):e}function Co(e){let r=e?e.lastIndexOf("/"):-1;return r>=0?e.substr(0,r):""}function Wo(...e){let r="/";return e=e.map((t,o)=>(o&&(t=t.replace(new RegExp(`^${r}`),"")),o!==e.length-1&&(t=t.replace(new RegExp(`${r}$`),"")),t)),e.join(r)}function Mo(...e){let r=[];for(let s=0;s<e.length;s++)r[s]=e[s];let t="",o=!1,n;for(let s=r.length-1;s>=-1&&!o;s--){let i;s>=0?i=r[s]:(n===void 0&&(n=ct()),i=n),i.length!==0&&(t=`${i}/${t}`,o=i.charCodeAt(0)===de)}return t=No(t,!o),o?`/${t}`:t.length>0?t:"."}var de=47,gr=46;function No(e,r){let t="",o=-1,n=0,s,i=!1;for(let a=0;a<=e.length;++a){if(a<e.length)s=e.charCodeAt(a);else{if(s===de)break;s=de}if(s===de){if(!(o===a-1||n===1))if(o!==a-1&&n===2){if(t.length<2||!i||t.charCodeAt(t.length-1)!==gr||t.charCodeAt(t.length-2)!==gr){if(t.length>2){let c=t.length-1,f=c;for(;f>=0&&t.charCodeAt(f)!==de;--f);if(f!==c){t=f===-1?"":t.slice(0,f),o=a,n=0,i=!1;continue}}else if(t.length===2||t.length===1){t="",o=a,n=0,i=!1;continue}}r&&(t.length>0?t+="/..":t="..",i=!0)}else{let c=e.slice(o+1,a);t.length>0?t+=`/${c}`:t=c,i=!1}o=a,n=0}else s===gr&&n!==-1?++n:n=-1}return t}var ye=class{handle;size;bigsize;url;constructor(r){this.handle=r instanceof ArrayBuffer?new Blob([r]):r,this.size=r instanceof ArrayBuffer?r.byteLength:r.size,this.bigsize=BigInt(this.size),this.url=r instanceof File?r.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(r,t){return await this.handle.slice(Number(r),Number(r)+Number(t)).arrayBuffer()}};var ge=new Error("Not implemented"),we=class{handle;size=0;bigsize=0n;url="";constructor(r,t,o){if(globalThis.loaders?.NodeFile)return new globalThis.loaders.NodeFile(r,t,o);throw p?new Error("Can't instantiate NodeFile in browser."):new Error("Can't instantiate NodeFile. Make sure to import @loaders.gl/polyfills first.")}async read(r,t){throw ge}async write(r,t,o){throw ge}async stat(){throw ge}async truncate(r){throw ge}async append(r){throw ge}async close(){}};var re=class extends Error{constructor(r,t){super(r),this.reason=t.reason,this.url=t.url,this.response=t.response}reason;url;response};var Po=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Fo=/^([-\w.]+\/[-\w.+]+)/;function wr(e,r){return e.toLowerCase()===r.toLowerCase()}function ft(e){let r=Fo.exec(e);return r?r[1]:e}function br(e){let r=Po.exec(e);return r?r[1]:""}var ut=/\?.*/;function lt(e){let r=e.match(ut);return r&&r[0]}function M(e){return e.replace(ut,"")}function mt(e){if(e.length<50)return e;let r=e.slice(e.length-15);return`${e.substr(0,32)}...${r}`}function b(e){return l(e)?e.url:h(e)?("name"in e?e.name:"")||"":typeof e=="string"?e:""}function te(e){if(l(e)){let r=e.headers.get("content-type")||"",t=M(e.url);return ft(r)||br(t)}return h(e)?e.type||"":typeof e=="string"?br(e):""}function pt(e){return l(e)?e.headers["content-length"]||-1:h(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function Ie(e){if(l(e))return e;let r={},t=pt(e);t>=0&&(r["content-length"]=String(t));let o=b(e),n=te(e);n&&(r["content-type"]=n);let s=await $o(e);s&&(r["x-first-bytes"]=s),typeof e=="string"&&(e=new TextEncoder().encode(e));let i=new Response(e,{headers:r});return Object.defineProperty(i,"url",{value:o}),i}async function xr(e){if(!e.ok)throw await Uo(e)}async function Uo(e){let r=mt(e.url),t=`Failed to fetch resource (${e.status}) ${e.statusText}: ${r}`;t=t.length>100?`${t.slice(0,100)}...`:t;let o={reason:e.statusText,url:e.url,response:e};try{let n=e.headers.get("Content-Type");o.reason=!e.bodyUsed&&n?.includes("application/json")?await e.json():await e.text()}catch{}return new re(t,o)}async function $o(e){if(typeof e=="string")return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let t=e.slice(0,5);return await new Promise(o=>{let n=new FileReader;n.onload=s=>o(s?.target?.result),n.readAsDataURL(t)})}if(e instanceof ArrayBuffer){let t=e.slice(0,5);return`data:base64,${vo(t)}`}return null}function vo(e){let r="",t=new Uint8Array(e);for(let o=0;o<t.byteLength;o++)r+=String.fromCharCode(t[o]);return btoa(r)}function Do(e){return!jo(e)&&!zo(e)}function jo(e){return e.startsWith("http:")||e.startsWith("https:")}function zo(e){return e.startsWith("data:")}async function q(e,r){if(typeof e=="string"){let t=C(e);return Do(t)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(t,r):await fetch(t,r)}return await Ie(e)}async function ht(e,r,t){e instanceof Blob||(e=new Blob([e]));let o=e.slice(r,r+t);return await qo(o)}async function qo(e){return await new Promise((r,t)=>{let o=new FileReader;o.onload=n=>r(n?.target?.result),o.onerror=n=>t(n),o.readAsArrayBuffer(e)})}var be=new w({id:"loaders.gl"}),Oe=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},Ce=class{console;constructor(){this.console=console}log(...r){return this.console.log.bind(this.console,...r)}info(...r){return this.console.info.bind(this.console,...r)}warn(...r){return this.console.warn.bind(this.console,...r)}error(...r){return this.console.error.bind(this.console,...r)}};var We={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Ce,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:p,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},dt={baseUri:"core.baseUrl",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",maxMobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"core.baseUrl",method:"core.fetch.method",headers:"core.fetch.headers",body:"core.fetch.body",mode:"core.fetch.mode",credentials:"core.fetch.credentials",cache:"core.fetch.cache",redirect:"core.fetch.redirect",referrer:"core.fetch.referrer",referrerPolicy:"core.fetch.referrerPolicy",integrity:"core.fetch.integrity",keepalive:"core.fetch.keepalive",signal:"core.fetch.signal"};var Tr=["baseUrl","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function xe(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function L(){let e=xe();return e.globalOptions=e.globalOptions||{...We,core:{...We.core}},E(e.globalOptions)}function Ar(e){let r=xe(),t=L();r.globalOptions=wt(t,e),Ke(e.modules)}function oe(e,r,t,o){return t=t||[],t=Array.isArray(t)?t:[t],Vo(e,t),E(wt(r,e,o))}function E(e){let r=Qo(e);bt(r);for(let t of Tr)r.core&&r.core[t]!==void 0&&delete r[t];return r.core&&r.core._workerType!==void 0&&delete r._worker,r}function Vo(e,r){yt(e,null,We,dt,r);for(let t of r){let o=e&&e[t.id]||{},n=t.options&&t.options[t.id]||{},s=t.deprecatedOptions&&t.deprecatedOptions[t.id]||{};yt(o,t.id,n,s,r)}}function yt(e,r,t,o,n){let s=r||"Top level",i=r?`${r}.`:"";for(let a in e){let c=!r&&d(e[a]),f=a==="baseUri"&&!r,k=a==="workerUrl"&&r;if(!(a in t)&&!f&&!k){if(a in o)be.level>0&&be.warn(`${s} loader option '${i}${a}' no longer supported, use '${o[a]}'`)();else if(!c&&be.level>0){let R=Go(a,n);be.warn(`${s} loader option '${i}${a}' not recognized. ${R}`)()}}}}function Go(e,r){let t=e.toLowerCase(),o="";for(let n of r)for(let s in n.options){if(e===s)return`Did you mean '${n.id}.${s}'?`;let i=s.toLowerCase();(t.startsWith(i)||i.startsWith(t))&&(o=o||`Did you mean '${n.id}.${s}'?`)}return o}function wt(e,r,t){let o=e.options||{},n={...o};o.core&&(n.core={...o.core}),bt(n),n.core?.log===null&&(n.core={...n.core,log:new Oe}),gt(n,E(L()));let s=E(r);return gt(n,s),Ho(n,t),Jo(n),n}function gt(e,r){for(let t in r)if(t in r){let o=r[t];J(o)&&J(e[t])?e[t]={...e[t],...r[t]}:e[t]=r[t]}}function Ho(e,r){if(!r)return;e.core?.baseUrl!==void 0||(e.core||={},e.core.baseUrl=B.dirname(M(r)))}function Qo(e){let r={...e};return e.core&&(r.core={...e.core}),r}function bt(e){e.baseUri!==void 0&&(e.core||={},e.core.baseUrl===void 0&&(e.core.baseUrl=e.baseUri));for(let t of Tr)if(e[t]!==void 0){let n=e.core=e.core||{};n[t]===void 0&&(n[t]=e[t])}let r=e._worker;r!==void 0&&(e.core||={},e.core._workerType===void 0&&(e.core._workerType=r))}function Jo(e){let r=e.core;if(r)for(let t of Tr)r[t]!==void 0&&(e[t]=r[t])}function x(e){return e?(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions)):!1}function Te(e){V(e,"null loader"),V(x(e),"invalid loader");let r;return Array.isArray(e)&&(r=e[1],e=e[0],e={...e,options:{...e.options,...r}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var xt=()=>{let e=xe();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function Tt(e){let r=xt();e=Array.isArray(e)?e:[e];for(let t of e){let o=Te(t);r.find(n=>o===n)||r.unshift(o)}}function At(){return xt()}function _t(){let e=xe();e.loaderRegistry=[]}var Ko=/\.([^.]+)$/;async function ne(e,r=[],t,o){if(!Bt(e))return null;let n=E(t||{});if(n.core||={},e instanceof Response&&kt(e)){let i=await e.clone().text(),a=N(i,r,{...n,core:{...n.core,nothrow:!0}},o);if(a)return a}let s=N(e,r,{...n,core:{...n.core,nothrow:!0}},o);if(s)return s;if(h(e)&&(e=await e.slice(0,10).arrayBuffer(),s=N(e,r,n,o)),!s&&e instanceof Response&&kt(e)){let i=await e.clone().text();s=N(i,r,n,o)}if(!s&&!n.core.nothrow)throw new Error(Et(e));return s}function kt(e){let r=te(e);return Boolean(r&&(r.startsWith("text/")||r==="application/json"||r.endsWith("+json")))}function N(e,r=[],t,o){if(!Bt(e))return null;let n=E(t||{});if(n.core||={},r&&!Array.isArray(r))return Te(r);let s=[];r&&(s=s.concat(r)),n.core.ignoreRegisteredLoaders||s.push(...At()),Zo(s);let i=Yo(e,s,n,o);if(!i&&!n.core.nothrow)throw new Error(Et(e));return i}function Yo(e,r,t,o){let n=b(e),s=te(e),i=M(n)||o?.url,a=null,c="";return t?.core?.mimeType&&(a=_r(r,t?.core?.mimeType),c=`match forced by supplied MIME type ${t?.core?.mimeType}`),a=a||Xo(r,i),c=c||(a?`matched url ${i}`:""),a=a||_r(r,s),c=c||(a?`matched MIME type ${s}`:""),a=a||rn(r,e),c=c||(a?`matched initial data ${Lt(e)}`:""),t?.core?.fallbackMimeType&&(a=a||_r(r,t?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${s}`:"")),c&&Ge.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function Bt(e){return!(e instanceof Response&&e.status===204)}function Et(e){let r=b(e),t=te(e),o="No valid loader found (";o+=r?`${B.filename(r)}, `:"no url provided, ",o+=`MIME type: ${t?`"${t}"`:"not provided"}, `;let n=e?Lt(e):"";return o+=n?` first bytes: "${n}"`:"first bytes: not available",o+=")",o}function Zo(e){for(let r of e)Te(r)}function Xo(e,r){let t=r&&Ko.exec(r),o=t&&t[1];return o?en(e,o):null}function en(e,r){r=r.toLowerCase();for(let t of e)for(let o of t.extensions)if(o.toLowerCase()===r)return t;return null}function _r(e,r){for(let t of e)if(t.mimeTypes?.some(o=>wr(r,o))||wr(r,`application/x.${t.id}`))return t;return null}function rn(e,r){if(!r)return null;for(let t of e)if(typeof r=="string"){if(tn(r,t))return t}else if(ArrayBuffer.isView(r)){if(St(r.buffer,r.byteOffset,t))return t}else if(r instanceof ArrayBuffer&&St(r,0,t))return t;return null}function tn(e,r){return r.testText?r.testText(e):(Array.isArray(r.tests)?r.tests:[r.tests]).some(o=>e.startsWith(o))}function St(e,r,t){return(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>on(e,r,t,n))}function on(e,r,t,o){if($(o))return ir(o,e,o.byteLength);switch(typeof o){case"function":return o(S(e));case"string":let n=kr(e,r,o.length);return o===n;default:return!1}}function Lt(e,r=5){return typeof e=="string"?e.slice(0,r):ArrayBuffer.isView(e)?kr(e.buffer,e.byteOffset,r):e instanceof ArrayBuffer?kr(e,0,r):""}function kr(e,r,t){if(e.byteLength<r+t)return"";let o=new DataView(e),n="";for(let s=0;s<t;s++)n+=String.fromCharCode(o.getUint8(r+s));return n}var nn=256*1024;function*Rt(e,r){let t=r?.chunkSize||nn,o=0,n=new TextEncoder;for(;o<e.length;){let s=Math.min(e.length-o,t),i=e.slice(o,o+s);o+=s,yield S(n.encode(i))}}function*It(e,r={}){let{chunkSize:t=262144}=r,o=0;for(;o<e.byteLength;){let n=Math.min(e.byteLength-o,t),s=new ArrayBuffer(n),i=new Uint8Array(e,o,n);new Uint8Array(s).set(i),o+=n,yield s}}async function*Ot(e,r){let t=r?.chunkSize||1048576,o=0;for(;o<e.size;){let n=o+t,s=await e.slice(o,n).arrayBuffer();o=n,yield s}}function Sr(e,r){return p?sn(e,r):an(e,r)}async function*sn(e,r){let t=e.getReader(),o;try{for(;;){let n=o||t.read();r?._streamReadAhead&&(o=t.read());let{done:s,value:i}=await n;if(s)return;yield W(i)}}catch{t.releaseLock()}}async function*an(e,r){for await(let t of e)yield W(t)}function se(e,r){if(typeof e=="string")return Rt(e,r);if(e instanceof ArrayBuffer)return It(e,r);if(h(e))return Ot(e,r);if(I(e))return Sr(e,r);if(l(e)){let t=e.body;if(!t)throw new Error("Readable stream not available on Response");return Sr(t,r)}throw new Error("makeIterator")}var Me="Cannot convert supplied data type";function Br(e,r,t){if(r.text&&typeof e=="string")return e;if(Re(e)&&(e=e.buffer),$(e)){let o=yr(e);return r.text&&!r.binary?new TextDecoder("utf8").decode(o):W(o)}throw new Error(Me)}async function Ct(e,r,t){if(typeof e=="string"||$(e))return Br(e,r,t);if(h(e)&&(e=await Ie(e)),l(e))return await xr(e),r.binary?await e.arrayBuffer():await e.text();if(I(e)&&(e=se(e,t)),v(e)||K(e))return j(e);throw new Error(Me)}async function Wt(e,r){if(ce(e)&&(e=await e),Y(e))return e;if(l(e)){await xr(e);let t=await e.body;if(!t)throw new Error(Me);return se(t,r)}return h(e)||I(e)?se(e,r):K(e)||v(e)?e:cn(e)}function cn(e){if(ArrayBuffer.isView(e))return function*(){yield W(e)}();if($(e))return function*(){yield W(e)}();if(Y(e))return e;if(v(e))return e[Symbol.iterator]();throw new Error(Me)}function ie(e,r){let t=L(),o=e||t,n=o.fetch??o.core?.fetch;return typeof n=="function"?n:d(n)?s=>q(s,n):r?.fetch?r?.fetch:q}function ae(e,r,t){if(t)return t;let o={fetch:ie(r,e),...e};if(o.url){let n=M(o.url);o.baseUrl=n,o.queryString=lt(o.url),o.filename=B.filename(n),o.baseUrl=B.dirname(n)}return Array.isArray(o.loaders)||(o.loaders=null),o}function Ne(e,r){if(e&&!Array.isArray(e))return e;let t;if(e&&(t=Array.isArray(e)?e:[e]),r&&r.loaders){let o=Array.isArray(r.loaders)?r.loaders:[r.loaders];t=t?[...t,...o]:o}return t&&t.length?t:void 0}async function _(e,r,t,o){r&&!Array.isArray(r)&&!x(r)&&(o=void 0,t=r,r=void 0),e=await e,t=t||{};let n=b(e),i=Ne(r,o),a=await ne(e,i,t);if(!a)return null;let c=oe(t,a,i,n);return o=ae({url:n,_parse:_,loaders:i},c,o||null),await fn(a,e,c,o)}async function fn(e,r,t,o){if(tr(e),t=Je(e.options,t),l(r)){let{ok:s,redirected:i,status:a,statusText:c,type:f,url:k}=r,R=Object.fromEntries(r.headers.entries());o.response={headers:R,ok:s,redirected:i,status:a,statusText:c,type:f,url:k}}r=await Ct(r,e,t);let n=e;if(n.parseTextSync&&typeof r=="string")return n.parseTextSync(r,t,o);if(or(e,t))return await nr(e,r,t,o,_);if(n.parseText&&typeof r=="string")return await n.parseText(r,t,o);if(n.parse)return await n.parse(r,t,o);throw m(!n.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}function Mt(e,r,t,o){!Array.isArray(r)&&!x(r)&&(o=void 0,t=r,r=void 0),t=t||{};let s=Ne(r,o),i=N(e,s,t);if(!i)return null;let a=oe(t,i,s),c=b(e),f=()=>{throw new Error("parseSync called parse (which is async")};return o=ae({url:c,_parseSync:f,_parse:f,loaders:r},a,o||null),un(i,e,a,o)}function un(e,r,t,o){if(r=Br(r,e,t),e.parseTextSync&&typeof r=="string")return e.parseTextSync(r,t);if(e.parseSync&&r instanceof ArrayBuffer)return e.parseSync(r,t,o);throw new Error(`${e.name} loader: 'parseSync' not supported by this loader, use 'parse' instead. ${o.url||""}`)}function Er(e){switch(typeof e=="object"&&e?.shape){case"array-row-table":case"object-row-table":return Array.isArray(e.data);case"geojson-table":return Array.isArray(e.features);case"columnar-table":return e.data&&typeof e.data=="object";case"arrow-table":return Boolean(e?.data?.numRows!==void 0);default:return!1}}function Lr(e){switch(e.shape){case"array-row-table":case"object-row-table":return e.data.length;case"geojson-table":return e.features.length;case"arrow-table":return e.data.numRows;case"columnar-table":for(let t of Object.values(e.data))return t.length||0;return 0;default:throw new Error("table")}}function Rr(e){return{...e,length:Lr(e),batchType:"data"}}async function P(e,r,t,o){let n=Array.isArray(r)?r:void 0;!Array.isArray(r)&&!x(r)&&(o=void 0,t=r,r=void 0),e=await e,t=t||{};let s=b(e),i=await ne(e,r,t);if(!i)return[];let a=oe(t,i,n,s);return o=ae({url:s,_parseInBatches:P,_parse:_,loaders:n},a,o||null),await ln(i,e,a,o)}async function ln(e,r,t,o){let n=await mn(e,r,t,o);if(!t?.core?.metadata)return n;let s={shape:"metadata",batchType:"metadata",metadata:{_loader:e,_context:o},data:[],bytesUsed:0};async function*i(a){yield s,yield*a}return i(n)}async function mn(e,r,t,o){let n=await Wt(r,t),s=await dn(n,t?.core?.transforms||[]);return e.parseInBatches?e.parseInBatches(s,t,o):pn(s,e,t,o)}async function*pn(e,r,t,o){let n=await j(e),s=await _(n,r,{...t,core:{...t?.core,mimeType:r.mimeTypes[0]}},o);yield hn(s,r)}function hn(e,r){let t=Er(e)?Rr(e):{shape:"unknown",batchType:"data",data:e,length:Array.isArray(e)?e.length:1};return t.mimeType=r.mimeTypes[0],t}async function dn(e,r=[]){let t=e;for await(let o of r)t=o(t);return t}async function Nt(e,r,t,o){let n,s;!Array.isArray(r)&&!x(r)?(n=[],s=r,o=void 0):(n=r,s=t);let i=ie(s),a=e;return typeof e=="string"&&(a=await i(e)),h(e)&&(a=await i(e)),typeof e=="string"&&(E(s||{}).core?.baseUrl||(s={...s,core:{...s?.core,baseUrl:e}})),Array.isArray(n)?await _(a,n,s):await _(a,n,s)}function Ft(e,r,t,o){let n;!Array.isArray(r)&&!x(r)?(o=void 0,t=r,n=void 0):n=r;let s=ie(t||{});return Array.isArray(e)?e.map(a=>Pt(a,n,t||{},s)):Pt(e,n,t||{},s)}async function Pt(e,r,t,o){if(typeof e=="string"){let s=await o(e);return Array.isArray(r)?await P(s,r,t):await P(s,r,t)}return Array.isArray(r)?await P(e,r,t):await P(e,r,t)}async function Ir(e,r,t){if(r.encode)return await r.encode(e,t);if(r.encodeText){let o=await r.encodeText(e,t);return S(new TextEncoder().encode(o))}if(r.encodeInBatches){let o=Or(e,r,t),n=[];for await(let s of o)n.push(s);return pe(...n)}throw new Error("Writer could not encode data")}async function Ut(e,r,t){if(r.text&&r.encodeText)return await r.encodeText(e,t);if(r.text){let o=await Ir(e,r,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function Or(e,r,t){if(r.encodeInBatches){let o=yn(e);return r.encodeInBatches(o,t)}throw new Error("Writer could not encode data in batches")}function yn(e){return[{...e,start:0,end:e.length}]}async function vt(e,r,t){let n={...L(),...t};return r.encodeURLtoURL?gn(r,e,n):sr(r,n)?await rr(r,e,n):await r.encode(e,n)}function Cr(e,r,t){if(r.encodeSync)return r.encodeSync(e,t);if(r.encodeTextSync)return S(new TextEncoder().encode(r.encodeTextSync(e,t)));throw new Error(`Writer ${r.name} could not synchronously encode data`)}async function Dt(e,r,t){if(r.encodeText)return await r.encodeText(e,t);if(r.encodeTextSync)return r.encodeTextSync(e,t);if(r.text){let o=await r.encode(e,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function jt(e,r,t){if(r.encodeTextSync)return r.encodeTextSync(e,t);if(r.text&&r.encodeSync){let o=Cr(e,r,t);return new TextDecoder().decode(o)}throw new Error(`Writer ${r.name} could not encode data as text`)}function zt(e,r,t){if(r.encodeInBatches){let o=wn(e);return r.encodeInBatches(o,t)}throw new Error(`Writer ${r.name} could not encode in batches`)}async function Wr(e,r,t,o){if(e=C(e),r=C(r),p||!t.encodeURLtoURL)throw new Error;return await t.encodeURLtoURL(e,r,o)}async function gn(e,r,t){if(p)throw new Error(`Writer ${e.name} not supported in browser`);let o=$t("input");await new we(o,"w").write(r);let s=$t("output"),i=await Wr(o,s,e,t);return(await q(i)).arrayBuffer()}function wn(e){return[{...e,start:0,end:e.length}]}function $t(e){return`/tmp/${e}`}function qt(e,r,t){let o=t?.core?.type||t.type||"auto",n=o==="auto"?bn(e,r):xn(o,r);if(!n)throw new Error("Not a valid source type");return n.createDataSource(e,t)}function bn(e,r){for(let t of r)if(t.testURL&&t.testURL(e))return t;return null}function xn(e,r){for(let t of r)if(t.type===e)return t;return null}function Vt(e,r,t){let o=t?.type||"auto",n=null;if(o==="auto"){for(let s of r)if(typeof e=="string"&&s.testURL&&s.testURL(e))return s}else n=Tn(o,r);if(!n&&!t?.nothrow)throw new Error("Not a valid image source type");return n}function Tn(e,r){for(let t of r)if(t.type===e)return t;return null}function Gt(e,r){if(globalThis.loaders.makeNodeStream)return globalThis.loaders.makeNodeStream(e,r);let t=e[Symbol.asyncIterator]?e[Symbol.asyncIterator]():e[Symbol.iterator]();return new ReadableStream({type:"bytes",async pull(o){try{let{done:n,value:s}=await t.next();n?o.close():o.enqueue(new Uint8Array(s))}catch(n){o.error(n)}},async cancel(){await t?.return?.()}},{highWaterMark:2**24,...r})}var Ht="4.4.0",Qt={dataType:null,batchType:null,name:"Null loader",id:"null",module:"core",version:Ht,worker:!0,mimeTypes:["application/x.empty"],extensions:["null"],tests:[()=>!1],options:{null:{}}},Jt={dataType:null,batchType:null,name:"Null loader",id:"null",module:"core",version:Ht,mimeTypes:["application/x.empty"],extensions:["null"],parse:async(e,r,t)=>Mr(e,r||{},t),parseSync:Mr,parseInBatches:async function*(r,t,o){for await(let n of r)yield Mr(n,t,o)},tests:[()=>!1],options:{null:{}}};function Mr(e,r,t){return null}async function Kt(e,r,t=()=>{},o=()=>{}){if(e=await e,!e.ok)return e;let n=e.body;if(!n)return e;let s=e.headers.get("content-length")||0,i=s?parseInt(s):0;if(!(i>0)||typeof ReadableStream>"u"||!n.getReader)return e;let a=new ReadableStream({async start(c){let f=n.getReader();await Yt(c,f,0,i,r,t,o)}});return new Response(a)}async function Yt(e,r,t,o,n,s,i){try{let{done:a,value:c}=await r.read();if(a){s(),e.close();return}t+=c.byteLength;let f=Math.round(t/o*100);n(f,{loadedBytes:t,totalBytes:o}),e.enqueue(c),await Yt(e,r,t,o,n,s,i)}catch(a){e.error(a),i(a)}}var Pe=class{_fetch;files={};lowerCaseFiles={};usedFiles={};constructor(r,t){this._fetch=t?.fetch||fetch;for(let o=0;o<r.length;++o){let n=r[o];this.files[n.name]=n,this.lowerCaseFiles[n.name.toLowerCase()]=n,this.usedFiles[n.name]=!1}this.fetch=this.fetch.bind(this)}async fetch(r,t){if(r.includes("://"))return this._fetch(r,t);let o=this.files[r];if(!o)return new Response(r,{status:400,statusText:"NOT FOUND"});let s=new Headers(t?.headers).get("Range"),i=s&&/bytes=($1)-($2)/.exec(s);if(i){let c=parseInt(i[1]),f=parseInt(i[2]),k=await o.slice(c,f).arrayBuffer(),R=new Response(k);return Object.defineProperty(R,"url",{value:r}),R}let a=new Response(o);return Object.defineProperty(a,"url",{value:r}),a}async readdir(r){let t=[];for(let o in this.files)t.push(o);return t}async stat(r,t){let o=this.files[r];if(!o)throw new Error(r);return{size:o.size}}async unlink(r){delete this.files[r],delete this.lowerCaseFiles[r],this.usedFiles[r]=!0}async openReadableFile(r,t){return new ye(this.files[r])}_getFile(r,t){let o=this.files[r]||this.lowerCaseFiles[r];return o&&t&&(this.usedFiles[r]=!0),o}};return oo(An);})();
14
14
  return __exports__;
15
15
  });
package/dist/index.cjs CHANGED
@@ -367,8 +367,8 @@ var ConsoleLog = class {
367
367
  var import_loader_utils4 = require("@loaders.gl/loader-utils");
368
368
  var DEFAULT_LOADER_OPTIONS = {
369
369
  core: {
370
- baseUri: void 0,
371
- // baseUri
370
+ baseUrl: void 0,
371
+ // baseUrl
372
372
  fetch: null,
373
373
  mimeType: void 0,
374
374
  fallbackMimeType: void 0,
@@ -400,8 +400,8 @@ var DEFAULT_LOADER_OPTIONS = {
400
400
  }
401
401
  };
402
402
  var REMOVED_LOADER_OPTIONS = {
403
- // baseUri
404
- baseUri: "core.baseUri",
403
+ // deprecated top-level alias
404
+ baseUri: "core.baseUrl",
405
405
  fetch: "core.fetch",
406
406
  mimeType: "core.mimeType",
407
407
  fallbackMimeType: "core.fallbackMimeType",
@@ -426,25 +426,25 @@ var REMOVED_LOADER_OPTIONS = {
426
426
  // Older deprecations
427
427
  throws: "nothrow",
428
428
  dataType: "(no longer used)",
429
- uri: "baseUri",
429
+ uri: "core.baseUrl",
430
430
  // Warn if fetch options are used on toplevel
431
- method: "fetch.method",
432
- headers: "fetch.headers",
433
- body: "fetch.body",
434
- mode: "fetch.mode",
435
- credentials: "fetch.credentials",
436
- cache: "fetch.cache",
437
- redirect: "fetch.redirect",
438
- referrer: "fetch.referrer",
439
- referrerPolicy: "fetch.referrerPolicy",
440
- integrity: "fetch.integrity",
441
- keepalive: "fetch.keepalive",
442
- signal: "fetch.signal"
431
+ method: "core.fetch.method",
432
+ headers: "core.fetch.headers",
433
+ body: "core.fetch.body",
434
+ mode: "core.fetch.mode",
435
+ credentials: "core.fetch.credentials",
436
+ cache: "core.fetch.cache",
437
+ redirect: "core.fetch.redirect",
438
+ referrer: "core.fetch.referrer",
439
+ referrerPolicy: "core.fetch.referrerPolicy",
440
+ integrity: "core.fetch.integrity",
441
+ keepalive: "core.fetch.keepalive",
442
+ signal: "core.fetch.signal"
443
443
  };
444
444
 
445
445
  // dist/lib/loader-utils/option-utils.js
446
446
  var CORE_LOADER_OPTION_KEYS = [
447
- "baseUri",
447
+ "baseUrl",
448
448
  "fetch",
449
449
  "mimeType",
450
450
  "fallbackMimeType",
@@ -525,10 +525,14 @@ function validateOptionsObject(options, id, defaultOptions, deprecatedOptions, l
525
525
  const isWorkerUrlOption = key === "workerUrl" && id;
526
526
  if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {
527
527
  if (key in deprecatedOptions) {
528
- probeLog.warn(`${loaderName} loader option '${prefix}${key}' no longer supported, use '${deprecatedOptions[key]}'`)();
528
+ if (probeLog.level > 0) {
529
+ probeLog.warn(`${loaderName} loader option '${prefix}${key}' no longer supported, use '${deprecatedOptions[key]}'`)();
530
+ }
529
531
  } else if (!isSubOptions) {
530
- const suggestion = findSimilarOption(key, loaders);
531
- probeLog.warn(`${loaderName} loader option '${prefix}${key}' not recognized. ${suggestion}`)();
532
+ if (probeLog.level > 0) {
533
+ const suggestion = findSimilarOption(key, loaders);
534
+ probeLog.warn(`${loaderName} loader option '${prefix}${key}' not recognized. ${suggestion}`)();
535
+ }
532
536
  }
533
537
  }
534
538
  }
@@ -588,11 +592,10 @@ function addUrlOptions(options, url) {
588
592
  if (!url) {
589
593
  return;
590
594
  }
591
- const hasTopLevelBaseUri = options.baseUri !== void 0;
592
- const hasCoreBaseUri = ((_a = options.core) == null ? void 0 : _a.baseUri) !== void 0;
593
- if (!hasTopLevelBaseUri && !hasCoreBaseUri) {
595
+ const hasCoreBaseUrl = ((_a = options.core) == null ? void 0 : _a.baseUrl) !== void 0;
596
+ if (!hasCoreBaseUrl) {
594
597
  options.core ||= {};
595
- options.core.baseUri = url;
598
+ options.core.baseUrl = import_loader_utils5.path.dirname(stripQueryString(url));
596
599
  }
597
600
  }
598
601
  function cloneLoaderOptions(options) {
@@ -603,6 +606,12 @@ function cloneLoaderOptions(options) {
603
606
  return clonedOptions;
604
607
  }
605
608
  function moveDeprecatedTopLevelOptionsToCore(options) {
609
+ if (options.baseUri !== void 0) {
610
+ options.core ||= {};
611
+ if (options.core.baseUrl === void 0) {
612
+ options.core.baseUrl = options.baseUri;
613
+ }
614
+ }
606
615
  for (const key of CORE_LOADER_OPTION_KEYS) {
607
616
  if (options[key] !== void 0) {
608
617
  const coreOptions = options.core = options.core || {};
@@ -698,6 +707,13 @@ async function selectLoader(data, loaders = [], options, context) {
698
707
  }
699
708
  const normalizedOptions = normalizeLoaderOptions(options || {});
700
709
  normalizedOptions.core ||= {};
710
+ if (data instanceof Response && mayContainText(data)) {
711
+ const text = await data.clone().text();
712
+ const textLoader = selectLoaderSync(text, loaders, { ...normalizedOptions, core: { ...normalizedOptions.core, nothrow: true } }, context);
713
+ if (textLoader) {
714
+ return textLoader;
715
+ }
716
+ }
701
717
  let loader = selectLoaderSync(data, loaders, { ...normalizedOptions, core: { ...normalizedOptions.core, nothrow: true } }, context);
702
718
  if (loader) {
703
719
  return loader;
@@ -706,11 +722,19 @@ async function selectLoader(data, loaders = [], options, context) {
706
722
  data = await data.slice(0, 10).arrayBuffer();
707
723
  loader = selectLoaderSync(data, loaders, normalizedOptions, context);
708
724
  }
725
+ if (!loader && data instanceof Response && mayContainText(data)) {
726
+ const text = await data.clone().text();
727
+ loader = selectLoaderSync(text, loaders, normalizedOptions, context);
728
+ }
709
729
  if (!loader && !normalizedOptions.core.nothrow) {
710
730
  throw new Error(getNoValidLoaderMessage(data));
711
731
  }
712
732
  return loader;
713
733
  }
734
+ function mayContainText(response) {
735
+ const mimeType = getResourceMIMEType(response);
736
+ return Boolean(mimeType && (mimeType.startsWith("text/") || mimeType === "application/json" || mimeType.endsWith("+json")));
737
+ }
714
738
  function selectLoaderSync(data, loaders = [], options, context) {
715
739
  if (!validHTTPResponse(data)) {
716
740
  return null;
@@ -1298,6 +1322,7 @@ async function applyInputTransforms(inputIterator, transforms = []) {
1298
1322
  // dist/lib/api/load.js
1299
1323
  var import_loader_utils16 = require("@loaders.gl/loader-utils");
1300
1324
  async function load(url, loaders, options, context) {
1325
+ var _a;
1301
1326
  let resolvedLoaders;
1302
1327
  let resolvedOptions;
1303
1328
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
@@ -1316,6 +1341,18 @@ async function load(url, loaders, options, context) {
1316
1341
  if ((0, import_loader_utils16.isBlob)(url)) {
1317
1342
  data = await fetch2(url);
1318
1343
  }
1344
+ if (typeof url === "string") {
1345
+ const normalizedOptions = normalizeLoaderOptions(resolvedOptions || {});
1346
+ if (!((_a = normalizedOptions.core) == null ? void 0 : _a.baseUrl)) {
1347
+ resolvedOptions = {
1348
+ ...resolvedOptions,
1349
+ core: {
1350
+ ...resolvedOptions == null ? void 0 : resolvedOptions.core,
1351
+ baseUrl: url
1352
+ }
1353
+ };
1354
+ }
1355
+ }
1319
1356
  return Array.isArray(resolvedLoaders) ? await parse(data, resolvedLoaders, resolvedOptions) : await parse(data, resolvedLoaders, resolvedOptions);
1320
1357
  }
1321
1358
 
@@ -1567,7 +1604,7 @@ function makeStream(source, options) {
1567
1604
  }
1568
1605
 
1569
1606
  // dist/null-loader.js
1570
- var VERSION = true ? "4.4.0-alpha.9" : "latest";
1607
+ var VERSION = true ? "4.4.0" : "latest";
1571
1608
  var NullWorkerLoader = {
1572
1609
  dataType: null,
1573
1610
  batchType: null,
@@ -1685,13 +1722,13 @@ var BrowserFileSystem = class {
1685
1722
  * Implementation of fetch against this file system
1686
1723
  * Delegates to global fetch for http{s}:// or data://
1687
1724
  */
1688
- async fetch(path3, options) {
1689
- if (path3.includes("://")) {
1690
- return this._fetch(path3, options);
1725
+ async fetch(path4, options) {
1726
+ if (path4.includes("://")) {
1727
+ return this._fetch(path4, options);
1691
1728
  }
1692
- const file = this.files[path3];
1729
+ const file = this.files[path4];
1693
1730
  if (!file) {
1694
- return new Response(path3, { status: 400, statusText: "NOT FOUND" });
1731
+ return new Response(path4, { status: 400, statusText: "NOT FOUND" });
1695
1732
  }
1696
1733
  const headers = new Headers(options == null ? void 0 : options.headers);
1697
1734
  const range = headers.get("Range");
@@ -1701,11 +1738,11 @@ var BrowserFileSystem = class {
1701
1738
  const end = parseInt(bytes[2]);
1702
1739
  const data = await file.slice(start, end).arrayBuffer();
1703
1740
  const response2 = new Response(data);
1704
- Object.defineProperty(response2, "url", { value: path3 });
1741
+ Object.defineProperty(response2, "url", { value: path4 });
1705
1742
  return response2;
1706
1743
  }
1707
1744
  const response = new Response(file);
1708
- Object.defineProperty(response, "url", { value: path3 });
1745
+ Object.defineProperty(response, "url", { value: path4 });
1709
1746
  return response;
1710
1747
  }
1711
1748
  /**
@@ -1715,28 +1752,28 @@ var BrowserFileSystem = class {
1715
1752
  */
1716
1753
  async readdir(dirname) {
1717
1754
  const files = [];
1718
- for (const path3 in this.files) {
1719
- files.push(path3);
1755
+ for (const path4 in this.files) {
1756
+ files.push(path4);
1720
1757
  }
1721
1758
  return files;
1722
1759
  }
1723
1760
  /**
1724
1761
  * Return information (size) about files in this file system
1725
1762
  */
1726
- async stat(path3, options) {
1727
- const file = this.files[path3];
1763
+ async stat(path4, options) {
1764
+ const file = this.files[path4];
1728
1765
  if (!file) {
1729
- throw new Error(path3);
1766
+ throw new Error(path4);
1730
1767
  }
1731
1768
  return { size: file.size };
1732
1769
  }
1733
1770
  /**
1734
1771
  * Just removes the file from the list
1735
1772
  */
1736
- async unlink(path3) {
1737
- delete this.files[path3];
1738
- delete this.lowerCaseFiles[path3];
1739
- this.usedFiles[path3] = true;
1773
+ async unlink(path4) {
1774
+ delete this.files[path4];
1775
+ delete this.lowerCaseFiles[path4];
1776
+ this.usedFiles[path4] = true;
1740
1777
  }
1741
1778
  // implements IRandomAccessFileSystem
1742
1779
  // RANDOM ACCESS
@@ -1745,10 +1782,10 @@ var BrowserFileSystem = class {
1745
1782
  }
1746
1783
  // PRIVATE
1747
1784
  // Supports case independent paths, and file usage tracking
1748
- _getFile(path3, used) {
1749
- const file = this.files[path3] || this.lowerCaseFiles[path3];
1785
+ _getFile(path4, used) {
1786
+ const file = this.files[path4] || this.lowerCaseFiles[path4];
1750
1787
  if (file && used) {
1751
- this.usedFiles[path3] = true;
1788
+ this.usedFiles[path4] = true;
1752
1789
  }
1753
1790
  return file;
1754
1791
  }