@loaders.gl/core 5.0.0-alpha.13 → 5.0.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +190 -63
- package/dist/dist.min.js +3 -3
- package/dist/index.cjs +205 -72
- package/dist/index.cjs.map +2 -2
- package/dist/lib/api/parse-file.js +2 -0
- package/dist/lib/api/parse-file.js.map +1 -1
- package/dist/lib/api/parse-in-batches.d.ts.map +1 -1
- package/dist/lib/api/parse-in-batches.js +5 -4
- package/dist/lib/api/parse-in-batches.js.map +1 -1
- package/dist/lib/api/parse.js +4 -2
- package/dist/lib/api/parse.js.map +1 -1
- package/dist/lib/init.js +1 -1
- package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -1
- package/dist/lib/loader-utils/get-fetch-function.js +3 -1
- package/dist/lib/loader-utils/get-fetch-function.js.map +1 -1
- package/dist/lib/loader-utils/loader-context.d.ts.map +1 -1
- package/dist/lib/loader-utils/loader-context.js +4 -0
- package/dist/lib/loader-utils/loader-context.js.map +1 -1
- package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-defaults.js +1 -0
- package/dist/lib/loader-utils/option-defaults.js.map +1 -1
- package/dist/lib/loader-utils/option-utils.js +1 -1
- package/dist/lib/loader-utils/option-utils.js.map +1 -1
- package/dist/loader-utils/index.cjs +231 -92
- package/dist/loader-utils/index.cjs.map +2 -2
- package/dist/loader-utils/index.d.ts +1 -1
- package/dist/loader-utils/index.d.ts.map +1 -1
- package/dist/loader-utils/index.js +1 -1
- package/dist/loader-utils/index.js.map +1 -1
- package/dist/loader-utils/json-loader.d.ts +1 -1
- package/dist/loader-utils/json-loader.js +2 -2
- package/dist/loader-utils/lib/log-utils/log.js +1 -1
- package/dist/loader-utils/lib/request-utils/request-credentials.d.ts +3 -1
- package/dist/loader-utils/lib/request-utils/request-credentials.d.ts.map +1 -1
- package/dist/loader-utils/lib/request-utils/request-credentials.js +10 -16
- package/dist/loader-utils/lib/request-utils/request-credentials.js.map +1 -1
- package/dist/loader-utils/lib/worker-loader-utils/create-loader-worker.d.ts +3 -0
- package/dist/loader-utils/lib/worker-loader-utils/create-loader-worker.d.ts.map +1 -1
- package/dist/loader-utils/lib/worker-loader-utils/create-loader-worker.js +13 -12
- package/dist/loader-utils/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
- package/dist/loader-utils/lib/worker-loader-utils/parse-with-worker.d.ts +6 -0
- package/dist/loader-utils/lib/worker-loader-utils/parse-with-worker.d.ts.map +1 -1
- package/dist/loader-utils/lib/worker-loader-utils/parse-with-worker.js +38 -7
- package/dist/loader-utils/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
- package/dist/loader-utils/loader-types.d.ts +12 -4
- package/dist/loader-utils/loader-types.d.ts.map +1 -1
- package/dist/loader-utils/loader-types.js.map +1 -1
- package/dist/null-loader.js +1 -1
- package/dist/null-worker-node.js +60 -15
- package/dist/null-worker.js +59 -15
- package/dist/schema-utils/lib/table/tables/convert-table.d.ts +1 -1
- package/dist/schema-utils/lib/table/tables/convert-table.js +1 -1
- package/dist/worker-utils/index.cjs +170 -49
- package/dist/worker-utils/index.cjs.map +2 -2
- package/dist/worker-utils/index.d.ts +2 -2
- package/dist/worker-utils/index.d.ts.map +1 -1
- package/dist/worker-utils/index.js +1 -1
- package/dist/worker-utils/index.js.map +1 -1
- package/dist/worker-utils/lib/env-utils/version.js +2 -2
- package/dist/worker-utils/lib/worker-api/create-worker.d.ts.map +1 -1
- package/dist/worker-utils/lib/worker-api/create-worker.js +40 -2
- package/dist/worker-utils/lib/worker-api/create-worker.js.map +1 -1
- package/dist/worker-utils/lib/worker-api/get-worker-url.d.ts +2 -0
- package/dist/worker-utils/lib/worker-api/get-worker-url.d.ts.map +1 -1
- package/dist/worker-utils/lib/worker-api/get-worker-url.js +7 -11
- package/dist/worker-utils/lib/worker-api/get-worker-url.js.map +1 -1
- package/dist/worker-utils/lib/worker-api/process-on-worker.d.ts +6 -0
- package/dist/worker-utils/lib/worker-api/process-on-worker.d.ts.map +1 -1
- package/dist/worker-utils/lib/worker-api/process-on-worker.js +64 -27
- package/dist/worker-utils/lib/worker-api/process-on-worker.js.map +1 -1
- package/dist/worker-utils/lib/worker-farm/worker-job.d.ts.map +1 -1
- package/dist/worker-utils/lib/worker-farm/worker-job.js +3 -2
- package/dist/worker-utils/lib/worker-farm/worker-job.js.map +1 -1
- package/dist/worker-utils/lib/worker-farm/worker-pool.d.ts +1 -1
- package/dist/worker-utils/lib/worker-farm/worker-pool.d.ts.map +1 -1
- package/dist/worker-utils/lib/worker-farm/worker-pool.js +65 -12
- package/dist/worker-utils/lib/worker-farm/worker-pool.js.map +1 -1
- package/dist/worker-utils/null-worker-node.js +36 -2
- package/dist/worker-utils/null-worker-node.js.map +2 -2
- package/dist/worker-utils/null-worker.js +36 -2
- package/dist/worker-utils/null-worker.js.map +2 -2
- package/dist/worker-utils/types.d.ts +25 -4
- package/dist/worker-utils/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/lib/api/parse-file.ts +2 -0
- package/src/lib/api/parse-in-batches.ts +5 -5
- package/src/lib/api/parse.ts +4 -2
- package/src/lib/loader-utils/get-fetch-function.ts +4 -2
- package/src/lib/loader-utils/loader-context.ts +4 -0
- package/src/lib/loader-utils/option-defaults.ts +1 -0
- package/src/lib/loader-utils/option-utils.ts +1 -1
- package/src/loader-utils/index.ts +1 -0
- package/src/loader-utils/json-loader.ts +1 -1
- package/src/loader-utils/lib/request-utils/request-credentials.ts +10 -12
- package/src/loader-utils/lib/worker-loader-utils/create-loader-worker.ts +38 -15
- package/src/loader-utils/lib/worker-loader-utils/parse-with-worker.ts +52 -7
- package/src/loader-utils/loader-types.ts +16 -4
- package/src/schema-utils/lib/table/tables/convert-table.ts +1 -1
- package/src/worker-utils/index.ts +3 -1
- package/src/worker-utils/lib/worker-api/create-worker.ts +41 -2
- package/src/worker-utils/lib/worker-api/get-worker-url.ts +13 -14
- package/src/worker-utils/lib/worker-api/process-on-worker.ts +128 -73
- package/src/worker-utils/lib/worker-farm/worker-job.ts +4 -2
- package/src/worker-utils/lib/worker-farm/worker-pool.ts +65 -12
- package/src/worker-utils/types.ts +26 -3
package/dist/dist.dev.js
CHANGED
|
@@ -792,6 +792,7 @@ var __exports__ = (() => {
|
|
|
792
792
|
* @param data any data structure, ideally consisting mostly of transferrable objects
|
|
793
793
|
*/
|
|
794
794
|
postMessage(type, payload) {
|
|
795
|
+
if (!this.isRunning) return;
|
|
795
796
|
this.workerThread.postMessage({
|
|
796
797
|
source: "loaders.gl",
|
|
797
798
|
// Lets worker ignore unrelated messages
|
|
@@ -827,9 +828,10 @@ var __exports__ = (() => {
|
|
|
827
828
|
if (!this.isRunning) {
|
|
828
829
|
return;
|
|
829
830
|
}
|
|
830
|
-
const error = reason ?? createAbortError(`Worker job "${this.name}" was aborted`);
|
|
831
831
|
this.workerThread.destroy();
|
|
832
|
-
this.error(
|
|
832
|
+
this.error(
|
|
833
|
+
arguments.length ? reason : createAbortError(`Worker job "${this.name}" was aborted`)
|
|
834
|
+
);
|
|
833
835
|
}
|
|
834
836
|
};
|
|
835
837
|
function createAbortError(message) {
|
|
@@ -1132,9 +1134,13 @@ var __exports__ = (() => {
|
|
|
1132
1134
|
* @note Can free up significant memory
|
|
1133
1135
|
*/
|
|
1134
1136
|
destroy(reason = new Error("Worker pool was destroyed")) {
|
|
1137
|
+
this.isDestroyed = true;
|
|
1135
1138
|
this.activeJobs.forEach((job) => job.abort(reason));
|
|
1136
1139
|
const queuedJobs = this.jobQueue.splice(0);
|
|
1137
|
-
queuedJobs.forEach((queuedJob) =>
|
|
1140
|
+
queuedJobs.forEach((queuedJob) => {
|
|
1141
|
+
queuedJob.removeAbortListener();
|
|
1142
|
+
queuedJob.onReject(reason);
|
|
1143
|
+
});
|
|
1138
1144
|
this.idleQueue.forEach((worker) => worker.destroy());
|
|
1139
1145
|
this.isDestroyed = true;
|
|
1140
1146
|
}
|
|
@@ -1156,12 +1162,33 @@ var __exports__ = (() => {
|
|
|
1156
1162
|
this.onDebug = props.onDebug;
|
|
1157
1163
|
}
|
|
1158
1164
|
}
|
|
1159
|
-
async startJob(name, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
|
|
1165
|
+
async startJob(name, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error), signal) {
|
|
1166
|
+
if (signal?.aborted) {
|
|
1167
|
+
throw signal.reason;
|
|
1168
|
+
}
|
|
1160
1169
|
if (this.isDestroyed) {
|
|
1161
1170
|
return Promise.reject(new Error("Worker pool was destroyed"));
|
|
1162
1171
|
}
|
|
1163
1172
|
const startPromise = new Promise((onStart, onReject) => {
|
|
1164
|
-
|
|
1173
|
+
const abortQueuedJob = () => {
|
|
1174
|
+
const index = this.jobQueue.indexOf(queuedJob);
|
|
1175
|
+
if (index >= 0) {
|
|
1176
|
+
this.jobQueue.splice(index, 1);
|
|
1177
|
+
queuedJob.removeAbortListener();
|
|
1178
|
+
onReject(signal?.reason);
|
|
1179
|
+
}
|
|
1180
|
+
};
|
|
1181
|
+
const queuedJob = {
|
|
1182
|
+
name,
|
|
1183
|
+
onMessage: onMessage2,
|
|
1184
|
+
onError,
|
|
1185
|
+
onStart,
|
|
1186
|
+
onReject,
|
|
1187
|
+
signal,
|
|
1188
|
+
removeAbortListener: () => signal?.removeEventListener("abort", abortQueuedJob)
|
|
1189
|
+
};
|
|
1190
|
+
this.jobQueue.push(queuedJob);
|
|
1191
|
+
signal?.addEventListener("abort", abortQueuedJob, { once: true });
|
|
1165
1192
|
return this;
|
|
1166
1193
|
});
|
|
1167
1194
|
this._startQueuedJob();
|
|
@@ -1176,7 +1203,16 @@ var __exports__ = (() => {
|
|
|
1176
1203
|
if (!this.jobQueue.length) {
|
|
1177
1204
|
return;
|
|
1178
1205
|
}
|
|
1179
|
-
|
|
1206
|
+
let workerThread;
|
|
1207
|
+
try {
|
|
1208
|
+
workerThread = this._getAvailableWorker();
|
|
1209
|
+
} catch (error) {
|
|
1210
|
+
const queuedJob2 = this.jobQueue.shift();
|
|
1211
|
+
queuedJob2?.removeAbortListener();
|
|
1212
|
+
queuedJob2?.onReject(error);
|
|
1213
|
+
void this._startQueuedJob();
|
|
1214
|
+
return;
|
|
1215
|
+
}
|
|
1180
1216
|
if (!workerThread) {
|
|
1181
1217
|
return;
|
|
1182
1218
|
}
|
|
@@ -1189,18 +1225,27 @@ var __exports__ = (() => {
|
|
|
1189
1225
|
backlog: this.jobQueue.length
|
|
1190
1226
|
});
|
|
1191
1227
|
const job = new WorkerJob(queuedJob.name, workerThread);
|
|
1228
|
+
queuedJob.removeAbortListener();
|
|
1229
|
+
const abortJob = () => job.abort(queuedJob.signal?.reason);
|
|
1230
|
+
queuedJob.signal?.addEventListener("abort", abortJob, { once: true });
|
|
1231
|
+
if (queuedJob.signal?.aborted) abortJob();
|
|
1192
1232
|
this.activeJobs.add(job);
|
|
1193
1233
|
workerThread.ref();
|
|
1194
|
-
workerThread.onMessage = (data) =>
|
|
1234
|
+
workerThread.onMessage = (data) => {
|
|
1235
|
+
if (job.isRunning) queuedJob.onMessage(job, data.type, data.payload);
|
|
1236
|
+
};
|
|
1195
1237
|
workerThread.onError = (error) => queuedJob.onError(job, error);
|
|
1196
1238
|
queuedJob.onStart(job);
|
|
1197
1239
|
try {
|
|
1198
1240
|
await job.result;
|
|
1199
1241
|
} catch {
|
|
1200
1242
|
} finally {
|
|
1243
|
+
queuedJob.signal?.removeEventListener("abort", abortJob);
|
|
1201
1244
|
this.activeJobs.delete(job);
|
|
1202
1245
|
this.returnWorkerToQueue(workerThread);
|
|
1203
1246
|
}
|
|
1247
|
+
} else {
|
|
1248
|
+
this.returnWorkerToQueue(workerThread);
|
|
1204
1249
|
}
|
|
1205
1250
|
}
|
|
1206
1251
|
/**
|
|
@@ -1242,13 +1287,18 @@ var __exports__ = (() => {
|
|
|
1242
1287
|
if (this.count < this._getMaxConcurrency()) {
|
|
1243
1288
|
this.count++;
|
|
1244
1289
|
const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1290
|
+
try {
|
|
1291
|
+
return new WorkerThread({
|
|
1292
|
+
name,
|
|
1293
|
+
source: this.source,
|
|
1294
|
+
url: this.url,
|
|
1295
|
+
getUrl: this.getUrl,
|
|
1296
|
+
loadWorker: this.loadWorker
|
|
1297
|
+
});
|
|
1298
|
+
} catch (error) {
|
|
1299
|
+
this.count--;
|
|
1300
|
+
throw error;
|
|
1301
|
+
}
|
|
1252
1302
|
}
|
|
1253
1303
|
return null;
|
|
1254
1304
|
}
|
|
@@ -1438,12 +1488,8 @@ var __exports__ = (() => {
|
|
|
1438
1488
|
return `${worker.name}@${worker.version}${warning}`;
|
|
1439
1489
|
}
|
|
1440
1490
|
function getCustomWorkerURL(worker, options = {}) {
|
|
1441
|
-
const workerOptions = options[worker.id] || {};
|
|
1442
1491
|
const workerFile = isBrowser3 ? worker.workerFile || `${worker.id}-worker.js` : worker.workerNode || `${worker.id}-worker-node.js`;
|
|
1443
|
-
let url =
|
|
1444
|
-
if (!url && worker.id === "compression") {
|
|
1445
|
-
url = options.workerUrl;
|
|
1446
|
-
}
|
|
1492
|
+
let url = getConfiguredWorkerURL(worker, options);
|
|
1447
1493
|
const workerType = options._workerType || options?.core?._workerType;
|
|
1448
1494
|
if (!url && workerType === "test") {
|
|
1449
1495
|
if (isBrowser3) {
|
|
@@ -1456,6 +1502,10 @@ var __exports__ = (() => {
|
|
|
1456
1502
|
}
|
|
1457
1503
|
return url || null;
|
|
1458
1504
|
}
|
|
1505
|
+
function getConfiguredWorkerURL(worker, options = {}) {
|
|
1506
|
+
const workerOptions = options[worker.id] || {};
|
|
1507
|
+
return workerOptions.workerUrl || (worker.id === "compression" ? options.workerUrl : null) || null;
|
|
1508
|
+
}
|
|
1459
1509
|
function getWorkerURL(worker, options = {}) {
|
|
1460
1510
|
const customWorkerUrl = getCustomWorkerURL(worker, options);
|
|
1461
1511
|
const descriptorWorkerUrl = typeof worker.worker === "string" ? worker.worker : null;
|
|
@@ -1500,6 +1550,13 @@ var __exports__ = (() => {
|
|
|
1500
1550
|
(worker.worker || worker.loadWorker || workerOptions?.workerUrl) && options?.worker
|
|
1501
1551
|
);
|
|
1502
1552
|
}
|
|
1553
|
+
function canProcessOnWorkerInBatches(worker, options = {}) {
|
|
1554
|
+
if (!canProcessOnWorker(worker, options)) return false;
|
|
1555
|
+
if (options.workerInBatches !== void 0) return options.workerInBatches;
|
|
1556
|
+
return Boolean(
|
|
1557
|
+
worker.workerInBatches && !options.source && !getConfiguredWorkerURL(worker, options)
|
|
1558
|
+
);
|
|
1559
|
+
}
|
|
1503
1560
|
async function processOnWorker(worker, data, options = {}, context = {}, jobContext = {}) {
|
|
1504
1561
|
throwIfAborted(options.signal);
|
|
1505
1562
|
const name = getWorkerName(worker);
|
|
@@ -1509,15 +1566,13 @@ var __exports__ = (() => {
|
|
|
1509
1566
|
const job = await workerPool.startJob(
|
|
1510
1567
|
jobName,
|
|
1511
1568
|
// eslint-disable-next-line
|
|
1512
|
-
onMessage.bind(null, context)
|
|
1569
|
+
onMessage.bind(null, context, options),
|
|
1570
|
+
void 0,
|
|
1571
|
+
options.signal
|
|
1513
1572
|
);
|
|
1514
|
-
const abortJob = () => job.abort(getAbortReason(options.signal));
|
|
1515
|
-
options.signal?.addEventListener("abort", abortJob, { once: true });
|
|
1516
|
-
if (options.signal?.aborted) {
|
|
1517
|
-
abortJob();
|
|
1518
|
-
}
|
|
1519
1573
|
try {
|
|
1520
|
-
|
|
1574
|
+
if (options.signal?.aborted) job.abort(getAbortReason(options.signal));
|
|
1575
|
+
const { signal: _signal, onProgress: _onProgress, ...workerOptions } = options;
|
|
1521
1576
|
const transferableOptions = getTransferListForWriter(workerOptions);
|
|
1522
1577
|
const transferableContext = getTransferListForWriter(jobContext);
|
|
1523
1578
|
if (job.isRunning) {
|
|
@@ -1529,8 +1584,9 @@ var __exports__ = (() => {
|
|
|
1529
1584
|
}
|
|
1530
1585
|
const result = await job.result;
|
|
1531
1586
|
return result.result;
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1587
|
+
} catch (error) {
|
|
1588
|
+
job.abort(error);
|
|
1589
|
+
throw error;
|
|
1534
1590
|
}
|
|
1535
1591
|
}
|
|
1536
1592
|
function processOnWorkerInBatches(worker, input, options = {}, context = {}, jobContext = {}) {
|
|
@@ -1545,8 +1601,15 @@ var __exports__ = (() => {
|
|
|
1545
1601
|
const inputIterator = getAsyncIterator(input);
|
|
1546
1602
|
let outputFinished = false;
|
|
1547
1603
|
let inputFinished = false;
|
|
1604
|
+
let inputCleanupRequested = false;
|
|
1548
1605
|
let inputRequest = Promise.resolve();
|
|
1549
1606
|
const batchJobFailed = new Error("Worker batch job failed");
|
|
1607
|
+
const closeJobInput = () => {
|
|
1608
|
+
if (!inputFinished && !inputCleanupRequested) {
|
|
1609
|
+
inputCleanupRequested = true;
|
|
1610
|
+
closeInputIterator(inputIterator);
|
|
1611
|
+
}
|
|
1612
|
+
};
|
|
1550
1613
|
const finishOutput = () => {
|
|
1551
1614
|
if (!outputFinished) {
|
|
1552
1615
|
outputFinished = true;
|
|
@@ -1564,8 +1627,12 @@ var __exports__ = (() => {
|
|
|
1564
1627
|
options.jobName || worker.name,
|
|
1565
1628
|
(activeJob, type, payload) => {
|
|
1566
1629
|
switch (type) {
|
|
1630
|
+
case "progress":
|
|
1631
|
+
reportProgress(activeJob, options, payload);
|
|
1632
|
+
break;
|
|
1567
1633
|
case "input-request":
|
|
1568
1634
|
inputRequest = inputRequest.then(async () => {
|
|
1635
|
+
if (!activeJob.isRunning) return;
|
|
1569
1636
|
const nextBatch = await inputIterator.next();
|
|
1570
1637
|
if (!activeJob.isRunning) {
|
|
1571
1638
|
return;
|
|
@@ -1592,7 +1659,7 @@ var __exports__ = (() => {
|
|
|
1592
1659
|
break;
|
|
1593
1660
|
}
|
|
1594
1661
|
case "process":
|
|
1595
|
-
void onMessage(context, activeJob, type, payload);
|
|
1662
|
+
void onMessage(context, options, activeJob, type, payload);
|
|
1596
1663
|
break;
|
|
1597
1664
|
default: {
|
|
1598
1665
|
const error = new Error(`Unexpected worker batch message: ${type}`);
|
|
@@ -1601,16 +1668,19 @@ var __exports__ = (() => {
|
|
|
1601
1668
|
break;
|
|
1602
1669
|
}
|
|
1603
1670
|
}
|
|
1604
|
-
}
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
}
|
|
1611
|
-
void job.result.catch(
|
|
1671
|
+
},
|
|
1672
|
+
void 0,
|
|
1673
|
+
options.signal
|
|
1674
|
+
).catch((error) => {
|
|
1675
|
+
closeJobInput();
|
|
1676
|
+
throw error;
|
|
1677
|
+
});
|
|
1678
|
+
void job.result.catch((error) => {
|
|
1679
|
+
failOutput(error);
|
|
1680
|
+
closeJobInput();
|
|
1681
|
+
});
|
|
1612
1682
|
try {
|
|
1613
|
-
const { signal: _signal, ...workerOptions } = options;
|
|
1683
|
+
const { signal: _signal, onProgress: _onProgress, ...workerOptions } = options;
|
|
1614
1684
|
if (job.isRunning) {
|
|
1615
1685
|
job.postMessage("process-in-batches", {
|
|
1616
1686
|
options: getTransferListForWriter(workerOptions),
|
|
@@ -1632,13 +1702,10 @@ var __exports__ = (() => {
|
|
|
1632
1702
|
}
|
|
1633
1703
|
await job.result;
|
|
1634
1704
|
} finally {
|
|
1635
|
-
options.signal?.removeEventListener("abort", abortJob);
|
|
1636
1705
|
if (job.isRunning) {
|
|
1637
1706
|
job.abort(createAbortError2("Worker batch iterator was closed"));
|
|
1638
1707
|
}
|
|
1639
|
-
|
|
1640
|
-
closeInputIterator(inputIterator);
|
|
1641
|
-
}
|
|
1708
|
+
closeJobInput();
|
|
1642
1709
|
}
|
|
1643
1710
|
}
|
|
1644
1711
|
function throwIfAborted(signal) {
|
|
@@ -1648,7 +1715,7 @@ var __exports__ = (() => {
|
|
|
1648
1715
|
throw getAbortReason(signal);
|
|
1649
1716
|
}
|
|
1650
1717
|
function getAbortReason(signal) {
|
|
1651
|
-
return signal
|
|
1718
|
+
return signal ? signal.reason : createAbortError2("Worker job was aborted");
|
|
1652
1719
|
}
|
|
1653
1720
|
function createAbortError2(message) {
|
|
1654
1721
|
const error = new Error(message);
|
|
@@ -1687,8 +1754,11 @@ var __exports__ = (() => {
|
|
|
1687
1754
|
}
|
|
1688
1755
|
return { name, url: getWorkerURL(worker, options) };
|
|
1689
1756
|
}
|
|
1690
|
-
async function onMessage(context, job, type, payload) {
|
|
1757
|
+
async function onMessage(context, options, job, type, payload) {
|
|
1691
1758
|
switch (type) {
|
|
1759
|
+
case "progress":
|
|
1760
|
+
reportProgress(job, options, payload);
|
|
1761
|
+
break;
|
|
1692
1762
|
case "done":
|
|
1693
1763
|
job.done(payload);
|
|
1694
1764
|
break;
|
|
@@ -1696,13 +1766,18 @@ var __exports__ = (() => {
|
|
|
1696
1766
|
job.error(new Error(payload.error));
|
|
1697
1767
|
break;
|
|
1698
1768
|
case "process":
|
|
1699
|
-
const { id, input, options } = payload;
|
|
1769
|
+
const { id, input, options: processOptions } = payload;
|
|
1700
1770
|
try {
|
|
1701
1771
|
if (!context.process) {
|
|
1702
1772
|
job.postMessage("error", { id, error: "Worker not set up to process on main thread" });
|
|
1703
1773
|
return;
|
|
1704
1774
|
}
|
|
1705
|
-
const result = await context.process(
|
|
1775
|
+
const result = await context.process(
|
|
1776
|
+
input,
|
|
1777
|
+
{ ...processOptions, signal: options.signal, onProgress: options.onProgress },
|
|
1778
|
+
void 0,
|
|
1779
|
+
payload.context || {}
|
|
1780
|
+
);
|
|
1706
1781
|
job.postMessage("done", { id, result });
|
|
1707
1782
|
} catch (error) {
|
|
1708
1783
|
const message = error instanceof Error ? error.message : "unknown error";
|
|
@@ -1713,6 +1788,14 @@ var __exports__ = (() => {
|
|
|
1713
1788
|
console.warn(`process-on-worker: unknown message ${type}`);
|
|
1714
1789
|
}
|
|
1715
1790
|
}
|
|
1791
|
+
function reportProgress(job, options, payload) {
|
|
1792
|
+
if (!job.isRunning || !payload.progress) return;
|
|
1793
|
+
try {
|
|
1794
|
+
options.onProgress?.(payload.progress);
|
|
1795
|
+
} catch (error) {
|
|
1796
|
+
job.abort(error);
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1716
1799
|
|
|
1717
1800
|
// src/worker-utils/lib/worker-api/validate-worker-version.ts
|
|
1718
1801
|
function validateWorkerVersion(worker, coreVersion = VERSION3) {
|
|
@@ -1746,6 +1829,15 @@ var __exports__ = (() => {
|
|
|
1746
1829
|
}
|
|
1747
1830
|
return Boolean(canProcessOnWorker(loader, workerOptions));
|
|
1748
1831
|
}
|
|
1832
|
+
function canParseWithWorkerInBatches(loader, options) {
|
|
1833
|
+
const parquetOptions = options?.parquet;
|
|
1834
|
+
if (loader.id === "parquet" && typeof parquetOptions?.keyRetriever === "function") {
|
|
1835
|
+
return false;
|
|
1836
|
+
}
|
|
1837
|
+
return Boolean(
|
|
1838
|
+
loader.workerInBatches && canParseWithWorker(loader, options) && canProcessOnWorkerInBatches(loader, getWorkerOptions(options))
|
|
1839
|
+
);
|
|
1840
|
+
}
|
|
1749
1841
|
function shouldParseWithWorker(loader, data, options, context, estimateLoader = loader) {
|
|
1750
1842
|
if (!canParseWithWorker(loader, options)) {
|
|
1751
1843
|
return false;
|
|
@@ -1764,11 +1856,15 @@ var __exports__ = (() => {
|
|
|
1764
1856
|
}
|
|
1765
1857
|
}
|
|
1766
1858
|
async function parseWithWorker(loader, data, options, context, parseOnMainThread, signal) {
|
|
1767
|
-
const workerSignal = signal || getWorkerAbortSignal(options);
|
|
1859
|
+
const workerSignal = signal || getWorkerAbortSignal(options) || context?.signal;
|
|
1768
1860
|
const result = await processOnWorker(
|
|
1769
1861
|
loader,
|
|
1770
1862
|
data,
|
|
1771
|
-
{
|
|
1863
|
+
{
|
|
1864
|
+
...getWorkerOptions(options, loader),
|
|
1865
|
+
signal: workerSignal,
|
|
1866
|
+
onProgress: options?.onProgress || context?.reportProgress
|
|
1867
|
+
},
|
|
1772
1868
|
{
|
|
1773
1869
|
process: async (input, processOptions, _workerContext, parseContext) => {
|
|
1774
1870
|
if (!parseOnMainThread) {
|
|
@@ -1790,11 +1886,15 @@ var __exports__ = (() => {
|
|
|
1790
1886
|
return isLoaderWithWorkerResultDeserializer(loader) ? loader.deserializeWorkerResult(result, options, context) : result;
|
|
1791
1887
|
}
|
|
1792
1888
|
async function* parseWithWorkerInBatches(loader, inputIterator, options, context, parseOnMainThread, signal) {
|
|
1793
|
-
const workerSignal = signal || getWorkerAbortSignal(options);
|
|
1889
|
+
const workerSignal = signal || getWorkerAbortSignal(options) || context?.signal;
|
|
1794
1890
|
const outputIterator = processOnWorkerInBatches(
|
|
1795
1891
|
loader,
|
|
1796
1892
|
inputIterator,
|
|
1797
|
-
{
|
|
1893
|
+
{
|
|
1894
|
+
...getWorkerOptions(options, loader),
|
|
1895
|
+
signal: workerSignal,
|
|
1896
|
+
onProgress: options?.onProgress || context?.reportProgress
|
|
1897
|
+
},
|
|
1798
1898
|
{
|
|
1799
1899
|
process: async (input, processOptions, _workerContext, parseContext) => {
|
|
1800
1900
|
if (!parseOnMainThread) {
|
|
@@ -1818,6 +1918,7 @@ var __exports__ = (() => {
|
|
|
1818
1918
|
}
|
|
1819
1919
|
}
|
|
1820
1920
|
function getWorkerAbortSignal(options) {
|
|
1921
|
+
if (options?.signal) return options.signal;
|
|
1821
1922
|
const parquetSignal = options?.parquet?.signal;
|
|
1822
1923
|
if (typeof AbortSignal !== "undefined" && parquetSignal instanceof AbortSignal) {
|
|
1823
1924
|
return parquetSignal;
|
|
@@ -1861,10 +1962,15 @@ var __exports__ = (() => {
|
|
|
1861
1962
|
function getWorkerOptions(options = {}, loader) {
|
|
1862
1963
|
const optionsToSerialize = {
|
|
1863
1964
|
...options,
|
|
1965
|
+
signal: void 0,
|
|
1966
|
+
onProgress: void 0,
|
|
1864
1967
|
...options.core ? { core: { ...options.core, authentications: void 0 } } : {}
|
|
1865
1968
|
};
|
|
1866
1969
|
const serializedOptions = JSON.parse(
|
|
1867
|
-
JSON.stringify(optionsToSerialize, (_key, value) =>
|
|
1970
|
+
JSON.stringify(optionsToSerialize, (_key, value) => {
|
|
1971
|
+
if (typeof AbortSignal !== "undefined" && value instanceof AbortSignal) return void 0;
|
|
1972
|
+
return typeof value === "bigint" ? null : value;
|
|
1973
|
+
})
|
|
1868
1974
|
);
|
|
1869
1975
|
restoreBigIntOptions(optionsToSerialize, serializedOptions);
|
|
1870
1976
|
const workerOptions = {
|
|
@@ -1891,7 +1997,17 @@ var __exports__ = (() => {
|
|
|
1891
1997
|
if (!context) {
|
|
1892
1998
|
return {};
|
|
1893
1999
|
}
|
|
1894
|
-
const {
|
|
2000
|
+
const {
|
|
2001
|
+
fetch: fetch2,
|
|
2002
|
+
loaders,
|
|
2003
|
+
coreApi: coreApi2,
|
|
2004
|
+
signal,
|
|
2005
|
+
reportProgress: reportProgress2,
|
|
2006
|
+
_parse,
|
|
2007
|
+
_parseSync,
|
|
2008
|
+
_parseInBatches,
|
|
2009
|
+
...serializableContext
|
|
2010
|
+
} = context;
|
|
1895
2011
|
return JSON.parse(JSON.stringify(serializableContext));
|
|
1896
2012
|
}
|
|
1897
2013
|
function shouldParseCSVWithWorker(options) {
|
|
@@ -2499,7 +2615,7 @@ var __exports__ = (() => {
|
|
|
2499
2615
|
for (const credential of requestCredentials) normalizeRequestOrigins(credential.origins);
|
|
2500
2616
|
const authenticatedFetch = async (url, requestOptions = {}) => {
|
|
2501
2617
|
requestOptions = mergeFetchOptions(fetchOptions, requestOptions);
|
|
2502
|
-
|
|
2618
|
+
requestOptions.signal?.throwIfAborted();
|
|
2503
2619
|
if (!credentials.length) return baseFetch(url, requestOptions);
|
|
2504
2620
|
const resolvedURL = parseHTTPURL(url);
|
|
2505
2621
|
const authorization = resolvedURL ? await authorizeRequest(resolvedURL, requestOptions, tokenCredentials) : { url, options: requestOptions, credentials: [] };
|
|
@@ -2515,7 +2631,7 @@ var __exports__ = (() => {
|
|
|
2515
2631
|
(credential) => credential.refreshStatusCodes?.includes(response.status)
|
|
2516
2632
|
);
|
|
2517
2633
|
if (!refreshableCredentials.length && !shouldRetrySignature) return response;
|
|
2518
|
-
|
|
2634
|
+
requestOptions.signal?.throwIfAborted();
|
|
2519
2635
|
const refreshedTokens = /* @__PURE__ */ new Map();
|
|
2520
2636
|
await Promise.all(
|
|
2521
2637
|
refreshableCredentials.map(async ({ credential }) => {
|
|
@@ -2526,7 +2642,7 @@ var __exports__ = (() => {
|
|
|
2526
2642
|
if (!refreshedTokens.size && !shouldRetrySignature) return response;
|
|
2527
2643
|
await response.body?.cancel().catch(() => {
|
|
2528
2644
|
});
|
|
2529
|
-
|
|
2645
|
+
requestOptions.signal?.throwIfAborted();
|
|
2530
2646
|
const replayAuthorization = resolvedURL ? await authorizeRequest(
|
|
2531
2647
|
resolvedURL,
|
|
2532
2648
|
requestOptions,
|
|
@@ -2567,7 +2683,7 @@ var __exports__ = (() => {
|
|
|
2567
2683
|
for (const credential of credentials) {
|
|
2568
2684
|
const origin = getRequestOrigin(request.url);
|
|
2569
2685
|
if (!origin || !normalizeRequestOrigins(credential.origins).includes(origin)) continue;
|
|
2570
|
-
|
|
2686
|
+
signal?.throwIfAborted();
|
|
2571
2687
|
const authenticatedRequest = await credential.authenticate({
|
|
2572
2688
|
url: request.url,
|
|
2573
2689
|
options: { ...request.options, headers: new Headers(request.options.headers) },
|
|
@@ -2583,7 +2699,7 @@ var __exports__ = (() => {
|
|
|
2583
2699
|
};
|
|
2584
2700
|
appliedCredentials.push(credential);
|
|
2585
2701
|
}
|
|
2586
|
-
|
|
2702
|
+
signal?.throwIfAborted();
|
|
2587
2703
|
return { ...request, credentials: appliedCredentials };
|
|
2588
2704
|
}
|
|
2589
2705
|
function getRequestOrigin(url) {
|
|
@@ -2673,9 +2789,6 @@ var __exports__ = (() => {
|
|
|
2673
2789
|
if (!["GET", "HEAD", "OPTIONS", "PUT", "DELETE"].includes(method)) return false;
|
|
2674
2790
|
return !(options.body && typeof ReadableStream !== "undefined" && options.body instanceof ReadableStream);
|
|
2675
2791
|
}
|
|
2676
|
-
function createAbortError3() {
|
|
2677
|
-
return new DOMException("The operation was aborted.", "AbortError");
|
|
2678
|
-
}
|
|
2679
2792
|
|
|
2680
2793
|
// src/loader-utils/lib/path-utils/file-aliases.ts
|
|
2681
2794
|
var pathPrefix = "";
|
|
@@ -3310,6 +3423,7 @@ var __exports__ = (() => {
|
|
|
3310
3423
|
worker: true,
|
|
3311
3424
|
// By default, use worker if provided by loader.
|
|
3312
3425
|
workerThreshold: 0.1,
|
|
3426
|
+
workerInBatches: void 0,
|
|
3313
3427
|
maxConcurrency: 3,
|
|
3314
3428
|
// How many worker instances should be created for each loader.
|
|
3315
3429
|
maxMobileConcurrency: 1,
|
|
@@ -3485,7 +3599,7 @@ var __exports__ = (() => {
|
|
|
3485
3599
|
const prefix = id ? `${id}.` : "";
|
|
3486
3600
|
for (const key in options) {
|
|
3487
3601
|
const isSubOptions = !id && isObject(options[key]);
|
|
3488
|
-
const isBaseUriOption =
|
|
3602
|
+
const isBaseUriOption = !id && ["baseUri", "signal", "onProgress"].includes(key);
|
|
3489
3603
|
const isWorkerUrlOption = key === "workerUrl" && id;
|
|
3490
3604
|
if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {
|
|
3491
3605
|
if (key in deprecatedOptions) {
|
|
@@ -4199,11 +4313,13 @@ var __exports__ = (() => {
|
|
|
4199
4313
|
} else {
|
|
4200
4314
|
fetchFunction = fetchFile;
|
|
4201
4315
|
}
|
|
4316
|
+
const signal = loaderOptions.signal || context?.signal;
|
|
4317
|
+
const requestOptions = isObject(fetchOption) ? fetchOption : void 0;
|
|
4202
4318
|
return createAuthenticatedFetch({
|
|
4203
4319
|
fetch: fetchFunction,
|
|
4204
4320
|
credentials: loaderOptions.core?.credentials || [],
|
|
4205
4321
|
authentications: loaderOptions.core?.authentications,
|
|
4206
|
-
fetchOptions:
|
|
4322
|
+
fetchOptions: signal ? { ...requestOptions, signal } : requestOptions
|
|
4207
4323
|
});
|
|
4208
4324
|
}
|
|
4209
4325
|
|
|
@@ -4426,6 +4542,7 @@ var __exports__ = (() => {
|
|
|
4426
4542
|
loaders = void 0;
|
|
4427
4543
|
}
|
|
4428
4544
|
options = options || {};
|
|
4545
|
+
(options.signal || context?.signal)?.throwIfAborted();
|
|
4429
4546
|
const url = file.url || "";
|
|
4430
4547
|
const typedLoaders = loaders;
|
|
4431
4548
|
const candidateLoaders = getLoadersFromContext(typedLoaders, context);
|
|
@@ -4454,6 +4571,7 @@ var __exports__ = (() => {
|
|
|
4454
4571
|
return await parseFileWithLoader(loader, file, strictOptions, context);
|
|
4455
4572
|
}
|
|
4456
4573
|
async function parseFileWithLoader(loader, file, options, context) {
|
|
4574
|
+
(options.signal || context.signal)?.throwIfAborted();
|
|
4457
4575
|
validateWorkerVersion(loader);
|
|
4458
4576
|
options = mergeOptions(loader.options, options);
|
|
4459
4577
|
const loaderWithParser = await getLoaderImplementation(loader, options, context.url);
|
|
@@ -4535,8 +4653,10 @@ var __exports__ = (() => {
|
|
|
4535
4653
|
options = loaders;
|
|
4536
4654
|
loaders = void 0;
|
|
4537
4655
|
}
|
|
4656
|
+
(options?.signal || context?.signal)?.throwIfAborted();
|
|
4538
4657
|
data = await data;
|
|
4539
4658
|
options = options || {};
|
|
4659
|
+
(options.signal || context?.signal)?.throwIfAborted();
|
|
4540
4660
|
const url = getResourceUrl(data);
|
|
4541
4661
|
const loader = await selectLoader(data, loaders, options);
|
|
4542
4662
|
if (!loader) {
|
|
@@ -4586,7 +4706,7 @@ var __exports__ = (() => {
|
|
|
4586
4706
|
options?.core?.transforms || []
|
|
4587
4707
|
);
|
|
4588
4708
|
if (loader.parseInBatches) {
|
|
4589
|
-
if (
|
|
4709
|
+
if (canParseWithWorkerInBatches(loader, options)) {
|
|
4590
4710
|
return parseWithWorkerInBatches(loader, transformedIterator, options, context, parse);
|
|
4591
4711
|
}
|
|
4592
4712
|
return loader.parseInBatches(transformedIterator, options, context);
|
|
@@ -4841,6 +4961,8 @@ var __exports__ = (() => {
|
|
|
4841
4961
|
if (parentContext) {
|
|
4842
4962
|
return {
|
|
4843
4963
|
...parentContext,
|
|
4964
|
+
signal: options.signal || parentContext.signal,
|
|
4965
|
+
reportProgress: options.onProgress || parentContext.reportProgress,
|
|
4844
4966
|
coreApi: parentContext.coreApi || context.coreApi || coreApi,
|
|
4845
4967
|
_parse: parentContext._parse || context._parse,
|
|
4846
4968
|
fetch: getFetchFunction(options, parentContext)
|
|
@@ -4848,6 +4970,8 @@ var __exports__ = (() => {
|
|
|
4848
4970
|
}
|
|
4849
4971
|
const newContext = {
|
|
4850
4972
|
...context,
|
|
4973
|
+
signal: options.signal || context.signal,
|
|
4974
|
+
reportProgress: options.onProgress || context.reportProgress,
|
|
4851
4975
|
fetch: getFetchFunction(options, context),
|
|
4852
4976
|
coreApi: context.coreApi || coreApi
|
|
4853
4977
|
};
|
|
@@ -4885,8 +5009,10 @@ var __exports__ = (() => {
|
|
|
4885
5009
|
options = loaders;
|
|
4886
5010
|
loaders = void 0;
|
|
4887
5011
|
}
|
|
5012
|
+
(options?.signal || context?.signal)?.throwIfAborted();
|
|
4888
5013
|
data = await data;
|
|
4889
5014
|
options = options || {};
|
|
5015
|
+
(options.signal || context?.signal)?.throwIfAborted();
|
|
4890
5016
|
const url = getResourceUrl(data);
|
|
4891
5017
|
const typedLoaders = loaders;
|
|
4892
5018
|
const candidateLoaders = getLoadersFromContext(typedLoaders, context);
|
|
@@ -4915,6 +5041,7 @@ var __exports__ = (() => {
|
|
|
4915
5041
|
return await parseWithLoader(loader, data, strictOptions, context);
|
|
4916
5042
|
}
|
|
4917
5043
|
async function parseWithLoader(loader, data, options, context) {
|
|
5044
|
+
(options.signal || context.signal)?.throwIfAborted();
|
|
4918
5045
|
validateWorkerVersion(loader);
|
|
4919
5046
|
options = mergeOptions(loader.options, options);
|
|
4920
5047
|
if (isResponse(data)) {
|