@effect/platform-browser 4.0.0-beta.42 → 4.0.0-beta.44

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.
Files changed (54) hide show
  1. package/dist/BrowserHttpClient.d.ts +3 -3
  2. package/dist/BrowserHttpClient.d.ts.map +1 -1
  3. package/dist/BrowserHttpClient.js +5 -5
  4. package/dist/BrowserHttpClient.js.map +1 -1
  5. package/dist/BrowserWorkerRunner.js +1 -1
  6. package/dist/BrowserWorkerRunner.js.map +1 -1
  7. package/dist/Clipboard.d.ts +5 -2
  8. package/dist/Clipboard.d.ts.map +1 -1
  9. package/dist/Clipboard.js +2 -2
  10. package/dist/Clipboard.js.map +1 -1
  11. package/dist/Geolocation.d.ts +2 -2
  12. package/dist/Geolocation.d.ts.map +1 -1
  13. package/dist/Geolocation.js +2 -2
  14. package/dist/Geolocation.js.map +1 -1
  15. package/dist/IndexedDb.d.ts +50 -0
  16. package/dist/IndexedDb.d.ts.map +1 -0
  17. package/dist/IndexedDb.js +65 -0
  18. package/dist/IndexedDb.js.map +1 -0
  19. package/dist/IndexedDbDatabase.d.ts +105 -0
  20. package/dist/IndexedDbDatabase.d.ts.map +1 -0
  21. package/dist/IndexedDbDatabase.js +321 -0
  22. package/dist/IndexedDbDatabase.js.map +1 -0
  23. package/dist/IndexedDbQueryBuilder.d.ts +342 -0
  24. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
  25. package/dist/IndexedDbQueryBuilder.js +869 -0
  26. package/dist/IndexedDbQueryBuilder.js.map +1 -0
  27. package/dist/IndexedDbTable.d.ts +109 -0
  28. package/dist/IndexedDbTable.d.ts.map +1 -0
  29. package/dist/IndexedDbTable.js +38 -0
  30. package/dist/IndexedDbTable.js.map +1 -0
  31. package/dist/IndexedDbVersion.d.ts +50 -0
  32. package/dist/IndexedDbVersion.d.ts.map +1 -0
  33. package/dist/IndexedDbVersion.js +23 -0
  34. package/dist/IndexedDbVersion.js.map +1 -0
  35. package/dist/Permissions.d.ts +5 -2
  36. package/dist/Permissions.d.ts.map +1 -1
  37. package/dist/Permissions.js +2 -2
  38. package/dist/Permissions.js.map +1 -1
  39. package/dist/index.d.ts +20 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +20 -0
  42. package/dist/index.js.map +1 -1
  43. package/package.json +4 -3
  44. package/src/BrowserHttpClient.ts +6 -6
  45. package/src/BrowserWorkerRunner.ts +1 -1
  46. package/src/Clipboard.ts +2 -2
  47. package/src/Geolocation.ts +2 -2
  48. package/src/IndexedDb.ts +97 -0
  49. package/src/IndexedDbDatabase.ts +631 -0
  50. package/src/IndexedDbQueryBuilder.ts +1890 -0
  51. package/src/IndexedDbTable.ts +203 -0
  52. package/src/IndexedDbVersion.ts +89 -0
  53. package/src/Permissions.ts +2 -2
  54. package/src/index.ts +25 -0
