@loaders.gl/3d-tiles 3.1.0-beta.7 → 3.1.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/bundle.js +2335 -184
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +78 -23
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +8 -8
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +42 -30
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +59 -57
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +238 -201
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +78 -62
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +6 -5
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +22 -15
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +13 -6
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +23 -14
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +22 -15
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +3 -3
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -6
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +197 -69
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +18 -17
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +3 -3
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +3 -3
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +270 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +66 -26
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +4 -3
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +141 -53
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +17 -19
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +8 -7
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +36 -10
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +48 -12
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +45 -0
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +161 -14
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +63 -38
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +198 -117
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +74 -15
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +1 -1
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +5 -5
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +142 -37
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/esm/lib/constants.js +2 -1
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +173 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +10 -0
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +67 -0
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +4 -0
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +9 -2
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -1
- package/dist/lib/ion/ion.d.ts +3 -3
- package/dist/lib/ion/ion.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +39 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +189 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -2
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.js +18 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +16 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +67 -1
- package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile.js +3 -0
- package/dist/tiles-3d-loader.d.ts.map +1 -1
- package/dist/tiles-3d-loader.js +8 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/lib/constants.ts +2 -1
- package/src/lib/ion/{ion.js → ion.ts} +0 -0
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +255 -0
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +4 -3
- package/src/lib/parsers/parse-3d-tile-gltf.js +16 -0
- package/src/lib/parsers/parse-3d-tile-header.ts +82 -1
- package/src/lib/parsers/parse-3d-tile.ts +4 -0
- package/src/tiles-3d-loader.ts +17 -2
- package/src/types.ts +7 -2
package/dist/bundle.js
CHANGED
|
@@ -89,6 +89,421 @@
|
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
+
// ../worker-utils/src/lib/worker-farm/worker-job.ts
|
|
93
|
+
var WorkerJob;
|
|
94
|
+
var init_worker_job = __esm({
|
|
95
|
+
"../worker-utils/src/lib/worker-farm/worker-job.ts"() {
|
|
96
|
+
init_assert2();
|
|
97
|
+
WorkerJob = class {
|
|
98
|
+
constructor(jobName, workerThread) {
|
|
99
|
+
this.name = jobName;
|
|
100
|
+
this.workerThread = workerThread;
|
|
101
|
+
this.isRunning = true;
|
|
102
|
+
this._resolve = () => {
|
|
103
|
+
};
|
|
104
|
+
this._reject = () => {
|
|
105
|
+
};
|
|
106
|
+
this.result = new Promise((resolve, reject) => {
|
|
107
|
+
this._resolve = resolve;
|
|
108
|
+
this._reject = reject;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
postMessage(type, payload) {
|
|
112
|
+
this.workerThread.postMessage({
|
|
113
|
+
source: "loaders.gl",
|
|
114
|
+
type,
|
|
115
|
+
payload
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
done(value) {
|
|
119
|
+
assert3(this.isRunning);
|
|
120
|
+
this.isRunning = false;
|
|
121
|
+
this._resolve(value);
|
|
122
|
+
}
|
|
123
|
+
error(error) {
|
|
124
|
+
assert3(this.isRunning);
|
|
125
|
+
this.isRunning = false;
|
|
126
|
+
this._reject(error);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// ../worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts
|
|
133
|
+
function getLoadableWorkerURL(props) {
|
|
134
|
+
assert3(props.source && !props.url || !props.source && props.url);
|
|
135
|
+
let workerURL = workerURLCache.get(props.source || props.url);
|
|
136
|
+
if (!workerURL) {
|
|
137
|
+
if (props.url) {
|
|
138
|
+
workerURL = getLoadableWorkerURLFromURL(props.url);
|
|
139
|
+
workerURLCache.set(props.url, workerURL);
|
|
140
|
+
}
|
|
141
|
+
if (props.source) {
|
|
142
|
+
workerURL = getLoadableWorkerURLFromSource(props.source);
|
|
143
|
+
workerURLCache.set(props.source, workerURL);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
assert3(workerURL);
|
|
147
|
+
return workerURL;
|
|
148
|
+
}
|
|
149
|
+
function getLoadableWorkerURLFromURL(url) {
|
|
150
|
+
if (!url.startsWith("http")) {
|
|
151
|
+
return url;
|
|
152
|
+
}
|
|
153
|
+
const workerSource = buildScriptSource(url);
|
|
154
|
+
return getLoadableWorkerURLFromSource(workerSource);
|
|
155
|
+
}
|
|
156
|
+
function getLoadableWorkerURLFromSource(workerSource) {
|
|
157
|
+
const blob = new Blob([workerSource], { type: "application/javascript" });
|
|
158
|
+
return URL.createObjectURL(blob);
|
|
159
|
+
}
|
|
160
|
+
function buildScriptSource(workerUrl) {
|
|
161
|
+
return `try {
|
|
162
|
+
importScripts('${workerUrl}');
|
|
163
|
+
} catch (error) {
|
|
164
|
+
console.error(error);
|
|
165
|
+
throw error;
|
|
166
|
+
}`;
|
|
167
|
+
}
|
|
168
|
+
var workerURLCache;
|
|
169
|
+
var init_get_loadable_worker_url = __esm({
|
|
170
|
+
"../worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts"() {
|
|
171
|
+
init_assert2();
|
|
172
|
+
workerURLCache = new Map();
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// ../worker-utils/src/lib/worker-utils/get-transfer-list.ts
|
|
177
|
+
function getTransferList(object, recursive = true, transfers) {
|
|
178
|
+
const transfersSet = transfers || new Set();
|
|
179
|
+
if (!object) {
|
|
180
|
+
} else if (isTransferable(object)) {
|
|
181
|
+
transfersSet.add(object);
|
|
182
|
+
} else if (isTransferable(object.buffer)) {
|
|
183
|
+
transfersSet.add(object.buffer);
|
|
184
|
+
} else if (ArrayBuffer.isView(object)) {
|
|
185
|
+
} else if (recursive && typeof object === "object") {
|
|
186
|
+
for (const key in object) {
|
|
187
|
+
getTransferList(object[key], recursive, transfersSet);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return transfers === void 0 ? Array.from(transfersSet) : [];
|
|
191
|
+
}
|
|
192
|
+
function isTransferable(object) {
|
|
193
|
+
if (!object) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
if (object instanceof ArrayBuffer) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
if (typeof MessagePort !== "undefined" && object instanceof MessagePort) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
if (typeof ImageBitmap !== "undefined" && object instanceof ImageBitmap) {
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
if (typeof OffscreenCanvas !== "undefined" && object instanceof OffscreenCanvas) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
var init_get_transfer_list = __esm({
|
|
211
|
+
"../worker-utils/src/lib/worker-utils/get-transfer-list.ts"() {
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// ../worker-utils/src/lib/worker-farm/worker-thread.ts
|
|
216
|
+
var NOOP, WorkerThread;
|
|
217
|
+
var init_worker_thread = __esm({
|
|
218
|
+
"../worker-utils/src/lib/worker-farm/worker-thread.ts"() {
|
|
219
|
+
init_assert2();
|
|
220
|
+
init_get_loadable_worker_url();
|
|
221
|
+
init_get_transfer_list();
|
|
222
|
+
NOOP = () => {
|
|
223
|
+
};
|
|
224
|
+
WorkerThread = class {
|
|
225
|
+
constructor(props) {
|
|
226
|
+
this.terminated = false;
|
|
227
|
+
this._loadableURL = "";
|
|
228
|
+
const { name: name8, source, url } = props;
|
|
229
|
+
assert3(source || url);
|
|
230
|
+
this.name = name8;
|
|
231
|
+
this.source = source;
|
|
232
|
+
this.url = url;
|
|
233
|
+
this.onMessage = NOOP;
|
|
234
|
+
this.onError = (error) => console.log(error);
|
|
235
|
+
this.worker = this._createBrowserWorker();
|
|
236
|
+
}
|
|
237
|
+
static isSupported() {
|
|
238
|
+
return typeof Worker !== "undefined";
|
|
239
|
+
}
|
|
240
|
+
destroy() {
|
|
241
|
+
this.onMessage = NOOP;
|
|
242
|
+
this.onError = NOOP;
|
|
243
|
+
this.worker.terminate();
|
|
244
|
+
this.terminated = true;
|
|
245
|
+
}
|
|
246
|
+
get isRunning() {
|
|
247
|
+
return Boolean(this.onMessage);
|
|
248
|
+
}
|
|
249
|
+
postMessage(data, transferList) {
|
|
250
|
+
transferList = transferList || getTransferList(data);
|
|
251
|
+
this.worker.postMessage(data, transferList);
|
|
252
|
+
}
|
|
253
|
+
_getErrorFromErrorEvent(event) {
|
|
254
|
+
let message = "Failed to load ";
|
|
255
|
+
message += `worker ${this.name} from ${this.url}. `;
|
|
256
|
+
if (event.message) {
|
|
257
|
+
message += `${event.message} in `;
|
|
258
|
+
}
|
|
259
|
+
if (event.lineno) {
|
|
260
|
+
message += `:${event.lineno}:${event.colno}`;
|
|
261
|
+
}
|
|
262
|
+
return new Error(message);
|
|
263
|
+
}
|
|
264
|
+
_createBrowserWorker() {
|
|
265
|
+
this._loadableURL = getLoadableWorkerURL({ source: this.source, url: this.url });
|
|
266
|
+
const worker = new Worker(this._loadableURL, { name: this.name });
|
|
267
|
+
worker.onmessage = (event) => {
|
|
268
|
+
if (!event.data) {
|
|
269
|
+
this.onError(new Error("No data received"));
|
|
270
|
+
} else {
|
|
271
|
+
this.onMessage(event.data);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
worker.onerror = (error) => {
|
|
275
|
+
this.onError(this._getErrorFromErrorEvent(error));
|
|
276
|
+
this.terminated = true;
|
|
277
|
+
};
|
|
278
|
+
worker.onmessageerror = (event) => console.error(event);
|
|
279
|
+
return worker;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// ../worker-utils/src/lib/worker-farm/worker-pool.ts
|
|
286
|
+
var WorkerPool;
|
|
287
|
+
var init_worker_pool = __esm({
|
|
288
|
+
"../worker-utils/src/lib/worker-farm/worker-pool.ts"() {
|
|
289
|
+
init_globals2();
|
|
290
|
+
init_worker_thread();
|
|
291
|
+
init_worker_job();
|
|
292
|
+
WorkerPool = class {
|
|
293
|
+
constructor(props) {
|
|
294
|
+
this.name = "unnamed";
|
|
295
|
+
this.maxConcurrency = 1;
|
|
296
|
+
this.maxMobileConcurrency = 1;
|
|
297
|
+
this.onDebug = () => {
|
|
298
|
+
};
|
|
299
|
+
this.reuseWorkers = true;
|
|
300
|
+
this.props = {};
|
|
301
|
+
this.jobQueue = [];
|
|
302
|
+
this.idleQueue = [];
|
|
303
|
+
this.count = 0;
|
|
304
|
+
this.isDestroyed = false;
|
|
305
|
+
this.source = props.source;
|
|
306
|
+
this.url = props.url;
|
|
307
|
+
this.setProps(props);
|
|
308
|
+
}
|
|
309
|
+
destroy() {
|
|
310
|
+
this.idleQueue.forEach((worker) => worker.destroy());
|
|
311
|
+
this.isDestroyed = true;
|
|
312
|
+
}
|
|
313
|
+
setProps(props) {
|
|
314
|
+
this.props = { ...this.props, ...props };
|
|
315
|
+
if (props.name !== void 0) {
|
|
316
|
+
this.name = props.name;
|
|
317
|
+
}
|
|
318
|
+
if (props.maxConcurrency !== void 0) {
|
|
319
|
+
this.maxConcurrency = props.maxConcurrency;
|
|
320
|
+
}
|
|
321
|
+
if (props.maxMobileConcurrency !== void 0) {
|
|
322
|
+
this.maxMobileConcurrency = props.maxMobileConcurrency;
|
|
323
|
+
}
|
|
324
|
+
if (props.reuseWorkers !== void 0) {
|
|
325
|
+
this.reuseWorkers = props.reuseWorkers;
|
|
326
|
+
}
|
|
327
|
+
if (props.onDebug !== void 0) {
|
|
328
|
+
this.onDebug = props.onDebug;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async startJob(name8, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
|
|
332
|
+
const startPromise = new Promise((onStart) => {
|
|
333
|
+
this.jobQueue.push({ name: name8, onMessage: onMessage2, onError, onStart });
|
|
334
|
+
return this;
|
|
335
|
+
});
|
|
336
|
+
this._startQueuedJob();
|
|
337
|
+
return await startPromise;
|
|
338
|
+
}
|
|
339
|
+
async _startQueuedJob() {
|
|
340
|
+
if (!this.jobQueue.length) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const workerThread = this._getAvailableWorker();
|
|
344
|
+
if (!workerThread) {
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
const queuedJob = this.jobQueue.shift();
|
|
348
|
+
if (queuedJob) {
|
|
349
|
+
this.onDebug({
|
|
350
|
+
message: "Starting job",
|
|
351
|
+
name: queuedJob.name,
|
|
352
|
+
workerThread,
|
|
353
|
+
backlog: this.jobQueue.length
|
|
354
|
+
});
|
|
355
|
+
const job = new WorkerJob(queuedJob.name, workerThread);
|
|
356
|
+
workerThread.onMessage = (data) => queuedJob.onMessage(job, data.type, data.payload);
|
|
357
|
+
workerThread.onError = (error) => queuedJob.onError(job, error);
|
|
358
|
+
queuedJob.onStart(job);
|
|
359
|
+
try {
|
|
360
|
+
await job.result;
|
|
361
|
+
} finally {
|
|
362
|
+
this.returnWorkerToQueue(workerThread);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
returnWorkerToQueue(worker) {
|
|
367
|
+
const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();
|
|
368
|
+
if (shouldDestroyWorker) {
|
|
369
|
+
worker.destroy();
|
|
370
|
+
this.count--;
|
|
371
|
+
} else {
|
|
372
|
+
this.idleQueue.push(worker);
|
|
373
|
+
}
|
|
374
|
+
if (!this.isDestroyed) {
|
|
375
|
+
this._startQueuedJob();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
_getAvailableWorker() {
|
|
379
|
+
if (this.idleQueue.length > 0) {
|
|
380
|
+
return this.idleQueue.shift() || null;
|
|
381
|
+
}
|
|
382
|
+
if (this.count < this._getMaxConcurrency()) {
|
|
383
|
+
this.count++;
|
|
384
|
+
const name8 = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;
|
|
385
|
+
return new WorkerThread({ name: name8, source: this.source, url: this.url });
|
|
386
|
+
}
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
_getMaxConcurrency() {
|
|
390
|
+
return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
// ../worker-utils/src/lib/worker-farm/worker-farm.ts
|
|
397
|
+
var DEFAULT_PROPS, WorkerFarm;
|
|
398
|
+
var init_worker_farm = __esm({
|
|
399
|
+
"../worker-utils/src/lib/worker-farm/worker-farm.ts"() {
|
|
400
|
+
init_worker_pool();
|
|
401
|
+
init_worker_thread();
|
|
402
|
+
DEFAULT_PROPS = {
|
|
403
|
+
maxConcurrency: 3,
|
|
404
|
+
maxMobileConcurrency: 1,
|
|
405
|
+
onDebug: () => {
|
|
406
|
+
},
|
|
407
|
+
reuseWorkers: true
|
|
408
|
+
};
|
|
409
|
+
WorkerFarm = class {
|
|
410
|
+
constructor(props) {
|
|
411
|
+
this.workerPools = new Map();
|
|
412
|
+
this.props = { ...DEFAULT_PROPS };
|
|
413
|
+
this.setProps(props);
|
|
414
|
+
this.workerPools = new Map();
|
|
415
|
+
}
|
|
416
|
+
static isSupported() {
|
|
417
|
+
return WorkerThread.isSupported();
|
|
418
|
+
}
|
|
419
|
+
static getWorkerFarm(props = {}) {
|
|
420
|
+
WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});
|
|
421
|
+
WorkerFarm._workerFarm.setProps(props);
|
|
422
|
+
return WorkerFarm._workerFarm;
|
|
423
|
+
}
|
|
424
|
+
destroy() {
|
|
425
|
+
for (const workerPool of this.workerPools.values()) {
|
|
426
|
+
workerPool.destroy();
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
setProps(props) {
|
|
430
|
+
this.props = { ...this.props, ...props };
|
|
431
|
+
for (const workerPool of this.workerPools.values()) {
|
|
432
|
+
workerPool.setProps(this._getWorkerPoolProps());
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
getWorkerPool(options) {
|
|
436
|
+
const { name: name8, source, url } = options;
|
|
437
|
+
let workerPool = this.workerPools.get(name8);
|
|
438
|
+
if (!workerPool) {
|
|
439
|
+
workerPool = new WorkerPool({
|
|
440
|
+
name: name8,
|
|
441
|
+
source,
|
|
442
|
+
url
|
|
443
|
+
});
|
|
444
|
+
workerPool.setProps(this._getWorkerPoolProps());
|
|
445
|
+
this.workerPools.set(name8, workerPool);
|
|
446
|
+
}
|
|
447
|
+
return workerPool;
|
|
448
|
+
}
|
|
449
|
+
_getWorkerPoolProps() {
|
|
450
|
+
return {
|
|
451
|
+
maxConcurrency: this.props.maxConcurrency,
|
|
452
|
+
maxMobileConcurrency: this.props.maxMobileConcurrency,
|
|
453
|
+
reuseWorkers: this.props.reuseWorkers,
|
|
454
|
+
onDebug: this.props.onDebug
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
|
|
461
|
+
// ../worker-utils/src/lib/worker-api/get-worker-url.ts
|
|
462
|
+
function getWorkerURL(worker, options = {}) {
|
|
463
|
+
const workerOptions = options[worker.id] || {};
|
|
464
|
+
const workerFile = `${worker.id}-worker.js`;
|
|
465
|
+
let url = workerOptions.workerUrl;
|
|
466
|
+
if (!url && worker.id === "compression") {
|
|
467
|
+
url = options.workerUrl;
|
|
468
|
+
}
|
|
469
|
+
if (options._workerType === "test") {
|
|
470
|
+
url = `modules/${worker.module}/dist/${workerFile}`;
|
|
471
|
+
}
|
|
472
|
+
if (!url) {
|
|
473
|
+
let version = worker.version;
|
|
474
|
+
if (version === "latest") {
|
|
475
|
+
version = NPM_TAG;
|
|
476
|
+
}
|
|
477
|
+
const versionTag = version ? `@${version}` : "";
|
|
478
|
+
url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;
|
|
479
|
+
}
|
|
480
|
+
assert3(url);
|
|
481
|
+
return url;
|
|
482
|
+
}
|
|
483
|
+
var NPM_TAG;
|
|
484
|
+
var init_get_worker_url = __esm({
|
|
485
|
+
"../worker-utils/src/lib/worker-api/get-worker-url.ts"() {
|
|
486
|
+
init_assert2();
|
|
487
|
+
NPM_TAG = "beta";
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
// ../worker-utils/src/lib/worker-api/validate-worker-version.ts
|
|
492
|
+
function validateWorkerVersion(worker, coreVersion = VERSION) {
|
|
493
|
+
assert3(worker, "no worker provided");
|
|
494
|
+
const workerVersion = worker.version;
|
|
495
|
+
if (!coreVersion || !workerVersion) {
|
|
496
|
+
return false;
|
|
497
|
+
}
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
var init_validate_worker_version = __esm({
|
|
501
|
+
"../worker-utils/src/lib/worker-api/validate-worker-version.ts"() {
|
|
502
|
+
init_assert2();
|
|
503
|
+
init_version();
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
|
|
92
507
|
// (disabled):../worker-utils/src/lib/node/require-utils.node
|
|
93
508
|
var init_require_utils = __esm({
|
|
94
509
|
"(disabled):../worker-utils/src/lib/node/require-utils.node"() {
|
|
@@ -172,10 +587,63 @@
|
|
|
172
587
|
// ../worker-utils/src/index.ts
|
|
173
588
|
var init_src = __esm({
|
|
174
589
|
"../worker-utils/src/index.ts"() {
|
|
590
|
+
init_assert2();
|
|
591
|
+
init_worker_farm();
|
|
592
|
+
init_get_worker_url();
|
|
593
|
+
init_validate_worker_version();
|
|
175
594
|
init_library_utils();
|
|
176
595
|
}
|
|
177
596
|
});
|
|
178
597
|
|
|
598
|
+
// ../loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts
|
|
599
|
+
function canParseWithWorker(loader, options) {
|
|
600
|
+
if (!WorkerFarm.isSupported()) {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
return loader.worker && options?.worker;
|
|
604
|
+
}
|
|
605
|
+
async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
|
|
606
|
+
const name8 = loader.id;
|
|
607
|
+
const url = getWorkerURL(loader, options);
|
|
608
|
+
const workerFarm = WorkerFarm.getWorkerFarm(options);
|
|
609
|
+
const workerPool = workerFarm.getWorkerPool({ name: name8, url });
|
|
610
|
+
options = JSON.parse(JSON.stringify(options));
|
|
611
|
+
const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
|
|
612
|
+
job.postMessage("process", {
|
|
613
|
+
input: data,
|
|
614
|
+
options
|
|
615
|
+
});
|
|
616
|
+
const result = await job.result;
|
|
617
|
+
return await result.result;
|
|
618
|
+
}
|
|
619
|
+
async function onMessage(parseOnMainThread, job, type, payload) {
|
|
620
|
+
switch (type) {
|
|
621
|
+
case "done":
|
|
622
|
+
job.done(payload);
|
|
623
|
+
break;
|
|
624
|
+
case "error":
|
|
625
|
+
job.error(new Error(payload.error));
|
|
626
|
+
break;
|
|
627
|
+
case "process":
|
|
628
|
+
const { id, input, options } = payload;
|
|
629
|
+
try {
|
|
630
|
+
const result = await parseOnMainThread(input, options);
|
|
631
|
+
job.postMessage("done", { id, result });
|
|
632
|
+
} catch (error) {
|
|
633
|
+
const message = error instanceof Error ? error.message : "unknown error";
|
|
634
|
+
job.postMessage("error", { id, error: message });
|
|
635
|
+
}
|
|
636
|
+
break;
|
|
637
|
+
default:
|
|
638
|
+
console.warn(`parse-with-worker unknown message ${type}`);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
var init_parse_with_worker = __esm({
|
|
642
|
+
"../loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts"() {
|
|
643
|
+
init_src();
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
|
|
179
647
|
// ../loader-utils/src/lib/binary-utils/get-first-characters.ts
|
|
180
648
|
function getFirstCharacters(data, length4 = 5) {
|
|
181
649
|
if (typeof data === "string") {
|
|
@@ -218,7 +686,71 @@
|
|
|
218
686
|
}
|
|
219
687
|
});
|
|
220
688
|
|
|
689
|
+
// ../loader-utils/src/lib/binary-utils/buffer-utils.ts
|
|
690
|
+
function isBuffer(value) {
|
|
691
|
+
return value && typeof value === "object" && value.isBuffer;
|
|
692
|
+
}
|
|
693
|
+
function bufferToArrayBuffer(buffer) {
|
|
694
|
+
if (isBuffer(buffer)) {
|
|
695
|
+
const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
|
|
696
|
+
return typedArray.slice().buffer;
|
|
697
|
+
}
|
|
698
|
+
return buffer;
|
|
699
|
+
}
|
|
700
|
+
var init_buffer_utils = __esm({
|
|
701
|
+
"../loader-utils/src/lib/binary-utils/buffer-utils.ts"() {
|
|
702
|
+
}
|
|
703
|
+
});
|
|
704
|
+
|
|
221
705
|
// ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts
|
|
706
|
+
function toArrayBuffer(data) {
|
|
707
|
+
if (isBuffer(data)) {
|
|
708
|
+
return bufferToArrayBuffer(data);
|
|
709
|
+
}
|
|
710
|
+
if (data instanceof ArrayBuffer) {
|
|
711
|
+
return data;
|
|
712
|
+
}
|
|
713
|
+
if (ArrayBuffer.isView(data)) {
|
|
714
|
+
if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
|
|
715
|
+
return data.buffer;
|
|
716
|
+
}
|
|
717
|
+
return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
718
|
+
}
|
|
719
|
+
if (typeof data === "string") {
|
|
720
|
+
const text = data;
|
|
721
|
+
const uint8Array = new TextEncoder().encode(text);
|
|
722
|
+
return uint8Array.buffer;
|
|
723
|
+
}
|
|
724
|
+
if (data && typeof data === "object" && data._toArrayBuffer) {
|
|
725
|
+
return data._toArrayBuffer();
|
|
726
|
+
}
|
|
727
|
+
throw new Error("toArrayBuffer");
|
|
728
|
+
}
|
|
729
|
+
function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {
|
|
730
|
+
byteLength = byteLength || arrayBuffer1.byteLength;
|
|
731
|
+
if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {
|
|
732
|
+
return false;
|
|
733
|
+
}
|
|
734
|
+
const array1 = new Uint8Array(arrayBuffer1);
|
|
735
|
+
const array2 = new Uint8Array(arrayBuffer2);
|
|
736
|
+
for (let i2 = 0; i2 < array1.length; ++i2) {
|
|
737
|
+
if (array1[i2] !== array2[i2]) {
|
|
738
|
+
return false;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
return true;
|
|
742
|
+
}
|
|
743
|
+
function concatenateArrayBuffers(...sources) {
|
|
744
|
+
const sourceArrays = sources.map((source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);
|
|
745
|
+
const byteLength = sourceArrays.reduce((length4, typedArray) => length4 + typedArray.byteLength, 0);
|
|
746
|
+
const result = new Uint8Array(byteLength);
|
|
747
|
+
let offset = 0;
|
|
748
|
+
for (const sourceArray of sourceArrays) {
|
|
749
|
+
result.set(sourceArray, offset);
|
|
750
|
+
offset += sourceArray.byteLength;
|
|
751
|
+
}
|
|
752
|
+
return result.buffer;
|
|
753
|
+
}
|
|
222
754
|
function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {
|
|
223
755
|
const subArray = byteLength !== void 0 ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);
|
|
224
756
|
const arrayCopy = new Uint8Array(subArray);
|
|
@@ -226,6 +758,7 @@
|
|
|
226
758
|
}
|
|
227
759
|
var init_array_buffer_utils = __esm({
|
|
228
760
|
"../loader-utils/src/lib/binary-utils/array-buffer-utils.ts"() {
|
|
761
|
+
init_buffer_utils();
|
|
229
762
|
}
|
|
230
763
|
});
|
|
231
764
|
|
|
@@ -312,6 +845,49 @@
|
|
|
312
845
|
}
|
|
313
846
|
});
|
|
314
847
|
|
|
848
|
+
// ../loader-utils/src/lib/iterators/async-iteration.ts
|
|
849
|
+
async function concatenateArrayBuffersAsync(asyncIterator) {
|
|
850
|
+
const arrayBuffers = [];
|
|
851
|
+
for await (const chunk of asyncIterator) {
|
|
852
|
+
arrayBuffers.push(chunk);
|
|
853
|
+
}
|
|
854
|
+
return concatenateArrayBuffers(...arrayBuffers);
|
|
855
|
+
}
|
|
856
|
+
var init_async_iteration = __esm({
|
|
857
|
+
"../loader-utils/src/lib/iterators/async-iteration.ts"() {
|
|
858
|
+
init_array_buffer_utils();
|
|
859
|
+
}
|
|
860
|
+
});
|
|
861
|
+
|
|
862
|
+
// ../../node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js
|
|
863
|
+
var init_hi_res_timestamp = __esm({
|
|
864
|
+
"../../node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js"() {
|
|
865
|
+
}
|
|
866
|
+
});
|
|
867
|
+
|
|
868
|
+
// ../../node_modules/@probe.gl/stats/dist/esm/lib/stat.js
|
|
869
|
+
var init_stat = __esm({
|
|
870
|
+
"../../node_modules/@probe.gl/stats/dist/esm/lib/stat.js"() {
|
|
871
|
+
init_hi_res_timestamp();
|
|
872
|
+
}
|
|
873
|
+
});
|
|
874
|
+
|
|
875
|
+
// ../../node_modules/@probe.gl/stats/dist/esm/lib/stats.js
|
|
876
|
+
var init_stats = __esm({
|
|
877
|
+
"../../node_modules/@probe.gl/stats/dist/esm/lib/stats.js"() {
|
|
878
|
+
init_stat();
|
|
879
|
+
}
|
|
880
|
+
});
|
|
881
|
+
|
|
882
|
+
// ../../node_modules/@probe.gl/stats/dist/esm/index.js
|
|
883
|
+
var init_esm = __esm({
|
|
884
|
+
"../../node_modules/@probe.gl/stats/dist/esm/index.js"() {
|
|
885
|
+
init_stats();
|
|
886
|
+
init_stat();
|
|
887
|
+
init_hi_res_timestamp();
|
|
888
|
+
}
|
|
889
|
+
});
|
|
890
|
+
|
|
315
891
|
// ../loader-utils/src/lib/path-utils/file-aliases.ts
|
|
316
892
|
function resolvePath(filename2) {
|
|
317
893
|
for (const alias in fileAliases) {
|
|
@@ -371,11 +947,13 @@
|
|
|
371
947
|
"../loader-utils/src/index.ts"() {
|
|
372
948
|
init_assert();
|
|
373
949
|
init_globals();
|
|
950
|
+
init_parse_with_worker();
|
|
374
951
|
init_parse_json();
|
|
375
952
|
init_array_buffer_utils();
|
|
376
953
|
init_memory_copy_utils();
|
|
377
954
|
init_binary_copy_utils();
|
|
378
955
|
init_encode_utils();
|
|
956
|
+
init_async_iteration();
|
|
379
957
|
init_file_aliases();
|
|
380
958
|
init_path();
|
|
381
959
|
}
|
|
@@ -904,11 +1482,11 @@
|
|
|
904
1482
|
out[1] = m[1] * x + m[5] * y + m[13];
|
|
905
1483
|
return out;
|
|
906
1484
|
}
|
|
907
|
-
var
|
|
1485
|
+
var forEach2;
|
|
908
1486
|
var init_vec2 = __esm({
|
|
909
1487
|
"../../node_modules/gl-matrix/esm/vec2.js"() {
|
|
910
1488
|
init_common2();
|
|
911
|
-
|
|
1489
|
+
forEach2 = function() {
|
|
912
1490
|
var vec = create();
|
|
913
1491
|
return function(a2, stride, offset, count, fn, arg) {
|
|
914
1492
|
var i2, l2;
|
|
@@ -1184,12 +1762,12 @@
|
|
|
1184
1762
|
var ax = a2[0], ay = a2[1], az = a2[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a2, b) / mag;
|
|
1185
1763
|
return Math.acos(Math.min(Math.max(cosine, -1), 1));
|
|
1186
1764
|
}
|
|
1187
|
-
var len,
|
|
1765
|
+
var len, forEach3;
|
|
1188
1766
|
var init_vec3 = __esm({
|
|
1189
1767
|
"../../node_modules/gl-matrix/esm/vec3.js"() {
|
|
1190
1768
|
init_common2();
|
|
1191
1769
|
len = length;
|
|
1192
|
-
|
|
1770
|
+
forEach3 = function() {
|
|
1193
1771
|
var vec = create2();
|
|
1194
1772
|
return function(a2, stride, offset, count, fn, arg) {
|
|
1195
1773
|
var i2, l2;
|
|
@@ -2353,11 +2931,11 @@
|
|
|
2353
2931
|
out[3] = a2[3];
|
|
2354
2932
|
return out;
|
|
2355
2933
|
}
|
|
2356
|
-
var
|
|
2934
|
+
var forEach4;
|
|
2357
2935
|
var init_vec4 = __esm({
|
|
2358
2936
|
"../../node_modules/gl-matrix/esm/vec4.js"() {
|
|
2359
2937
|
init_common2();
|
|
2360
|
-
|
|
2938
|
+
forEach4 = function() {
|
|
2361
2939
|
var vec = create4();
|
|
2362
2940
|
return function(a2, stride, offset, count, fn, arg) {
|
|
2363
2941
|
var i2, l2;
|
|
@@ -3234,7 +3812,7 @@
|
|
|
3234
3812
|
|
|
3235
3813
|
// ../../node_modules/@math.gl/core/dist/esm/index.js
|
|
3236
3814
|
var globals3, global_3;
|
|
3237
|
-
var
|
|
3815
|
+
var init_esm2 = __esm({
|
|
3238
3816
|
"../../node_modules/@math.gl/core/dist/esm/index.js"() {
|
|
3239
3817
|
init_common();
|
|
3240
3818
|
init_vector2();
|
|
@@ -3317,7 +3895,7 @@
|
|
|
3317
3895
|
var noop, scratchVector;
|
|
3318
3896
|
var init_type_utils = __esm({
|
|
3319
3897
|
"../../node_modules/@math.gl/geospatial/dist/esm/type-utils.js"() {
|
|
3320
|
-
|
|
3898
|
+
init_esm2();
|
|
3321
3899
|
init_constants();
|
|
3322
3900
|
noop = (x) => x;
|
|
3323
3901
|
scratchVector = new Vector3();
|
|
@@ -3383,7 +3961,7 @@
|
|
|
3383
3961
|
var scratchVector2, scaleToGeodeticSurfaceIntersection, scaleToGeodeticSurfaceGradient;
|
|
3384
3962
|
var init_scale_to_geodetic_surface = __esm({
|
|
3385
3963
|
"../../node_modules/@math.gl/geospatial/dist/esm/ellipsoid/helpers/scale-to-geodetic-surface.js"() {
|
|
3386
|
-
|
|
3964
|
+
init_esm2();
|
|
3387
3965
|
scratchVector2 = new Vector3();
|
|
3388
3966
|
scaleToGeodeticSurfaceIntersection = new Vector3();
|
|
3389
3967
|
scaleToGeodeticSurfaceGradient = new Vector3();
|
|
@@ -3455,7 +4033,7 @@
|
|
|
3455
4033
|
var EPSILON14, scratchOrigin, VECTOR_PRODUCT_LOCAL_FRAME, degeneratePositionLocalFrame, scratchAxisVectors, scratchVector1, scratchVector22, scratchVector3;
|
|
3456
4034
|
var init_ellipsoid_transform = __esm({
|
|
3457
4035
|
"../../node_modules/@math.gl/geospatial/dist/esm/ellipsoid/helpers/ellipsoid-transform.js"() {
|
|
3458
|
-
|
|
4036
|
+
init_esm2();
|
|
3459
4037
|
EPSILON14 = 1e-14;
|
|
3460
4038
|
scratchOrigin = new Vector3();
|
|
3461
4039
|
VECTOR_PRODUCT_LOCAL_FRAME = {
|
|
@@ -3522,7 +4100,7 @@
|
|
|
3522
4100
|
var scratchVector4, scratchNormal, scratchK, scratchPosition, scratchHeight, scratchCartesian, wgs84, Ellipsoid;
|
|
3523
4101
|
var init_ellipsoid = __esm({
|
|
3524
4102
|
"../../node_modules/@math.gl/geospatial/dist/esm/ellipsoid/ellipsoid.js"() {
|
|
3525
|
-
|
|
4103
|
+
init_esm2();
|
|
3526
4104
|
init_vec3();
|
|
3527
4105
|
init_constants();
|
|
3528
4106
|
init_type_utils();
|
|
@@ -3641,7 +4219,7 @@
|
|
|
3641
4219
|
});
|
|
3642
4220
|
|
|
3643
4221
|
// ../../node_modules/@math.gl/geospatial/dist/esm/index.js
|
|
3644
|
-
var
|
|
4222
|
+
var init_esm3 = __esm({
|
|
3645
4223
|
"../../node_modules/@math.gl/geospatial/dist/esm/index.js"() {
|
|
3646
4224
|
init_ellipsoid();
|
|
3647
4225
|
init_type_utils();
|
|
@@ -3649,11 +4227,21 @@
|
|
|
3649
4227
|
});
|
|
3650
4228
|
|
|
3651
4229
|
// ../core/src/javascript-utils/is-type.ts
|
|
3652
|
-
var isResponse, isBlob;
|
|
4230
|
+
var isBoolean, isFunction, isObject, isPureObject, isIterable, isAsyncIterable, isResponse, isBlob, isBuffer2, isReadableDOMStream, isReadableNodeStream, isReadableStream;
|
|
3653
4231
|
var init_is_type = __esm({
|
|
3654
4232
|
"../core/src/javascript-utils/is-type.ts"() {
|
|
4233
|
+
isBoolean = (x) => typeof x === "boolean";
|
|
4234
|
+
isFunction = (x) => typeof x === "function";
|
|
4235
|
+
isObject = (x) => x !== null && typeof x === "object";
|
|
4236
|
+
isPureObject = (x) => isObject(x) && x.constructor === {}.constructor;
|
|
4237
|
+
isIterable = (x) => x && typeof x[Symbol.iterator] === "function";
|
|
4238
|
+
isAsyncIterable = (x) => x && typeof x[Symbol.asyncIterator] === "function";
|
|
3655
4239
|
isResponse = (x) => typeof Response !== "undefined" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;
|
|
3656
4240
|
isBlob = (x) => typeof Blob !== "undefined" && x instanceof Blob;
|
|
4241
|
+
isBuffer2 = (x) => x && typeof x === "object" && x.isBuffer;
|
|
4242
|
+
isReadableDOMStream = (x) => typeof ReadableStream !== "undefined" && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);
|
|
4243
|
+
isReadableNodeStream = (x) => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);
|
|
4244
|
+
isReadableStream = (x) => isReadableDOMStream(x) || isReadableNodeStream(x);
|
|
3657
4245
|
}
|
|
3658
4246
|
});
|
|
3659
4247
|
|
|
@@ -3762,6 +4350,26 @@
|
|
|
3762
4350
|
Object.defineProperty(response, "url", { value: url });
|
|
3763
4351
|
return response;
|
|
3764
4352
|
}
|
|
4353
|
+
async function checkResponse(response) {
|
|
4354
|
+
if (!response.ok) {
|
|
4355
|
+
const message = await getResponseError(response);
|
|
4356
|
+
throw new Error(message);
|
|
4357
|
+
}
|
|
4358
|
+
}
|
|
4359
|
+
async function getResponseError(response) {
|
|
4360
|
+
let message = `Failed to fetch resource ${response.url} (${response.status}): `;
|
|
4361
|
+
try {
|
|
4362
|
+
const contentType = response.headers.get("Content-Type");
|
|
4363
|
+
let text = response.statusText;
|
|
4364
|
+
if (contentType.includes("application/json")) {
|
|
4365
|
+
text += ` ${await response.text()}`;
|
|
4366
|
+
}
|
|
4367
|
+
message += text;
|
|
4368
|
+
message = message.length > 60 ? `${message.slice(60)}...` : message;
|
|
4369
|
+
} catch (error) {
|
|
4370
|
+
}
|
|
4371
|
+
return message;
|
|
4372
|
+
}
|
|
3765
4373
|
async function getInitialDataUrl(resource) {
|
|
3766
4374
|
const INITIAL_DATA_LENGTH = 5;
|
|
3767
4375
|
if (typeof resource === "string") {
|
|
@@ -3816,10 +4424,1338 @@
|
|
|
3816
4424
|
}
|
|
3817
4425
|
});
|
|
3818
4426
|
|
|
4427
|
+
// ../../node_modules/probe.gl/dist/esm/env/is-electron.js
|
|
4428
|
+
function isElectron(mockUserAgent) {
|
|
4429
|
+
if (typeof window !== "undefined" && typeof window.process === "object" && window.process.type === "renderer") {
|
|
4430
|
+
return true;
|
|
4431
|
+
}
|
|
4432
|
+
if (typeof process !== "undefined" && typeof process.versions === "object" && Boolean(process.versions.electron)) {
|
|
4433
|
+
return true;
|
|
4434
|
+
}
|
|
4435
|
+
const realUserAgent = typeof navigator === "object" && typeof navigator.userAgent === "string" && navigator.userAgent;
|
|
4436
|
+
const userAgent = mockUserAgent || realUserAgent;
|
|
4437
|
+
if (userAgent && userAgent.indexOf("Electron") >= 0) {
|
|
4438
|
+
return true;
|
|
4439
|
+
}
|
|
4440
|
+
return false;
|
|
4441
|
+
}
|
|
4442
|
+
var init_is_electron = __esm({
|
|
4443
|
+
"../../node_modules/probe.gl/dist/esm/env/is-electron.js"() {
|
|
4444
|
+
}
|
|
4445
|
+
});
|
|
4446
|
+
|
|
4447
|
+
// ../../node_modules/probe.gl/dist/esm/env/is-browser.js
|
|
4448
|
+
function isBrowser3() {
|
|
4449
|
+
const isNode = typeof process === "object" && String(process) === "[object process]" && !process.browser;
|
|
4450
|
+
return !isNode || isElectron();
|
|
4451
|
+
}
|
|
4452
|
+
var init_is_browser = __esm({
|
|
4453
|
+
"../../node_modules/probe.gl/dist/esm/env/is-browser.js"() {
|
|
4454
|
+
init_is_electron();
|
|
4455
|
+
}
|
|
4456
|
+
});
|
|
4457
|
+
|
|
4458
|
+
// ../../node_modules/probe.gl/dist/esm/env/globals.js
|
|
4459
|
+
var globals4, self_3, window_3, global_4, document_3, process_;
|
|
4460
|
+
var init_globals3 = __esm({
|
|
4461
|
+
"../../node_modules/probe.gl/dist/esm/env/globals.js"() {
|
|
4462
|
+
globals4 = {
|
|
4463
|
+
self: typeof self !== "undefined" && self,
|
|
4464
|
+
window: typeof window !== "undefined" && window,
|
|
4465
|
+
global: typeof global !== "undefined" && global,
|
|
4466
|
+
document: typeof document !== "undefined" && document,
|
|
4467
|
+
process: typeof process === "object" && process
|
|
4468
|
+
};
|
|
4469
|
+
self_3 = globals4.self || globals4.window || globals4.global;
|
|
4470
|
+
window_3 = globals4.window || globals4.self || globals4.global;
|
|
4471
|
+
global_4 = globals4.global || globals4.self || globals4.window;
|
|
4472
|
+
document_3 = globals4.document || {};
|
|
4473
|
+
process_ = globals4.process || {};
|
|
4474
|
+
}
|
|
4475
|
+
});
|
|
4476
|
+
|
|
4477
|
+
// ../../node_modules/probe.gl/dist/esm/utils/globals.js
|
|
4478
|
+
var VERSION3, isBrowser4;
|
|
4479
|
+
var init_globals4 = __esm({
|
|
4480
|
+
"../../node_modules/probe.gl/dist/esm/utils/globals.js"() {
|
|
4481
|
+
init_is_browser();
|
|
4482
|
+
init_globals3();
|
|
4483
|
+
VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
|
|
4484
|
+
isBrowser4 = isBrowser3();
|
|
4485
|
+
}
|
|
4486
|
+
});
|
|
4487
|
+
|
|
4488
|
+
// ../../node_modules/probe.gl/dist/esm/utils/local-storage.js
|
|
4489
|
+
function getStorage(type) {
|
|
4490
|
+
try {
|
|
4491
|
+
const storage = window[type];
|
|
4492
|
+
const x = "__storage_test__";
|
|
4493
|
+
storage.setItem(x, x);
|
|
4494
|
+
storage.removeItem(x);
|
|
4495
|
+
return storage;
|
|
4496
|
+
} catch (e) {
|
|
4497
|
+
return null;
|
|
4498
|
+
}
|
|
4499
|
+
}
|
|
4500
|
+
var LocalStorage;
|
|
4501
|
+
var init_local_storage = __esm({
|
|
4502
|
+
"../../node_modules/probe.gl/dist/esm/utils/local-storage.js"() {
|
|
4503
|
+
LocalStorage = class {
|
|
4504
|
+
constructor(id, defaultSettings, type = "sessionStorage") {
|
|
4505
|
+
this.storage = getStorage(type);
|
|
4506
|
+
this.id = id;
|
|
4507
|
+
this.config = {};
|
|
4508
|
+
Object.assign(this.config, defaultSettings);
|
|
4509
|
+
this._loadConfiguration();
|
|
4510
|
+
}
|
|
4511
|
+
getConfiguration() {
|
|
4512
|
+
return this.config;
|
|
4513
|
+
}
|
|
4514
|
+
setConfiguration(configuration) {
|
|
4515
|
+
this.config = {};
|
|
4516
|
+
return this.updateConfiguration(configuration);
|
|
4517
|
+
}
|
|
4518
|
+
updateConfiguration(configuration) {
|
|
4519
|
+
Object.assign(this.config, configuration);
|
|
4520
|
+
if (this.storage) {
|
|
4521
|
+
const serialized = JSON.stringify(this.config);
|
|
4522
|
+
this.storage.setItem(this.id, serialized);
|
|
4523
|
+
}
|
|
4524
|
+
return this;
|
|
4525
|
+
}
|
|
4526
|
+
_loadConfiguration() {
|
|
4527
|
+
let configuration = {};
|
|
4528
|
+
if (this.storage) {
|
|
4529
|
+
const serializedConfiguration = this.storage.getItem(this.id);
|
|
4530
|
+
configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};
|
|
4531
|
+
}
|
|
4532
|
+
Object.assign(this.config, configuration);
|
|
4533
|
+
return this;
|
|
4534
|
+
}
|
|
4535
|
+
};
|
|
4536
|
+
}
|
|
4537
|
+
});
|
|
4538
|
+
|
|
4539
|
+
// ../../node_modules/probe.gl/dist/esm/utils/formatters.js
|
|
4540
|
+
function formatTime(ms) {
|
|
4541
|
+
let formatted;
|
|
4542
|
+
if (ms < 10) {
|
|
4543
|
+
formatted = "".concat(ms.toFixed(2), "ms");
|
|
4544
|
+
} else if (ms < 100) {
|
|
4545
|
+
formatted = "".concat(ms.toFixed(1), "ms");
|
|
4546
|
+
} else if (ms < 1e3) {
|
|
4547
|
+
formatted = "".concat(ms.toFixed(0), "ms");
|
|
4548
|
+
} else {
|
|
4549
|
+
formatted = "".concat((ms / 1e3).toFixed(2), "s");
|
|
4550
|
+
}
|
|
4551
|
+
return formatted;
|
|
4552
|
+
}
|
|
4553
|
+
function leftPad(string, length4 = 8) {
|
|
4554
|
+
const padLength = Math.max(length4 - string.length, 0);
|
|
4555
|
+
return "".concat(" ".repeat(padLength)).concat(string);
|
|
4556
|
+
}
|
|
4557
|
+
function formatImage(image, message, scale5, maxWidth = 600) {
|
|
4558
|
+
const imageUrl = image.src.replace(/\(/g, "%28").replace(/\)/g, "%29");
|
|
4559
|
+
if (image.width > maxWidth) {
|
|
4560
|
+
scale5 = Math.min(scale5, maxWidth / image.width);
|
|
4561
|
+
}
|
|
4562
|
+
const width = image.width * scale5;
|
|
4563
|
+
const height = image.height * scale5;
|
|
4564
|
+
const style = ["font-size:1px;", "padding:".concat(Math.floor(height / 2), "px ").concat(Math.floor(width / 2), "px;"), "line-height:".concat(height, "px;"), "background:url(".concat(imageUrl, ");"), "background-size:".concat(width, "px ").concat(height, "px;"), "color:transparent;"].join("");
|
|
4565
|
+
return ["".concat(message, " %c+"), style];
|
|
4566
|
+
}
|
|
4567
|
+
var init_formatters = __esm({
|
|
4568
|
+
"../../node_modules/probe.gl/dist/esm/utils/formatters.js"() {
|
|
4569
|
+
}
|
|
4570
|
+
});
|
|
4571
|
+
|
|
4572
|
+
// ../../node_modules/probe.gl/dist/esm/utils/color.js
|
|
4573
|
+
function getColor(color) {
|
|
4574
|
+
return typeof color === "string" ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;
|
|
4575
|
+
}
|
|
4576
|
+
function addColor(string, color, background) {
|
|
4577
|
+
if (!isBrowser4 && typeof string === "string") {
|
|
4578
|
+
if (color) {
|
|
4579
|
+
color = getColor(color);
|
|
4580
|
+
string = "[".concat(color, "m").concat(string, "[39m");
|
|
4581
|
+
}
|
|
4582
|
+
if (background) {
|
|
4583
|
+
color = getColor(background);
|
|
4584
|
+
string = "[".concat(background + 10, "m").concat(string, "[49m");
|
|
4585
|
+
}
|
|
4586
|
+
}
|
|
4587
|
+
return string;
|
|
4588
|
+
}
|
|
4589
|
+
var COLOR;
|
|
4590
|
+
var init_color = __esm({
|
|
4591
|
+
"../../node_modules/probe.gl/dist/esm/utils/color.js"() {
|
|
4592
|
+
init_globals4();
|
|
4593
|
+
COLOR = {
|
|
4594
|
+
BLACK: 30,
|
|
4595
|
+
RED: 31,
|
|
4596
|
+
GREEN: 32,
|
|
4597
|
+
YELLOW: 33,
|
|
4598
|
+
BLUE: 34,
|
|
4599
|
+
MAGENTA: 35,
|
|
4600
|
+
CYAN: 36,
|
|
4601
|
+
WHITE: 37,
|
|
4602
|
+
BRIGHT_BLACK: 90,
|
|
4603
|
+
BRIGHT_RED: 91,
|
|
4604
|
+
BRIGHT_GREEN: 92,
|
|
4605
|
+
BRIGHT_YELLOW: 93,
|
|
4606
|
+
BRIGHT_BLUE: 94,
|
|
4607
|
+
BRIGHT_MAGENTA: 95,
|
|
4608
|
+
BRIGHT_CYAN: 96,
|
|
4609
|
+
BRIGHT_WHITE: 97
|
|
4610
|
+
};
|
|
4611
|
+
}
|
|
4612
|
+
});
|
|
4613
|
+
|
|
4614
|
+
// ../../node_modules/probe.gl/dist/esm/utils/autobind.js
|
|
4615
|
+
function autobind(obj, predefined = ["constructor"]) {
|
|
4616
|
+
const proto = Object.getPrototypeOf(obj);
|
|
4617
|
+
const propNames = Object.getOwnPropertyNames(proto);
|
|
4618
|
+
for (const key of propNames) {
|
|
4619
|
+
if (typeof obj[key] === "function") {
|
|
4620
|
+
if (!predefined.find((name8) => key === name8)) {
|
|
4621
|
+
obj[key] = obj[key].bind(obj);
|
|
4622
|
+
}
|
|
4623
|
+
}
|
|
4624
|
+
}
|
|
4625
|
+
}
|
|
4626
|
+
var init_autobind = __esm({
|
|
4627
|
+
"../../node_modules/probe.gl/dist/esm/utils/autobind.js"() {
|
|
4628
|
+
}
|
|
4629
|
+
});
|
|
4630
|
+
|
|
4631
|
+
// ../../node_modules/probe.gl/dist/esm/utils/assert.js
|
|
4632
|
+
function assert5(condition, message) {
|
|
4633
|
+
if (!condition) {
|
|
4634
|
+
throw new Error(message || "Assertion failed");
|
|
4635
|
+
}
|
|
4636
|
+
}
|
|
4637
|
+
var init_assert4 = __esm({
|
|
4638
|
+
"../../node_modules/probe.gl/dist/esm/utils/assert.js"() {
|
|
4639
|
+
}
|
|
4640
|
+
});
|
|
4641
|
+
|
|
4642
|
+
// ../../node_modules/probe.gl/dist/esm/utils/hi-res-timestamp.js
|
|
4643
|
+
function getHiResTimestamp2() {
|
|
4644
|
+
let timestamp;
|
|
4645
|
+
if (isBrowser4 && window_3.performance) {
|
|
4646
|
+
timestamp = window_3.performance.now();
|
|
4647
|
+
} else if (process_.hrtime) {
|
|
4648
|
+
const timeParts = process_.hrtime();
|
|
4649
|
+
timestamp = timeParts[0] * 1e3 + timeParts[1] / 1e6;
|
|
4650
|
+
} else {
|
|
4651
|
+
timestamp = Date.now();
|
|
4652
|
+
}
|
|
4653
|
+
return timestamp;
|
|
4654
|
+
}
|
|
4655
|
+
var init_hi_res_timestamp2 = __esm({
|
|
4656
|
+
"../../node_modules/probe.gl/dist/esm/utils/hi-res-timestamp.js"() {
|
|
4657
|
+
init_globals4();
|
|
4658
|
+
}
|
|
4659
|
+
});
|
|
4660
|
+
|
|
4661
|
+
// ../../node_modules/probe.gl/dist/esm/lib/log.js
|
|
4662
|
+
function noop2() {
|
|
4663
|
+
}
|
|
4664
|
+
function getTableHeader(table) {
|
|
4665
|
+
for (const key in table) {
|
|
4666
|
+
for (const title in table[key]) {
|
|
4667
|
+
return title || "untitled";
|
|
4668
|
+
}
|
|
4669
|
+
}
|
|
4670
|
+
return "empty";
|
|
4671
|
+
}
|
|
4672
|
+
function normalizeLogLevel(logLevel) {
|
|
4673
|
+
if (!logLevel) {
|
|
4674
|
+
return 0;
|
|
4675
|
+
}
|
|
4676
|
+
let resolvedLevel;
|
|
4677
|
+
switch (typeof logLevel) {
|
|
4678
|
+
case "number":
|
|
4679
|
+
resolvedLevel = logLevel;
|
|
4680
|
+
break;
|
|
4681
|
+
case "object":
|
|
4682
|
+
resolvedLevel = logLevel.logLevel || logLevel.priority || 0;
|
|
4683
|
+
break;
|
|
4684
|
+
default:
|
|
4685
|
+
return 0;
|
|
4686
|
+
}
|
|
4687
|
+
assert5(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);
|
|
4688
|
+
return resolvedLevel;
|
|
4689
|
+
}
|
|
4690
|
+
function normalizeArguments(opts) {
|
|
4691
|
+
const {
|
|
4692
|
+
logLevel,
|
|
4693
|
+
message
|
|
4694
|
+
} = opts;
|
|
4695
|
+
opts.logLevel = normalizeLogLevel(logLevel);
|
|
4696
|
+
const args = opts.args ? Array.from(opts.args) : [];
|
|
4697
|
+
while (args.length && args.shift() !== message) {
|
|
4698
|
+
}
|
|
4699
|
+
opts.args = args;
|
|
4700
|
+
switch (typeof logLevel) {
|
|
4701
|
+
case "string":
|
|
4702
|
+
case "function":
|
|
4703
|
+
if (message !== void 0) {
|
|
4704
|
+
args.unshift(message);
|
|
4705
|
+
}
|
|
4706
|
+
opts.message = logLevel;
|
|
4707
|
+
break;
|
|
4708
|
+
case "object":
|
|
4709
|
+
Object.assign(opts, logLevel);
|
|
4710
|
+
break;
|
|
4711
|
+
default:
|
|
4712
|
+
}
|
|
4713
|
+
if (typeof opts.message === "function") {
|
|
4714
|
+
opts.message = opts.message();
|
|
4715
|
+
}
|
|
4716
|
+
const messageType = typeof opts.message;
|
|
4717
|
+
assert5(messageType === "string" || messageType === "object");
|
|
4718
|
+
return Object.assign(opts, opts.opts);
|
|
4719
|
+
}
|
|
4720
|
+
function decorateMessage(id, message, opts) {
|
|
4721
|
+
if (typeof message === "string") {
|
|
4722
|
+
const time = opts.time ? leftPad(formatTime(opts.total)) : "";
|
|
4723
|
+
message = opts.time ? "".concat(id, ": ").concat(time, " ").concat(message) : "".concat(id, ": ").concat(message);
|
|
4724
|
+
message = addColor(message, opts.color, opts.background);
|
|
4725
|
+
}
|
|
4726
|
+
return message;
|
|
4727
|
+
}
|
|
4728
|
+
function logImageInNode({
|
|
4729
|
+
image,
|
|
4730
|
+
message = "",
|
|
4731
|
+
scale: scale5 = 1
|
|
4732
|
+
}) {
|
|
4733
|
+
let asciify = null;
|
|
4734
|
+
try {
|
|
4735
|
+
asciify = module.require("asciify-image");
|
|
4736
|
+
} catch (error) {
|
|
4737
|
+
}
|
|
4738
|
+
if (asciify) {
|
|
4739
|
+
return () => asciify(image, {
|
|
4740
|
+
fit: "box",
|
|
4741
|
+
width: "".concat(Math.round(80 * scale5), "%")
|
|
4742
|
+
}).then((data) => console.log(data));
|
|
4743
|
+
}
|
|
4744
|
+
return noop2;
|
|
4745
|
+
}
|
|
4746
|
+
function logImageInBrowser({
|
|
4747
|
+
image,
|
|
4748
|
+
message = "",
|
|
4749
|
+
scale: scale5 = 1
|
|
4750
|
+
}) {
|
|
4751
|
+
if (typeof image === "string") {
|
|
4752
|
+
const img = new Image();
|
|
4753
|
+
img.onload = () => {
|
|
4754
|
+
const args = formatImage(img, message, scale5);
|
|
4755
|
+
console.log(...args);
|
|
4756
|
+
};
|
|
4757
|
+
img.src = image;
|
|
4758
|
+
return noop2;
|
|
4759
|
+
}
|
|
4760
|
+
const element = image.nodeName || "";
|
|
4761
|
+
if (element.toLowerCase() === "img") {
|
|
4762
|
+
console.log(...formatImage(image, message, scale5));
|
|
4763
|
+
return noop2;
|
|
4764
|
+
}
|
|
4765
|
+
if (element.toLowerCase() === "canvas") {
|
|
4766
|
+
const img = new Image();
|
|
4767
|
+
img.onload = () => console.log(...formatImage(img, message, scale5));
|
|
4768
|
+
img.src = image.toDataURL();
|
|
4769
|
+
return noop2;
|
|
4770
|
+
}
|
|
4771
|
+
return noop2;
|
|
4772
|
+
}
|
|
4773
|
+
var originalConsole, DEFAULT_SETTINGS, cache, ONCE, Log;
|
|
4774
|
+
var init_log = __esm({
|
|
4775
|
+
"../../node_modules/probe.gl/dist/esm/lib/log.js"() {
|
|
4776
|
+
init_globals4();
|
|
4777
|
+
init_local_storage();
|
|
4778
|
+
init_formatters();
|
|
4779
|
+
init_color();
|
|
4780
|
+
init_autobind();
|
|
4781
|
+
init_assert4();
|
|
4782
|
+
init_hi_res_timestamp2();
|
|
4783
|
+
originalConsole = {
|
|
4784
|
+
debug: isBrowser4 ? console.debug || console.log : console.log,
|
|
4785
|
+
log: console.log,
|
|
4786
|
+
info: console.info,
|
|
4787
|
+
warn: console.warn,
|
|
4788
|
+
error: console.error
|
|
4789
|
+
};
|
|
4790
|
+
DEFAULT_SETTINGS = {
|
|
4791
|
+
enabled: true,
|
|
4792
|
+
level: 0
|
|
4793
|
+
};
|
|
4794
|
+
cache = {};
|
|
4795
|
+
ONCE = {
|
|
4796
|
+
once: true
|
|
4797
|
+
};
|
|
4798
|
+
Log = class {
|
|
4799
|
+
constructor({
|
|
4800
|
+
id
|
|
4801
|
+
} = {
|
|
4802
|
+
id: ""
|
|
4803
|
+
}) {
|
|
4804
|
+
this.id = id;
|
|
4805
|
+
this.VERSION = VERSION3;
|
|
4806
|
+
this._startTs = getHiResTimestamp2();
|
|
4807
|
+
this._deltaTs = getHiResTimestamp2();
|
|
4808
|
+
this.LOG_THROTTLE_TIMEOUT = 0;
|
|
4809
|
+
this._storage = new LocalStorage("__probe-".concat(this.id, "__"), DEFAULT_SETTINGS);
|
|
4810
|
+
this.userData = {};
|
|
4811
|
+
this.timeStamp("".concat(this.id, " started"));
|
|
4812
|
+
autobind(this);
|
|
4813
|
+
Object.seal(this);
|
|
4814
|
+
}
|
|
4815
|
+
set level(newLevel) {
|
|
4816
|
+
this.setLevel(newLevel);
|
|
4817
|
+
}
|
|
4818
|
+
get level() {
|
|
4819
|
+
return this.getLevel();
|
|
4820
|
+
}
|
|
4821
|
+
isEnabled() {
|
|
4822
|
+
return this._storage.config.enabled;
|
|
4823
|
+
}
|
|
4824
|
+
getLevel() {
|
|
4825
|
+
return this._storage.config.level;
|
|
4826
|
+
}
|
|
4827
|
+
getTotal() {
|
|
4828
|
+
return Number((getHiResTimestamp2() - this._startTs).toPrecision(10));
|
|
4829
|
+
}
|
|
4830
|
+
getDelta() {
|
|
4831
|
+
return Number((getHiResTimestamp2() - this._deltaTs).toPrecision(10));
|
|
4832
|
+
}
|
|
4833
|
+
set priority(newPriority) {
|
|
4834
|
+
this.level = newPriority;
|
|
4835
|
+
}
|
|
4836
|
+
get priority() {
|
|
4837
|
+
return this.level;
|
|
4838
|
+
}
|
|
4839
|
+
getPriority() {
|
|
4840
|
+
return this.level;
|
|
4841
|
+
}
|
|
4842
|
+
enable(enabled = true) {
|
|
4843
|
+
this._storage.updateConfiguration({
|
|
4844
|
+
enabled
|
|
4845
|
+
});
|
|
4846
|
+
return this;
|
|
4847
|
+
}
|
|
4848
|
+
setLevel(level) {
|
|
4849
|
+
this._storage.updateConfiguration({
|
|
4850
|
+
level
|
|
4851
|
+
});
|
|
4852
|
+
return this;
|
|
4853
|
+
}
|
|
4854
|
+
assert(condition, message) {
|
|
4855
|
+
assert5(condition, message);
|
|
4856
|
+
}
|
|
4857
|
+
warn(message) {
|
|
4858
|
+
return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);
|
|
4859
|
+
}
|
|
4860
|
+
error(message) {
|
|
4861
|
+
return this._getLogFunction(0, message, originalConsole.error, arguments);
|
|
4862
|
+
}
|
|
4863
|
+
deprecated(oldUsage, newUsage) {
|
|
4864
|
+
return this.warn("`".concat(oldUsage, "` is deprecated and will be removed in a later version. Use `").concat(newUsage, "` instead"));
|
|
4865
|
+
}
|
|
4866
|
+
removed(oldUsage, newUsage) {
|
|
4867
|
+
return this.error("`".concat(oldUsage, "` has been removed. Use `").concat(newUsage, "` instead"));
|
|
4868
|
+
}
|
|
4869
|
+
probe(logLevel, message) {
|
|
4870
|
+
return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {
|
|
4871
|
+
time: true,
|
|
4872
|
+
once: true
|
|
4873
|
+
});
|
|
4874
|
+
}
|
|
4875
|
+
log(logLevel, message) {
|
|
4876
|
+
return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);
|
|
4877
|
+
}
|
|
4878
|
+
info(logLevel, message) {
|
|
4879
|
+
return this._getLogFunction(logLevel, message, console.info, arguments);
|
|
4880
|
+
}
|
|
4881
|
+
once(logLevel, message) {
|
|
4882
|
+
return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);
|
|
4883
|
+
}
|
|
4884
|
+
table(logLevel, table, columns) {
|
|
4885
|
+
if (table) {
|
|
4886
|
+
return this._getLogFunction(logLevel, table, console.table || noop2, columns && [columns], {
|
|
4887
|
+
tag: getTableHeader(table)
|
|
4888
|
+
});
|
|
4889
|
+
}
|
|
4890
|
+
return noop2;
|
|
4891
|
+
}
|
|
4892
|
+
image({
|
|
4893
|
+
logLevel,
|
|
4894
|
+
priority,
|
|
4895
|
+
image,
|
|
4896
|
+
message = "",
|
|
4897
|
+
scale: scale5 = 1
|
|
4898
|
+
}) {
|
|
4899
|
+
if (!this._shouldLog(logLevel || priority)) {
|
|
4900
|
+
return noop2;
|
|
4901
|
+
}
|
|
4902
|
+
return isBrowser4 ? logImageInBrowser({
|
|
4903
|
+
image,
|
|
4904
|
+
message,
|
|
4905
|
+
scale: scale5
|
|
4906
|
+
}) : logImageInNode({
|
|
4907
|
+
image,
|
|
4908
|
+
message,
|
|
4909
|
+
scale: scale5
|
|
4910
|
+
});
|
|
4911
|
+
}
|
|
4912
|
+
settings() {
|
|
4913
|
+
if (console.table) {
|
|
4914
|
+
console.table(this._storage.config);
|
|
4915
|
+
} else {
|
|
4916
|
+
console.log(this._storage.config);
|
|
4917
|
+
}
|
|
4918
|
+
}
|
|
4919
|
+
get(setting) {
|
|
4920
|
+
return this._storage.config[setting];
|
|
4921
|
+
}
|
|
4922
|
+
set(setting, value) {
|
|
4923
|
+
this._storage.updateConfiguration({
|
|
4924
|
+
[setting]: value
|
|
4925
|
+
});
|
|
4926
|
+
}
|
|
4927
|
+
time(logLevel, message) {
|
|
4928
|
+
return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);
|
|
4929
|
+
}
|
|
4930
|
+
timeEnd(logLevel, message) {
|
|
4931
|
+
return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);
|
|
4932
|
+
}
|
|
4933
|
+
timeStamp(logLevel, message) {
|
|
4934
|
+
return this._getLogFunction(logLevel, message, console.timeStamp || noop2);
|
|
4935
|
+
}
|
|
4936
|
+
group(logLevel, message, opts = {
|
|
4937
|
+
collapsed: false
|
|
4938
|
+
}) {
|
|
4939
|
+
opts = normalizeArguments({
|
|
4940
|
+
logLevel,
|
|
4941
|
+
message,
|
|
4942
|
+
opts
|
|
4943
|
+
});
|
|
4944
|
+
const {
|
|
4945
|
+
collapsed
|
|
4946
|
+
} = opts;
|
|
4947
|
+
opts.method = (collapsed ? console.groupCollapsed : console.group) || console.info;
|
|
4948
|
+
return this._getLogFunction(opts);
|
|
4949
|
+
}
|
|
4950
|
+
groupCollapsed(logLevel, message, opts = {}) {
|
|
4951
|
+
return this.group(logLevel, message, Object.assign({}, opts, {
|
|
4952
|
+
collapsed: true
|
|
4953
|
+
}));
|
|
4954
|
+
}
|
|
4955
|
+
groupEnd(logLevel) {
|
|
4956
|
+
return this._getLogFunction(logLevel, "", console.groupEnd || noop2);
|
|
4957
|
+
}
|
|
4958
|
+
withGroup(logLevel, message, func) {
|
|
4959
|
+
this.group(logLevel, message)();
|
|
4960
|
+
try {
|
|
4961
|
+
func();
|
|
4962
|
+
} finally {
|
|
4963
|
+
this.groupEnd(logLevel)();
|
|
4964
|
+
}
|
|
4965
|
+
}
|
|
4966
|
+
trace() {
|
|
4967
|
+
if (console.trace) {
|
|
4968
|
+
console.trace();
|
|
4969
|
+
}
|
|
4970
|
+
}
|
|
4971
|
+
_shouldLog(logLevel) {
|
|
4972
|
+
return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);
|
|
4973
|
+
}
|
|
4974
|
+
_getLogFunction(logLevel, message, method, args = [], opts) {
|
|
4975
|
+
if (this._shouldLog(logLevel)) {
|
|
4976
|
+
opts = normalizeArguments({
|
|
4977
|
+
logLevel,
|
|
4978
|
+
message,
|
|
4979
|
+
args,
|
|
4980
|
+
opts
|
|
4981
|
+
});
|
|
4982
|
+
method = method || opts.method;
|
|
4983
|
+
assert5(method);
|
|
4984
|
+
opts.total = this.getTotal();
|
|
4985
|
+
opts.delta = this.getDelta();
|
|
4986
|
+
this._deltaTs = getHiResTimestamp2();
|
|
4987
|
+
const tag = opts.tag || opts.message;
|
|
4988
|
+
if (opts.once) {
|
|
4989
|
+
if (!cache[tag]) {
|
|
4990
|
+
cache[tag] = getHiResTimestamp2();
|
|
4991
|
+
} else {
|
|
4992
|
+
return noop2;
|
|
4993
|
+
}
|
|
4994
|
+
}
|
|
4995
|
+
message = decorateMessage(this.id, opts.message, opts);
|
|
4996
|
+
return method.bind(console, message, ...opts.args);
|
|
4997
|
+
}
|
|
4998
|
+
return noop2;
|
|
4999
|
+
}
|
|
5000
|
+
};
|
|
5001
|
+
Log.VERSION = VERSION3;
|
|
5002
|
+
}
|
|
5003
|
+
});
|
|
5004
|
+
|
|
5005
|
+
// ../../node_modules/probe.gl/dist/esm/index.js
|
|
5006
|
+
var esm_default;
|
|
5007
|
+
var init_esm4 = __esm({
|
|
5008
|
+
"../../node_modules/probe.gl/dist/esm/index.js"() {
|
|
5009
|
+
init_log();
|
|
5010
|
+
init_log();
|
|
5011
|
+
init_esm();
|
|
5012
|
+
esm_default = new Log({
|
|
5013
|
+
id: "probe.gl"
|
|
5014
|
+
});
|
|
5015
|
+
}
|
|
5016
|
+
});
|
|
5017
|
+
|
|
5018
|
+
// ../core/src/lib/loader-utils/loggers.ts
|
|
5019
|
+
var probeLog, NullLog, ConsoleLog;
|
|
5020
|
+
var init_loggers = __esm({
|
|
5021
|
+
"../core/src/lib/loader-utils/loggers.ts"() {
|
|
5022
|
+
init_esm4();
|
|
5023
|
+
probeLog = new Log({ id: "loaders.gl" });
|
|
5024
|
+
NullLog = class {
|
|
5025
|
+
log() {
|
|
5026
|
+
return () => {
|
|
5027
|
+
};
|
|
5028
|
+
}
|
|
5029
|
+
info() {
|
|
5030
|
+
return () => {
|
|
5031
|
+
};
|
|
5032
|
+
}
|
|
5033
|
+
warn() {
|
|
5034
|
+
return () => {
|
|
5035
|
+
};
|
|
5036
|
+
}
|
|
5037
|
+
error() {
|
|
5038
|
+
return () => {
|
|
5039
|
+
};
|
|
5040
|
+
}
|
|
5041
|
+
};
|
|
5042
|
+
ConsoleLog = class {
|
|
5043
|
+
constructor() {
|
|
5044
|
+
this.console = console;
|
|
5045
|
+
}
|
|
5046
|
+
log(...args) {
|
|
5047
|
+
return this.console.log.bind(this.console, ...args);
|
|
5048
|
+
}
|
|
5049
|
+
info(...args) {
|
|
5050
|
+
return this.console.info.bind(this.console, ...args);
|
|
5051
|
+
}
|
|
5052
|
+
warn(...args) {
|
|
5053
|
+
return this.console.warn.bind(this.console, ...args);
|
|
5054
|
+
}
|
|
5055
|
+
error(...args) {
|
|
5056
|
+
return this.console.error.bind(this.console, ...args);
|
|
5057
|
+
}
|
|
5058
|
+
};
|
|
5059
|
+
}
|
|
5060
|
+
});
|
|
5061
|
+
|
|
5062
|
+
// ../core/src/lib/loader-utils/option-defaults.ts
|
|
5063
|
+
var DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS;
|
|
5064
|
+
var init_option_defaults = __esm({
|
|
5065
|
+
"../core/src/lib/loader-utils/option-defaults.ts"() {
|
|
5066
|
+
init_loggers();
|
|
5067
|
+
DEFAULT_LOADER_OPTIONS = {
|
|
5068
|
+
fetch: null,
|
|
5069
|
+
mimeType: void 0,
|
|
5070
|
+
nothrow: false,
|
|
5071
|
+
log: new ConsoleLog(),
|
|
5072
|
+
CDN: "https://unpkg.com/@loaders.gl",
|
|
5073
|
+
worker: true,
|
|
5074
|
+
maxConcurrency: 3,
|
|
5075
|
+
maxMobileConcurrency: 1,
|
|
5076
|
+
reuseWorkers: true,
|
|
5077
|
+
_workerType: "",
|
|
5078
|
+
limit: 0,
|
|
5079
|
+
_limitMB: 0,
|
|
5080
|
+
batchSize: "auto",
|
|
5081
|
+
batchDebounceMs: 0,
|
|
5082
|
+
metadata: false,
|
|
5083
|
+
transforms: []
|
|
5084
|
+
};
|
|
5085
|
+
REMOVED_LOADER_OPTIONS = {
|
|
5086
|
+
throws: "nothrow",
|
|
5087
|
+
dataType: "(no longer used)",
|
|
5088
|
+
uri: "baseUri",
|
|
5089
|
+
method: "fetch.method",
|
|
5090
|
+
headers: "fetch.headers",
|
|
5091
|
+
body: "fetch.body",
|
|
5092
|
+
mode: "fetch.mode",
|
|
5093
|
+
credentials: "fetch.credentials",
|
|
5094
|
+
cache: "fetch.cache",
|
|
5095
|
+
redirect: "fetch.redirect",
|
|
5096
|
+
referrer: "fetch.referrer",
|
|
5097
|
+
referrerPolicy: "fetch.referrerPolicy",
|
|
5098
|
+
integrity: "fetch.integrity",
|
|
5099
|
+
keepalive: "fetch.keepalive",
|
|
5100
|
+
signal: "fetch.signal"
|
|
5101
|
+
};
|
|
5102
|
+
}
|
|
5103
|
+
});
|
|
5104
|
+
|
|
5105
|
+
// ../core/src/lib/loader-utils/option-utils.ts
|
|
5106
|
+
function getGlobalLoaderState() {
|
|
5107
|
+
globalThis.loaders = globalThis.loaders || {};
|
|
5108
|
+
const { loaders } = globalThis;
|
|
5109
|
+
loaders._state = loaders._state || {};
|
|
5110
|
+
return loaders._state;
|
|
5111
|
+
}
|
|
5112
|
+
function normalizeOptions(options, loader, loaders, url) {
|
|
5113
|
+
loaders = loaders || [];
|
|
5114
|
+
loaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
5115
|
+
validateOptions(options, loaders);
|
|
5116
|
+
return normalizeOptionsInternal(loader, options, url);
|
|
5117
|
+
}
|
|
5118
|
+
function getFetchFunction(options, context) {
|
|
5119
|
+
const globalOptions = getGlobalLoaderOptions();
|
|
5120
|
+
const fetchOptions = options || globalOptions;
|
|
5121
|
+
if (typeof fetchOptions.fetch === "function") {
|
|
5122
|
+
return fetchOptions.fetch;
|
|
5123
|
+
}
|
|
5124
|
+
if (isObject(fetchOptions.fetch)) {
|
|
5125
|
+
return (url) => fetchFile(url, fetchOptions);
|
|
5126
|
+
}
|
|
5127
|
+
if (context?.fetch) {
|
|
5128
|
+
return context?.fetch;
|
|
5129
|
+
}
|
|
5130
|
+
return fetchFile;
|
|
5131
|
+
}
|
|
5132
|
+
function validateOptions(options, loaders) {
|
|
5133
|
+
validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);
|
|
5134
|
+
for (const loader of loaders) {
|
|
5135
|
+
const idOptions = options && options[loader.id] || {};
|
|
5136
|
+
const loaderOptions = loader.options && loader.options[loader.id] || {};
|
|
5137
|
+
const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};
|
|
5138
|
+
validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);
|
|
5139
|
+
}
|
|
5140
|
+
}
|
|
5141
|
+
function validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {
|
|
5142
|
+
const loaderName = id || "Top level";
|
|
5143
|
+
const prefix = id ? `${id}.` : "";
|
|
5144
|
+
for (const key in options) {
|
|
5145
|
+
const isSubOptions = !id && isObject(options[key]);
|
|
5146
|
+
const isBaseUriOption = key === "baseUri" && !id;
|
|
5147
|
+
const isWorkerUrlOption = key === "workerUrl" && id;
|
|
5148
|
+
if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {
|
|
5149
|
+
if (key in deprecatedOptions) {
|
|
5150
|
+
probeLog.warn(`${loaderName} loader option '${prefix}${key}' no longer supported, use '${deprecatedOptions[key]}'`)();
|
|
5151
|
+
} else if (!isSubOptions) {
|
|
5152
|
+
const suggestion = findSimilarOption(key, loaders);
|
|
5153
|
+
probeLog.warn(`${loaderName} loader option '${prefix}${key}' not recognized. ${suggestion}`)();
|
|
5154
|
+
}
|
|
5155
|
+
}
|
|
5156
|
+
}
|
|
5157
|
+
}
|
|
5158
|
+
function findSimilarOption(optionKey, loaders) {
|
|
5159
|
+
const lowerCaseOptionKey = optionKey.toLowerCase();
|
|
5160
|
+
let bestSuggestion = "";
|
|
5161
|
+
for (const loader of loaders) {
|
|
5162
|
+
for (const key in loader.options) {
|
|
5163
|
+
if (optionKey === key) {
|
|
5164
|
+
return `Did you mean '${loader.id}.${key}'?`;
|
|
5165
|
+
}
|
|
5166
|
+
const lowerCaseKey = key.toLowerCase();
|
|
5167
|
+
const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);
|
|
5168
|
+
if (isPartialMatch) {
|
|
5169
|
+
bestSuggestion = bestSuggestion || `Did you mean '${loader.id}.${key}'?`;
|
|
5170
|
+
}
|
|
5171
|
+
}
|
|
5172
|
+
}
|
|
5173
|
+
return bestSuggestion;
|
|
5174
|
+
}
|
|
5175
|
+
function normalizeOptionsInternal(loader, options, url) {
|
|
5176
|
+
const loaderDefaultOptions = loader.options || {};
|
|
5177
|
+
const mergedOptions = { ...loaderDefaultOptions };
|
|
5178
|
+
addUrlOptions(mergedOptions, url);
|
|
5179
|
+
if (mergedOptions.log === null) {
|
|
5180
|
+
mergedOptions.log = new NullLog();
|
|
5181
|
+
}
|
|
5182
|
+
mergeNestedFields(mergedOptions, getGlobalLoaderOptions());
|
|
5183
|
+
mergeNestedFields(mergedOptions, options);
|
|
5184
|
+
return mergedOptions;
|
|
5185
|
+
}
|
|
5186
|
+
function mergeNestedFields(mergedOptions, options) {
|
|
5187
|
+
for (const key in options) {
|
|
5188
|
+
if (key in options) {
|
|
5189
|
+
const value = options[key];
|
|
5190
|
+
if (isPureObject(value) && isPureObject(mergedOptions[key])) {
|
|
5191
|
+
mergedOptions[key] = {
|
|
5192
|
+
...mergedOptions[key],
|
|
5193
|
+
...options[key]
|
|
5194
|
+
};
|
|
5195
|
+
} else {
|
|
5196
|
+
mergedOptions[key] = options[key];
|
|
5197
|
+
}
|
|
5198
|
+
}
|
|
5199
|
+
}
|
|
5200
|
+
}
|
|
5201
|
+
function addUrlOptions(options, url) {
|
|
5202
|
+
if (url && !("baseUri" in options)) {
|
|
5203
|
+
options.baseUri = url;
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5206
|
+
var getGlobalLoaderOptions;
|
|
5207
|
+
var init_option_utils = __esm({
|
|
5208
|
+
"../core/src/lib/loader-utils/option-utils.ts"() {
|
|
5209
|
+
init_is_type();
|
|
5210
|
+
init_fetch_file();
|
|
5211
|
+
init_loggers();
|
|
5212
|
+
init_option_defaults();
|
|
5213
|
+
getGlobalLoaderOptions = () => {
|
|
5214
|
+
const state = getGlobalLoaderState();
|
|
5215
|
+
state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS };
|
|
5216
|
+
return state.globalOptions;
|
|
5217
|
+
};
|
|
5218
|
+
}
|
|
5219
|
+
});
|
|
5220
|
+
|
|
5221
|
+
// ../core/src/lib/loader-utils/normalize-loader.ts
|
|
5222
|
+
function isLoaderObject(loader) {
|
|
5223
|
+
if (!loader) {
|
|
5224
|
+
return false;
|
|
5225
|
+
}
|
|
5226
|
+
if (Array.isArray(loader)) {
|
|
5227
|
+
loader = loader[0];
|
|
5228
|
+
}
|
|
5229
|
+
const hasExtensions = Array.isArray(loader?.extensions);
|
|
5230
|
+
return hasExtensions;
|
|
5231
|
+
}
|
|
5232
|
+
function normalizeLoader(loader) {
|
|
5233
|
+
assert2(loader, "null loader");
|
|
5234
|
+
assert2(isLoaderObject(loader), "invalid loader");
|
|
5235
|
+
let options;
|
|
5236
|
+
if (Array.isArray(loader)) {
|
|
5237
|
+
options = loader[1];
|
|
5238
|
+
loader = loader[0];
|
|
5239
|
+
loader = {
|
|
5240
|
+
...loader,
|
|
5241
|
+
options: { ...loader.options, ...options }
|
|
5242
|
+
};
|
|
5243
|
+
}
|
|
5244
|
+
if (loader?.parseTextSync || loader?.parseText) {
|
|
5245
|
+
loader.text = true;
|
|
5246
|
+
}
|
|
5247
|
+
if (!loader.text) {
|
|
5248
|
+
loader.binary = true;
|
|
5249
|
+
}
|
|
5250
|
+
return loader;
|
|
5251
|
+
}
|
|
5252
|
+
var init_normalize_loader = __esm({
|
|
5253
|
+
"../core/src/lib/loader-utils/normalize-loader.ts"() {
|
|
5254
|
+
init_src2();
|
|
5255
|
+
}
|
|
5256
|
+
});
|
|
5257
|
+
|
|
5258
|
+
// ../core/src/lib/api/register-loaders.ts
|
|
5259
|
+
function getRegisteredLoaders() {
|
|
5260
|
+
return getGlobalLoaderRegistry();
|
|
5261
|
+
}
|
|
5262
|
+
var getGlobalLoaderRegistry;
|
|
5263
|
+
var init_register_loaders = __esm({
|
|
5264
|
+
"../core/src/lib/api/register-loaders.ts"() {
|
|
5265
|
+
init_option_utils();
|
|
5266
|
+
getGlobalLoaderRegistry = () => {
|
|
5267
|
+
const state = getGlobalLoaderState();
|
|
5268
|
+
state.loaderRegistry = state.loaderRegistry || [];
|
|
5269
|
+
return state.loaderRegistry;
|
|
5270
|
+
};
|
|
5271
|
+
}
|
|
5272
|
+
});
|
|
5273
|
+
|
|
5274
|
+
// ../core/src/lib/api/select-loader.ts
|
|
5275
|
+
async function selectLoader(data, loaders = [], options, context) {
|
|
5276
|
+
if (!validHTTPResponse(data)) {
|
|
5277
|
+
return null;
|
|
5278
|
+
}
|
|
5279
|
+
let loader = selectLoaderSync(data, loaders, { ...options, nothrow: true }, context);
|
|
5280
|
+
if (loader) {
|
|
5281
|
+
return loader;
|
|
5282
|
+
}
|
|
5283
|
+
if (isBlob(data)) {
|
|
5284
|
+
data = await data.slice(0, 10).arrayBuffer();
|
|
5285
|
+
loader = selectLoaderSync(data, loaders, options, context);
|
|
5286
|
+
}
|
|
5287
|
+
if (!loader && !options?.nothrow) {
|
|
5288
|
+
throw new Error(getNoValidLoaderMessage(data));
|
|
5289
|
+
}
|
|
5290
|
+
return loader;
|
|
5291
|
+
}
|
|
5292
|
+
function selectLoaderSync(data, loaders = [], options, context) {
|
|
5293
|
+
if (!validHTTPResponse(data)) {
|
|
5294
|
+
return null;
|
|
5295
|
+
}
|
|
5296
|
+
if (loaders && !Array.isArray(loaders)) {
|
|
5297
|
+
return normalizeLoader(loaders);
|
|
5298
|
+
}
|
|
5299
|
+
let candidateLoaders = [];
|
|
5300
|
+
if (loaders) {
|
|
5301
|
+
candidateLoaders = candidateLoaders.concat(loaders);
|
|
5302
|
+
}
|
|
5303
|
+
if (!options?.ignoreRegisteredLoaders) {
|
|
5304
|
+
candidateLoaders.push(...getRegisteredLoaders());
|
|
5305
|
+
}
|
|
5306
|
+
normalizeLoaders(candidateLoaders);
|
|
5307
|
+
const loader = selectLoaderInternal(data, candidateLoaders, options, context);
|
|
5308
|
+
if (!loader && !options?.nothrow) {
|
|
5309
|
+
throw new Error(getNoValidLoaderMessage(data));
|
|
5310
|
+
}
|
|
5311
|
+
return loader;
|
|
5312
|
+
}
|
|
5313
|
+
function selectLoaderInternal(data, loaders, options, context) {
|
|
5314
|
+
const { url, type } = getResourceUrlAndType(data);
|
|
5315
|
+
const testUrl = url || context?.url;
|
|
5316
|
+
let loader = null;
|
|
5317
|
+
if (options?.mimeType) {
|
|
5318
|
+
loader = findLoaderByMIMEType(loaders, options?.mimeType);
|
|
5319
|
+
}
|
|
5320
|
+
loader = loader || findLoaderByUrl(loaders, testUrl);
|
|
5321
|
+
loader = loader || findLoaderByMIMEType(loaders, type);
|
|
5322
|
+
loader = loader || findLoaderByInitialBytes(loaders, data);
|
|
5323
|
+
loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
|
|
5324
|
+
return loader;
|
|
5325
|
+
}
|
|
5326
|
+
function validHTTPResponse(data) {
|
|
5327
|
+
if (data instanceof Response) {
|
|
5328
|
+
if (data.status === 204) {
|
|
5329
|
+
return false;
|
|
5330
|
+
}
|
|
5331
|
+
}
|
|
5332
|
+
return true;
|
|
5333
|
+
}
|
|
5334
|
+
function getNoValidLoaderMessage(data) {
|
|
5335
|
+
const { url, type } = getResourceUrlAndType(data);
|
|
5336
|
+
let message = "No valid loader found (";
|
|
5337
|
+
message += url ? `${path_exports.filename(url)}, ` : "no url provided, ";
|
|
5338
|
+
message += `MIME type: ${type ? `"${type}"` : "not provided"}, `;
|
|
5339
|
+
const firstCharacters = data ? getFirstCharacters2(data) : "";
|
|
5340
|
+
message += firstCharacters ? ` first bytes: "${firstCharacters}"` : "first bytes: not available";
|
|
5341
|
+
message += ")";
|
|
5342
|
+
return message;
|
|
5343
|
+
}
|
|
5344
|
+
function normalizeLoaders(loaders) {
|
|
5345
|
+
for (const loader of loaders) {
|
|
5346
|
+
normalizeLoader(loader);
|
|
5347
|
+
}
|
|
5348
|
+
}
|
|
5349
|
+
function findLoaderByUrl(loaders, url) {
|
|
5350
|
+
const match = url && EXT_PATTERN.exec(url);
|
|
5351
|
+
const extension = match && match[1];
|
|
5352
|
+
return extension ? findLoaderByExtension(loaders, extension) : null;
|
|
5353
|
+
}
|
|
5354
|
+
function findLoaderByExtension(loaders, extension) {
|
|
5355
|
+
extension = extension.toLowerCase();
|
|
5356
|
+
for (const loader of loaders) {
|
|
5357
|
+
for (const loaderExtension of loader.extensions) {
|
|
5358
|
+
if (loaderExtension.toLowerCase() === extension) {
|
|
5359
|
+
return loader;
|
|
5360
|
+
}
|
|
5361
|
+
}
|
|
5362
|
+
}
|
|
5363
|
+
return null;
|
|
5364
|
+
}
|
|
5365
|
+
function findLoaderByMIMEType(loaders, mimeType) {
|
|
5366
|
+
for (const loader of loaders) {
|
|
5367
|
+
if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {
|
|
5368
|
+
return loader;
|
|
5369
|
+
}
|
|
5370
|
+
if (mimeType === `application/x.${loader.id}`) {
|
|
5371
|
+
return loader;
|
|
5372
|
+
}
|
|
5373
|
+
}
|
|
5374
|
+
return null;
|
|
5375
|
+
}
|
|
5376
|
+
function findLoaderByInitialBytes(loaders, data) {
|
|
5377
|
+
if (!data) {
|
|
5378
|
+
return null;
|
|
5379
|
+
}
|
|
5380
|
+
for (const loader of loaders) {
|
|
5381
|
+
if (typeof data === "string") {
|
|
5382
|
+
if (testDataAgainstText(data, loader)) {
|
|
5383
|
+
return loader;
|
|
5384
|
+
}
|
|
5385
|
+
} else if (ArrayBuffer.isView(data)) {
|
|
5386
|
+
if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {
|
|
5387
|
+
return loader;
|
|
5388
|
+
}
|
|
5389
|
+
} else if (data instanceof ArrayBuffer) {
|
|
5390
|
+
const byteOffset = 0;
|
|
5391
|
+
if (testDataAgainstBinary(data, byteOffset, loader)) {
|
|
5392
|
+
return loader;
|
|
5393
|
+
}
|
|
5394
|
+
}
|
|
5395
|
+
}
|
|
5396
|
+
return null;
|
|
5397
|
+
}
|
|
5398
|
+
function testDataAgainstText(data, loader) {
|
|
5399
|
+
if (loader.testText) {
|
|
5400
|
+
return loader.testText(data);
|
|
5401
|
+
}
|
|
5402
|
+
const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];
|
|
5403
|
+
return tests.some((test) => data.startsWith(test));
|
|
5404
|
+
}
|
|
5405
|
+
function testDataAgainstBinary(data, byteOffset, loader) {
|
|
5406
|
+
const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];
|
|
5407
|
+
return tests.some((test) => testBinary(data, byteOffset, loader, test));
|
|
5408
|
+
}
|
|
5409
|
+
function testBinary(data, byteOffset, loader, test) {
|
|
5410
|
+
if (test instanceof ArrayBuffer) {
|
|
5411
|
+
return compareArrayBuffers(test, data, test.byteLength);
|
|
5412
|
+
}
|
|
5413
|
+
switch (typeof test) {
|
|
5414
|
+
case "function":
|
|
5415
|
+
return test(data, loader);
|
|
5416
|
+
case "string":
|
|
5417
|
+
const magic = getMagicString2(data, byteOffset, test.length);
|
|
5418
|
+
return test === magic;
|
|
5419
|
+
default:
|
|
5420
|
+
return false;
|
|
5421
|
+
}
|
|
5422
|
+
}
|
|
5423
|
+
function getFirstCharacters2(data, length4 = 5) {
|
|
5424
|
+
if (typeof data === "string") {
|
|
5425
|
+
return data.slice(0, length4);
|
|
5426
|
+
} else if (ArrayBuffer.isView(data)) {
|
|
5427
|
+
return getMagicString2(data.buffer, data.byteOffset, length4);
|
|
5428
|
+
} else if (data instanceof ArrayBuffer) {
|
|
5429
|
+
const byteOffset = 0;
|
|
5430
|
+
return getMagicString2(data, byteOffset, length4);
|
|
5431
|
+
}
|
|
5432
|
+
return "";
|
|
5433
|
+
}
|
|
5434
|
+
function getMagicString2(arrayBuffer, byteOffset, length4) {
|
|
5435
|
+
if (arrayBuffer.byteLength < byteOffset + length4) {
|
|
5436
|
+
return "";
|
|
5437
|
+
}
|
|
5438
|
+
const dataView = new DataView(arrayBuffer);
|
|
5439
|
+
let magic = "";
|
|
5440
|
+
for (let i2 = 0; i2 < length4; i2++) {
|
|
5441
|
+
magic += String.fromCharCode(dataView.getUint8(byteOffset + i2));
|
|
5442
|
+
}
|
|
5443
|
+
return magic;
|
|
5444
|
+
}
|
|
5445
|
+
var EXT_PATTERN;
|
|
5446
|
+
var init_select_loader = __esm({
|
|
5447
|
+
"../core/src/lib/api/select-loader.ts"() {
|
|
5448
|
+
init_src2();
|
|
5449
|
+
init_normalize_loader();
|
|
5450
|
+
init_resource_utils();
|
|
5451
|
+
init_register_loaders();
|
|
5452
|
+
init_is_type();
|
|
5453
|
+
EXT_PATTERN = /\.([^.]+)$/;
|
|
5454
|
+
}
|
|
5455
|
+
});
|
|
5456
|
+
|
|
5457
|
+
// ../core/src/iterators/make-iterator/make-string-iterator.ts
|
|
5458
|
+
function* makeStringIterator(string, options) {
|
|
5459
|
+
const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;
|
|
5460
|
+
let offset = 0;
|
|
5461
|
+
const textEncoder = new TextEncoder();
|
|
5462
|
+
while (offset < string.length) {
|
|
5463
|
+
const chunkLength = Math.min(string.length - offset, chunkSize);
|
|
5464
|
+
const chunk = string.slice(offset, offset + chunkLength);
|
|
5465
|
+
offset += chunkLength;
|
|
5466
|
+
yield textEncoder.encode(chunk);
|
|
5467
|
+
}
|
|
5468
|
+
}
|
|
5469
|
+
var DEFAULT_CHUNK_SIZE;
|
|
5470
|
+
var init_make_string_iterator = __esm({
|
|
5471
|
+
"../core/src/iterators/make-iterator/make-string-iterator.ts"() {
|
|
5472
|
+
DEFAULT_CHUNK_SIZE = 256 * 1024;
|
|
5473
|
+
}
|
|
5474
|
+
});
|
|
5475
|
+
|
|
5476
|
+
// ../core/src/iterators/make-iterator/make-array-buffer-iterator.ts
|
|
5477
|
+
function* makeArrayBufferIterator(arrayBuffer, options = {}) {
|
|
5478
|
+
const { chunkSize = DEFAULT_CHUNK_SIZE2 } = options;
|
|
5479
|
+
let byteOffset = 0;
|
|
5480
|
+
while (byteOffset < arrayBuffer.byteLength) {
|
|
5481
|
+
const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);
|
|
5482
|
+
const chunk = new ArrayBuffer(chunkByteLength);
|
|
5483
|
+
const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);
|
|
5484
|
+
const chunkArray = new Uint8Array(chunk);
|
|
5485
|
+
chunkArray.set(sourceArray);
|
|
5486
|
+
byteOffset += chunkByteLength;
|
|
5487
|
+
yield chunk;
|
|
5488
|
+
}
|
|
5489
|
+
}
|
|
5490
|
+
var DEFAULT_CHUNK_SIZE2;
|
|
5491
|
+
var init_make_array_buffer_iterator = __esm({
|
|
5492
|
+
"../core/src/iterators/make-iterator/make-array-buffer-iterator.ts"() {
|
|
5493
|
+
DEFAULT_CHUNK_SIZE2 = 256 * 1024;
|
|
5494
|
+
}
|
|
5495
|
+
});
|
|
5496
|
+
|
|
5497
|
+
// ../core/src/iterators/make-iterator/make-blob-iterator.ts
|
|
5498
|
+
async function* makeBlobIterator(blob, options) {
|
|
5499
|
+
const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE3;
|
|
5500
|
+
let offset = 0;
|
|
5501
|
+
while (offset < blob.size) {
|
|
5502
|
+
const end = offset + chunkSize;
|
|
5503
|
+
const chunk = await blob.slice(offset, end).arrayBuffer();
|
|
5504
|
+
offset = end;
|
|
5505
|
+
yield chunk;
|
|
5506
|
+
}
|
|
5507
|
+
}
|
|
5508
|
+
var DEFAULT_CHUNK_SIZE3;
|
|
5509
|
+
var init_make_blob_iterator = __esm({
|
|
5510
|
+
"../core/src/iterators/make-iterator/make-blob-iterator.ts"() {
|
|
5511
|
+
DEFAULT_CHUNK_SIZE3 = 1024 * 1024;
|
|
5512
|
+
}
|
|
5513
|
+
});
|
|
5514
|
+
|
|
5515
|
+
// ../core/src/iterators/make-iterator/make-stream-iterator.ts
|
|
5516
|
+
function makeStreamIterator(stream, options) {
|
|
5517
|
+
return isBrowser ? makeBrowserStreamIterator(stream, options) : makeNodeStreamIterator(stream, options);
|
|
5518
|
+
}
|
|
5519
|
+
async function* makeBrowserStreamIterator(stream, options) {
|
|
5520
|
+
const reader = stream.getReader();
|
|
5521
|
+
let nextBatchPromise;
|
|
5522
|
+
try {
|
|
5523
|
+
while (true) {
|
|
5524
|
+
const currentBatchPromise = nextBatchPromise || reader.read();
|
|
5525
|
+
if (options?._streamReadAhead) {
|
|
5526
|
+
nextBatchPromise = reader.read();
|
|
5527
|
+
}
|
|
5528
|
+
const { done, value } = await currentBatchPromise;
|
|
5529
|
+
if (done) {
|
|
5530
|
+
return;
|
|
5531
|
+
}
|
|
5532
|
+
yield toArrayBuffer(value);
|
|
5533
|
+
}
|
|
5534
|
+
} catch (error) {
|
|
5535
|
+
reader.releaseLock();
|
|
5536
|
+
}
|
|
5537
|
+
}
|
|
5538
|
+
async function* makeNodeStreamIterator(stream, options) {
|
|
5539
|
+
for await (const chunk of stream) {
|
|
5540
|
+
yield toArrayBuffer(chunk);
|
|
5541
|
+
}
|
|
5542
|
+
}
|
|
5543
|
+
var init_make_stream_iterator = __esm({
|
|
5544
|
+
"../core/src/iterators/make-iterator/make-stream-iterator.ts"() {
|
|
5545
|
+
init_src2();
|
|
5546
|
+
}
|
|
5547
|
+
});
|
|
5548
|
+
|
|
5549
|
+
// ../core/src/iterators/make-iterator/make-iterator.ts
|
|
5550
|
+
function makeIterator(data, options) {
|
|
5551
|
+
if (typeof data === "string") {
|
|
5552
|
+
return makeStringIterator(data, options);
|
|
5553
|
+
}
|
|
5554
|
+
if (data instanceof ArrayBuffer) {
|
|
5555
|
+
return makeArrayBufferIterator(data, options);
|
|
5556
|
+
}
|
|
5557
|
+
if (isBlob(data)) {
|
|
5558
|
+
return makeBlobIterator(data, options);
|
|
5559
|
+
}
|
|
5560
|
+
if (isReadableStream(data)) {
|
|
5561
|
+
return makeStreamIterator(data, options);
|
|
5562
|
+
}
|
|
5563
|
+
if (isResponse(data)) {
|
|
5564
|
+
const response = data;
|
|
5565
|
+
return makeStreamIterator(response.body, options);
|
|
5566
|
+
}
|
|
5567
|
+
throw new Error("makeIterator");
|
|
5568
|
+
}
|
|
5569
|
+
var init_make_iterator = __esm({
|
|
5570
|
+
"../core/src/iterators/make-iterator/make-iterator.ts"() {
|
|
5571
|
+
init_make_string_iterator();
|
|
5572
|
+
init_make_array_buffer_iterator();
|
|
5573
|
+
init_make_blob_iterator();
|
|
5574
|
+
init_make_stream_iterator();
|
|
5575
|
+
init_is_type();
|
|
5576
|
+
}
|
|
5577
|
+
});
|
|
5578
|
+
|
|
5579
|
+
// ../core/src/lib/loader-utils/get-data.ts
|
|
5580
|
+
function getArrayBufferOrStringFromDataSync(data, loader, options) {
|
|
5581
|
+
if (loader.text && typeof data === "string") {
|
|
5582
|
+
return data;
|
|
5583
|
+
}
|
|
5584
|
+
if (isBuffer2(data)) {
|
|
5585
|
+
data = data.buffer;
|
|
5586
|
+
}
|
|
5587
|
+
if (data instanceof ArrayBuffer) {
|
|
5588
|
+
const arrayBuffer = data;
|
|
5589
|
+
if (loader.text && !loader.binary) {
|
|
5590
|
+
const textDecoder = new TextDecoder("utf8");
|
|
5591
|
+
return textDecoder.decode(arrayBuffer);
|
|
5592
|
+
}
|
|
5593
|
+
return arrayBuffer;
|
|
5594
|
+
}
|
|
5595
|
+
if (ArrayBuffer.isView(data)) {
|
|
5596
|
+
if (loader.text && !loader.binary) {
|
|
5597
|
+
const textDecoder = new TextDecoder("utf8");
|
|
5598
|
+
return textDecoder.decode(data);
|
|
5599
|
+
}
|
|
5600
|
+
let arrayBuffer = data.buffer;
|
|
5601
|
+
const byteLength = data.byteLength || data.length;
|
|
5602
|
+
if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {
|
|
5603
|
+
arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);
|
|
5604
|
+
}
|
|
5605
|
+
return arrayBuffer;
|
|
5606
|
+
}
|
|
5607
|
+
throw new Error(ERR_DATA);
|
|
5608
|
+
}
|
|
5609
|
+
async function getArrayBufferOrStringFromData(data, loader, options) {
|
|
5610
|
+
const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);
|
|
5611
|
+
if (typeof data === "string" || isArrayBuffer) {
|
|
5612
|
+
return getArrayBufferOrStringFromDataSync(data, loader, options);
|
|
5613
|
+
}
|
|
5614
|
+
if (isBlob(data)) {
|
|
5615
|
+
data = await makeResponse(data);
|
|
5616
|
+
}
|
|
5617
|
+
if (isResponse(data)) {
|
|
5618
|
+
const response = data;
|
|
5619
|
+
await checkResponse(response);
|
|
5620
|
+
return loader.binary ? await response.arrayBuffer() : await response.text();
|
|
5621
|
+
}
|
|
5622
|
+
if (isReadableStream(data)) {
|
|
5623
|
+
data = makeIterator(data, options);
|
|
5624
|
+
}
|
|
5625
|
+
if (isIterable(data) || isAsyncIterable(data)) {
|
|
5626
|
+
return concatenateArrayBuffersAsync(data);
|
|
5627
|
+
}
|
|
5628
|
+
throw new Error(ERR_DATA);
|
|
5629
|
+
}
|
|
5630
|
+
var ERR_DATA;
|
|
5631
|
+
var init_get_data = __esm({
|
|
5632
|
+
"../core/src/lib/loader-utils/get-data.ts"() {
|
|
5633
|
+
init_src2();
|
|
5634
|
+
init_is_type();
|
|
5635
|
+
init_make_iterator();
|
|
5636
|
+
init_response_utils();
|
|
5637
|
+
ERR_DATA = "Cannot convert supplied data type";
|
|
5638
|
+
}
|
|
5639
|
+
});
|
|
5640
|
+
|
|
5641
|
+
// ../core/src/lib/loader-utils/loader-context.ts
|
|
5642
|
+
function getLoaderContext(context, options, previousContext = null) {
|
|
5643
|
+
if (previousContext) {
|
|
5644
|
+
return previousContext;
|
|
5645
|
+
}
|
|
5646
|
+
const resolvedContext = {
|
|
5647
|
+
fetch: getFetchFunction(options, context),
|
|
5648
|
+
...context
|
|
5649
|
+
};
|
|
5650
|
+
if (!Array.isArray(resolvedContext.loaders)) {
|
|
5651
|
+
resolvedContext.loaders = null;
|
|
5652
|
+
}
|
|
5653
|
+
return resolvedContext;
|
|
5654
|
+
}
|
|
5655
|
+
function getLoadersFromContext(loaders, context) {
|
|
5656
|
+
if (!context && loaders && !Array.isArray(loaders)) {
|
|
5657
|
+
return loaders;
|
|
5658
|
+
}
|
|
5659
|
+
let candidateLoaders;
|
|
5660
|
+
if (loaders) {
|
|
5661
|
+
candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
5662
|
+
}
|
|
5663
|
+
if (context && context.loaders) {
|
|
5664
|
+
const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];
|
|
5665
|
+
candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;
|
|
5666
|
+
}
|
|
5667
|
+
return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;
|
|
5668
|
+
}
|
|
5669
|
+
var init_loader_context = __esm({
|
|
5670
|
+
"../core/src/lib/loader-utils/loader-context.ts"() {
|
|
5671
|
+
init_option_utils();
|
|
5672
|
+
}
|
|
5673
|
+
});
|
|
5674
|
+
|
|
5675
|
+
// ../core/src/lib/api/parse.ts
|
|
5676
|
+
async function parse(data, loaders, options, context) {
|
|
5677
|
+
assert3(!context || typeof context === "object");
|
|
5678
|
+
if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {
|
|
5679
|
+
context = void 0;
|
|
5680
|
+
options = loaders;
|
|
5681
|
+
loaders = void 0;
|
|
5682
|
+
}
|
|
5683
|
+
data = await data;
|
|
5684
|
+
options = options || {};
|
|
5685
|
+
const { url } = getResourceUrlAndType(data);
|
|
5686
|
+
const typedLoaders = loaders;
|
|
5687
|
+
const candidateLoaders = getLoadersFromContext(typedLoaders, context);
|
|
5688
|
+
const loader = await selectLoader(data, candidateLoaders, options);
|
|
5689
|
+
if (!loader) {
|
|
5690
|
+
return null;
|
|
5691
|
+
}
|
|
5692
|
+
options = normalizeOptions(options, loader, candidateLoaders, url);
|
|
5693
|
+
context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context);
|
|
5694
|
+
return await parseWithLoader(loader, data, options, context);
|
|
5695
|
+
}
|
|
5696
|
+
async function parseWithLoader(loader, data, options, context) {
|
|
5697
|
+
validateWorkerVersion(loader);
|
|
5698
|
+
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
5699
|
+
if (loader.parseTextSync && typeof data === "string") {
|
|
5700
|
+
options.dataType = "text";
|
|
5701
|
+
return loader.parseTextSync(data, options, context, loader);
|
|
5702
|
+
}
|
|
5703
|
+
if (canParseWithWorker(loader, options)) {
|
|
5704
|
+
return await parseWithWorker(loader, data, options, context, parse);
|
|
5705
|
+
}
|
|
5706
|
+
if (loader.parseText && typeof data === "string") {
|
|
5707
|
+
return await loader.parseText(data, options, context, loader);
|
|
5708
|
+
}
|
|
5709
|
+
if (loader.parse) {
|
|
5710
|
+
return await loader.parse(data, options, context, loader);
|
|
5711
|
+
}
|
|
5712
|
+
assert3(!loader.parseSync);
|
|
5713
|
+
throw new Error(`${loader.id} loader - no parser found and worker is disabled`);
|
|
5714
|
+
}
|
|
5715
|
+
var init_parse = __esm({
|
|
5716
|
+
"../core/src/lib/api/parse.ts"() {
|
|
5717
|
+
init_src();
|
|
5718
|
+
init_src2();
|
|
5719
|
+
init_normalize_loader();
|
|
5720
|
+
init_option_utils();
|
|
5721
|
+
init_get_data();
|
|
5722
|
+
init_loader_context();
|
|
5723
|
+
init_resource_utils();
|
|
5724
|
+
init_select_loader();
|
|
5725
|
+
}
|
|
5726
|
+
});
|
|
5727
|
+
|
|
5728
|
+
// ../core/src/lib/api/load.ts
|
|
5729
|
+
async function load(url, loaders, options, context) {
|
|
5730
|
+
if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
|
|
5731
|
+
context = void 0;
|
|
5732
|
+
options = loaders;
|
|
5733
|
+
loaders = void 0;
|
|
5734
|
+
}
|
|
5735
|
+
const fetch2 = getFetchFunction(options);
|
|
5736
|
+
let data = url;
|
|
5737
|
+
if (typeof url === "string") {
|
|
5738
|
+
data = await fetch2(url);
|
|
5739
|
+
}
|
|
5740
|
+
if (isBlob(url)) {
|
|
5741
|
+
data = await fetch2(url);
|
|
5742
|
+
}
|
|
5743
|
+
return await parse(data, loaders, options);
|
|
5744
|
+
}
|
|
5745
|
+
var init_load = __esm({
|
|
5746
|
+
"../core/src/lib/api/load.ts"() {
|
|
5747
|
+
init_is_type();
|
|
5748
|
+
init_normalize_loader();
|
|
5749
|
+
init_option_utils();
|
|
5750
|
+
init_parse();
|
|
5751
|
+
}
|
|
5752
|
+
});
|
|
5753
|
+
|
|
3819
5754
|
// ../core/src/index.ts
|
|
3820
5755
|
var init_src3 = __esm({
|
|
3821
5756
|
"../core/src/index.ts"() {
|
|
3822
5757
|
init_fetch_file();
|
|
5758
|
+
init_load();
|
|
3823
5759
|
}
|
|
3824
5760
|
});
|
|
3825
5761
|
|
|
@@ -3856,10 +5792,10 @@
|
|
|
3856
5792
|
});
|
|
3857
5793
|
|
|
3858
5794
|
// src/lib/utils/version.ts
|
|
3859
|
-
var
|
|
5795
|
+
var VERSION4;
|
|
3860
5796
|
var init_version2 = __esm({
|
|
3861
5797
|
"src/lib/utils/version.ts"() {
|
|
3862
|
-
|
|
5798
|
+
VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
3863
5799
|
}
|
|
3864
5800
|
});
|
|
3865
5801
|
|
|
@@ -3873,7 +5809,8 @@
|
|
|
3873
5809
|
BATCHED_3D_MODEL: "b3dm",
|
|
3874
5810
|
INSTANCED_3D_MODEL: "i3dm",
|
|
3875
5811
|
GEOMETRY: "geom",
|
|
3876
|
-
VECTOR: "vect"
|
|
5812
|
+
VECTOR: "vect",
|
|
5813
|
+
GLTF: "glTF"
|
|
3877
5814
|
};
|
|
3878
5815
|
TILE3D_TYPES = Object.keys(TILE3D_TYPE);
|
|
3879
5816
|
MAGIC_ARRAY = {
|
|
@@ -3893,7 +5830,7 @@
|
|
|
3893
5830
|
const string = textDecoder.decode(typedArray);
|
|
3894
5831
|
return string;
|
|
3895
5832
|
}
|
|
3896
|
-
function
|
|
5833
|
+
function getMagicString3(arrayBuffer, byteOffset = 0) {
|
|
3897
5834
|
const dataView = new DataView(arrayBuffer);
|
|
3898
5835
|
return `${String.fromCharCode(dataView.getUint8(byteOffset + 0))}${String.fromCharCode(dataView.getUint8(byteOffset + 1))}${String.fromCharCode(dataView.getUint8(byteOffset + 2))}${String.fromCharCode(dataView.getUint8(byteOffset + 3))}`;
|
|
3899
5836
|
}
|
|
@@ -3904,10 +5841,10 @@
|
|
|
3904
5841
|
});
|
|
3905
5842
|
|
|
3906
5843
|
// ../draco/src/lib/utils/version.ts
|
|
3907
|
-
var
|
|
5844
|
+
var VERSION5;
|
|
3908
5845
|
var init_version3 = __esm({
|
|
3909
5846
|
"../draco/src/lib/utils/version.ts"() {
|
|
3910
|
-
|
|
5847
|
+
VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
3911
5848
|
}
|
|
3912
5849
|
});
|
|
3913
5850
|
|
|
@@ -3929,7 +5866,7 @@
|
|
|
3929
5866
|
id: "draco",
|
|
3930
5867
|
module: "draco",
|
|
3931
5868
|
shapes: ["mesh"],
|
|
3932
|
-
version:
|
|
5869
|
+
version: VERSION5,
|
|
3933
5870
|
worker: true,
|
|
3934
5871
|
extensions: ["drc"],
|
|
3935
5872
|
mimeTypes: ["application/octet-stream"],
|
|
@@ -3972,12 +5909,12 @@
|
|
|
3972
5909
|
});
|
|
3973
5910
|
|
|
3974
5911
|
// ../schema/src/lib/utils/assert.ts
|
|
3975
|
-
function
|
|
5912
|
+
function assert6(condition, message) {
|
|
3976
5913
|
if (!condition) {
|
|
3977
5914
|
throw new Error(message || "loader assertion failed.");
|
|
3978
5915
|
}
|
|
3979
5916
|
}
|
|
3980
|
-
var
|
|
5917
|
+
var init_assert5 = __esm({
|
|
3981
5918
|
"../schema/src/lib/utils/assert.ts"() {
|
|
3982
5919
|
}
|
|
3983
5920
|
});
|
|
@@ -3998,10 +5935,10 @@
|
|
|
3998
5935
|
var Schema;
|
|
3999
5936
|
var init_schema = __esm({
|
|
4000
5937
|
"../schema/src/lib/schema/impl/schema.ts"() {
|
|
4001
|
-
|
|
5938
|
+
init_assert5();
|
|
4002
5939
|
Schema = class {
|
|
4003
5940
|
constructor(fields, metadata) {
|
|
4004
|
-
|
|
5941
|
+
assert6(Array.isArray(fields));
|
|
4005
5942
|
checkNames(fields);
|
|
4006
5943
|
this.fields = fields;
|
|
4007
5944
|
this.metadata = metadata || new Map();
|
|
@@ -4137,7 +6074,7 @@
|
|
|
4137
6074
|
});
|
|
4138
6075
|
|
|
4139
6076
|
// ../schema/src/lib/schema/impl/type.ts
|
|
4140
|
-
var DataType, Null, Bool, Int, Int8, Int16, Int32, Uint8, Uint16, Uint32, Precision, Float, Float32, Float64, Binary, Utf8, DateUnit,
|
|
6077
|
+
var DataType, Null, Bool, Int, Int8, Int16, Int32, Uint8, Uint16, Uint32, Precision, Float, Float32, Float64, Binary, Utf8, DateUnit, Date2, TimeUnit, Time, Timestamp, IntervalUnit, Interval, FixedSizeList, Struct;
|
|
4141
6078
|
var init_type = __esm({
|
|
4142
6079
|
"../schema/src/lib/schema/impl/type.ts"() {
|
|
4143
6080
|
init_enum();
|
|
@@ -4330,7 +6267,7 @@
|
|
|
4330
6267
|
DAY: 0,
|
|
4331
6268
|
MILLISECOND: 1
|
|
4332
6269
|
};
|
|
4333
|
-
|
|
6270
|
+
Date2 = class extends DataType {
|
|
4334
6271
|
constructor(unit) {
|
|
4335
6272
|
super();
|
|
4336
6273
|
this.unit = unit;
|
|
@@ -4960,7 +6897,7 @@
|
|
|
4960
6897
|
});
|
|
4961
6898
|
|
|
4962
6899
|
// ../draco/src/index.ts
|
|
4963
|
-
async function
|
|
6900
|
+
async function parse2(arrayBuffer, options) {
|
|
4964
6901
|
const { draco } = await loadDracoDecoderModule(options);
|
|
4965
6902
|
const dracoParser = new DracoParser(draco);
|
|
4966
6903
|
try {
|
|
@@ -4977,7 +6914,7 @@
|
|
|
4977
6914
|
init_draco_module_loader();
|
|
4978
6915
|
DracoLoader2 = {
|
|
4979
6916
|
...DracoLoader,
|
|
4980
|
-
parse
|
|
6917
|
+
parse: parse2
|
|
4981
6918
|
};
|
|
4982
6919
|
}
|
|
4983
6920
|
});
|
|
@@ -5089,12 +7026,12 @@
|
|
|
5089
7026
|
});
|
|
5090
7027
|
|
|
5091
7028
|
// ../math/src/geometry/utils/assert.ts
|
|
5092
|
-
function
|
|
7029
|
+
function assert7(condition, message) {
|
|
5093
7030
|
if (!condition) {
|
|
5094
7031
|
throw new Error(`math.gl assertion failed. ${message}`);
|
|
5095
7032
|
}
|
|
5096
7033
|
}
|
|
5097
|
-
var
|
|
7034
|
+
var init_assert6 = __esm({
|
|
5098
7035
|
"../math/src/geometry/utils/assert.ts"() {
|
|
5099
7036
|
}
|
|
5100
7037
|
});
|
|
@@ -5122,7 +7059,7 @@
|
|
|
5122
7059
|
return value < 0 ? -1 : 1;
|
|
5123
7060
|
}
|
|
5124
7061
|
function octDecodeInRange(x, y, rangeMax, result) {
|
|
5125
|
-
|
|
7062
|
+
assert7(result);
|
|
5126
7063
|
if (x < 0 || x > rangeMax || y < 0 || y > rangeMax) {
|
|
5127
7064
|
throw new Error(`x and y must be unsigned normalized integers between 0 and ${rangeMax}`);
|
|
5128
7065
|
}
|
|
@@ -5142,8 +7079,8 @@
|
|
|
5142
7079
|
var RIGHT_SHIFT, scratchVector23, scratchVector32, scratchEncodeVector2, octEncodeScratch, uint8ForceArray;
|
|
5143
7080
|
var init_attribute_compression = __esm({
|
|
5144
7081
|
"../math/src/geometry/compression/attribute-compression.ts"() {
|
|
5145
|
-
|
|
5146
|
-
|
|
7082
|
+
init_esm2();
|
|
7083
|
+
init_assert6();
|
|
5147
7084
|
RIGHT_SHIFT = 1 / 256;
|
|
5148
7085
|
scratchVector23 = new Vector2();
|
|
5149
7086
|
scratchVector32 = new Vector3();
|
|
@@ -5955,7 +7892,7 @@
|
|
|
5955
7892
|
var scratchNormal2;
|
|
5956
7893
|
var init_normalize_3d_tile_normals = __esm({
|
|
5957
7894
|
"src/lib/parsers/helpers/normalize-3d-tile-normals.ts"() {
|
|
5958
|
-
|
|
7895
|
+
init_esm2();
|
|
5959
7896
|
init_src7();
|
|
5960
7897
|
scratchNormal2 = new Vector3();
|
|
5961
7898
|
}
|
|
@@ -5987,7 +7924,7 @@
|
|
|
5987
7924
|
}
|
|
5988
7925
|
var init_normalize_3d_tile_positions = __esm({
|
|
5989
7926
|
"src/lib/parsers/helpers/normalize-3d-tile-positions.ts"() {
|
|
5990
|
-
|
|
7927
|
+
init_esm2();
|
|
5991
7928
|
init_src7();
|
|
5992
7929
|
}
|
|
5993
7930
|
});
|
|
@@ -6135,7 +8072,7 @@
|
|
|
6135
8072
|
return await loadDraco(tile, dracoData, options, context);
|
|
6136
8073
|
}
|
|
6137
8074
|
async function loadDraco(tile, dracoData, options, context) {
|
|
6138
|
-
const { parse:
|
|
8075
|
+
const { parse: parse5 } = context;
|
|
6139
8076
|
const dracoOptions = {
|
|
6140
8077
|
...options,
|
|
6141
8078
|
draco: {
|
|
@@ -6144,7 +8081,7 @@
|
|
|
6144
8081
|
}
|
|
6145
8082
|
};
|
|
6146
8083
|
delete dracoOptions["3d-tiles"];
|
|
6147
|
-
const data = await
|
|
8084
|
+
const data = await parse5(dracoData.buffer, DracoLoader2, dracoOptions);
|
|
6148
8085
|
const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
|
|
6149
8086
|
const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;
|
|
6150
8087
|
const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;
|
|
@@ -6183,7 +8120,7 @@
|
|
|
6183
8120
|
"src/lib/parsers/parse-3d-tile-point-cloud.ts"() {
|
|
6184
8121
|
init_src6();
|
|
6185
8122
|
init_src7();
|
|
6186
|
-
|
|
8123
|
+
init_esm2();
|
|
6187
8124
|
init_tile_3d_feature_table();
|
|
6188
8125
|
init_tile_3d_batch_table();
|
|
6189
8126
|
init_parse_3d_tile_header();
|
|
@@ -6195,18 +8132,18 @@
|
|
|
6195
8132
|
});
|
|
6196
8133
|
|
|
6197
8134
|
// ../gltf/src/lib/utils/version.ts
|
|
6198
|
-
var
|
|
8135
|
+
var VERSION6;
|
|
6199
8136
|
var init_version4 = __esm({
|
|
6200
8137
|
"../gltf/src/lib/utils/version.ts"() {
|
|
6201
|
-
|
|
8138
|
+
VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
6202
8139
|
}
|
|
6203
8140
|
});
|
|
6204
8141
|
|
|
6205
8142
|
// ../textures/src/lib/utils/version.ts
|
|
6206
|
-
var
|
|
8143
|
+
var VERSION7;
|
|
6207
8144
|
var init_version5 = __esm({
|
|
6208
8145
|
"../textures/src/lib/utils/version.ts"() {
|
|
6209
|
-
|
|
8146
|
+
VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
6210
8147
|
}
|
|
6211
8148
|
});
|
|
6212
8149
|
|
|
@@ -6235,8 +8172,8 @@
|
|
|
6235
8172
|
options.wasmBinary = wasmBinary;
|
|
6236
8173
|
}
|
|
6237
8174
|
return new Promise((resolve) => {
|
|
6238
|
-
BasisModule(options).then((
|
|
6239
|
-
const { BasisFile, initializeBasis } =
|
|
8175
|
+
BasisModule(options).then((module2) => {
|
|
8176
|
+
const { BasisFile, initializeBasis } = module2;
|
|
6240
8177
|
initializeBasis();
|
|
6241
8178
|
resolve({ BasisFile });
|
|
6242
8179
|
});
|
|
@@ -6266,20 +8203,20 @@
|
|
|
6266
8203
|
options.wasmBinary = wasmBinary;
|
|
6267
8204
|
}
|
|
6268
8205
|
return new Promise((resolve) => {
|
|
6269
|
-
BasisEncoderModule(options).then((
|
|
6270
|
-
const { BasisFile, KTX2File, initializeBasis, BasisEncoder } =
|
|
8206
|
+
BasisEncoderModule(options).then((module2) => {
|
|
8207
|
+
const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module2;
|
|
6271
8208
|
initializeBasis();
|
|
6272
8209
|
resolve({ BasisFile, KTX2File, BasisEncoder });
|
|
6273
8210
|
});
|
|
6274
8211
|
});
|
|
6275
8212
|
}
|
|
6276
|
-
var
|
|
8213
|
+
var VERSION8, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
|
|
6277
8214
|
var init_basis_module_loader = __esm({
|
|
6278
8215
|
"../textures/src/lib/parsers/basis-module-loader.ts"() {
|
|
6279
8216
|
init_src();
|
|
6280
|
-
|
|
6281
|
-
BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${
|
|
6282
|
-
BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${
|
|
8217
|
+
VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
8218
|
+
BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
|
|
8219
|
+
BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
|
|
6283
8220
|
}
|
|
6284
8221
|
});
|
|
6285
8222
|
|
|
@@ -6444,7 +8381,7 @@
|
|
|
6444
8381
|
}
|
|
6445
8382
|
});
|
|
6446
8383
|
|
|
6447
|
-
// ../textures/src/lib/parsers/parse-basis.
|
|
8384
|
+
// ../textures/src/lib/parsers/parse-basis.ts
|
|
6448
8385
|
async function parseBasis(data, options) {
|
|
6449
8386
|
if (options.basis.containerFormat === "auto") {
|
|
6450
8387
|
if (isKTX(data)) {
|
|
@@ -6580,7 +8517,7 @@
|
|
|
6580
8517
|
}
|
|
6581
8518
|
var OutputFormat;
|
|
6582
8519
|
var init_parse_basis = __esm({
|
|
6583
|
-
"../textures/src/lib/parsers/parse-basis.
|
|
8520
|
+
"../textures/src/lib/parsers/parse-basis.ts"() {
|
|
6584
8521
|
init_basis_module_loader();
|
|
6585
8522
|
init_gl_extensions();
|
|
6586
8523
|
init_texture_formats();
|
|
@@ -6641,7 +8578,7 @@
|
|
|
6641
8578
|
name: "Basis",
|
|
6642
8579
|
id: "basis",
|
|
6643
8580
|
module: "textures",
|
|
6644
|
-
version:
|
|
8581
|
+
version: VERSION7,
|
|
6645
8582
|
worker: true,
|
|
6646
8583
|
extensions: ["basis", "ktx2"],
|
|
6647
8584
|
mimeTypes: ["application/octet-stream", "image/ktx2"],
|
|
@@ -6664,10 +8601,10 @@
|
|
|
6664
8601
|
});
|
|
6665
8602
|
|
|
6666
8603
|
// ../images/src/lib/utils/version.ts
|
|
6667
|
-
var
|
|
8604
|
+
var VERSION9;
|
|
6668
8605
|
var init_version6 = __esm({
|
|
6669
8606
|
"../images/src/lib/utils/version.ts"() {
|
|
6670
|
-
|
|
8607
|
+
VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
6671
8608
|
}
|
|
6672
8609
|
});
|
|
6673
8610
|
|
|
@@ -6791,13 +8728,13 @@
|
|
|
6791
8728
|
// ../images/src/lib/parsers/parse-to-image.ts
|
|
6792
8729
|
async function parseToImage(arrayBuffer, options, url) {
|
|
6793
8730
|
const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);
|
|
6794
|
-
const
|
|
6795
|
-
const objectUrl = typeof blobOrDataUrl !== "string" &&
|
|
8731
|
+
const URL2 = self.URL || self.webkitURL;
|
|
8732
|
+
const objectUrl = typeof blobOrDataUrl !== "string" && URL2.createObjectURL(blobOrDataUrl);
|
|
6796
8733
|
try {
|
|
6797
8734
|
return await loadToImage(objectUrl || blobOrDataUrl, options);
|
|
6798
8735
|
} finally {
|
|
6799
8736
|
if (objectUrl) {
|
|
6800
|
-
|
|
8737
|
+
URL2.revokeObjectURL(objectUrl);
|
|
6801
8738
|
}
|
|
6802
8739
|
}
|
|
6803
8740
|
}
|
|
@@ -7062,7 +8999,7 @@
|
|
|
7062
8999
|
id: "image",
|
|
7063
9000
|
module: "images",
|
|
7064
9001
|
name: "Images",
|
|
7065
|
-
version:
|
|
9002
|
+
version: VERSION9,
|
|
7066
9003
|
mimeTypes: MIME_TYPES,
|
|
7067
9004
|
extensions: EXTENSIONS,
|
|
7068
9005
|
parse: parseImage,
|
|
@@ -7131,12 +9068,12 @@
|
|
|
7131
9068
|
});
|
|
7132
9069
|
|
|
7133
9070
|
// ../gltf/src/lib/utils/assert.ts
|
|
7134
|
-
function
|
|
9071
|
+
function assert8(condition, message) {
|
|
7135
9072
|
if (!condition) {
|
|
7136
9073
|
throw new Error(message || "assert failed: gltf");
|
|
7137
9074
|
}
|
|
7138
9075
|
}
|
|
7139
|
-
var
|
|
9076
|
+
var init_assert7 = __esm({
|
|
7140
9077
|
"../gltf/src/lib/utils/assert.ts"() {
|
|
7141
9078
|
}
|
|
7142
9079
|
});
|
|
@@ -7161,16 +9098,16 @@
|
|
|
7161
9098
|
// ../gltf/src/lib/gltf-utils/get-typed-array.ts
|
|
7162
9099
|
function getTypedArrayForBufferView(json, buffers, bufferViewIndex) {
|
|
7163
9100
|
const bufferView = json.bufferViews[bufferViewIndex];
|
|
7164
|
-
|
|
9101
|
+
assert8(bufferView);
|
|
7165
9102
|
const bufferIndex = bufferView.buffer;
|
|
7166
9103
|
const binChunk = buffers[bufferIndex];
|
|
7167
|
-
|
|
9104
|
+
assert8(binChunk);
|
|
7168
9105
|
const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
|
|
7169
9106
|
return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
|
|
7170
9107
|
}
|
|
7171
9108
|
var init_get_typed_array = __esm({
|
|
7172
9109
|
"../gltf/src/lib/gltf-utils/get-typed-array.ts"() {
|
|
7173
|
-
|
|
9110
|
+
init_assert7();
|
|
7174
9111
|
}
|
|
7175
9112
|
});
|
|
7176
9113
|
|
|
@@ -7192,13 +9129,13 @@
|
|
|
7192
9129
|
const bytesPerComponent = ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[accessor.componentType];
|
|
7193
9130
|
const length4 = accessor.count * components;
|
|
7194
9131
|
const byteLength = accessor.count * components * bytesPerComponent;
|
|
7195
|
-
|
|
9132
|
+
assert8(byteLength >= 0 && byteLength <= bufferView.byteLength);
|
|
7196
9133
|
return { ArrayType, length: length4, byteLength };
|
|
7197
9134
|
}
|
|
7198
9135
|
var TYPES, ARRAY_CONSTRUCTOR_TO_WEBGL_CONSTANT, ARRAY_TO_COMPONENT_TYPE, ATTRIBUTE_TYPE_TO_COMPONENTS, ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE, ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY;
|
|
7199
9136
|
var init_gltf_utils = __esm({
|
|
7200
9137
|
"../gltf/src/lib/gltf-utils/gltf-utils.ts"() {
|
|
7201
|
-
|
|
9138
|
+
init_assert7();
|
|
7202
9139
|
TYPES = ["SCALAR", "VEC2", "VEC3", "VEC4"];
|
|
7203
9140
|
ARRAY_CONSTRUCTOR_TO_WEBGL_CONSTANT = [
|
|
7204
9141
|
[Int8Array, 5120],
|
|
@@ -7244,7 +9181,7 @@
|
|
|
7244
9181
|
"../gltf/src/lib/api/gltf-scenegraph.ts"() {
|
|
7245
9182
|
init_src8();
|
|
7246
9183
|
init_src2();
|
|
7247
|
-
|
|
9184
|
+
init_assert7();
|
|
7248
9185
|
init_gltf_utils();
|
|
7249
9186
|
DEFAULT_GLTF_JSON = {
|
|
7250
9187
|
asset: {
|
|
@@ -7343,7 +9280,7 @@
|
|
|
7343
9280
|
bufferView = this.getBufferView(bufferView);
|
|
7344
9281
|
const bufferIndex = bufferView.buffer;
|
|
7345
9282
|
const binChunk = this.gltf.buffers[bufferIndex];
|
|
7346
|
-
|
|
9283
|
+
assert8(binChunk);
|
|
7347
9284
|
const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
|
|
7348
9285
|
return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
|
|
7349
9286
|
}
|
|
@@ -7390,14 +9327,14 @@
|
|
|
7390
9327
|
return extension;
|
|
7391
9328
|
}
|
|
7392
9329
|
addExtension(extensionName, extensionData = {}) {
|
|
7393
|
-
|
|
9330
|
+
assert8(extensionData);
|
|
7394
9331
|
this.json.extensions = this.json.extensions || {};
|
|
7395
9332
|
this.json.extensions[extensionName] = extensionData;
|
|
7396
9333
|
this.registerUsedExtension(extensionName);
|
|
7397
9334
|
return extensionData;
|
|
7398
9335
|
}
|
|
7399
9336
|
addRequiredExtension(extensionName, extensionData = {}) {
|
|
7400
|
-
|
|
9337
|
+
assert8(extensionData);
|
|
7401
9338
|
this.addExtension(extensionName, extensionData);
|
|
7402
9339
|
this.registerRequiredExtension(extensionName);
|
|
7403
9340
|
return extensionData;
|
|
@@ -7495,7 +9432,7 @@
|
|
|
7495
9432
|
}
|
|
7496
9433
|
addBufferView(buffer) {
|
|
7497
9434
|
const byteLength = buffer.byteLength;
|
|
7498
|
-
|
|
9435
|
+
assert8(Number.isFinite(byteLength));
|
|
7499
9436
|
this.sourceBuffers = this.sourceBuffers || [];
|
|
7500
9437
|
this.sourceBuffers.push(buffer);
|
|
7501
9438
|
const glTFBufferView = {
|
|
@@ -8045,10 +9982,10 @@
|
|
|
8045
9982
|
}
|
|
8046
9983
|
const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);
|
|
8047
9984
|
const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset);
|
|
8048
|
-
const { parse:
|
|
9985
|
+
const { parse: parse5 } = context;
|
|
8049
9986
|
const dracoOptions = { ...options };
|
|
8050
9987
|
delete dracoOptions["3d-tiles"];
|
|
8051
|
-
const decodedData = await
|
|
9988
|
+
const decodedData = await parse5(bufferCopy, DracoLoader2, dracoOptions, context);
|
|
8052
9989
|
const decodedAttributes = getGLTFAccessors(decodedData.attributes);
|
|
8053
9990
|
for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {
|
|
8054
9991
|
if (attributeName in primitive.attributes) {
|
|
@@ -8142,7 +10079,7 @@
|
|
|
8142
10079
|
const { json } = gltfScenegraph;
|
|
8143
10080
|
if (json.lights) {
|
|
8144
10081
|
const extension = gltfScenegraph.addExtension(KHR_LIGHTS_PUNCTUAL);
|
|
8145
|
-
|
|
10082
|
+
assert8(!extension.lights);
|
|
8146
10083
|
extension.lights = json.lights;
|
|
8147
10084
|
delete json.lights;
|
|
8148
10085
|
}
|
|
@@ -8157,7 +10094,7 @@
|
|
|
8157
10094
|
var KHR_LIGHTS_PUNCTUAL, name5;
|
|
8158
10095
|
var init_KHR_lights_punctual = __esm({
|
|
8159
10096
|
"../gltf/src/lib/extensions/deprecated/KHR_lights_punctual.ts"() {
|
|
8160
|
-
|
|
10097
|
+
init_assert7();
|
|
8161
10098
|
init_gltf_scenegraph();
|
|
8162
10099
|
KHR_LIGHTS_PUNCTUAL = "KHR_lights_punctual";
|
|
8163
10100
|
name5 = KHR_LIGHTS_PUNCTUAL;
|
|
@@ -8550,7 +10487,7 @@
|
|
|
8550
10487
|
var COMPONENTS, BYTES, GL_SAMPLER, SAMPLER_PARAMETER_GLTF_TO_GL, DEFAULT_SAMPLER, GLTFPostProcessor;
|
|
8551
10488
|
var init_post_process_gltf = __esm({
|
|
8552
10489
|
"../gltf/src/lib/api/post-process-gltf.ts"() {
|
|
8553
|
-
|
|
10490
|
+
init_assert7();
|
|
8554
10491
|
init_gltf_utils();
|
|
8555
10492
|
COMPONENTS = {
|
|
8556
10493
|
SCALAR: 1,
|
|
@@ -8599,7 +10536,7 @@
|
|
|
8599
10536
|
}
|
|
8600
10537
|
postProcess(gltf, options = {}) {
|
|
8601
10538
|
const { json, buffers = [], images = [], baseUri = "" } = gltf;
|
|
8602
|
-
|
|
10539
|
+
assert8(json);
|
|
8603
10540
|
this.baseUri = baseUri;
|
|
8604
10541
|
this.json = json;
|
|
8605
10542
|
this.buffers = buffers;
|
|
@@ -8833,16 +10770,19 @@
|
|
|
8833
10770
|
return image;
|
|
8834
10771
|
}
|
|
8835
10772
|
_resolveBufferView(bufferView, index) {
|
|
8836
|
-
bufferView.id = bufferView.id || `bufferView-${index}`;
|
|
8837
10773
|
const bufferIndex = bufferView.buffer;
|
|
8838
|
-
|
|
10774
|
+
const result = {
|
|
10775
|
+
id: `bufferView-${index}`,
|
|
10776
|
+
...bufferView,
|
|
10777
|
+
buffer: this.buffers[bufferIndex]
|
|
10778
|
+
};
|
|
8839
10779
|
const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
|
|
8840
10780
|
let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
|
|
8841
10781
|
if ("byteOffset" in bufferView) {
|
|
8842
10782
|
byteOffset += bufferView.byteOffset;
|
|
8843
10783
|
}
|
|
8844
|
-
|
|
8845
|
-
return
|
|
10784
|
+
result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
|
|
10785
|
+
return result;
|
|
8846
10786
|
}
|
|
8847
10787
|
_resolveCamera(camera, index) {
|
|
8848
10788
|
camera.id = camera.id || `camera-${index}`;
|
|
@@ -8857,7 +10797,7 @@
|
|
|
8857
10797
|
});
|
|
8858
10798
|
|
|
8859
10799
|
// ../gltf/src/lib/parsers/parse-glb.ts
|
|
8860
|
-
function
|
|
10800
|
+
function getMagicString4(dataView, byteOffset = 0) {
|
|
8861
10801
|
return `${String.fromCharCode(dataView.getUint8(byteOffset + 0))}${String.fromCharCode(dataView.getUint8(byteOffset + 1))}${String.fromCharCode(dataView.getUint8(byteOffset + 2))}${String.fromCharCode(dataView.getUint8(byteOffset + 3))}`;
|
|
8862
10802
|
}
|
|
8863
10803
|
function isGLB(arrayBuffer, byteOffset = 0, options = {}) {
|
|
@@ -8868,7 +10808,7 @@
|
|
|
8868
10808
|
}
|
|
8869
10809
|
function parseGLBSync(glb, arrayBuffer, byteOffset = 0, options = {}) {
|
|
8870
10810
|
const dataView = new DataView(arrayBuffer);
|
|
8871
|
-
const type =
|
|
10811
|
+
const type = getMagicString4(dataView, byteOffset + 0);
|
|
8872
10812
|
const version = dataView.getUint32(byteOffset + 4, LE);
|
|
8873
10813
|
const byteLength = dataView.getUint32(byteOffset + 8, LE);
|
|
8874
10814
|
Object.assign(glb, {
|
|
@@ -9000,11 +10940,11 @@
|
|
|
9000
10940
|
} else if (data instanceof ArrayBuffer) {
|
|
9001
10941
|
const glb = {};
|
|
9002
10942
|
byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);
|
|
9003
|
-
|
|
10943
|
+
assert8(glb.type === "glTF", `Invalid GLB magic string ${glb.type}`);
|
|
9004
10944
|
gltf._glb = glb;
|
|
9005
10945
|
gltf.json = glb.json;
|
|
9006
10946
|
} else {
|
|
9007
|
-
|
|
10947
|
+
assert8(false, "GLTF: must be ArrayBuffer or string");
|
|
9008
10948
|
}
|
|
9009
10949
|
const buffers = gltf.json.buffers || [];
|
|
9010
10950
|
gltf.buffers = new Array(buffers.length).fill(null);
|
|
@@ -9025,7 +10965,7 @@
|
|
|
9025
10965
|
const buffer = buffers[i2];
|
|
9026
10966
|
if (buffer.uri) {
|
|
9027
10967
|
const { fetch: fetch2 } = context;
|
|
9028
|
-
|
|
10968
|
+
assert8(fetch2);
|
|
9029
10969
|
const uri = resolveUrl(buffer.uri, options);
|
|
9030
10970
|
const response = await context?.fetch?.(uri);
|
|
9031
10971
|
const arrayBuffer = await response?.arrayBuffer?.();
|
|
@@ -9058,7 +10998,7 @@
|
|
|
9058
10998
|
return Array.from(imageIndices).sort();
|
|
9059
10999
|
}
|
|
9060
11000
|
async function loadImage(gltf, image, index, options, context) {
|
|
9061
|
-
const { fetch: fetch2, parse:
|
|
11001
|
+
const { fetch: fetch2, parse: parse5 } = context;
|
|
9062
11002
|
let arrayBuffer;
|
|
9063
11003
|
if (image.uri) {
|
|
9064
11004
|
const uri = resolveUrl(image.uri, options);
|
|
@@ -9069,8 +11009,8 @@
|
|
|
9069
11009
|
const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);
|
|
9070
11010
|
arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);
|
|
9071
11011
|
}
|
|
9072
|
-
|
|
9073
|
-
let parsedImage = await
|
|
11012
|
+
assert8(arrayBuffer, "glTF image has no data");
|
|
11013
|
+
let parsedImage = await parse5(arrayBuffer, [ImageLoader, BasisLoader], { mimeType: image.mimeType, basis: options.basis || { format: selectSupportedBasisFormat() } }, context);
|
|
9074
11014
|
if (parsedImage && parsedImage[0]) {
|
|
9075
11015
|
parsedImage = {
|
|
9076
11016
|
compressed: true,
|
|
@@ -9088,7 +11028,7 @@
|
|
|
9088
11028
|
init_src9();
|
|
9089
11029
|
init_src8();
|
|
9090
11030
|
init_src2();
|
|
9091
|
-
|
|
11031
|
+
init_assert7();
|
|
9092
11032
|
init_resolve_url();
|
|
9093
11033
|
init_get_typed_array();
|
|
9094
11034
|
init_gltf_extensions();
|
|
@@ -9099,7 +11039,7 @@
|
|
|
9099
11039
|
});
|
|
9100
11040
|
|
|
9101
11041
|
// ../gltf/src/gltf-loader.ts
|
|
9102
|
-
async function
|
|
11042
|
+
async function parse3(arrayBuffer, options = {}, context) {
|
|
9103
11043
|
options = { ...GLTFLoader.options, ...options };
|
|
9104
11044
|
options.gltf = { ...GLTFLoader.options.gltf, ...options.gltf };
|
|
9105
11045
|
const { byteOffset = 0 } = options;
|
|
@@ -9115,13 +11055,13 @@
|
|
|
9115
11055
|
name: "glTF",
|
|
9116
11056
|
id: "gltf",
|
|
9117
11057
|
module: "gltf",
|
|
9118
|
-
version:
|
|
11058
|
+
version: VERSION6,
|
|
9119
11059
|
extensions: ["gltf", "glb"],
|
|
9120
11060
|
mimeTypes: ["model/gltf+json", "model/gltf-binary"],
|
|
9121
11061
|
text: true,
|
|
9122
11062
|
binary: true,
|
|
9123
11063
|
tests: ["glTF"],
|
|
9124
|
-
parse:
|
|
11064
|
+
parse: parse3,
|
|
9125
11065
|
options: {
|
|
9126
11066
|
gltf: {
|
|
9127
11067
|
normalize: true,
|
|
@@ -9173,13 +11113,13 @@
|
|
|
9173
11113
|
const tile3DOptions = options["3d-tiles"] || {};
|
|
9174
11114
|
extractGLTFBufferOrURL(tile, gltfFormat, options);
|
|
9175
11115
|
if (tile3DOptions.loadGLTF) {
|
|
9176
|
-
const { parse:
|
|
11116
|
+
const { parse: parse5, fetch: fetch2 } = context;
|
|
9177
11117
|
if (tile.gltfUrl) {
|
|
9178
11118
|
tile.gltfArrayBuffer = await fetch2(tile.gltfUrl, options);
|
|
9179
11119
|
tile.gltfByteOffset = 0;
|
|
9180
11120
|
}
|
|
9181
11121
|
if (tile.gltfArrayBuffer) {
|
|
9182
|
-
tile.gltf = await
|
|
11122
|
+
tile.gltf = await parse5(tile.gltfArrayBuffer, GLTFLoader, options, context);
|
|
9183
11123
|
delete tile.gltfArrayBuffer;
|
|
9184
11124
|
delete tile.gltfByteOffset;
|
|
9185
11125
|
delete tile.gltfByteLength;
|
|
@@ -9385,8 +11325,8 @@
|
|
|
9385
11325
|
}
|
|
9386
11326
|
var init_parse_3d_tile_instanced_model = __esm({
|
|
9387
11327
|
"src/lib/parsers/parse-3d-tile-instanced-model.ts"() {
|
|
9388
|
-
init_esm();
|
|
9389
11328
|
init_esm2();
|
|
11329
|
+
init_esm3();
|
|
9390
11330
|
init_src7();
|
|
9391
11331
|
init_tile_3d_feature_table();
|
|
9392
11332
|
init_tile_3d_batch_table();
|
|
@@ -9416,15 +11356,30 @@
|
|
|
9416
11356
|
}
|
|
9417
11357
|
});
|
|
9418
11358
|
|
|
11359
|
+
// src/lib/parsers/parse-3d-tile-gltf.js
|
|
11360
|
+
async function parseGltf3DTile(tile, arrayBuffer, options, context) {
|
|
11361
|
+
tile.rotateYtoZ = true;
|
|
11362
|
+
tile.gltfUpAxis = options["3d-tiles"] && options["3d-tiles"].assetGltfUpAxis ? options["3d-tiles"].assetGltfUpAxis : "Y";
|
|
11363
|
+
const { parse: parse5 } = context;
|
|
11364
|
+
tile.gltf = await parse5(arrayBuffer, GLTFLoader, options, context);
|
|
11365
|
+
}
|
|
11366
|
+
var init_parse_3d_tile_gltf = __esm({
|
|
11367
|
+
"src/lib/parsers/parse-3d-tile-gltf.js"() {
|
|
11368
|
+
init_src10();
|
|
11369
|
+
}
|
|
11370
|
+
});
|
|
11371
|
+
|
|
9419
11372
|
// src/lib/parsers/parse-3d-tile.ts
|
|
9420
11373
|
async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {
|
|
9421
11374
|
tile.byteOffset = byteOffset;
|
|
9422
|
-
tile.type =
|
|
11375
|
+
tile.type = getMagicString3(arrayBuffer, byteOffset);
|
|
9423
11376
|
switch (tile.type) {
|
|
9424
11377
|
case TILE3D_TYPE.COMPOSITE:
|
|
9425
11378
|
return await parseComposite3DTile(tile, arrayBuffer, byteOffset, options, context, parse3DTile);
|
|
9426
11379
|
case TILE3D_TYPE.BATCHED_3D_MODEL:
|
|
9427
11380
|
return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
11381
|
+
case TILE3D_TYPE.GLTF:
|
|
11382
|
+
return await parseGltf3DTile(tile, arrayBuffer, options, context);
|
|
9428
11383
|
case TILE3D_TYPE.INSTANCED_3D_MODEL:
|
|
9429
11384
|
return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);
|
|
9430
11385
|
case TILE3D_TYPE.POINT_CLOUD:
|
|
@@ -9441,6 +11396,219 @@
|
|
|
9441
11396
|
init_parse_3d_tile_batched_model();
|
|
9442
11397
|
init_parse_3d_tile_instanced_model();
|
|
9443
11398
|
init_parse_3d_tile_composite();
|
|
11399
|
+
init_parse_3d_tile_gltf();
|
|
11400
|
+
}
|
|
11401
|
+
});
|
|
11402
|
+
|
|
11403
|
+
// src/lib/parsers/helpers/parse-3d-tile-subtree.ts
|
|
11404
|
+
async function parse3DTilesSubtree(data) {
|
|
11405
|
+
const magic = new Uint32Array(data.slice(0, 4));
|
|
11406
|
+
if (magic[0] !== SUBTREE_FILE_MAGIC) {
|
|
11407
|
+
throw new Error("Wrong subtree file magic number");
|
|
11408
|
+
}
|
|
11409
|
+
const version = new Uint32Array(data.slice(4, 8));
|
|
11410
|
+
if (version[0] !== SUBTREE_FILE_VERSION) {
|
|
11411
|
+
throw new Error("Wrong subtree file verson, must be 1");
|
|
11412
|
+
}
|
|
11413
|
+
const jsonByteLength = parseUint64Value(data.slice(8, 16));
|
|
11414
|
+
const stringAttribute = new Uint8Array(data, 24, jsonByteLength);
|
|
11415
|
+
const textDecoder = new TextDecoder("utf8");
|
|
11416
|
+
const string = textDecoder.decode(stringAttribute);
|
|
11417
|
+
const subtree = JSON.parse(string);
|
|
11418
|
+
const binaryByteLength = parseUint64Value(data.slice(16, 24));
|
|
11419
|
+
let internalBinaryBuffer = new ArrayBuffer(0);
|
|
11420
|
+
if (binaryByteLength) {
|
|
11421
|
+
internalBinaryBuffer = data.slice(24 + jsonByteLength);
|
|
11422
|
+
}
|
|
11423
|
+
if ("bufferView" in subtree.tileAvailability) {
|
|
11424
|
+
subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, "tileAvailability", internalBinaryBuffer);
|
|
11425
|
+
}
|
|
11426
|
+
if ("bufferView" in subtree.contentAvailability) {
|
|
11427
|
+
subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, "contentAvailability", internalBinaryBuffer);
|
|
11428
|
+
}
|
|
11429
|
+
if ("bufferView" in subtree.childSubtreeAvailability) {
|
|
11430
|
+
subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, "childSubtreeAvailability", internalBinaryBuffer);
|
|
11431
|
+
}
|
|
11432
|
+
return subtree;
|
|
11433
|
+
}
|
|
11434
|
+
async function getExplicitBitstream(subtree, name8, internalBinaryBuffer) {
|
|
11435
|
+
const bufferViewIndex = subtree[name8].bufferView;
|
|
11436
|
+
const bufferView = subtree.bufferViews[bufferViewIndex];
|
|
11437
|
+
const buffer = subtree.buffers[bufferView.buffer];
|
|
11438
|
+
if (buffer.uri) {
|
|
11439
|
+
const response = await fetchFile(buffer.uri);
|
|
11440
|
+
const data = await response.arrayBuffer();
|
|
11441
|
+
return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
|
|
11442
|
+
}
|
|
11443
|
+
return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);
|
|
11444
|
+
}
|
|
11445
|
+
function parseUint64Value(buffer) {
|
|
11446
|
+
const dataView = new DataView(buffer);
|
|
11447
|
+
const left = dataView.getUint32(0, true);
|
|
11448
|
+
const right = dataView.getUint32(4, true);
|
|
11449
|
+
return left + 2 ** 32 * right;
|
|
11450
|
+
}
|
|
11451
|
+
var SUBTREE_FILE_MAGIC, SUBTREE_FILE_VERSION;
|
|
11452
|
+
var init_parse_3d_tile_subtree = __esm({
|
|
11453
|
+
"src/lib/parsers/helpers/parse-3d-tile-subtree.ts"() {
|
|
11454
|
+
init_src3();
|
|
11455
|
+
SUBTREE_FILE_MAGIC = 1952609651;
|
|
11456
|
+
SUBTREE_FILE_VERSION = 1;
|
|
11457
|
+
}
|
|
11458
|
+
});
|
|
11459
|
+
|
|
11460
|
+
// src/tile-3d-subtree-loader.ts
|
|
11461
|
+
var Tile3DSubtreeLoader;
|
|
11462
|
+
var init_tile_3d_subtree_loader = __esm({
|
|
11463
|
+
"src/tile-3d-subtree-loader.ts"() {
|
|
11464
|
+
init_parse_3d_tile_subtree();
|
|
11465
|
+
init_version2();
|
|
11466
|
+
Tile3DSubtreeLoader = {
|
|
11467
|
+
id: "3d-tiles-subtree",
|
|
11468
|
+
name: "3D Tiles Subtree",
|
|
11469
|
+
module: "3d-tiles",
|
|
11470
|
+
version: VERSION4,
|
|
11471
|
+
extensions: ["subtree"],
|
|
11472
|
+
mimeTypes: ["application/octet-stream"],
|
|
11473
|
+
tests: ["subtree"],
|
|
11474
|
+
parse: parse3DTilesSubtree,
|
|
11475
|
+
options: {}
|
|
11476
|
+
};
|
|
11477
|
+
}
|
|
11478
|
+
});
|
|
11479
|
+
|
|
11480
|
+
// src/lib/parsers/helpers/parse-3d-implicit-tiles.ts
|
|
11481
|
+
async function parseImplicitTiles(subtree, options, parentData = {
|
|
11482
|
+
mortonIndex: 0,
|
|
11483
|
+
x: 0,
|
|
11484
|
+
y: 0,
|
|
11485
|
+
z: 0
|
|
11486
|
+
}, childIndex = 0, level = 0, globalData = {
|
|
11487
|
+
level: 0,
|
|
11488
|
+
mortonIndex: 0,
|
|
11489
|
+
x: 0,
|
|
11490
|
+
y: 0,
|
|
11491
|
+
z: 0
|
|
11492
|
+
}) {
|
|
11493
|
+
const {
|
|
11494
|
+
subdivisionScheme,
|
|
11495
|
+
subtreeLevels,
|
|
11496
|
+
maximumLevel,
|
|
11497
|
+
contentUrlTemplate,
|
|
11498
|
+
subtreesUriTemplate,
|
|
11499
|
+
basePath
|
|
11500
|
+
} = options;
|
|
11501
|
+
const tile = { children: [], lodMetricValue: 0, contentUrl: "" };
|
|
11502
|
+
const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];
|
|
11503
|
+
const childX = childIndex & 1;
|
|
11504
|
+
const childY = childIndex >> 1 & 1;
|
|
11505
|
+
const childZ = childIndex >> 2 & 1;
|
|
11506
|
+
const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);
|
|
11507
|
+
let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);
|
|
11508
|
+
let tileAvailabilityIndex = levelOffset + childTileMortonIndex;
|
|
11509
|
+
let childTileX = concatBits(parentData.x, childX);
|
|
11510
|
+
let childTileY = concatBits(parentData.y, childY);
|
|
11511
|
+
let childTileZ = concatBits(parentData.z, childZ);
|
|
11512
|
+
let isChildSubtreeAvailable = false;
|
|
11513
|
+
if (level + 1 > subtreeLevels) {
|
|
11514
|
+
isChildSubtreeAvailable = getAvailabilityResult(subtree.childSubtreeAvailability, childTileMortonIndex);
|
|
11515
|
+
}
|
|
11516
|
+
const x = concatBits(globalData.x, childTileX);
|
|
11517
|
+
const y = concatBits(globalData.y, childTileY);
|
|
11518
|
+
const z = concatBits(globalData.z, childTileZ);
|
|
11519
|
+
const lev = level + globalData.level;
|
|
11520
|
+
if (isChildSubtreeAvailable) {
|
|
11521
|
+
const subtreePath = `${basePath}/${subtreesUriTemplate}`;
|
|
11522
|
+
const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);
|
|
11523
|
+
const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);
|
|
11524
|
+
subtree = childSubtree;
|
|
11525
|
+
globalData.mortonIndex = childTileMortonIndex;
|
|
11526
|
+
globalData.x = childTileX;
|
|
11527
|
+
globalData.y = childTileY;
|
|
11528
|
+
globalData.z = childTileZ;
|
|
11529
|
+
globalData.level = level;
|
|
11530
|
+
childTileMortonIndex = 0;
|
|
11531
|
+
tileAvailabilityIndex = 0;
|
|
11532
|
+
childTileX = 0;
|
|
11533
|
+
childTileY = 0;
|
|
11534
|
+
childTileZ = 0;
|
|
11535
|
+
level = 0;
|
|
11536
|
+
}
|
|
11537
|
+
const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);
|
|
11538
|
+
if (!isTileAvailable || level > maximumLevel) {
|
|
11539
|
+
return tile;
|
|
11540
|
+
}
|
|
11541
|
+
const isContentAvailable = getAvailabilityResult(subtree.contentAvailability, tileAvailabilityIndex);
|
|
11542
|
+
if (isContentAvailable) {
|
|
11543
|
+
tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);
|
|
11544
|
+
}
|
|
11545
|
+
const childTileLevel = level + 1;
|
|
11546
|
+
const pData = { mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ };
|
|
11547
|
+
for (let index = 0; index < childrenPerTile; index++) {
|
|
11548
|
+
const currentTile = await parseImplicitTiles(subtree, options, pData, index, childTileLevel, globalData);
|
|
11549
|
+
if (currentTile.contentUrl || currentTile.children.length) {
|
|
11550
|
+
const globalLevel = lev + 1;
|
|
11551
|
+
const formattedTile = formatTileData(currentTile, globalLevel, options);
|
|
11552
|
+
tile.children.push(formattedTile);
|
|
11553
|
+
}
|
|
11554
|
+
}
|
|
11555
|
+
return tile;
|
|
11556
|
+
}
|
|
11557
|
+
function getAvailabilityResult(availabilityData, index) {
|
|
11558
|
+
if ("constant" in availabilityData) {
|
|
11559
|
+
return Boolean(availabilityData.constant);
|
|
11560
|
+
}
|
|
11561
|
+
if (availabilityData.explicitBitstream) {
|
|
11562
|
+
return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);
|
|
11563
|
+
}
|
|
11564
|
+
return false;
|
|
11565
|
+
}
|
|
11566
|
+
function formatTileData(tile, level, options) {
|
|
11567
|
+
const { basePath, refine, getRefine: getRefine2, lodMetricType, getTileType: getTileType2, rootLodMetricValue } = options;
|
|
11568
|
+
const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, "");
|
|
11569
|
+
const lodMetricValue = rootLodMetricValue / 2 ** level;
|
|
11570
|
+
return {
|
|
11571
|
+
children: tile.children,
|
|
11572
|
+
contentUrl: tile.contentUrl,
|
|
11573
|
+
content: { uri },
|
|
11574
|
+
id: tile.contentUrl,
|
|
11575
|
+
refine: getRefine2(refine),
|
|
11576
|
+
type: getTileType2(tile),
|
|
11577
|
+
lodMetricType,
|
|
11578
|
+
lodMetricValue
|
|
11579
|
+
};
|
|
11580
|
+
}
|
|
11581
|
+
function concatBits(first, second) {
|
|
11582
|
+
return parseInt(first.toString(2) + second.toString(2), 2);
|
|
11583
|
+
}
|
|
11584
|
+
function replaceContentUrlTemplate(templateUrl, level, x, y, z) {
|
|
11585
|
+
const mapUrl = generateMapUrl({ level, x, y, z });
|
|
11586
|
+
return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, (matched) => mapUrl[matched]);
|
|
11587
|
+
}
|
|
11588
|
+
function generateMapUrl(items) {
|
|
11589
|
+
const mapUrl = {};
|
|
11590
|
+
for (const key in items) {
|
|
11591
|
+
mapUrl[`{${key}}`] = items[key];
|
|
11592
|
+
}
|
|
11593
|
+
return mapUrl;
|
|
11594
|
+
}
|
|
11595
|
+
function getBooleanValueFromBitstream(availabilityIndex, availabilityBuffer) {
|
|
11596
|
+
const byteIndex = Math.floor(availabilityIndex / 8);
|
|
11597
|
+
const bitIndex = availabilityIndex % 8;
|
|
11598
|
+
const bitValue = availabilityBuffer[byteIndex] >> bitIndex & 1;
|
|
11599
|
+
return bitValue === 1;
|
|
11600
|
+
}
|
|
11601
|
+
var QUADTREE_DEVISION_COUNT, OCTREE_DEVISION_COUNT, SUBDIVISION_COUNT_MAP;
|
|
11602
|
+
var init_parse_3d_implicit_tiles = __esm({
|
|
11603
|
+
"src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"() {
|
|
11604
|
+
init_tile_3d_subtree_loader();
|
|
11605
|
+
init_src3();
|
|
11606
|
+
QUADTREE_DEVISION_COUNT = 4;
|
|
11607
|
+
OCTREE_DEVISION_COUNT = 8;
|
|
11608
|
+
SUBDIVISION_COUNT_MAP = {
|
|
11609
|
+
QUADTREE: QUADTREE_DEVISION_COUNT,
|
|
11610
|
+
OCTREE: OCTREE_DEVISION_COUNT
|
|
11611
|
+
};
|
|
9444
11612
|
}
|
|
9445
11613
|
});
|
|
9446
11614
|
|
|
@@ -9456,6 +11624,8 @@
|
|
|
9456
11624
|
return TILE_TYPE.POINTCLOUD;
|
|
9457
11625
|
case "i3dm":
|
|
9458
11626
|
case "b3dm":
|
|
11627
|
+
case "glb":
|
|
11628
|
+
case "gltf":
|
|
9459
11629
|
return TILE_TYPE.SCENEGRAPH;
|
|
9460
11630
|
default:
|
|
9461
11631
|
return fileExtension;
|
|
@@ -9504,9 +11674,63 @@
|
|
|
9504
11674
|
}
|
|
9505
11675
|
return root;
|
|
9506
11676
|
}
|
|
11677
|
+
async function normalizeImplicitTileHeaders(tileset) {
|
|
11678
|
+
if (!tileset.root) {
|
|
11679
|
+
return null;
|
|
11680
|
+
}
|
|
11681
|
+
const basePath = tileset.basePath;
|
|
11682
|
+
const implicitTilingExtension = tileset.root.extensions["3DTILES_implicit_tiling"];
|
|
11683
|
+
const {
|
|
11684
|
+
subdivisionScheme,
|
|
11685
|
+
maximumLevel,
|
|
11686
|
+
subtreeLevels,
|
|
11687
|
+
subtrees: { uri: subtreesUriTemplate }
|
|
11688
|
+
} = implicitTilingExtension;
|
|
11689
|
+
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
11690
|
+
const rootSubtreeUrl = `${basePath}/${subtreeUrl}`;
|
|
11691
|
+
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
11692
|
+
const contentUrlTemplate = `${basePath}/${tileset.root.content.uri}`;
|
|
11693
|
+
const refine = tileset.root.refine;
|
|
11694
|
+
const rootLodMetricValue = tileset.root.geometricError;
|
|
11695
|
+
const options = {
|
|
11696
|
+
contentUrlTemplate,
|
|
11697
|
+
subtreesUriTemplate,
|
|
11698
|
+
subdivisionScheme,
|
|
11699
|
+
subtreeLevels,
|
|
11700
|
+
maximumLevel,
|
|
11701
|
+
refine,
|
|
11702
|
+
basePath,
|
|
11703
|
+
lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
|
|
11704
|
+
rootLodMetricValue,
|
|
11705
|
+
getTileType,
|
|
11706
|
+
getRefine
|
|
11707
|
+
};
|
|
11708
|
+
return await normalizeImplicitTileData(tileset.root, rootSubtree, options);
|
|
11709
|
+
}
|
|
11710
|
+
async function normalizeImplicitTileData(tile, rootSubtree, options) {
|
|
11711
|
+
if (!tile) {
|
|
11712
|
+
return null;
|
|
11713
|
+
}
|
|
11714
|
+
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
11715
|
+
tile.lodMetricValue = tile.geometricError;
|
|
11716
|
+
tile.transformMatrix = tile.transform;
|
|
11717
|
+
const { children, contentUrl } = await parseImplicitTiles(rootSubtree, options);
|
|
11718
|
+
if (contentUrl) {
|
|
11719
|
+
tile.contentUrl = contentUrl;
|
|
11720
|
+
tile.content = { uri: contentUrl.replace(`${options.basePath}/`, "") };
|
|
11721
|
+
}
|
|
11722
|
+
tile.refine = getRefine(tile.refine);
|
|
11723
|
+
tile.type = getTileType(tile);
|
|
11724
|
+
tile.children = children;
|
|
11725
|
+
tile.id = tile.contentUrl;
|
|
11726
|
+
return tile;
|
|
11727
|
+
}
|
|
9507
11728
|
var init_parse_3d_tile_header2 = __esm({
|
|
9508
11729
|
"src/lib/parsers/parse-3d-tile-header.ts"() {
|
|
11730
|
+
init_tile_3d_subtree_loader();
|
|
11731
|
+
init_src3();
|
|
9509
11732
|
init_src4();
|
|
11733
|
+
init_parse_3d_implicit_tiles();
|
|
9510
11734
|
}
|
|
9511
11735
|
});
|
|
9512
11736
|
|
|
@@ -9529,13 +11753,13 @@
|
|
|
9529
11753
|
tilesetJson.loader = options.loader || Tiles3DLoader;
|
|
9530
11754
|
tilesetJson.url = context.url;
|
|
9531
11755
|
tilesetJson.basePath = getBaseUri(tilesetJson);
|
|
9532
|
-
tilesetJson.root = normalizeTileHeaders(tilesetJson);
|
|
11756
|
+
tilesetJson.root = hasImplicitTilingExtension(tilesetJson) ? await normalizeImplicitTileHeaders(tilesetJson) : normalizeTileHeaders(tilesetJson);
|
|
9533
11757
|
tilesetJson.type = TILESET_TYPE.TILES3D;
|
|
9534
11758
|
tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
9535
11759
|
tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;
|
|
9536
11760
|
return tilesetJson;
|
|
9537
11761
|
}
|
|
9538
|
-
async function
|
|
11762
|
+
async function parse4(data, options, context) {
|
|
9539
11763
|
const loaderOptions = options["3d-tiles"] || {};
|
|
9540
11764
|
let isTileset;
|
|
9541
11765
|
if (loaderOptions.isTileset === "auto") {
|
|
@@ -9550,7 +11774,10 @@
|
|
|
9550
11774
|
}
|
|
9551
11775
|
return data;
|
|
9552
11776
|
}
|
|
9553
|
-
|
|
11777
|
+
function hasImplicitTilingExtension(tilesetJson) {
|
|
11778
|
+
return tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) && tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME);
|
|
11779
|
+
}
|
|
11780
|
+
var IMPLICIT_TILING_EXTENSION_NAME, Tiles3DLoader;
|
|
9554
11781
|
var init_tiles_3d_loader = __esm({
|
|
9555
11782
|
"src/tiles-3d-loader.ts"() {
|
|
9556
11783
|
init_src2();
|
|
@@ -9558,15 +11785,16 @@
|
|
|
9558
11785
|
init_version2();
|
|
9559
11786
|
init_parse_3d_tile();
|
|
9560
11787
|
init_parse_3d_tile_header2();
|
|
11788
|
+
IMPLICIT_TILING_EXTENSION_NAME = "3DTILES_implicit_tiling";
|
|
9561
11789
|
Tiles3DLoader = {
|
|
9562
11790
|
id: "3d-tiles",
|
|
9563
11791
|
name: "3D Tiles",
|
|
9564
11792
|
module: "3d-tiles",
|
|
9565
|
-
version:
|
|
11793
|
+
version: VERSION4,
|
|
9566
11794
|
extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
|
|
9567
11795
|
mimeTypes: ["application/octet-stream"],
|
|
9568
11796
|
tests: ["cmpt", "pnts", "b3dm", "i3dm"],
|
|
9569
|
-
parse:
|
|
11797
|
+
parse: parse4,
|
|
9570
11798
|
options: {
|
|
9571
11799
|
"3d-tiles": {
|
|
9572
11800
|
loadGLTF: true,
|
|
@@ -9579,7 +11807,7 @@
|
|
|
9579
11807
|
}
|
|
9580
11808
|
});
|
|
9581
11809
|
|
|
9582
|
-
// src/lib/ion/ion.
|
|
11810
|
+
// src/lib/ion/ion.ts
|
|
9583
11811
|
async function getIonTilesetMetadata(accessToken, assetId) {
|
|
9584
11812
|
if (!assetId) {
|
|
9585
11813
|
const assets = await getIonAssets(accessToken);
|
|
@@ -9629,7 +11857,7 @@
|
|
|
9629
11857
|
}
|
|
9630
11858
|
var CESIUM_ION_URL;
|
|
9631
11859
|
var init_ion = __esm({
|
|
9632
|
-
"src/lib/ion/ion.
|
|
11860
|
+
"src/lib/ion/ion.ts"() {
|
|
9633
11861
|
init_src3();
|
|
9634
11862
|
init_src2();
|
|
9635
11863
|
CESIUM_ION_URL = "https://api.cesium.com/v1/assets";
|
|
@@ -9673,83 +11901,6 @@
|
|
|
9673
11901
|
}
|
|
9674
11902
|
});
|
|
9675
11903
|
|
|
9676
|
-
// src/lib/parsers/helpers/parse-3d-tile-subtree.ts
|
|
9677
|
-
async function parse3DTilesSubtree(data) {
|
|
9678
|
-
const magic = new Uint32Array(data.slice(0, 4));
|
|
9679
|
-
if (magic[0] !== SUBTREE_FILE_MAGIC) {
|
|
9680
|
-
throw new Error("Wrong subtree file magic number");
|
|
9681
|
-
}
|
|
9682
|
-
const version = new Uint32Array(data.slice(4, 8));
|
|
9683
|
-
if (version[0] !== SUBTREE_FILE_VERSION) {
|
|
9684
|
-
throw new Error("Wrong subtree file verson, must be 1");
|
|
9685
|
-
}
|
|
9686
|
-
const jsonByteLength = parseUint64Value(data.slice(8, 16));
|
|
9687
|
-
const stringAttribute = new Uint8Array(data, 24, jsonByteLength);
|
|
9688
|
-
const textDecoder = new TextDecoder("utf8");
|
|
9689
|
-
const string = textDecoder.decode(stringAttribute);
|
|
9690
|
-
const subtree = JSON.parse(string);
|
|
9691
|
-
const binaryByteLength = parseUint64Value(data.slice(16, 24));
|
|
9692
|
-
let internalBinaryBuffer = new ArrayBuffer(0);
|
|
9693
|
-
if (binaryByteLength) {
|
|
9694
|
-
internalBinaryBuffer = data.slice(24 + jsonByteLength);
|
|
9695
|
-
}
|
|
9696
|
-
if ("bufferView" in subtree.tileAvailability) {
|
|
9697
|
-
subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, "tileAvailability", internalBinaryBuffer);
|
|
9698
|
-
}
|
|
9699
|
-
if ("bufferView" in subtree.contentAvailability) {
|
|
9700
|
-
subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, "contentAvailability", internalBinaryBuffer);
|
|
9701
|
-
}
|
|
9702
|
-
if ("bufferView" in subtree.childSubtreeAvailability) {
|
|
9703
|
-
subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, "childSubtreeAvailability", internalBinaryBuffer);
|
|
9704
|
-
}
|
|
9705
|
-
return subtree;
|
|
9706
|
-
}
|
|
9707
|
-
async function getExplicitBitstream(subtree, name8, internalBinaryBuffer) {
|
|
9708
|
-
const bufferViewIndex = subtree[name8].bufferView;
|
|
9709
|
-
const bufferView = subtree.bufferViews[bufferViewIndex];
|
|
9710
|
-
const buffer = subtree.buffers[bufferView.buffer];
|
|
9711
|
-
if (buffer.uri) {
|
|
9712
|
-
const response = await fetchFile(buffer.uri);
|
|
9713
|
-
const data = await response.arrayBuffer();
|
|
9714
|
-
return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
|
|
9715
|
-
}
|
|
9716
|
-
return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);
|
|
9717
|
-
}
|
|
9718
|
-
function parseUint64Value(buffer) {
|
|
9719
|
-
const dataView = new DataView(buffer);
|
|
9720
|
-
const left = dataView.getUint32(0, true);
|
|
9721
|
-
const right = dataView.getUint32(4, true);
|
|
9722
|
-
return left + 2 ** 32 * right;
|
|
9723
|
-
}
|
|
9724
|
-
var SUBTREE_FILE_MAGIC, SUBTREE_FILE_VERSION;
|
|
9725
|
-
var init_parse_3d_tile_subtree = __esm({
|
|
9726
|
-
"src/lib/parsers/helpers/parse-3d-tile-subtree.ts"() {
|
|
9727
|
-
init_src3();
|
|
9728
|
-
SUBTREE_FILE_MAGIC = 1952609651;
|
|
9729
|
-
SUBTREE_FILE_VERSION = 1;
|
|
9730
|
-
}
|
|
9731
|
-
});
|
|
9732
|
-
|
|
9733
|
-
// src/tile-3d-subtree-loader.ts
|
|
9734
|
-
var Tile3DSubtreeLoader;
|
|
9735
|
-
var init_tile_3d_subtree_loader = __esm({
|
|
9736
|
-
"src/tile-3d-subtree-loader.ts"() {
|
|
9737
|
-
init_parse_3d_tile_subtree();
|
|
9738
|
-
init_version2();
|
|
9739
|
-
Tile3DSubtreeLoader = {
|
|
9740
|
-
id: "3d-tiles-subtree",
|
|
9741
|
-
name: "3D Tiles Subtree",
|
|
9742
|
-
module: "3d-tiles",
|
|
9743
|
-
version: VERSION3,
|
|
9744
|
-
extensions: ["subtree"],
|
|
9745
|
-
mimeTypes: ["application/octet-stream"],
|
|
9746
|
-
tests: ["subtree"],
|
|
9747
|
-
parse: parse3DTilesSubtree,
|
|
9748
|
-
options: {}
|
|
9749
|
-
};
|
|
9750
|
-
}
|
|
9751
|
-
});
|
|
9752
|
-
|
|
9753
11904
|
// src/lib/encoders/helpers/encode-3d-tile-header.ts
|
|
9754
11905
|
function encode3DTileHeader(tile, dataView, byteOffset) {
|
|
9755
11906
|
const HEADER_SIZE = 12;
|
|
@@ -9959,7 +12110,7 @@
|
|
|
9959
12110
|
name: "3D Tile",
|
|
9960
12111
|
id: "3d-tiles",
|
|
9961
12112
|
module: "3d-tiles",
|
|
9962
|
-
version:
|
|
12113
|
+
version: VERSION4,
|
|
9963
12114
|
extensions: ["cmpt", "pnts", "b3dm", "i3dm"],
|
|
9964
12115
|
mimeTypes: ["application/octet-stream"],
|
|
9965
12116
|
encodeSync,
|
|
@@ -9998,10 +12149,10 @@
|
|
|
9998
12149
|
|
|
9999
12150
|
// src/bundle.ts
|
|
10000
12151
|
var require_bundle = __commonJS({
|
|
10001
|
-
"src/bundle.ts"(exports,
|
|
12152
|
+
"src/bundle.ts"(exports, module2) {
|
|
10002
12153
|
var moduleExports = (init_src11(), src_exports);
|
|
10003
12154
|
globalThis.loaders = globalThis.loaders || {};
|
|
10004
|
-
|
|
12155
|
+
module2.exports = Object.assign(globalThis.loaders, moduleExports);
|
|
10005
12156
|
}
|
|
10006
12157
|
});
|
|
10007
12158
|
require_bundle();
|