@effect/platform-browser 4.0.0-beta.7 → 4.0.0-beta.71
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/BrowserCrypto.d.ts +81 -0
- package/dist/BrowserCrypto.d.ts.map +1 -0
- package/dist/BrowserCrypto.js +119 -0
- package/dist/BrowserCrypto.js.map +1 -0
- package/dist/BrowserHttpClient.d.ts +40 -16
- package/dist/BrowserHttpClient.d.ts.map +1 -1
- package/dist/BrowserHttpClient.js +74 -18
- package/dist/BrowserHttpClient.js.map +1 -1
- package/dist/BrowserKeyValueStore.d.ts +37 -14
- package/dist/BrowserKeyValueStore.d.ts.map +1 -1
- package/dist/BrowserKeyValueStore.js +185 -10
- package/dist/BrowserKeyValueStore.js.map +1 -1
- package/dist/BrowserPersistence.d.ts +40 -0
- package/dist/BrowserPersistence.d.ts.map +1 -0
- package/dist/BrowserPersistence.js +207 -0
- package/dist/BrowserPersistence.js.map +1 -0
- package/dist/BrowserRuntime.d.ts +79 -4
- package/dist/BrowserRuntime.d.ts.map +1 -1
- package/dist/BrowserRuntime.js +19 -1
- package/dist/BrowserRuntime.js.map +1 -1
- package/dist/BrowserSocket.d.ts +64 -6
- package/dist/BrowserSocket.d.ts.map +1 -1
- package/dist/BrowserSocket.js +64 -6
- package/dist/BrowserSocket.js.map +1 -1
- package/dist/BrowserStream.d.ts +48 -5
- package/dist/BrowserStream.d.ts.map +1 -1
- package/dist/BrowserStream.js +48 -5
- package/dist/BrowserStream.js.map +1 -1
- package/dist/BrowserWorker.d.ts +25 -4
- package/dist/BrowserWorker.d.ts.map +1 -1
- package/dist/BrowserWorker.js +62 -6
- package/dist/BrowserWorker.js.map +1 -1
- package/dist/BrowserWorkerRunner.d.ts +31 -6
- package/dist/BrowserWorkerRunner.d.ts.map +1 -1
- package/dist/BrowserWorkerRunner.js +65 -10
- package/dist/BrowserWorkerRunner.js.map +1 -1
- package/dist/Clipboard.d.ts +77 -13
- package/dist/Clipboard.d.ts.map +1 -1
- package/dist/Clipboard.js +57 -11
- package/dist/Clipboard.js.map +1 -1
- package/dist/Geolocation.d.ts +101 -24
- package/dist/Geolocation.d.ts.map +1 -1
- package/dist/Geolocation.js +69 -16
- package/dist/Geolocation.js.map +1 -1
- package/dist/IndexedDb.d.ts +89 -0
- package/dist/IndexedDb.d.ts.map +1 -0
- package/dist/IndexedDb.js +99 -0
- package/dist/IndexedDb.js.map +1 -0
- package/dist/IndexedDbDatabase.d.ts +169 -0
- package/dist/IndexedDbDatabase.d.ts.map +1 -0
- package/dist/IndexedDbDatabase.js +343 -0
- package/dist/IndexedDbDatabase.js.map +1 -0
- package/dist/IndexedDbQueryBuilder.d.ts +438 -0
- package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
- package/dist/IndexedDbQueryBuilder.js +935 -0
- package/dist/IndexedDbQueryBuilder.js.map +1 -0
- package/dist/IndexedDbTable.d.ts +191 -0
- package/dist/IndexedDbTable.d.ts.map +1 -0
- package/dist/IndexedDbTable.js +96 -0
- package/dist/IndexedDbTable.js.map +1 -0
- package/dist/IndexedDbVersion.d.ts +94 -0
- package/dist/IndexedDbVersion.d.ts.map +1 -0
- package/dist/IndexedDbVersion.js +39 -0
- package/dist/IndexedDbVersion.js.map +1 -0
- package/dist/Permissions.d.ts +76 -16
- package/dist/Permissions.d.ts.map +1 -1
- package/dist/Permissions.js +66 -11
- package/dist/Permissions.js.map +1 -1
- package/dist/index.d.ts +38 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/BrowserCrypto.ts +129 -0
- package/src/BrowserHttpClient.ts +84 -24
- package/src/BrowserKeyValueStore.ts +201 -12
- package/src/BrowserPersistence.ts +376 -0
- package/src/BrowserRuntime.ts +79 -4
- package/src/BrowserSocket.ts +64 -6
- package/src/BrowserStream.ts +48 -5
- package/src/BrowserWorker.ts +62 -6
- package/src/BrowserWorkerRunner.ts +65 -10
- package/src/Clipboard.ts +74 -13
- package/src/Geolocation.ts +97 -20
- package/src/IndexedDb.ts +127 -0
- package/src/IndexedDbDatabase.ts +664 -0
- package/src/IndexedDbQueryBuilder.ts +2048 -0
- package/src/IndexedDbTable.ts +285 -0
- package/src/IndexedDbVersion.ts +133 -0
- package/src/Permissions.ts +71 -14
- package/src/index.ts +45 -10
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds and opens typed IndexedDB databases from versioned schema migrations.
|
|
3
|
+
*
|
|
4
|
+
* This module turns an `IndexedDbVersion` migration chain into an
|
|
5
|
+
* `IndexedDbDatabase` layer. The layer opens the browser database, runs any
|
|
6
|
+
* pending upgrade migrations, provides a query builder for the current schema,
|
|
7
|
+
* and exposes a `rebuild` effect that deletes and reopens the database. It is
|
|
8
|
+
* the database-level companion to the table, version, and query builder
|
|
9
|
+
* modules.
|
|
10
|
+
*
|
|
11
|
+
* Use it for browser-local persistence such as offline-first application
|
|
12
|
+
* state, cached server data, background queues, drafts, and other client-side
|
|
13
|
+
* stores that need typed reads and writes backed by IndexedDB transactions.
|
|
14
|
+
*
|
|
15
|
+
* IndexedDB schema changes can only happen inside upgrade transactions, so
|
|
16
|
+
* every call to `make` or `.add` represents the next browser database version
|
|
17
|
+
* and only migrations after the existing browser version are run. Table and
|
|
18
|
+
* index definitions type the migration and query APIs, but object stores and
|
|
19
|
+
* indexes still need to be created or removed explicitly with the migration
|
|
20
|
+
* transaction helpers. Include the complete target table set in each version,
|
|
21
|
+
* create indexes before querying them, and treat key path or auto-increment
|
|
22
|
+
* changes as store migrations that copy data into a replacement object store.
|
|
23
|
+
* Upgrades can be blocked by other open connections, and all migration reads,
|
|
24
|
+
* writes, store changes, and index changes share the single upgrade
|
|
25
|
+
* transaction supplied by the browser.
|
|
26
|
+
*
|
|
27
|
+
* @since 4.0.0
|
|
28
|
+
*/
|
|
29
|
+
import * as Context from "effect/Context";
|
|
30
|
+
import * as Data from "effect/Data";
|
|
31
|
+
import * as Effect from "effect/Effect";
|
|
32
|
+
import * as Effectable from "effect/Effectable";
|
|
33
|
+
import * as Fiber from "effect/Fiber";
|
|
34
|
+
import * as Layer from "effect/Layer";
|
|
35
|
+
import * as MutableRef from "effect/MutableRef";
|
|
36
|
+
import * as Semaphore from "effect/Semaphore";
|
|
37
|
+
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
38
|
+
import * as IndexedDb from "./IndexedDb.js";
|
|
39
|
+
import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.js";
|
|
40
|
+
const TypeId = "~@effect/platform-browser/IndexedDbDatabase";
|
|
41
|
+
const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
|
|
42
|
+
const SchemaProto = {
|
|
43
|
+
[TypeId]: {
|
|
44
|
+
_A: _ => _
|
|
45
|
+
},
|
|
46
|
+
... /*#__PURE__*/Effectable.Prototype({
|
|
47
|
+
label: "IndexedDbSchema",
|
|
48
|
+
evaluate() {
|
|
49
|
+
return this.getQueryBuilder;
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
52
|
+
get getQueryBuilder() {
|
|
53
|
+
const self = this;
|
|
54
|
+
return IndexedDbDatabase.useSync(({
|
|
55
|
+
database,
|
|
56
|
+
IDBKeyRange,
|
|
57
|
+
reactivity
|
|
58
|
+
}) => IndexedDbQueryBuilder.make({
|
|
59
|
+
database,
|
|
60
|
+
IDBKeyRange,
|
|
61
|
+
tables: self.version.tables,
|
|
62
|
+
reactivity
|
|
63
|
+
}));
|
|
64
|
+
},
|
|
65
|
+
add(version, migrate) {
|
|
66
|
+
return makeMigration({
|
|
67
|
+
fromVersion: this.version,
|
|
68
|
+
version,
|
|
69
|
+
migrate,
|
|
70
|
+
previous: this
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
layer(databaseName) {
|
|
74
|
+
return layer(databaseName, this);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Tagged error for IndexedDB database operations, carrying a database error reason and the original cause.
|
|
79
|
+
*
|
|
80
|
+
* @category errors
|
|
81
|
+
* @since 4.0.0
|
|
82
|
+
*/
|
|
83
|
+
export class IndexedDbDatabaseError extends /*#__PURE__*/Data.TaggedError("IndexedDbDatabaseError") {
|
|
84
|
+
/**
|
|
85
|
+
* Marks this value as an IndexedDB database error for runtime guards.
|
|
86
|
+
*
|
|
87
|
+
* @since 4.0.0
|
|
88
|
+
*/
|
|
89
|
+
[ErrorTypeId] = ErrorTypeId;
|
|
90
|
+
message = this.reason;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Service tag for an open IndexedDB database, its `IDBKeyRange` constructor, reactivity service, and rebuild effect.
|
|
94
|
+
*
|
|
95
|
+
* **When to use**
|
|
96
|
+
*
|
|
97
|
+
* Use when an effect needs access to the live database service after an
|
|
98
|
+
* `IndexedDbSchema` layer has been provided, especially for `rebuild` or
|
|
99
|
+
* lower-level database primitives.
|
|
100
|
+
*
|
|
101
|
+
* **Details**
|
|
102
|
+
*
|
|
103
|
+
* `database` is a mutable reference to the current `IDBDatabase`. `IDBKeyRange`
|
|
104
|
+
* and `reactivity` are shared with query builders created from the schema.
|
|
105
|
+
*
|
|
106
|
+
* **Gotchas**
|
|
107
|
+
*
|
|
108
|
+
* `rebuild` closes and deletes the browser database, then reopens it and reruns
|
|
109
|
+
* migrations. Records not recreated by migrations are removed.
|
|
110
|
+
*
|
|
111
|
+
* @see {@link IndexedDb.IndexedDb} for the lower-level browser IndexedDB primitives
|
|
112
|
+
* @see {@link make} for creating a schema that provides this service as a layer
|
|
113
|
+
*
|
|
114
|
+
* @category models
|
|
115
|
+
* @since 4.0.0
|
|
116
|
+
*/
|
|
117
|
+
export class IndexedDbDatabase extends /*#__PURE__*/Context.Service()(TypeId) {}
|
|
118
|
+
/**
|
|
119
|
+
* Creates the initial `IndexedDbSchema` from a version and an initialization migration run during database upgrade.
|
|
120
|
+
*
|
|
121
|
+
* @category constructors
|
|
122
|
+
* @since 4.0.0
|
|
123
|
+
*/
|
|
124
|
+
export const make = (initialVersion, init) => {
|
|
125
|
+
// oxlint-disable-next-line typescript/no-extraneous-class
|
|
126
|
+
function Initial() {}
|
|
127
|
+
Object.setPrototypeOf(Initial, SchemaProto);
|
|
128
|
+
Initial.version = initialVersion;
|
|
129
|
+
Initial.migrate = init;
|
|
130
|
+
return Initial;
|
|
131
|
+
};
|
|
132
|
+
const makeMigration = options => {
|
|
133
|
+
// oxlint-disable-next-line typescript/no-extraneous-class
|
|
134
|
+
function Migration() {}
|
|
135
|
+
Object.setPrototypeOf(Migration, SchemaProto);
|
|
136
|
+
Migration.previous = options.previous;
|
|
137
|
+
Migration.fromVersion = options.fromVersion;
|
|
138
|
+
Migration.version = options.version;
|
|
139
|
+
Migration.migrate = options.migrate;
|
|
140
|
+
return Migration;
|
|
141
|
+
};
|
|
142
|
+
const layer = (databaseName, migration) => Layer.effect(IndexedDbDatabase, Effect.gen(function* () {
|
|
143
|
+
const {
|
|
144
|
+
IDBKeyRange,
|
|
145
|
+
indexedDB
|
|
146
|
+
} = yield* IndexedDb.IndexedDb;
|
|
147
|
+
const reactivity = yield* Reactivity.Reactivity;
|
|
148
|
+
const context = yield* Effect.context();
|
|
149
|
+
const runForkWith = Effect.runForkWith(context);
|
|
150
|
+
let oldVersion = 0;
|
|
151
|
+
const migrations = [];
|
|
152
|
+
let current = migration;
|
|
153
|
+
while (current) {
|
|
154
|
+
migrations.unshift(current);
|
|
155
|
+
current = current.previous;
|
|
156
|
+
}
|
|
157
|
+
const version = migrations.length;
|
|
158
|
+
const database = MutableRef.make(null);
|
|
159
|
+
const open = Effect.callback(resume => {
|
|
160
|
+
const request = indexedDB.open(databaseName, version);
|
|
161
|
+
request.onblocked = event => {
|
|
162
|
+
resume(Effect.fail(new IndexedDbDatabaseError({
|
|
163
|
+
reason: "Blocked",
|
|
164
|
+
cause: event
|
|
165
|
+
})));
|
|
166
|
+
};
|
|
167
|
+
request.onerror = event => {
|
|
168
|
+
const idbRequest = event.target;
|
|
169
|
+
resume(Effect.fail(new IndexedDbDatabaseError({
|
|
170
|
+
reason: "OpenError",
|
|
171
|
+
cause: idbRequest.error
|
|
172
|
+
})));
|
|
173
|
+
};
|
|
174
|
+
let fiber;
|
|
175
|
+
request.onupgradeneeded = event => {
|
|
176
|
+
const idbRequest = event.target;
|
|
177
|
+
const db = idbRequest.result;
|
|
178
|
+
const transaction = idbRequest.transaction;
|
|
179
|
+
oldVersion = event.oldVersion;
|
|
180
|
+
MutableRef.set(database, db);
|
|
181
|
+
if (transaction === null) {
|
|
182
|
+
return resume(Effect.fail(new IndexedDbDatabaseError({
|
|
183
|
+
reason: "TransactionError",
|
|
184
|
+
cause: null
|
|
185
|
+
})));
|
|
186
|
+
}
|
|
187
|
+
transaction.onabort = event => {
|
|
188
|
+
resume(Effect.fail(new IndexedDbDatabaseError({
|
|
189
|
+
reason: "Aborted",
|
|
190
|
+
cause: event
|
|
191
|
+
})));
|
|
192
|
+
};
|
|
193
|
+
transaction.onerror = event => {
|
|
194
|
+
resume(Effect.fail(new IndexedDbDatabaseError({
|
|
195
|
+
reason: "TransactionError",
|
|
196
|
+
cause: event
|
|
197
|
+
})));
|
|
198
|
+
};
|
|
199
|
+
const effect = Effect.forEach(migrations.slice(oldVersion), untypedMigration => {
|
|
200
|
+
if (untypedMigration.previous === undefined) {
|
|
201
|
+
const migration = untypedMigration;
|
|
202
|
+
const api = makeTransactionProto({
|
|
203
|
+
database,
|
|
204
|
+
IDBKeyRange,
|
|
205
|
+
tables: migration.version.tables,
|
|
206
|
+
transaction,
|
|
207
|
+
reactivity
|
|
208
|
+
});
|
|
209
|
+
return migration.migrate(api);
|
|
210
|
+
} else if (untypedMigration.previous) {
|
|
211
|
+
const migration = untypedMigration;
|
|
212
|
+
const fromApi = makeTransactionProto({
|
|
213
|
+
database,
|
|
214
|
+
IDBKeyRange,
|
|
215
|
+
tables: migration.fromVersion.tables,
|
|
216
|
+
transaction,
|
|
217
|
+
reactivity
|
|
218
|
+
});
|
|
219
|
+
const toApi = makeTransactionProto({
|
|
220
|
+
database,
|
|
221
|
+
IDBKeyRange,
|
|
222
|
+
tables: migration.version.tables,
|
|
223
|
+
transaction,
|
|
224
|
+
reactivity
|
|
225
|
+
});
|
|
226
|
+
return migration.migrate(fromApi, toApi);
|
|
227
|
+
}
|
|
228
|
+
return Effect.die(new Error("Invalid migration"));
|
|
229
|
+
}, {
|
|
230
|
+
discard: true
|
|
231
|
+
}).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
|
|
232
|
+
reason: "UpgradeError",
|
|
233
|
+
cause
|
|
234
|
+
})), Effect.provideService(IndexedDbQueryBuilder.IndexedDbTransaction, transaction));
|
|
235
|
+
fiber = runForkWith(effect);
|
|
236
|
+
fiber.currentDispatcher.flush();
|
|
237
|
+
};
|
|
238
|
+
request.onsuccess = event => {
|
|
239
|
+
const idbRequest = event.target;
|
|
240
|
+
const db = idbRequest.result;
|
|
241
|
+
MutableRef.set(database, db);
|
|
242
|
+
if (fiber) {
|
|
243
|
+
// ensure migration errors are propagated
|
|
244
|
+
resume(Effect.asVoid(Fiber.join(fiber)));
|
|
245
|
+
} else {
|
|
246
|
+
resume(Effect.void);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
});
|
|
250
|
+
yield* Effect.addFinalizer(() => {
|
|
251
|
+
database.current?.close();
|
|
252
|
+
return Effect.void;
|
|
253
|
+
});
|
|
254
|
+
yield* open;
|
|
255
|
+
const rebuildLock = Semaphore.makeUnsafe(1).withPermit;
|
|
256
|
+
const rebuild = Effect.callback(resume => {
|
|
257
|
+
database.current?.close();
|
|
258
|
+
const request = indexedDB.deleteDatabase(databaseName);
|
|
259
|
+
request.onerror = _ => {
|
|
260
|
+
resume(Effect.fail(new IndexedDbDatabaseError({
|
|
261
|
+
reason: "OpenError",
|
|
262
|
+
cause: request.error
|
|
263
|
+
})));
|
|
264
|
+
};
|
|
265
|
+
request.onsuccess = () => {
|
|
266
|
+
resume(Effect.void);
|
|
267
|
+
};
|
|
268
|
+
}).pipe(Effect.flatMap(() => open), rebuildLock);
|
|
269
|
+
return IndexedDbDatabase.of({
|
|
270
|
+
database,
|
|
271
|
+
IDBKeyRange,
|
|
272
|
+
rebuild,
|
|
273
|
+
reactivity
|
|
274
|
+
});
|
|
275
|
+
})).pipe(Layer.provide(Reactivity.layer));
|
|
276
|
+
const makeTransactionProto = ({
|
|
277
|
+
IDBKeyRange,
|
|
278
|
+
database,
|
|
279
|
+
tables,
|
|
280
|
+
transaction,
|
|
281
|
+
reactivity
|
|
282
|
+
}) => {
|
|
283
|
+
const migration = IndexedDbQueryBuilder.make({
|
|
284
|
+
database,
|
|
285
|
+
IDBKeyRange,
|
|
286
|
+
tables,
|
|
287
|
+
reactivity
|
|
288
|
+
});
|
|
289
|
+
migration.transaction = transaction;
|
|
290
|
+
migration.createObjectStore = Effect.fnUntraced(function* (table) {
|
|
291
|
+
const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
|
|
292
|
+
reason: "MissingTable",
|
|
293
|
+
cause
|
|
294
|
+
})));
|
|
295
|
+
return yield* Effect.try({
|
|
296
|
+
try: () => database.current.createObjectStore(createTable.tableName, {
|
|
297
|
+
keyPath: createTable.keyPath,
|
|
298
|
+
autoIncrement: createTable.autoIncrement
|
|
299
|
+
}),
|
|
300
|
+
catch: cause => new IndexedDbDatabaseError({
|
|
301
|
+
reason: "TransactionError",
|
|
302
|
+
cause
|
|
303
|
+
})
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
migration.deleteObjectStore = Effect.fnUntraced(function* (table) {
|
|
307
|
+
const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
|
|
308
|
+
reason: "MissingTable",
|
|
309
|
+
cause
|
|
310
|
+
})));
|
|
311
|
+
return yield* Effect.try({
|
|
312
|
+
try: () => database.current.deleteObjectStore(createTable.tableName),
|
|
313
|
+
catch: cause => new IndexedDbDatabaseError({
|
|
314
|
+
reason: "TransactionError",
|
|
315
|
+
cause
|
|
316
|
+
})
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
migration.createIndex = Effect.fnUntraced(function* (table, indexName, options) {
|
|
320
|
+
const store = transaction.objectStore(table);
|
|
321
|
+
const sourceTable = tables.get(table);
|
|
322
|
+
const keyPath = yield* Effect.fromNullishOr(sourceTable.indexes[indexName]).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
|
|
323
|
+
reason: "MissingIndex",
|
|
324
|
+
cause
|
|
325
|
+
})));
|
|
326
|
+
return yield* Effect.try({
|
|
327
|
+
try: () => store.createIndex(indexName, keyPath, options),
|
|
328
|
+
catch: cause => new IndexedDbDatabaseError({
|
|
329
|
+
reason: "TransactionError",
|
|
330
|
+
cause
|
|
331
|
+
})
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
migration.deleteIndex = (table, indexName) => Effect.try({
|
|
335
|
+
try: () => transaction.objectStore(table).deleteIndex(indexName),
|
|
336
|
+
catch: cause => new IndexedDbDatabaseError({
|
|
337
|
+
reason: "TransactionError",
|
|
338
|
+
cause
|
|
339
|
+
})
|
|
340
|
+
});
|
|
341
|
+
return migration;
|
|
342
|
+
};
|
|
343
|
+
//# sourceMappingURL=IndexedDbDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDbDatabase.js","names":["Context","Data","Effect","Effectable","Fiber","Layer","MutableRef","Semaphore","Reactivity","IndexedDb","IndexedDbQueryBuilder","TypeId","ErrorTypeId","SchemaProto","_A","_","Prototype","label","evaluate","getQueryBuilder","self","IndexedDbDatabase","useSync","database","IDBKeyRange","reactivity","make","tables","version","add","migrate","makeMigration","fromVersion","previous","layer","databaseName","IndexedDbDatabaseError","TaggedError","message","reason","Service","initialVersion","init","Initial","Object","setPrototypeOf","options","Migration","migration","effect","gen","indexedDB","context","runForkWith","oldVersion","migrations","current","unshift","length","open","callback","resume","request","onblocked","event","fail","cause","onerror","idbRequest","target","error","fiber","onupgradeneeded","db","result","transaction","set","onabort","forEach","slice","untypedMigration","undefined","api","makeTransactionProto","fromApi","toApi","die","Error","discard","pipe","mapError","provideService","IndexedDbTransaction","currentDispatcher","flush","onsuccess","asVoid","join","void","addFinalizer","close","rebuildLock","makeUnsafe","withPermit","rebuild","deleteDatabase","flatMap","of","provide","createObjectStore","fnUntraced","table","createTable","fromNullishOr","get","try","tableName","keyPath","autoIncrement","catch","deleteObjectStore","createIndex","indexName","store","objectStore","sourceTable","indexes","deleteIndex"],"sources":["../src/IndexedDbDatabase.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|