@@ -0,0 +1,321 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Context from "effect/Context";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Fiber from "effect/Fiber";
8
+ import * as Inspectable from "effect/Inspectable";
9
+ import * as Layer from "effect/Layer";
10
+ import * as MutableRef from "effect/MutableRef";
11
+ import * as Pipeable from "effect/Pipeable";
12
+ import * as Semaphore from "effect/Semaphore";
13
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
14
+ import * as Utils from "effect/Utils";
15
+ import * as IndexedDb from "./IndexedDb.js";
16
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.js";
17
+ const TypeId = "~@effect/platform-browser/IndexedDbDatabase";
18
+ const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
19
+ const YieldableProto = {
20
+ [Symbol.iterator]() {
21
+ return new Utils.SingleShotGen(this);
22
+ }
23
+ };
24
+ const PipeInspectableProto = {
25
+ ...Pipeable.Prototype,
26
+ ...Inspectable.BaseProto,
27
+ toJSON() {
28
+ return {
29
+ _id: "IndexedDbDatabase"
30
+ };
31
+ }
32
+ };
33
+ const CommonProto = {
34
+ [TypeId]: {
35
+ _A: _ => _
36
+ },
37
+ ...PipeInspectableProto,
38
+ ...YieldableProto
39
+ };
40
+ /**
41
+ * @since 4.0.0
42
+ * @category errors
43
+ */
44
+ export class IndexedDbDatabaseError extends /*#__PURE__*/Data.TaggedError("IndexedDbDatabaseError") {
45
+ /**
46
+ * @since 4.0.0
47
+ */
48
+ [ErrorTypeId] = ErrorTypeId;
49
+ message = this.reason;
50
+ }
51
+ /**
52
+ * @since 4.0.0
53
+ * @category models
54
+ */
55
+ export class IndexedDbDatabase extends /*#__PURE__*/Context.Service()(TypeId) {}
56
+ /**
57
+ * @since 4.0.0
58
+ * @category constructors
59
+ */
60
+ export const make = (initialVersion, init) => function () {
61
+ // oxlint-disable-next-line typescript/no-extraneous-class
62
+ class Initial {}
63
+ Object.assign(Initial, CommonProto);
64
+ Initial.version = initialVersion;
65
+ Initial.migrate = init;
66
+ Initial._tag = "Initial";
67
+ Initial.add = (version, migrate) => makeProto({
68
+ fromVersion: initialVersion,
69
+ version,
70
+ migrate,
71
+ previous: Initial
72
+ });
73
+ Initial.getQueryBuilder = Effect.gen(function* () {
74
+ const {
75
+ IDBKeyRange,
76
+ database,
77
+ reactivity
78
+ } = yield* IndexedDbDatabase;
79
+ return IndexedDbQueryBuilder.make({
80
+ database,
81
+ IDBKeyRange,
82
+ tables: initialVersion.tables,
83
+ reactivity
84
+ });
85
+ });
86
+ Initial.asEffect = function () {
87
+ return this.getQueryBuilder;
88
+ };
89
+ Initial.layer = databaseName => layer(databaseName, Initial);
90
+ return Initial;
91
+ }();
92
+ const makeProto = options => function () {
93
+ // oxlint-disable-next-line typescript/no-extraneous-class
94
+ class Migration {}
95
+ Object.assign(Migration, CommonProto);
96
+ Migration.previous = options.previous;
97
+ Migration.fromVersion = options.fromVersion;
98
+ Migration.version = options.version;
99
+ Migration.migrate = options.migrate;
100
+ Migration._tag = "Migration";
101
+ Migration.getQueryBuilder = Effect.gen(function* () {
102
+ const {
103
+ IDBKeyRange,
104
+ database,
105
+ reactivity
106
+ } = yield* IndexedDbDatabase;
107
+ return IndexedDbQueryBuilder.make({
108
+ database,
109
+ IDBKeyRange,
110
+ tables: options.version.tables,
111
+ reactivity
112
+ });
113
+ });
114
+ Migration.asEffect = function () {
115
+ return this.getQueryBuilder;
116
+ };
117
+ Migration.layer = databaseName => layer(databaseName, Migration);
118
+ return Migration;
119
+ }();
120
+ const layer = (databaseName, migration) => Layer.effect(IndexedDbDatabase, Effect.gen(function* () {
121
+ const {
122
+ IDBKeyRange,
123
+ indexedDB
124
+ } = yield* IndexedDb.IndexedDb;
125
+ const reactivity = yield* Reactivity.Reactivity;
126
+ const context = yield* Effect.context();
127
+ const runForkWith = Effect.runForkWith(context);
128
+ let oldVersion = 0;
129
+ const migrations = [];
130
+ let current = migration;
131
+ while (current) {
132
+ migrations.unshift(current);
133
+ current = current.previous;
134
+ }
135
+ const version = migrations.length;
136
+ const database = MutableRef.make(null);
137
+ const open = Effect.callback(resume => {
138
+ const request = indexedDB.open(databaseName, version);
139
+ request.onblocked = event => {
140
+ resume(Effect.fail(new IndexedDbDatabaseError({
141
+ reason: "Blocked",
142
+ cause: event
143
+ })));
144
+ };
145
+ request.onerror = event => {
146
+ const idbRequest = event.target;
147
+ resume(Effect.fail(new IndexedDbDatabaseError({
148
+ reason: "OpenError",
149
+ cause: idbRequest.error
150
+ })));
151
+ };
152
+ let fiber;
153
+ request.onupgradeneeded = event => {
154
+ const idbRequest = event.target;
155
+ const db = idbRequest.result;
156
+ const transaction = idbRequest.transaction;
157
+ oldVersion = event.oldVersion;
158
+ MutableRef.set(database, db);
159
+ if (transaction === null) {
160
+ return resume(Effect.fail(new IndexedDbDatabaseError({
161
+ reason: "TransactionError",
162
+ cause: null
163
+ })));
164
+ }
165
+ transaction.onabort = event => {
166
+ resume(Effect.fail(new IndexedDbDatabaseError({
167
+ reason: "Aborted",
168
+ cause: event
169
+ })));
170
+ };
171
+ transaction.onerror = event => {
172
+ resume(Effect.fail(new IndexedDbDatabaseError({
173
+ reason: "TransactionError",
174
+ cause: event
175
+ })));
176
+ };
177
+ const effect = Effect.forEach(migrations.slice(oldVersion), untypedMigration => {
178
+ if (untypedMigration.previous === undefined) {
179
+ const migration = untypedMigration;
180
+ const api = makeTransactionProto({
181
+ database,
182
+ IDBKeyRange,
183
+ tables: migration.version.tables,
184
+ transaction,
185
+ reactivity
186
+ });
187
+ return migration.migrate(api);
188
+ } else if (untypedMigration.previous) {
189
+ const migration = untypedMigration;
190
+ const fromApi = makeTransactionProto({
191
+ database,
192
+ IDBKeyRange,
193
+ tables: migration.fromVersion.tables,
194
+ transaction,
195
+ reactivity
196
+ });
197
+ const toApi = makeTransactionProto({
198
+ database,
199
+ IDBKeyRange,
200
+ tables: migration.version.tables,
201
+ transaction,
202
+ reactivity
203
+ });
204
+ return migration.migrate(fromApi, toApi);
205
+ }
206
+ return Effect.die(new Error("Invalid migration"));
207
+ }, {
208
+ discard: true
209
+ }).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
210
+ reason: "UpgradeError",
211
+ cause
212
+ })), Effect.provideService(IndexedDbQueryBuilder.IndexedDbTransaction, transaction));
213
+ fiber = runForkWith(effect);
214
+ fiber.currentDispatcher.flush();
215
+ };
216
+ request.onsuccess = event => {
217
+ const idbRequest = event.target;
218
+ const db = idbRequest.result;
219
+ MutableRef.set(database, db);
220
+ if (fiber) {
221
+ // ensure migration errors are propagated
222
+ resume(Effect.asVoid(Fiber.join(fiber)));
223
+ } else {
224
+ resume(Effect.void);
225
+ }
226
+ };
227
+ });
228
+ yield* Effect.addFinalizer(() => {
229
+ database.current?.close();
230
+ return Effect.void;
231
+ });
232
+ yield* open;
233
+ const rebuildLock = Semaphore.makeUnsafe(1).withPermit;
234
+ const rebuild = Effect.callback(resume => {
235
+ database.current?.close();
236
+ const request = indexedDB.deleteDatabase(databaseName);
237
+ request.onerror = _ => {
238
+ resume(Effect.fail(new IndexedDbDatabaseError({
239
+ reason: "OpenError",
240
+ cause: request.error
241
+ })));
242
+ };
243
+ request.onsuccess = () => {
244
+ resume(Effect.void);
245
+ };
246
+ }).pipe(Effect.flatMap(() => open), rebuildLock);
247
+ return IndexedDbDatabase.of({
248
+ database,
249
+ IDBKeyRange,
250
+ rebuild,
251
+ reactivity
252
+ });
253
+ })).pipe(Layer.provide(Reactivity.layer));
254
+ const makeTransactionProto = ({
255
+ IDBKeyRange,
256
+ database,
257
+ tables,
258
+ transaction,
259
+ reactivity
260
+ }) => {
261
+ const migration = IndexedDbQueryBuilder.make({
262
+ database,
263
+ IDBKeyRange,
264
+ tables,
265
+ reactivity
266
+ });
267
+ migration.transaction = transaction;
268
+ migration.createObjectStore = Effect.fnUntraced(function* (table) {
269
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
270
+ reason: "MissingTable",
271
+ cause
272
+ })));
273
+ return yield* Effect.try({
274
+ try: () => database.current.createObjectStore(createTable.tableName, {
275
+ keyPath: createTable.keyPath,
276
+ autoIncrement: createTable.autoIncrement
277
+ }),
278
+ catch: cause => new IndexedDbDatabaseError({
279
+ reason: "TransactionError",
280
+ cause
281
+ })
282
+ });
283
+ });
284
+ migration.deleteObjectStore = Effect.fnUntraced(function* (table) {
285
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
286
+ reason: "MissingTable",
287
+ cause
288
+ })));
289
+ return yield* Effect.try({
290
+ try: () => database.current.deleteObjectStore(createTable.tableName),
291
+ catch: cause => new IndexedDbDatabaseError({
292
+ reason: "TransactionError",
293
+ cause
294
+ })
295
+ });
296
+ });
297
+ migration.createIndex = Effect.fnUntraced(function* (table, indexName, options) {
298
+ const store = transaction.objectStore(table);
299
+ const sourceTable = tables.get(table);
300
+ const keyPath = yield* Effect.fromNullishOr(sourceTable.indexes[indexName]).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
301
+ reason: "MissingIndex",
302
+ cause
303
+ })));
304
+ return yield* Effect.try({
305
+ try: () => store.createIndex(indexName, keyPath, options),
306
+ catch: cause => new IndexedDbDatabaseError({
307
+ reason: "TransactionError",
308
+ cause
309
+ })
310
+ });
311
+ });
312
+ migration.deleteIndex = (table, indexName) => Effect.try({
313
+ try: () => transaction.objectStore(table).deleteIndex(indexName),
314
+ catch: cause => new IndexedDbDatabaseError({
315
+ reason: "TransactionError",
316
+ cause
317
+ })
318
+ });
319
+ return migration;
320
+ };
321
+ //# sourceMappingURL=IndexedDbDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbDatabase.js","names":["Context","Data","Effect","Fiber","Inspectable","Layer","MutableRef","Pipeable","Semaphore","Reactivity","Utils","IndexedDb","IndexedDbQueryBuilder","TypeId","ErrorTypeId","YieldableProto","Symbol","iterator","SingleShotGen","PipeInspectableProto","Prototype","BaseProto","toJSON","_id","CommonProto","_A","_","IndexedDbDatabaseError","TaggedError","message","reason","IndexedDbDatabase","Service","make","initialVersion","init","Initial","Object","assign","version","migrate","_tag","add","makeProto","fromVersion","previous","getQueryBuilder","gen","IDBKeyRange","database","reactivity","tables","asEffect","layer","databaseName","options","Migration","migration","effect","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":[]}