@seedprotocol/sdk 0.6.4 → 0.6.6
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/{BasePathResolver-0IHnXxtL.js → BasePathResolver-BGxb4Qod.js} +27 -4
- package/dist/BasePathResolver-BGxb4Qod.js.map +1 -0
- package/dist/{ModelProperty-BiDQu5rE.js → ModelProperty-Bvg9cJcd.js} +20 -20
- package/dist/{ModelProperty-BiDQu5rE.js.map → ModelProperty-Bvg9cJcd.js.map} +1 -1
- package/dist/{Schema-qciDB7Nu.js → Schema-BNJBY80k.js} +25 -25
- package/dist/{Schema-qciDB7Nu.js.map → Schema-BNJBY80k.js.map} +1 -1
- package/dist/{SchemaValidationService-BaOkRjsU.js → SchemaValidationService-aqXkwXTr.js} +5 -5
- package/dist/{SchemaValidationService-BaOkRjsU.js.map → SchemaValidationService-aqXkwXTr.js.map} +1 -1
- package/dist/{backfillMetadataPropertyIds-oypxoBXv.js → backfillMetadataPropertyIds-DYkvoOMz.js} +3 -3
- package/dist/{backfillMetadataPropertyIds-oypxoBXv.js.map → backfillMetadataPropertyIds-DYkvoOMz.js.map} +1 -1
- package/dist/cjs/{ModelProperty-DvIIhBnK.js → ModelProperty-alntkSnH.js} +17 -17
- package/dist/cjs/{ModelProperty-DvIIhBnK.js.map → ModelProperty-alntkSnH.js.map} +1 -1
- package/dist/cjs/{Schema-FdzNqyGo.js → Schema-ByFv6fcb.js} +20 -20
- package/dist/cjs/{Schema-FdzNqyGo.js.map → Schema-ByFv6fcb.js.map} +1 -1
- package/dist/cjs/{SchemaValidationService-pxRoOs79.js → SchemaValidationService-D55MWsxv.js} +2 -2
- package/dist/cjs/{SchemaValidationService-pxRoOs79.js.map → SchemaValidationService-D55MWsxv.js.map} +1 -1
- package/dist/cjs/{backfillMetadataPropertyIds-D0o5VwBh.js → backfillMetadataPropertyIds-DrrL5RqD.js} +2 -2
- package/dist/cjs/{backfillMetadataPropertyIds-D0o5VwBh.js.map → backfillMetadataPropertyIds-DrrL5RqD.js.map} +1 -1
- package/dist/cjs/{eas-DSZkoDUn.js → eas-D2E3_i_c.js} +3 -3
- package/dist/cjs/{eas-DSZkoDUn.js.map → eas-D2E3_i_c.js.map} +1 -1
- package/dist/cjs/{getItem-CPcdcFuS.js → getItem-B2zLVB_l.js} +2 -2
- package/dist/cjs/{getItem-CPcdcFuS.js.map → getItem-B2zLVB_l.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-BvmVTKoc.js → getPublishPayload-Bv94k4ak.js} +11 -11
- package/dist/cjs/{getPublishPayload-BvmVTKoc.js.map → getPublishPayload-Bv94k4ak.js.map} +1 -1
- package/dist/cjs/{getPublishUploads-D2VZHZnu.js → getPublishUploads-CSbHUxYk.js} +4 -4
- package/dist/cjs/{getPublishUploads-D2VZHZnu.js.map → getPublishUploads-CSbHUxYk.js.map} +1 -1
- package/dist/cjs/{getSegmentedItemProperties-Bm1TEvBS.js → getSegmentedItemProperties-CMhXKQHz.js} +3 -3
- package/dist/cjs/{getSegmentedItemProperties-Bm1TEvBS.js.map → getSegmentedItemProperties-CMhXKQHz.js.map} +1 -1
- package/dist/cjs/{index-C-POwaLs.js → index-D-9WglxG.js} +190 -85
- package/dist/cjs/index-D-9WglxG.js.map +1 -0
- package/dist/cjs/{index-D_ph4zut.js → index-pSLjO-ch.js} +3 -3
- package/dist/cjs/index-pSLjO-ch.js.map +1 -0
- package/dist/cjs/{property-DkUtJxV2.js → property-gUK2PijH.js} +4 -4
- package/dist/cjs/{property-DkUtJxV2.js.map → property-gUK2PijH.js.map} +1 -1
- package/dist/cjs/{syncDbWithEas-DRoys7eo.js → syncDbWithEas-CYtl7VTD.js} +6 -6
- package/dist/cjs/{syncDbWithEas-DRoys7eo.js.map → syncDbWithEas-CYtl7VTD.js.map} +1 -1
- package/dist/{configurePlatform-Df4BlXwQ.js → configurePlatform-bGvKBBQy.js} +3 -3
- package/dist/{configurePlatform-Df4BlXwQ.js.map → configurePlatform-bGvKBBQy.js.map} +1 -1
- package/dist/{constants-CROrIRd-.js → constants-CTs2RUrM.js} +4 -2
- package/dist/{constants-CROrIRd-.js.map → constants-CTs2RUrM.js.map} +1 -1
- package/dist/{db-DVsy4QZe.js → db-YiH_kIpE.js} +13 -13
- package/dist/{db-DVsy4QZe.js.map → db-YiH_kIpE.js.map} +1 -1
- package/dist/{eas-z4W41ith.js → eas-1nUCcmeh.js} +4 -4
- package/dist/{eas-z4W41ith.js.map → eas-1nUCcmeh.js.map} +1 -1
- package/dist/{getItem-BiE_b7Fu.js → getItem-Bb8bTYzY.js} +5 -5
- package/dist/{getItem-BiE_b7Fu.js.map → getItem-Bb8bTYzY.js.map} +1 -1
- package/dist/{getPublishPayload-CuRGEZa5.js → getPublishPayload-BHw8mPSb.js} +14 -14
- package/dist/{getPublishPayload-CuRGEZa5.js.map → getPublishPayload-BHw8mPSb.js.map} +1 -1
- package/dist/{getPublishUploads-CMgzBCzZ.js → getPublishUploads-BYhckxFl.js} +7 -7
- package/dist/{getPublishUploads-CMgzBCzZ.js.map → getPublishUploads-BYhckxFl.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-BCCSwTxr.js → getSegmentedItemProperties-B73nMPBv.js} +5 -5
- package/dist/{getSegmentedItemProperties-BCCSwTxr.js.map → getSegmentedItemProperties-B73nMPBv.js.map} +1 -1
- package/dist/{index-DjwIC6U3.js → index-CJNKYI37.js} +186 -106
- package/dist/index-CJNKYI37.js.map +1 -0
- package/dist/{index-xNWgPtlN.js → index-C_5xwOPQ.js} +2 -2
- package/dist/index-C_5xwOPQ.js.map +1 -0
- package/dist/{index-C41UZTmQ.js → index-DzgMt8ba.js} +7 -7
- package/dist/index-DzgMt8ba.js.map +1 -0
- package/dist/{index.node-DQZ3cPe-.js → index.node-ZLiBj9Cu.js} +4 -4
- package/dist/{index.node-DQZ3cPe-.js.map → index.node-ZLiBj9Cu.js.map} +1 -1
- package/dist/main.cjs +1 -1
- package/dist/main.js +21 -21
- package/dist/node.js +10 -10
- package/dist/platform.browser.js +149 -41
- package/dist/platform.browser.js.map +1 -1
- package/dist/platform.node.js +3 -3
- package/dist/{property-Bs3a4Dna.js → property-Dcb50seV.js} +7 -7
- package/dist/{property-Bs3a4Dna.js.map → property-Dcb50seV.js.map} +1 -1
- package/dist/src/browser/db/Db.d.ts +1 -1
- package/dist/src/browser/db/Db.d.ts.map +1 -1
- package/dist/src/browser/db/createSqlocalDrizzle.d.ts +21 -0
- package/dist/src/browser/db/createSqlocalDrizzle.d.ts.map +1 -0
- package/dist/src/browser/helpers/FileManager.d.ts +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/client/ClientManager.d.ts +9 -5
- package/dist/src/client/ClientManager.d.ts.map +1 -1
- package/dist/src/client/actors/addModelsToDb.d.ts.map +1 -1
- package/dist/src/client/actors/addModelsToStore.d.ts.map +1 -1
- package/dist/src/client/actors/saveAppState.d.ts.map +1 -1
- package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
- package/dist/src/client/clientManagerMachine.d.ts +1 -0
- package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
- package/dist/src/client/coalesceInit.d.ts +7 -0
- package/dist/src/client/coalesceInit.d.ts.map +1 -0
- package/dist/src/client/constants.d.ts +3 -1
- package/dist/src/client/constants.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +7 -0
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/types/machines.d.ts +1 -0
- package/dist/src/types/machines.d.ts.map +1 -1
- package/dist/{syncDbWithEas-DRpLRxwb.js → syncDbWithEas-B0RUeDuj.js} +10 -10
- package/dist/{syncDbWithEas-DRpLRxwb.js.map → syncDbWithEas-B0RUeDuj.js.map} +1 -1
- package/dist/{updateSeedRevokedAt-F0ZDvwOO.js → updateSeedRevokedAt-D5ZbBehZ.js} +2 -2
- package/dist/{updateSeedRevokedAt-F0ZDvwOO.js.map → updateSeedRevokedAt-D5ZbBehZ.js.map} +1 -1
- package/package.json +13 -5
- package/dist/BasePathResolver-0IHnXxtL.js.map +0 -1
- package/dist/cjs/index-C-POwaLs.js.map +0 -1
- package/dist/cjs/index-D_ph4zut.js.map +0 -1
- package/dist/index-C41UZTmQ.js.map +0 -1
- package/dist/index-DjwIC6U3.js.map +0 -1
- package/dist/index-xNWgPtlN.js.map +0 -1
package/dist/platform.browser.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as BaseDb, c as appState, t as BasePathResolver, B as BaseFileManager } from './BasePathResolver-
|
|
1
|
+
import { a as BaseDb, c as appState, t as BasePathResolver, B as BaseFileManager } from './BasePathResolver-BGxb4Qod.js';
|
|
2
2
|
import debug from 'debug';
|
|
3
3
|
import { sql } from 'drizzle-orm';
|
|
4
4
|
import { readMigrationFiles } from 'drizzle-orm/migrator';
|
|
5
5
|
import { drizzle } from 'drizzle-orm/sqlite-proxy';
|
|
6
6
|
import { migrate } from 'drizzle-orm/sqlite-proxy/migrator';
|
|
7
|
-
import { E as EAS_ENDPOINT } from './constants-
|
|
8
|
-
import { s as schema } from './index-
|
|
7
|
+
import { E as EAS_ENDPOINT } from './constants-CTs2RUrM.js';
|
|
8
|
+
import { s as schema } from './index-C_5xwOPQ.js';
|
|
9
9
|
import { SQLocalDrizzle } from 'sqlocal/drizzle';
|
|
10
10
|
import { Observable, distinctUntilChanged } from 'rxjs';
|
|
11
11
|
import { BaseArweaveClient, GET_TRANSACTION_TAGS } from '@seedprotocol/arweave';
|
|
@@ -347,7 +347,7 @@ var filesDownload = `(
|
|
|
347
347
|
}.toString()}
|
|
348
348
|
)()`;
|
|
349
349
|
|
|
350
|
-
const logger$
|
|
350
|
+
const logger$5 = debug('seedSdk:browser:workers:FileDownloader');
|
|
351
351
|
class FileDownloader {
|
|
352
352
|
constructor() {
|
|
353
353
|
this.workersArchive = [];
|
|
@@ -364,7 +364,7 @@ class FileDownloader {
|
|
|
364
364
|
const localExcludedTransactions = new Set(excludedTransactions);
|
|
365
365
|
return new Promise((resolve, reject) => {
|
|
366
366
|
worker.onmessage = (e) => {
|
|
367
|
-
logger$
|
|
367
|
+
logger$5('filesDownload main thread onmessage', e.data);
|
|
368
368
|
if (e.data.message === 'excludeTransaction') {
|
|
369
369
|
localExcludedTransactions.add(e.data.transactionId);
|
|
370
370
|
}
|
|
@@ -384,7 +384,7 @@ class FileDownloader {
|
|
|
384
384
|
worker.postMessage({
|
|
385
385
|
transactionIds,
|
|
386
386
|
arweaveHost,
|
|
387
|
-
debug: logger$
|
|
387
|
+
debug: logger$5.enabled,
|
|
388
388
|
filesRoot: BaseFileManager.getWorkingDir(),
|
|
389
389
|
});
|
|
390
390
|
});
|
|
@@ -788,7 +788,7 @@ var imageResize = `(
|
|
|
788
788
|
}.toString()}
|
|
789
789
|
)()`;
|
|
790
790
|
|
|
791
|
-
const logger$
|
|
791
|
+
const logger$4 = debug('seedSdk:browser:workers:ImageResizer');
|
|
792
792
|
class ImageResizer {
|
|
793
793
|
constructor() {
|
|
794
794
|
this.workersArchive = new Map();
|
|
@@ -799,18 +799,18 @@ class ImageResizer {
|
|
|
799
799
|
if (this.workersArchive.has(filePath)) {
|
|
800
800
|
const savedWorker = this.workersArchive.get(filePath);
|
|
801
801
|
savedWorker?.terminate();
|
|
802
|
-
logger$
|
|
802
|
+
logger$4('[ImageResizer.resize] Terminated worker for filePath due to incoming request', filePath);
|
|
803
803
|
this.workersArchive.delete(filePath);
|
|
804
804
|
}
|
|
805
805
|
const worker = new Worker(this.workerBlobUrl);
|
|
806
806
|
this.workersArchive.set(filePath, worker);
|
|
807
807
|
return new Promise((resolve, reject) => {
|
|
808
808
|
worker.onmessage = (e) => {
|
|
809
|
-
logger$
|
|
809
|
+
logger$4('[ImageResizer.resize] main thread onmessage', e.data);
|
|
810
810
|
if (e.data.done) {
|
|
811
811
|
const savedWorker = this.workersArchive.get(filePath);
|
|
812
812
|
savedWorker?.terminate();
|
|
813
|
-
logger$
|
|
813
|
+
logger$4('[ImageResizer.resize] Terminated worker for filePath due to done', filePath);
|
|
814
814
|
this.workersArchive.delete(filePath);
|
|
815
815
|
resolve(e.data);
|
|
816
816
|
}
|
|
@@ -825,7 +825,7 @@ class ImageResizer {
|
|
|
825
825
|
filePath,
|
|
826
826
|
width,
|
|
827
827
|
height,
|
|
828
|
-
debug: logger$
|
|
828
|
+
debug: logger$4.enabled,
|
|
829
829
|
});
|
|
830
830
|
});
|
|
831
831
|
}
|
|
@@ -848,7 +848,7 @@ class ImageResizer {
|
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
850
|
|
|
851
|
-
const logger$
|
|
851
|
+
const logger$3 = debug('seedSdk:browser:helpers:FileManager');
|
|
852
852
|
/**
|
|
853
853
|
* Browser-safe path helpers for SDK virtual file paths.
|
|
854
854
|
* We intentionally avoid Node/CJS path polyfills here to keep browser bundles ESM-safe.
|
|
@@ -943,6 +943,14 @@ const pathCompat = {
|
|
|
943
943
|
return result || '.';
|
|
944
944
|
},
|
|
945
945
|
};
|
|
946
|
+
/** Chromium OPFS: a directory/file handle is stale (reload, other tab, leftover sync access handle). */
|
|
947
|
+
function isStaleOpfsHandleError(error) {
|
|
948
|
+
if (error instanceof DOMException && error.name === 'InvalidStateError') {
|
|
949
|
+
return true;
|
|
950
|
+
}
|
|
951
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
952
|
+
return message.includes('state cached in an interface object');
|
|
953
|
+
}
|
|
946
954
|
/** OPFS / ZenFS can throw NotReadableError while a file is still settling after write. */
|
|
947
955
|
function isTransientOpfsReadError(error) {
|
|
948
956
|
if (error instanceof DOMException && error.name === 'NotReadableError') {
|
|
@@ -981,27 +989,30 @@ class BrowserFileManager {
|
|
|
981
989
|
return URL.createObjectURL(file);
|
|
982
990
|
}
|
|
983
991
|
}
|
|
984
|
-
async initializeFileSystem(
|
|
992
|
+
async initializeFileSystem(_workingDir) {
|
|
985
993
|
const zenfs = await this.getFs();
|
|
986
994
|
const zenfsDomMod = await import('@zenfs/dom');
|
|
987
995
|
const { WebAccess } = zenfsDomMod;
|
|
988
996
|
const { configureSingle } = zenfs;
|
|
989
|
-
const
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
997
|
+
const configureRoot = async () => {
|
|
998
|
+
const handle = await navigator.storage.getDirectory();
|
|
999
|
+
await configureSingle({
|
|
1000
|
+
backend: WebAccess,
|
|
1001
|
+
handle,
|
|
1002
|
+
});
|
|
1003
|
+
};
|
|
1004
|
+
try {
|
|
1005
|
+
await configureRoot();
|
|
1006
|
+
}
|
|
1007
|
+
catch (error) {
|
|
1008
|
+
if (!isStaleOpfsHandleError(error)) {
|
|
1009
|
+
throw error;
|
|
1010
|
+
}
|
|
1011
|
+
// Leftover sync-access handles can make the first walk throw. Retry once
|
|
1012
|
+
// without deleting OPFS data; BaseFileManager resets flags if this still fails.
|
|
1013
|
+
await sleep(50);
|
|
1014
|
+
await configureRoot();
|
|
1015
|
+
}
|
|
1005
1016
|
}
|
|
1006
1017
|
async downloadAllFiles({ transactionIds, arweaveHost, excludedTransactions, }) {
|
|
1007
1018
|
const fileDownloader = new FileDownloader();
|
|
@@ -1061,7 +1072,7 @@ class BrowserFileManager {
|
|
|
1061
1072
|
}
|
|
1062
1073
|
catch (error) {
|
|
1063
1074
|
// This is a no-op. We tried to create a directory that already exists.
|
|
1064
|
-
logger$
|
|
1075
|
+
logger$3('Attempted to create a directory that already exists');
|
|
1065
1076
|
}
|
|
1066
1077
|
}
|
|
1067
1078
|
}
|
|
@@ -1083,7 +1094,7 @@ class BrowserFileManager {
|
|
|
1083
1094
|
const startTime = Date.now();
|
|
1084
1095
|
let isBusy = false;
|
|
1085
1096
|
const cancelableInterval = new CancelableInterval(async (stop) => {
|
|
1086
|
-
logger$
|
|
1097
|
+
logger$3('waitForFile', filePath);
|
|
1087
1098
|
if (isBusy) {
|
|
1088
1099
|
return;
|
|
1089
1100
|
}
|
|
@@ -1167,7 +1178,7 @@ class BrowserFileManager {
|
|
|
1167
1178
|
const startTime = Date.now();
|
|
1168
1179
|
let isBusy = false;
|
|
1169
1180
|
const cancelableInterval = new CancelableInterval(async (stop) => {
|
|
1170
|
-
logger$
|
|
1181
|
+
logger$3('waitForFileWithContent', filePath);
|
|
1171
1182
|
if (isBusy) {
|
|
1172
1183
|
return;
|
|
1173
1184
|
}
|
|
@@ -1378,7 +1389,7 @@ class CancelableInterval {
|
|
|
1378
1389
|
}
|
|
1379
1390
|
catch (error) {
|
|
1380
1391
|
if (error instanceof DOMException && error.name === 'AbortError') {
|
|
1381
|
-
logger$
|
|
1392
|
+
logger$3('Previous task was canceled.');
|
|
1382
1393
|
}
|
|
1383
1394
|
else {
|
|
1384
1395
|
console.error('Task error:', error);
|
|
@@ -3029,6 +3040,98 @@ var drizzleFiles = /*#__PURE__*/Object.freeze({
|
|
|
3029
3040
|
snapshotJson: snapshotJson
|
|
3030
3041
|
});
|
|
3031
3042
|
|
|
3043
|
+
const logger$2 = debug('seedSdk:browser:db:createSqlocalDrizzle');
|
|
3044
|
+
/** First sqlocal work can include sqlite-wasm fetch; keep this long to avoid false positives. */
|
|
3045
|
+
const SQLOCAL_FIRST_QUERY_TIMEOUT_MS = 90000;
|
|
3046
|
+
const HTTP_MODULE_WORKER_URL = /^https?:/i;
|
|
3047
|
+
function shouldBlobWrapModuleWorker(scriptURL, options) {
|
|
3048
|
+
const type = options?.type ?? 'classic';
|
|
3049
|
+
if (type !== 'module')
|
|
3050
|
+
return false;
|
|
3051
|
+
return HTTP_MODULE_WORKER_URL.test(String(scriptURL));
|
|
3052
|
+
}
|
|
3053
|
+
function createBlobModuleWorkerSource(scriptURL) {
|
|
3054
|
+
return `import ${JSON.stringify(String(scriptURL))};`;
|
|
3055
|
+
}
|
|
3056
|
+
/**
|
|
3057
|
+
* Construct SQLocal while starting its HTTPS module worker from a blob that
|
|
3058
|
+
* only imports the bundled worker URL. Some Chrome profiles kill
|
|
3059
|
+
* `new Worker(https://…/worker-HASH.js, { type: 'module' })` as an entry
|
|
3060
|
+
* script; importing the same URL from a blob worker reaches connect.
|
|
3061
|
+
*
|
|
3062
|
+
* The `Worker` patch is scoped to `factory()` so Vite still sees sqlocal's
|
|
3063
|
+
* own `new Worker(new URL('./worker', import.meta.url))` and emits a real
|
|
3064
|
+
* worker chunk.
|
|
3065
|
+
*/
|
|
3066
|
+
function createSqlocalDrizzle(factory) {
|
|
3067
|
+
let rejectFailed;
|
|
3068
|
+
const workerFailed = new Promise((_, reject) => {
|
|
3069
|
+
rejectFailed = reject;
|
|
3070
|
+
});
|
|
3071
|
+
// Avoid an unhandled rejection if the caller throws before racing this promise.
|
|
3072
|
+
workerFailed.catch(() => { });
|
|
3073
|
+
const restore = installModuleWorkerBlobWrap((error) => {
|
|
3074
|
+
rejectFailed?.(error);
|
|
3075
|
+
});
|
|
3076
|
+
try {
|
|
3077
|
+
return { instance: factory(), workerFailed };
|
|
3078
|
+
}
|
|
3079
|
+
finally {
|
|
3080
|
+
restore();
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
3083
|
+
async function raceSqlocalStartup(work, workerFailed, timeoutMs = SQLOCAL_FIRST_QUERY_TIMEOUT_MS) {
|
|
3084
|
+
let timeoutId;
|
|
3085
|
+
const timedOut = new Promise((_, reject) => {
|
|
3086
|
+
timeoutId = setTimeout(() => {
|
|
3087
|
+
reject(new Error(`sqlocal database failed to become ready within ${timeoutMs}ms`));
|
|
3088
|
+
}, timeoutMs);
|
|
3089
|
+
});
|
|
3090
|
+
try {
|
|
3091
|
+
return await Promise.race([work, workerFailed, timedOut]);
|
|
3092
|
+
}
|
|
3093
|
+
finally {
|
|
3094
|
+
if (timeoutId !== undefined) {
|
|
3095
|
+
clearTimeout(timeoutId);
|
|
3096
|
+
}
|
|
3097
|
+
}
|
|
3098
|
+
}
|
|
3099
|
+
function installModuleWorkerBlobWrap(onWorkerFailed) {
|
|
3100
|
+
const OriginalWorker = globalThis.Worker;
|
|
3101
|
+
if (typeof OriginalWorker === 'undefined') {
|
|
3102
|
+
return () => { };
|
|
3103
|
+
}
|
|
3104
|
+
function WrappedWorker(scriptURL, options) {
|
|
3105
|
+
const worker = shouldBlobWrapModuleWorker(scriptURL, options)
|
|
3106
|
+
? new OriginalWorker(URL.createObjectURL(new Blob([createBlobModuleWorkerSource(scriptURL)], {
|
|
3107
|
+
type: 'text/javascript',
|
|
3108
|
+
})), { ...options, type: 'module' })
|
|
3109
|
+
: new OriginalWorker(scriptURL, options);
|
|
3110
|
+
const fail = (event) => {
|
|
3111
|
+
const filename = 'filename' in event && typeof event.filename === 'string'
|
|
3112
|
+
? event.filename
|
|
3113
|
+
: '';
|
|
3114
|
+
const message = 'message' in event && typeof event.message === 'string'
|
|
3115
|
+
? event.message
|
|
3116
|
+
: event.type;
|
|
3117
|
+
const error = new Error(filename
|
|
3118
|
+
? `sqlocal worker failed to start (${event.type}): ${message} [${filename}]`
|
|
3119
|
+
: `sqlocal worker failed to start (${event.type}): ${message}`);
|
|
3120
|
+
logger$2('[createSqlocalDrizzle] worker failed', error.message);
|
|
3121
|
+
onWorkerFailed(error);
|
|
3122
|
+
};
|
|
3123
|
+
worker.addEventListener('error', fail);
|
|
3124
|
+
worker.addEventListener('messageerror', fail);
|
|
3125
|
+
return worker;
|
|
3126
|
+
}
|
|
3127
|
+
WrappedWorker.prototype = OriginalWorker.prototype;
|
|
3128
|
+
Object.setPrototypeOf(WrappedWorker, OriginalWorker);
|
|
3129
|
+
globalThis.Worker = WrappedWorker;
|
|
3130
|
+
return () => {
|
|
3131
|
+
globalThis.Worker = OriginalWorker;
|
|
3132
|
+
};
|
|
3133
|
+
}
|
|
3134
|
+
|
|
3032
3135
|
const logger$1 = debug('seedSdk:browser:db:Db');
|
|
3033
3136
|
class BrowserDb {
|
|
3034
3137
|
getAppDb() {
|
|
@@ -3061,11 +3164,14 @@ class BrowserDb {
|
|
|
3061
3164
|
logger$1('[Db.prepareDb] waiting for journal file to be fully written...');
|
|
3062
3165
|
await BaseFileManager.waitForFileWithContent(journalFilePath, 100, 5000);
|
|
3063
3166
|
logger$1('[Db.prepareDb] journal file is ready');
|
|
3064
|
-
// Initialize SQLocalDrizzle with reactive: true to enable reactive queries
|
|
3065
|
-
|
|
3167
|
+
// Initialize SQLocalDrizzle with reactive: true to enable reactive queries.
|
|
3168
|
+
// Blob-wrap sqlocal's HTTPS module worker so Chrome profiles that kill
|
|
3169
|
+
// `new Worker(https://…/worker-HASH.js, { type: 'module' })` as an entry
|
|
3170
|
+
// still reach connect via `import` of the same URL.
|
|
3171
|
+
const { instance: sqlocalDrizzle, workerFailed } = createSqlocalDrizzle(() => new SQLocalDrizzle({
|
|
3066
3172
|
databasePath: `${this.filesDir}/db/seed.db`,
|
|
3067
|
-
reactive: true
|
|
3068
|
-
});
|
|
3173
|
+
reactive: true,
|
|
3174
|
+
}));
|
|
3069
3175
|
const { driver, batchDriver } = sqlocalDrizzle;
|
|
3070
3176
|
// Store SQLocalDrizzle instance for reactive queries
|
|
3071
3177
|
this.sqlocalInstance = sqlocalDrizzle;
|
|
@@ -3076,10 +3182,12 @@ class BrowserDb {
|
|
|
3076
3182
|
schema,
|
|
3077
3183
|
});
|
|
3078
3184
|
logger$1('[Db.prepareDb] database prepared');
|
|
3079
|
-
await
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3185
|
+
await raceSqlocalStartup((async () => {
|
|
3186
|
+
await this.runMigrations(db);
|
|
3187
|
+
this.appDb = db;
|
|
3188
|
+
const { backfillMetadataPropertyIds } = await import('./backfillMetadataPropertyIds-DYkvoOMz.js');
|
|
3189
|
+
await backfillMetadataPropertyIds();
|
|
3190
|
+
})(), workerFailed);
|
|
3083
3191
|
return this.appDb;
|
|
3084
3192
|
}
|
|
3085
3193
|
catch (error) {
|