@livestore/adapter-web 0.4.0-dev.7 → 0.4.0-dev.9
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/.tsbuildinfo +1 -1
- package/dist/opfs-utils.d.ts +3 -1
- package/dist/opfs-utils.d.ts.map +1 -1
- package/dist/opfs-utils.js +4 -4
- package/dist/opfs-utils.js.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.d.ts +11 -0
- package/dist/web-worker/common/persisted-sqlite.d.ts.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.js +96 -2
- package/dist/web-worker/common/persisted-sqlite.js.map +1 -1
- package/dist/web-worker/common/worker-schema.d.ts +4 -4
- package/dist/web-worker/leader-worker/make-leader-worker.js +1 -0
- package/dist/web-worker/leader-worker/make-leader-worker.js.map +1 -1
- package/package.json +7 -7
- package/src/opfs-utils.ts +4 -4
- package/src/web-worker/common/persisted-sqlite.ts +145 -2
- package/src/web-worker/leader-worker/make-leader-worker.ts +1 -0
package/dist/opfs-utils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const rootHandlePromise: Promise<FileSystemDirectoryHandle>;
|
|
2
|
-
export declare const getDirHandle: (absDirPath: string | undefined
|
|
2
|
+
export declare const getDirHandle: (absDirPath: string | undefined, options?: {
|
|
3
|
+
create?: boolean;
|
|
4
|
+
}) => Promise<FileSystemDirectoryHandle>;
|
|
3
5
|
export declare const printTree: (directoryHandle_?: FileSystemDirectoryHandle | Promise<FileSystemDirectoryHandle>, depth?: number, prefix?: string) => Promise<void>;
|
|
4
6
|
export declare const deleteAll: (directoryHandle: FileSystemDirectoryHandle) => Promise<void>;
|
|
5
7
|
//# sourceMappingURL=opfs-utils.d.ts.map
|
package/dist/opfs-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfs-utils.d.ts","sourceRoot":"","sources":["../src/opfs-utils.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,oCAYQ,CAAA;AAEtC,eAAO,MAAM,YAAY,GAAU,YAAY,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"opfs-utils.d.ts","sourceRoot":"","sources":["../src/opfs-utils.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,oCAYQ,CAAA;AAEtC,eAAO,MAAM,YAAY,GAAU,YAAY,MAAM,GAAG,SAAS,EAAE,UAAS;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,uCAWpG,CAAA;AAED,eAAO,MAAM,SAAS,GACpB,mBAAkB,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAqB,EACpG,QAAO,MAAiC,EACxC,eAAW,KACV,OAAO,CAAC,IAAI,CAgBd,CAAA;AAED,eAAO,MAAM,SAAS,GAAU,iBAAiB,yBAAyB,kBAMzE,CAAA"}
|
package/dist/opfs-utils.js
CHANGED
|
@@ -7,14 +7,14 @@ export const rootHandlePromise = typeof navigator === 'undefined' || navigator.s
|
|
|
7
7
|
get: () => Promise.reject(new Error(`Can't get OPFS root handle in this environment as navigator.storage is undefined`)),
|
|
8
8
|
})
|
|
9
9
|
: navigator.storage.getDirectory();
|
|
10
|
-
export const getDirHandle = async (absDirPath) => {
|
|
10
|
+
export const getDirHandle = async (absDirPath, options = {}) => {
|
|
11
11
|
const rootHandle = await rootHandlePromise;
|
|
12
|
-
if (absDirPath === undefined)
|
|
12
|
+
if (absDirPath === undefined || absDirPath === '' || absDirPath === '/')
|
|
13
13
|
return rootHandle;
|
|
14
14
|
let dirHandle = rootHandle;
|
|
15
|
-
const directoryStack = absDirPath
|
|
15
|
+
const directoryStack = absDirPath.split('/').filter(Boolean);
|
|
16
16
|
while (directoryStack.length > 0) {
|
|
17
|
-
dirHandle = await dirHandle.getDirectoryHandle(directoryStack.shift());
|
|
17
|
+
dirHandle = await dirHandle.getDirectoryHandle(directoryStack.shift(), options);
|
|
18
18
|
}
|
|
19
19
|
return dirHandle;
|
|
20
20
|
};
|
package/dist/opfs-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfs-utils.js","sourceRoot":"","sources":["../src/opfs-utils.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAErG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,2HAA2H;AAC3H,MAAM,CAAC,MAAM,iBAAiB,GAC5B,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS;IACjE,CAAC,CAAC,2DAA2D;QAC1D,IAAI,KAAK,CACR,EAAE,EACF;YACE,GAAG,EAAE,GAAG,EAAE,CACR,OAAO,CAAC,MAAM,CACZ,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAC9F;SACJ,CACQ;IACb,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,UAA8B,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"opfs-utils.js","sourceRoot":"","sources":["../src/opfs-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare const resetPersistedDataFromClientSession: ({ storageOptions, sto
|
|
|
22
22
|
}) => Effect.Effect<void, UnexpectedError, never>;
|
|
23
23
|
export declare const sanitizeOpfsDir: (directory: string | undefined, storeId: string) => string;
|
|
24
24
|
export declare const getStateDbFileName: (schema: LiveStoreSchema) => string;
|
|
25
|
+
export declare const MAX_ARCHIVED_STATE_DBS_IN_DEV = 3;
|
|
25
26
|
/**
|
|
26
27
|
* Cleanup old state database files after successful migration.
|
|
27
28
|
* This prevents OPFS file pool capacity from being exhausted by accumulated schema files.
|
|
@@ -32,7 +33,17 @@ export declare const getStateDbFileName: (schema: LiveStoreSchema) => string;
|
|
|
32
33
|
export declare const cleanupOldStateDbFiles: (args_0: {
|
|
33
34
|
vfs: WebDatabaseMetadataOpfs["vfs"];
|
|
34
35
|
currentSchema: LiveStoreSchema;
|
|
36
|
+
opfsDirectory: string;
|
|
35
37
|
}) => Effect.Effect.AsEffect<Effect.Effect<undefined, PersistedSqliteError, never>>;
|
|
38
|
+
declare const ArchiveStateDbError_base: Schema.TaggedErrorClass<ArchiveStateDbError, "ArchiveStateDbError", {
|
|
39
|
+
readonly _tag: Schema.tag<"ArchiveStateDbError">;
|
|
40
|
+
} & {
|
|
41
|
+
message: typeof Schema.String;
|
|
42
|
+
fileName: Schema.optional<typeof Schema.String>;
|
|
43
|
+
cause: typeof Schema.Defect;
|
|
44
|
+
}>;
|
|
45
|
+
export declare class ArchiveStateDbError extends ArchiveStateDbError_base {
|
|
46
|
+
}
|
|
36
47
|
declare const SqliteVfsError_base: Schema.TaggedErrorClass<SqliteVfsError, "SqliteVfsError", {
|
|
37
48
|
readonly _tag: Schema.tag<"SqliteVfsError">;
|
|
38
49
|
} & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-sqlite.d.ts","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAA6C,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"persisted-sqlite.d.ts","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAA6C,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAExH,OAAO,EAAE,MAAM,EAAY,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGlE,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;;;;;;;AAEvD,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;AAEL,eAAO,MAAM,mCAAmC,GAAI,sCAIjD;IACD,cAAc,EAAE,YAAY,CAAC,WAAW,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;CACxB,qEAuDE,CAAA;AAEH,eAAO,MAAM,mCAAmC,GAAI,8BAGjD;IACD,cAAc,EAAE,YAAY,CAAC,WAAW,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;CAChB,gDASE,CAAA;AAgCH,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,GAAG,SAAS,EAAE,SAAS,MAAM,WAY7E,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,eAAe,WAIzD,CAAA;AAED,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;SAM1B,uBAAuB,CAAC,KAAK,CAAC;mBACpB,eAAe;mBACf,MAAM;mFAyFxB,CAAA;;;;;;;;AAkGD,qBAAa,mBAAoB,SAAQ,wBAIvC;CAAG;;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAKlC;CAAG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { liveStoreStorageFormatVersion, UnexpectedError } from '@livestore/common';
|
|
2
2
|
import { decodeSAHPoolFilename, HEADER_OFFSET_DATA } from '@livestore/sqlite-wasm/browser';
|
|
3
|
+
import { isDevEnv } from '@livestore/utils';
|
|
3
4
|
import { Effect, Schedule, Schema } from '@livestore/utils/effect';
|
|
4
5
|
import * as OpfsUtils from "../../opfs-utils.js";
|
|
5
6
|
export class PersistedSqliteError extends Schema.TaggedError()('PersistedSqliteError', {
|
|
@@ -90,6 +91,7 @@ export const getStateDbFileName = (schema) => {
|
|
|
90
91
|
const schemaHashSuffix = schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString();
|
|
91
92
|
return `state${schemaHashSuffix}.db`;
|
|
92
93
|
};
|
|
94
|
+
export const MAX_ARCHIVED_STATE_DBS_IN_DEV = 3;
|
|
93
95
|
/**
|
|
94
96
|
* Cleanup old state database files after successful migration.
|
|
95
97
|
* This prevents OPFS file pool capacity from being exhausted by accumulated schema files.
|
|
@@ -97,7 +99,7 @@ export const getStateDbFileName = (schema) => {
|
|
|
97
99
|
* @param vfs - The AccessHandlePoolVFS instance for safe file operations
|
|
98
100
|
* @param currentSchema - Current schema (to avoid deleting the active database)
|
|
99
101
|
*/
|
|
100
|
-
export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupOldStateDbFiles')(function* ({ vfs, currentSchema }) {
|
|
102
|
+
export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupOldStateDbFiles')(function* ({ vfs, currentSchema, opfsDirectory, }) {
|
|
101
103
|
// Only cleanup for auto migration strategy because:
|
|
102
104
|
// - Auto strategy: Creates new database files per schema change (e.g., state123.db, state456.db)
|
|
103
105
|
// which accumulate over time and can exhaust OPFS file pool capacity
|
|
@@ -107,6 +109,7 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
107
109
|
yield* Effect.logDebug('Skipping state db cleanup - manual migration strategy uses fixed filename');
|
|
108
110
|
return;
|
|
109
111
|
}
|
|
112
|
+
const isDev = isDevEnv();
|
|
110
113
|
const currentDbFileName = getStateDbFileName(currentSchema);
|
|
111
114
|
const currentPath = `/${currentDbFileName}`;
|
|
112
115
|
const allPaths = yield* Effect.sync(() => vfs.getTrackedFilePaths());
|
|
@@ -117,8 +120,22 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
117
120
|
}
|
|
118
121
|
yield* Effect.logDebug(`Found ${oldStateDbPaths.length} old state database file(s) to clean up`);
|
|
119
122
|
let deletedCount = 0;
|
|
123
|
+
const archivedFileNames = [];
|
|
124
|
+
let archiveDirHandle;
|
|
120
125
|
for (const path of oldStateDbPaths) {
|
|
121
126
|
const fileName = path.startsWith('/') ? path.slice(1) : path;
|
|
127
|
+
if (isDev) {
|
|
128
|
+
archiveDirHandle = yield* Effect.tryPromise({
|
|
129
|
+
try: () => OpfsUtils.getDirHandle(`${opfsDirectory}/archive`, { create: true }),
|
|
130
|
+
catch: (cause) => new ArchiveStateDbError({ message: 'Failed to ensure archive directory', cause }),
|
|
131
|
+
});
|
|
132
|
+
const archivedFileName = yield* archiveStateDbFile({
|
|
133
|
+
vfs,
|
|
134
|
+
fileName,
|
|
135
|
+
archiveDirHandle,
|
|
136
|
+
});
|
|
137
|
+
archivedFileNames.push(archivedFileName);
|
|
138
|
+
}
|
|
122
139
|
const vfsResultCode = yield* Effect.try({
|
|
123
140
|
try: () => vfs.jDelete(fileName, 0),
|
|
124
141
|
catch: (cause) => new SqliteVfsError({ operation: 'jDelete', fileName, cause }),
|
|
@@ -135,11 +152,88 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
135
152
|
deletedCount++;
|
|
136
153
|
yield* Effect.logDebug(`Successfully deleted old state database file: ${fileName}`);
|
|
137
154
|
}
|
|
138
|
-
|
|
155
|
+
if (isDev && archiveDirHandle !== undefined) {
|
|
156
|
+
const pruneResult = yield* pruneArchiveDir({
|
|
157
|
+
archiveDirHandle,
|
|
158
|
+
keep: MAX_ARCHIVED_STATE_DBS_IN_DEV,
|
|
159
|
+
});
|
|
160
|
+
yield* Effect.logDebug(`State db cleanup completed: archived ${archivedFileNames.length} file(s); removed ${deletedCount} old database file(s) from active pool; archive retained ${pruneResult.retained.length} file(s)`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
yield* Effect.logDebug(`State db cleanup completed: removed ${deletedCount} old database file(s)`);
|
|
164
|
+
}
|
|
139
165
|
}, Effect.mapError((error) => new PersistedSqliteError({
|
|
140
166
|
message: 'Failed to clean up old state database file(s)',
|
|
141
167
|
cause: error,
|
|
142
168
|
})));
|
|
169
|
+
const archiveStateDbFile = Effect.fn('@livestore/adapter-web:archiveStateDbFile')(function* ({ vfs, fileName, archiveDirHandle, }) {
|
|
170
|
+
const stateDbBuffer = vfs.readFilePayload(fileName);
|
|
171
|
+
const archiveFileName = `${Date.now()}-${fileName}`;
|
|
172
|
+
const archiveFileHandle = yield* Effect.tryPromise({
|
|
173
|
+
try: () => archiveDirHandle.getFileHandle(archiveFileName, { create: true }),
|
|
174
|
+
catch: (cause) => new ArchiveStateDbError({
|
|
175
|
+
message: 'Failed to open archive file handle',
|
|
176
|
+
fileName: archiveFileName,
|
|
177
|
+
cause,
|
|
178
|
+
}),
|
|
179
|
+
});
|
|
180
|
+
const archiveFileAccessHandle = yield* Effect.acquireRelease(Effect.tryPromise({
|
|
181
|
+
try: () => archiveFileHandle.createSyncAccessHandle(),
|
|
182
|
+
catch: (cause) => new ArchiveStateDbError({
|
|
183
|
+
message: 'Failed to create sync access handle for archived file',
|
|
184
|
+
fileName: archiveFileName,
|
|
185
|
+
cause,
|
|
186
|
+
}),
|
|
187
|
+
}), (handle) => Effect.sync(() => handle.close()).pipe(Effect.ignoreLogged));
|
|
188
|
+
yield* Effect.try({
|
|
189
|
+
try: () => {
|
|
190
|
+
archiveFileAccessHandle.write(stateDbBuffer);
|
|
191
|
+
archiveFileAccessHandle.flush();
|
|
192
|
+
},
|
|
193
|
+
catch: (cause) => new ArchiveStateDbError({
|
|
194
|
+
message: 'Failed to write archived state database',
|
|
195
|
+
fileName: archiveFileName,
|
|
196
|
+
cause,
|
|
197
|
+
}),
|
|
198
|
+
});
|
|
199
|
+
return archiveFileName;
|
|
200
|
+
}, Effect.scoped);
|
|
201
|
+
const pruneArchiveDir = Effect.fn('@livestore/adapter-web:pruneArchiveDir')(function* ({ archiveDirHandle, keep, }) {
|
|
202
|
+
const files = yield* Effect.tryPromise({
|
|
203
|
+
try: async () => {
|
|
204
|
+
const result = [];
|
|
205
|
+
for await (const entry of archiveDirHandle.values()) {
|
|
206
|
+
if (entry.kind !== 'file')
|
|
207
|
+
continue;
|
|
208
|
+
const fileHandle = await archiveDirHandle.getFileHandle(entry.name);
|
|
209
|
+
const file = await fileHandle.getFile();
|
|
210
|
+
result.push({ name: entry.name, lastModified: file.lastModified });
|
|
211
|
+
}
|
|
212
|
+
return result.sort((a, b) => b.lastModified - a.lastModified);
|
|
213
|
+
},
|
|
214
|
+
catch: (cause) => new ArchiveStateDbError({ message: 'Failed to enumerate archived state databases', cause }),
|
|
215
|
+
});
|
|
216
|
+
const retained = files.slice(0, keep);
|
|
217
|
+
const toDelete = files.slice(keep);
|
|
218
|
+
yield* Effect.forEach(toDelete, ({ name }) => Effect.tryPromise({
|
|
219
|
+
try: () => archiveDirHandle.removeEntry(name),
|
|
220
|
+
catch: (cause) => new ArchiveStateDbError({
|
|
221
|
+
message: 'Failed to delete archived state database',
|
|
222
|
+
fileName: name,
|
|
223
|
+
cause,
|
|
224
|
+
}),
|
|
225
|
+
}));
|
|
226
|
+
return {
|
|
227
|
+
retained,
|
|
228
|
+
deleted: toDelete,
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
export class ArchiveStateDbError extends Schema.TaggedError()('ArchiveStateDbError', {
|
|
232
|
+
message: Schema.String,
|
|
233
|
+
fileName: Schema.optional(Schema.String),
|
|
234
|
+
cause: Schema.Defect,
|
|
235
|
+
}) {
|
|
236
|
+
}
|
|
143
237
|
export class SqliteVfsError extends Schema.TaggedError()('SqliteVfsError', {
|
|
144
238
|
operation: Schema.String,
|
|
145
239
|
fileName: Schema.String,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-sqlite.js","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAgC,MAAM,gCAAgC,CAAA;AACxH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAElE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAGhD,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC3G,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAClD,cAAc,EACd,OAAO,EACP,MAAM,GAKP,EAAE,EAAE,CACH,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAEvF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,UAAgC,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EAAE,aAA8C,EAAmC,EAAE;QAC5G,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,KAA6B,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAE9D,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;IAEtD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,CAAA;IACxE,oEAAoE;IAEpE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAA;QACzE,8EAA8E;QAE9E,8EAA8E;QAC9E,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,wBAAwB,CAAC;IAC9B,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,4DAA4D;CACpE,CAAC,EACF,MAAM,CAAC,sBAAsB,CAAC,4DAA4D,CAAC,EAC3F,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAC9E,CAAA;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAClD,cAAc,EACd,OAAO,GAIR,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACpE,KAAK,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC,uBAAuB;CAC3C,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAC9E,CAAA;AAEH,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE,CACxC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,gCAAgC;IAChC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAA;IAE9C,kDAAkD;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAElE,IAAI,CAAC;QACH,qCAAqC;QACrC,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,UAAU,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAA;QACjE,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpE,0EAA0E;YAC1E,OAAM;QACR,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CACL,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,8CAA8C,EAAE,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAC1G,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAA6B,EAAE,OAAe,EAAE,EAAE;IAChF,kCAAkC;IAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,GAAG;QAClE,OAAO,aAAa,OAAO,IAAI,6BAA6B,EAAE,CAAA;IAEhE,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,6FAA6F,SAAS,IAAI,CAC3G,CAAA;IACH,CAAC;IAED,OAAO,GAAG,SAAS,IAAI,6BAA6B,EAAE,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAuB,EAAE,EAAE;IAC5D,MAAM,gBAAgB,GACpB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IACtG,OAAO,QAAQ,gBAAgB,KAAK,CAAA;AACtC,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,+CAA+C,CAAC,CAC9F,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"persisted-sqlite.js","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAgC,MAAM,gCAAgC,CAAA;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAElE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAGhD,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC3G,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAClD,cAAc,EACd,OAAO,EACP,MAAM,GAKP,EAAE,EAAE,CACH,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAEvF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,UAAgC,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EAAE,aAA8C,EAAmC,EAAE;QAC5G,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,KAA6B,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAE9D,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;IAEtD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,CAAA;IACxE,oEAAoE;IAEpE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAA;QACzE,8EAA8E;QAE9E,8EAA8E;QAC9E,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,wBAAwB,CAAC;IAC9B,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,4DAA4D;CACpE,CAAC,EACF,MAAM,CAAC,sBAAsB,CAAC,4DAA4D,CAAC,EAC3F,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAC9E,CAAA;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAClD,cAAc,EACd,OAAO,GAIR,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACpE,KAAK,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC,uBAAuB;CAC3C,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAC9E,CAAA;AAEH,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE,CACxC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACxB,gCAAgC;IAChC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAA;IAE9C,kDAAkD;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAElE,IAAI,CAAC;QACH,qCAAqC;QACrC,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,UAAU,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAA;QACjE,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpE,0EAA0E;YAC1E,OAAM;QACR,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CACL,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,8CAA8C,EAAE,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAC1G,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAA6B,EAAE,OAAe,EAAE,EAAE;IAChF,kCAAkC;IAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,GAAG;QAClE,OAAO,aAAa,OAAO,IAAI,6BAA6B,EAAE,CAAA;IAEhE,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,6FAA6F,SAAS,IAAI,CAC3G,CAAA;IACH,CAAC;IAED,OAAO,GAAG,SAAS,IAAI,6BAA6B,EAAE,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAuB,EAAE,EAAE;IAC5D,MAAM,gBAAgB,GACpB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IACtG,OAAO,QAAQ,gBAAgB,KAAK,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAA;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,+CAA+C,CAAC,CAC9F,QAAQ,CAAC,EAAE,EACT,GAAG,EACH,aAAa,EACb,aAAa,GAKd;IACC,oDAAoD;IACpD,iGAAiG;IACjG,uEAAuE;IACvE,iGAAiG;IACjG,sDAAsD;IACtD,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,2EAA2E,CAAC,CAAA;QACnG,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;IAE3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACpE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,WAAW,CACpF,CAAA;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,yDAAyD,CAAC,CAAA;QACjF,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe,CAAC,MAAM,yCAAyC,CAAC,CAAA;IAEhG,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,MAAM,iBAAiB,GAAa,EAAE,CAAA;IACtC,IAAI,gBAAuD,CAAA;IAE3D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE5D,IAAI,KAAK,EAAE,CAAC;YACV,gBAAgB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,aAAa,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC/E,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,KAAK,EAAE,CAAC;aACpG,CAAC,CAAA;YAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC;gBACjD,GAAG;gBACH,QAAQ;gBACR,gBAAgB;aACjB,CAAC,CAAA;YAEF,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACtC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SAChF,CAAC,CAAA;QAEF,6CAA6C;QAC7C,gDAAgD;QAChD,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC;gBAC/B,SAAS,EAAE,SAAS;gBACpB,QAAQ;gBACR,aAAa;aACd,CAAC,CAAA;QACJ,CAAC;QAED,YAAY,EAAE,CAAA;QACd,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,IAAI,KAAK,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;YACzC,gBAAgB;YAChB,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAA;QAEF,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CACpB,wCAAwC,iBAAiB,CAAC,MAAM,qBAAqB,YAAY,4DAA4D,WAAW,CAAC,QAAQ,CAAC,MAAM,UAAU,CACnM,CAAA;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,uCAAuC,YAAY,uBAAuB,CAAC,CAAA;IACpG,CAAC;AACH,CAAC,EACD,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,oBAAoB,CAAC;IACvB,OAAO,EAAE,+CAA+C;IACxD,KAAK,EAAE,KAAK;CACb,CAAC,CACL,CACF,CAAA;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,2CAA2C,CAAC,CAAC,QAAQ,CAAC,EAAE,EAC3F,GAAG,EACH,QAAQ,EACR,gBAAgB,GAKjB;IACC,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IAEnD,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAA;IAEnD,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACjD,GAAG,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC5E,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;YACtB,OAAO,EAAE,oCAAoC;YAC7C,QAAQ,EAAE,eAAe;YACzB,KAAK;SACN,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAC1D,MAAM,CAAC,UAAU,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE;QACrD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;YACtB,OAAO,EAAE,uDAAuD;YAChE,QAAQ,EAAE,eAAe;YACzB,KAAK;SACN,CAAC;KACL,CAAC,EACF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CACxE,CAAA;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;YAC5C,uBAAuB,CAAC,KAAK,EAAE,CAAA;QACjC,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;YACtB,OAAO,EAAE,yCAAyC;YAClD,QAAQ,EAAE,eAAe;YACzB,KAAK;SACN,CAAC;KACL,CAAC,CAAA;IAEF,OAAO,eAAe,CAAA;AACxB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AAEjB,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,wCAAwC,CAAC,CAAC,QAAQ,CAAC,EAAE,EACrF,gBAAgB,EAChB,IAAI,GAIL;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,MAAM,GAA6C,EAAE,CAAA;YAE3D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAQ;gBACnC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACnE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;gBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;YACpE,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAA;QAC/D,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,KAAK,EAAE,CAAC;KAC9G,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAElC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAC3C,MAAM,CAAC,UAAU,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;YACtB,OAAO,EAAE,0CAA0C;YACnD,QAAQ,EAAE,IAAI;YACd,KAAK;SACN,CAAC;KACL,CAAC,CACH,CAAA;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,QAAQ;KAClB,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAAC,qBAAqB,EAAE;IACxG,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACtC,CAAC;CAAG"}
|
|
@@ -173,19 +173,19 @@ declare const LeaderWorkerInnerExtraDevtoolsMessage_base: Schema.TaggedRequestCl
|
|
|
173
173
|
data: Schema.Schema<Uint8Array<ArrayBuffer>>;
|
|
174
174
|
} & {
|
|
175
175
|
readonly requestId: typeof Schema.String;
|
|
176
|
-
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.
|
|
176
|
+
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.9"]>;
|
|
177
177
|
readonly clientId: typeof Schema.String;
|
|
178
178
|
}>, typeof Devtools.Leader.EventlogReq, Schema.TaggedStruct<"LSD.Leader.ResetAllData.Request", {
|
|
179
179
|
mode: Schema.Literal<["all-data", "only-app-db"]>;
|
|
180
180
|
} & {
|
|
181
181
|
readonly requestId: typeof Schema.String;
|
|
182
|
-
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.
|
|
182
|
+
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.9"]>;
|
|
183
183
|
readonly clientId: typeof Schema.String;
|
|
184
184
|
}>, typeof Devtools.Leader.NetworkStatusSubscribe, typeof Devtools.Leader.NetworkStatusUnsubscribe, typeof Devtools.Leader.Disconnect, typeof Devtools.Leader.CommitEventReq, typeof Devtools.Leader.Ping, typeof Devtools.Leader.DatabaseFileInfoReq, typeof Devtools.Leader.SyncHistorySubscribe, typeof Devtools.Leader.SyncHistoryUnsubscribe, typeof Devtools.Leader.SyncingInfoReq, typeof Devtools.Leader.SyncHeadSubscribe, typeof Devtools.Leader.SyncHeadUnsubscribe, Schema.TaggedStruct<"LSD.Leader.SetSyncLatch.Request", {
|
|
185
185
|
closeLatch: typeof Schema.Boolean;
|
|
186
186
|
} & {
|
|
187
187
|
readonly requestId: typeof Schema.String;
|
|
188
|
-
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.
|
|
188
|
+
readonly liveStoreVersion: Schema.Literal<["0.4.0-dev.9"]>;
|
|
189
189
|
readonly clientId: typeof Schema.String;
|
|
190
190
|
}>]>;
|
|
191
191
|
}, typeof Schema.Void, typeof UnexpectedError>;
|
|
@@ -202,7 +202,7 @@ declare const SharedWorkerInitialMessage_base: Schema.TaggedRequestClass<SharedW
|
|
|
202
202
|
readonly _tag: Schema.tag<"InitialMessage">;
|
|
203
203
|
} & {
|
|
204
204
|
payload: Schema.Union<[typeof SharedWorkerInitialMessagePayloadFromClientSession, Schema.TaggedStruct<"FromWebBridge", {}>]>;
|
|
205
|
-
liveStoreVersion: Schema.Literal<["0.4.0-dev.
|
|
205
|
+
liveStoreVersion: Schema.Literal<["0.4.0-dev.9"]>;
|
|
206
206
|
}, typeof Schema.Void, typeof UnexpectedError>;
|
|
207
207
|
export declare class SharedWorkerInitialMessage extends SharedWorkerInitialMessage_base {
|
|
208
208
|
}
|
|
@@ -69,6 +69,7 @@ const makeWorkerRunnerInner = ({ schema, sync: syncOptions }) => WorkerRunner.la
|
|
|
69
69
|
yield* cleanupOldStateDbFiles({
|
|
70
70
|
vfs: dbState.metadata.vfs,
|
|
71
71
|
currentSchema: schema,
|
|
72
|
+
opfsDirectory: dbState.metadata.persistenceInfo.opfsDirectory,
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
75
|
const devtoolsOptions = yield* makeDevtoolsOptions({ devtoolsEnabled, dbState, dbEventlog });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-leader-worker.js","sourceRoot":"","sources":["../../../src/web-worker/leader-worker/make-leader-worker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"make-leader-worker.js","sourceRoot":"","sources":["../../../src/web-worker/leader-worker/make-leader-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAEvH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,eAAe,EACf,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,MAAM,EACN,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAU1D,IAAI,QAAQ,EAAE,EAAE,CAAC;IACf,UAAU,CAAC,qBAAqB,GAAG;QACjC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,MAA+B,EAAE,EAAE,CAC3C,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC,MAAsC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3E,OAAO,EAAE,CAAC,MAAsC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAE,EAAE;IACnD,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAsB,EAAE,EAAE;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM;QAC7C,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACnE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CACrF;QACH,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IAEnH,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CACxC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACxC,YAAY,CAAC,MAAM,EACnB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,OAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;IACpG,6FAA6F;IAC7F,oFAAoF;IACpF,kGAAkG;IAClG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAChD,gGAAgG;IAChG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAClC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC3C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAC5B,aAA4B,EACsE,EAAE,CACpG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,+BAA+B,EAAE;IACzE,sEAAsE;IACtE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CACpE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,CAC9C,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,EACzE,YAAY,CAAC,MAAM,EACnB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,iEAAiE,CAAC,EAClF,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,OAAO,CACZ,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAC3G,EACD,MAAM,CAAC,UAAU,CAClB,CAAA;QAED,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sDAAsD,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;CACvG,CAAC,CAAA;AAEJ,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAiB,EAAE,EAAE,CAC7E,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,wBAAwB,EAAE;IAClE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE,CACvG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;QAC9D,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAA;QAE9C,MAAM,MAAM,GAAG,CAAC,IAA0B,EAAE,EAAE,CAC5C,YAAY,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,aAAa,EAAE,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;YACjE,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa;YACvE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAClB,mBAAmB,CAAC,EAAE,EAAE;gBACtB,uGAAuG;gBACvG,oGAAoG;gBACpG,+GAA+G;gBAC/G,wEAAwE;gBACxE,4BAA4B;gBAC5B,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;SACnD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAEhG,oEAAoE;QACpE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE;YACrF,WAAW,EAAE,CAAC;SACf,CAAC,CAAA;QAEF,uEAAuE;QACvE,mHAAmH;QACnH,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrC,KAAK,CAAC,CAAC,sBAAsB,CAAC;gBAC5B,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG;gBACzB,aAAa,EAAE,MAAM;gBACrB,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa;aAC9D,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC5F,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAE3D,OAAO,qBAAqB,CAAC;YAC3B,MAAM;YACN,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,OAAO;YACP,UAAU;YACV,eAAe;YACf,eAAe;YACf,WAAW;SACZ,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,iBAAiB,EACxB,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,sBAAsB,CAAC,8CAA8C,CAAC,EAC7E,MAAM,CAAC,QAAQ,CAAC,8CAA8C,CAAC,EAC/D,MAAM,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC,EACzC,KAAK,CAAC,YAAY,CACnB;IACH,mBAAmB,EAAE,GAAG,EAAE,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAExC,0HAA0H;QAC1H,yBAAyB;QACzB,iGAAiG;QAEjG,iDAAiD;QAEjD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QAC3C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAA;IAChF,CAAC,CAAC,CAAC,IAAI,CACL,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CACrE;IACH,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAChD,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,YAAY,CAGpB;IACH,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1B,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CACpD,aAAa,CAAC,IAAI,CAChB,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/D,kEAAkE;IAClE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,4CAA4C,CAAC,CAAC;IAC/F,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC7D,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CACxD;IACH,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAChE,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAChE;IACH,gBAAgB,EAAE,GAAG,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACjG,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QACxC,OAAO,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;IAC/G,kBAAkB,EAAE,GAAG,EAAE,CACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QACxC,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAA;IACjD,CAAC,CAAC,CAAC,IAAI,CACL,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CACpE;IACH,QAAQ,EAAE,GAAG,EAAE,CACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAA;QAElE,kCAAkC;QAClC,qCAAqC;QACrC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC;IAC1G,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACpC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACtF,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CACtE;IACH,oCAAoC,EAAE,aAAa,CAAC,gBAAgB;CACrE,CAAC,CAAA;AAEJ,MAAM,mBAAmB,GAAG,CAAC,EAC3B,eAAe,EACf,OAAO,EACP,UAAU,GAKX,EAA6F,EAAE,CAC9F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,YAAY,CAAA;IAElD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxB,MAAM,eAAe,GAAG;gBACtB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe;gBACvC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe;aAC9C,CAAA;YAED,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAClD,CAAC,CAAC;KACH,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/adapter-web",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@opentelemetry/api": "1.9.0",
|
|
16
|
-
"@livestore/common": "0.4.0-dev.
|
|
17
|
-
"@livestore/
|
|
18
|
-
"@livestore/
|
|
19
|
-
"@livestore/
|
|
20
|
-
"@livestore/
|
|
16
|
+
"@livestore/common": "0.4.0-dev.9",
|
|
17
|
+
"@livestore/utils": "0.4.0-dev.9",
|
|
18
|
+
"@livestore/devtools-web-common": "0.4.0-dev.9",
|
|
19
|
+
"@livestore/sqlite-wasm": "0.4.0-dev.9",
|
|
20
|
+
"@livestore/webmesh": "0.4.0-dev.9"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@types/chrome": "
|
|
23
|
+
"@types/chrome": "0.1.4",
|
|
24
24
|
"@types/wicg-file-system-access": "^2023.10.6",
|
|
25
25
|
"vitest": "3.2.4"
|
|
26
26
|
},
|
package/src/opfs-utils.ts
CHANGED
|
@@ -17,14 +17,14 @@ export const rootHandlePromise =
|
|
|
17
17
|
) as never)
|
|
18
18
|
: navigator.storage.getDirectory()
|
|
19
19
|
|
|
20
|
-
export const getDirHandle = async (absDirPath: string | undefined) => {
|
|
20
|
+
export const getDirHandle = async (absDirPath: string | undefined, options: { create?: boolean } = {}) => {
|
|
21
21
|
const rootHandle = await rootHandlePromise
|
|
22
|
-
if (absDirPath === undefined) return rootHandle
|
|
22
|
+
if (absDirPath === undefined || absDirPath === '' || absDirPath === '/') return rootHandle
|
|
23
23
|
|
|
24
24
|
let dirHandle = rootHandle
|
|
25
|
-
const directoryStack = absDirPath
|
|
25
|
+
const directoryStack = absDirPath.split('/').filter(Boolean)
|
|
26
26
|
while (directoryStack.length > 0) {
|
|
27
|
-
dirHandle = await dirHandle.getDirectoryHandle(directoryStack.shift()
|
|
27
|
+
dirHandle = await dirHandle.getDirectoryHandle(directoryStack.shift()!, options)
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
return dirHandle
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { liveStoreStorageFormatVersion, UnexpectedError } from '@livestore/common'
|
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
3
3
|
import { decodeSAHPoolFilename, HEADER_OFFSET_DATA, type WebDatabaseMetadataOpfs } from '@livestore/sqlite-wasm/browser'
|
|
4
|
+
import { isDevEnv } from '@livestore/utils'
|
|
4
5
|
import { Effect, Schedule, Schema } from '@livestore/utils/effect'
|
|
5
6
|
|
|
6
7
|
import * as OpfsUtils from '../../opfs-utils.ts'
|
|
@@ -143,6 +144,8 @@ export const getStateDbFileName = (schema: LiveStoreSchema) => {
|
|
|
143
144
|
return `state${schemaHashSuffix}.db`
|
|
144
145
|
}
|
|
145
146
|
|
|
147
|
+
export const MAX_ARCHIVED_STATE_DBS_IN_DEV = 3
|
|
148
|
+
|
|
146
149
|
/**
|
|
147
150
|
* Cleanup old state database files after successful migration.
|
|
148
151
|
* This prevents OPFS file pool capacity from being exhausted by accumulated schema files.
|
|
@@ -151,7 +154,15 @@ export const getStateDbFileName = (schema: LiveStoreSchema) => {
|
|
|
151
154
|
* @param currentSchema - Current schema (to avoid deleting the active database)
|
|
152
155
|
*/
|
|
153
156
|
export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupOldStateDbFiles')(
|
|
154
|
-
function* ({
|
|
157
|
+
function* ({
|
|
158
|
+
vfs,
|
|
159
|
+
currentSchema,
|
|
160
|
+
opfsDirectory,
|
|
161
|
+
}: {
|
|
162
|
+
vfs: WebDatabaseMetadataOpfs['vfs']
|
|
163
|
+
currentSchema: LiveStoreSchema
|
|
164
|
+
opfsDirectory: string
|
|
165
|
+
}) {
|
|
155
166
|
// Only cleanup for auto migration strategy because:
|
|
156
167
|
// - Auto strategy: Creates new database files per schema change (e.g., state123.db, state456.db)
|
|
157
168
|
// which accumulate over time and can exhaust OPFS file pool capacity
|
|
@@ -162,6 +173,7 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
162
173
|
return
|
|
163
174
|
}
|
|
164
175
|
|
|
176
|
+
const isDev = isDevEnv()
|
|
165
177
|
const currentDbFileName = getStateDbFileName(currentSchema)
|
|
166
178
|
const currentPath = `/${currentDbFileName}`
|
|
167
179
|
|
|
@@ -178,9 +190,27 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
178
190
|
yield* Effect.logDebug(`Found ${oldStateDbPaths.length} old state database file(s) to clean up`)
|
|
179
191
|
|
|
180
192
|
let deletedCount = 0
|
|
193
|
+
const archivedFileNames: string[] = []
|
|
194
|
+
let archiveDirHandle: FileSystemDirectoryHandle | undefined
|
|
195
|
+
|
|
181
196
|
for (const path of oldStateDbPaths) {
|
|
182
197
|
const fileName = path.startsWith('/') ? path.slice(1) : path
|
|
183
198
|
|
|
199
|
+
if (isDev) {
|
|
200
|
+
archiveDirHandle = yield* Effect.tryPromise({
|
|
201
|
+
try: () => OpfsUtils.getDirHandle(`${opfsDirectory}/archive`, { create: true }),
|
|
202
|
+
catch: (cause) => new ArchiveStateDbError({ message: 'Failed to ensure archive directory', cause }),
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
const archivedFileName = yield* archiveStateDbFile({
|
|
206
|
+
vfs,
|
|
207
|
+
fileName,
|
|
208
|
+
archiveDirHandle,
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
archivedFileNames.push(archivedFileName)
|
|
212
|
+
}
|
|
213
|
+
|
|
184
214
|
const vfsResultCode = yield* Effect.try({
|
|
185
215
|
try: () => vfs.jDelete(fileName, 0),
|
|
186
216
|
catch: (cause) => new SqliteVfsError({ operation: 'jDelete', fileName, cause }),
|
|
@@ -200,7 +230,18 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
200
230
|
yield* Effect.logDebug(`Successfully deleted old state database file: ${fileName}`)
|
|
201
231
|
}
|
|
202
232
|
|
|
203
|
-
|
|
233
|
+
if (isDev && archiveDirHandle !== undefined) {
|
|
234
|
+
const pruneResult = yield* pruneArchiveDir({
|
|
235
|
+
archiveDirHandle,
|
|
236
|
+
keep: MAX_ARCHIVED_STATE_DBS_IN_DEV,
|
|
237
|
+
})
|
|
238
|
+
|
|
239
|
+
yield* Effect.logDebug(
|
|
240
|
+
`State db cleanup completed: archived ${archivedFileNames.length} file(s); removed ${deletedCount} old database file(s) from active pool; archive retained ${pruneResult.retained.length} file(s)`,
|
|
241
|
+
)
|
|
242
|
+
} else {
|
|
243
|
+
yield* Effect.logDebug(`State db cleanup completed: removed ${deletedCount} old database file(s)`)
|
|
244
|
+
}
|
|
204
245
|
},
|
|
205
246
|
Effect.mapError(
|
|
206
247
|
(error) =>
|
|
@@ -211,6 +252,108 @@ export const cleanupOldStateDbFiles = Effect.fn('@livestore/adapter-web:cleanupO
|
|
|
211
252
|
),
|
|
212
253
|
)
|
|
213
254
|
|
|
255
|
+
const archiveStateDbFile = Effect.fn('@livestore/adapter-web:archiveStateDbFile')(function* ({
|
|
256
|
+
vfs,
|
|
257
|
+
fileName,
|
|
258
|
+
archiveDirHandle,
|
|
259
|
+
}: {
|
|
260
|
+
vfs: WebDatabaseMetadataOpfs['vfs']
|
|
261
|
+
fileName: string
|
|
262
|
+
archiveDirHandle: FileSystemDirectoryHandle
|
|
263
|
+
}) {
|
|
264
|
+
const stateDbBuffer = vfs.readFilePayload(fileName)
|
|
265
|
+
|
|
266
|
+
const archiveFileName = `${Date.now()}-${fileName}`
|
|
267
|
+
|
|
268
|
+
const archiveFileHandle = yield* Effect.tryPromise({
|
|
269
|
+
try: () => archiveDirHandle.getFileHandle(archiveFileName, { create: true }),
|
|
270
|
+
catch: (cause) =>
|
|
271
|
+
new ArchiveStateDbError({
|
|
272
|
+
message: 'Failed to open archive file handle',
|
|
273
|
+
fileName: archiveFileName,
|
|
274
|
+
cause,
|
|
275
|
+
}),
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
const archiveFileAccessHandle = yield* Effect.acquireRelease(
|
|
279
|
+
Effect.tryPromise({
|
|
280
|
+
try: () => archiveFileHandle.createSyncAccessHandle(),
|
|
281
|
+
catch: (cause) =>
|
|
282
|
+
new ArchiveStateDbError({
|
|
283
|
+
message: 'Failed to create sync access handle for archived file',
|
|
284
|
+
fileName: archiveFileName,
|
|
285
|
+
cause,
|
|
286
|
+
}),
|
|
287
|
+
}),
|
|
288
|
+
(handle) => Effect.sync(() => handle.close()).pipe(Effect.ignoreLogged),
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
yield* Effect.try({
|
|
292
|
+
try: () => {
|
|
293
|
+
archiveFileAccessHandle.write(stateDbBuffer)
|
|
294
|
+
archiveFileAccessHandle.flush()
|
|
295
|
+
},
|
|
296
|
+
catch: (cause) =>
|
|
297
|
+
new ArchiveStateDbError({
|
|
298
|
+
message: 'Failed to write archived state database',
|
|
299
|
+
fileName: archiveFileName,
|
|
300
|
+
cause,
|
|
301
|
+
}),
|
|
302
|
+
})
|
|
303
|
+
|
|
304
|
+
return archiveFileName
|
|
305
|
+
}, Effect.scoped)
|
|
306
|
+
|
|
307
|
+
const pruneArchiveDir = Effect.fn('@livestore/adapter-web:pruneArchiveDir')(function* ({
|
|
308
|
+
archiveDirHandle,
|
|
309
|
+
keep,
|
|
310
|
+
}: {
|
|
311
|
+
archiveDirHandle: FileSystemDirectoryHandle
|
|
312
|
+
keep: number
|
|
313
|
+
}) {
|
|
314
|
+
const files = yield* Effect.tryPromise({
|
|
315
|
+
try: async () => {
|
|
316
|
+
const result: { name: string; lastModified: number }[] = []
|
|
317
|
+
|
|
318
|
+
for await (const entry of archiveDirHandle.values()) {
|
|
319
|
+
if (entry.kind !== 'file') continue
|
|
320
|
+
const fileHandle = await archiveDirHandle.getFileHandle(entry.name)
|
|
321
|
+
const file = await fileHandle.getFile()
|
|
322
|
+
result.push({ name: entry.name, lastModified: file.lastModified })
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return result.sort((a, b) => b.lastModified - a.lastModified)
|
|
326
|
+
},
|
|
327
|
+
catch: (cause) => new ArchiveStateDbError({ message: 'Failed to enumerate archived state databases', cause }),
|
|
328
|
+
})
|
|
329
|
+
|
|
330
|
+
const retained = files.slice(0, keep)
|
|
331
|
+
const toDelete = files.slice(keep)
|
|
332
|
+
|
|
333
|
+
yield* Effect.forEach(toDelete, ({ name }) =>
|
|
334
|
+
Effect.tryPromise({
|
|
335
|
+
try: () => archiveDirHandle.removeEntry(name),
|
|
336
|
+
catch: (cause) =>
|
|
337
|
+
new ArchiveStateDbError({
|
|
338
|
+
message: 'Failed to delete archived state database',
|
|
339
|
+
fileName: name,
|
|
340
|
+
cause,
|
|
341
|
+
}),
|
|
342
|
+
}),
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
return {
|
|
346
|
+
retained,
|
|
347
|
+
deleted: toDelete,
|
|
348
|
+
}
|
|
349
|
+
})
|
|
350
|
+
|
|
351
|
+
export class ArchiveStateDbError extends Schema.TaggedError<ArchiveStateDbError>()('ArchiveStateDbError', {
|
|
352
|
+
message: Schema.String,
|
|
353
|
+
fileName: Schema.optional(Schema.String),
|
|
354
|
+
cause: Schema.Defect,
|
|
355
|
+
}) {}
|
|
356
|
+
|
|
214
357
|
export class SqliteVfsError extends Schema.TaggedError<SqliteVfsError>()('SqliteVfsError', {
|
|
215
358
|
operation: Schema.String,
|
|
216
359
|
fileName: Schema.String,
|
|
@@ -137,6 +137,7 @@ const makeWorkerRunnerInner = ({ schema, sync: syncOptions }: WorkerOptions) =>
|
|
|
137
137
|
yield* cleanupOldStateDbFiles({
|
|
138
138
|
vfs: dbState.metadata.vfs,
|
|
139
139
|
currentSchema: schema,
|
|
140
|
+
opfsDirectory: dbState.metadata.persistenceInfo.opfsDirectory,
|
|
140
141
|
})
|
|
141
142
|
}
|
|
142
143
|
|