@instantdb/core 0.22.96-experimental.drewh-ts-target.20761590091.1 → 0.22.97-experimental.bump-next-cia.20761479934.1

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 (126) hide show
  1. package/dist/commonjs/Connection.js +51 -50
  2. package/dist/commonjs/Connection.js.map +1 -1
  3. package/dist/commonjs/InMemoryStorage.js +32 -13
  4. package/dist/commonjs/InMemoryStorage.js.map +1 -1
  5. package/dist/commonjs/IndexedDBStorage.js +217 -193
  6. package/dist/commonjs/IndexedDBStorage.js.map +1 -1
  7. package/dist/commonjs/InstantError.js +0 -1
  8. package/dist/commonjs/InstantError.js.map +1 -1
  9. package/dist/commonjs/Reactor.js +610 -566
  10. package/dist/commonjs/Reactor.js.map +1 -1
  11. package/dist/commonjs/StorageAPI.js +70 -51
  12. package/dist/commonjs/StorageAPI.js.map +1 -1
  13. package/dist/commonjs/SyncTable.js +81 -68
  14. package/dist/commonjs/SyncTable.js.map +1 -1
  15. package/dist/commonjs/WindowNetworkListener.js +13 -2
  16. package/dist/commonjs/WindowNetworkListener.js.map +1 -1
  17. package/dist/commonjs/__types__/fieldsTypeTest.js +16 -8
  18. package/dist/commonjs/__types__/fieldsTypeTest.js.map +1 -1
  19. package/dist/commonjs/__types__/useDatesTypeTest.js +6 -3
  20. package/dist/commonjs/__types__/useDatesTypeTest.js.map +1 -1
  21. package/dist/commonjs/authAPI.js +79 -62
  22. package/dist/commonjs/authAPI.js.map +1 -1
  23. package/dist/commonjs/createRouteHandler.js +15 -5
  24. package/dist/commonjs/createRouteHandler.js.map +1 -1
  25. package/dist/commonjs/datalog.js +1 -1
  26. package/dist/commonjs/datalog.js.map +1 -1
  27. package/dist/commonjs/devtool.js +8 -26
  28. package/dist/commonjs/devtool.js.map +1 -1
  29. package/dist/commonjs/framework.d.ts.map +1 -1
  30. package/dist/commonjs/framework.js +152 -142
  31. package/dist/commonjs/framework.js.map +1 -1
  32. package/dist/commonjs/index.js +190 -204
  33. package/dist/commonjs/index.js.map +1 -1
  34. package/dist/commonjs/instaml.js +30 -44
  35. package/dist/commonjs/instaml.js.map +1 -1
  36. package/dist/commonjs/instaql.js +33 -25
  37. package/dist/commonjs/instaql.js.map +1 -1
  38. package/dist/commonjs/parseSchemaFromJSON.js +7 -6
  39. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -1
  40. package/dist/commonjs/presence.js +8 -7
  41. package/dist/commonjs/presence.js.map +1 -1
  42. package/dist/commonjs/queryValidation.js +2 -1
  43. package/dist/commonjs/queryValidation.js.map +1 -1
  44. package/dist/commonjs/schema.js +6 -8
  45. package/dist/commonjs/schema.js.map +1 -1
  46. package/dist/commonjs/schemaTypes.js +3 -22
  47. package/dist/commonjs/schemaTypes.js.map +1 -1
  48. package/dist/commonjs/store.js +38 -29
  49. package/dist/commonjs/store.js.map +1 -1
  50. package/dist/commonjs/transactionValidation.js +2 -1
  51. package/dist/commonjs/transactionValidation.js.map +1 -1
  52. package/dist/commonjs/utils/Deferred.js +0 -3
  53. package/dist/commonjs/utils/Deferred.js.map +1 -1
  54. package/dist/commonjs/utils/PersistedObject.js +233 -216
  55. package/dist/commonjs/utils/PersistedObject.js.map +1 -1
  56. package/dist/commonjs/utils/fetch.js +19 -9
  57. package/dist/commonjs/utils/fetch.js.map +1 -1
  58. package/dist/commonjs/utils/linkIndex.js +4 -2
  59. package/dist/commonjs/utils/linkIndex.js.map +1 -1
  60. package/dist/commonjs/utils/object.js +1 -1
  61. package/dist/commonjs/utils/object.js.map +1 -1
  62. package/dist/esm/Connection.js +51 -50
  63. package/dist/esm/Connection.js.map +1 -1
  64. package/dist/esm/InMemoryStorage.js +32 -13
  65. package/dist/esm/InMemoryStorage.js.map +1 -1
  66. package/dist/esm/IndexedDBStorage.js +217 -193
  67. package/dist/esm/IndexedDBStorage.js.map +1 -1
  68. package/dist/esm/InstantError.js +0 -1
  69. package/dist/esm/InstantError.js.map +1 -1
  70. package/dist/esm/Reactor.js +610 -566
  71. package/dist/esm/Reactor.js.map +1 -1
  72. package/dist/esm/StorageAPI.js +70 -51
  73. package/dist/esm/StorageAPI.js.map +1 -1
  74. package/dist/esm/SyncTable.js +81 -68
  75. package/dist/esm/SyncTable.js.map +1 -1
  76. package/dist/esm/WindowNetworkListener.js +13 -2
  77. package/dist/esm/WindowNetworkListener.js.map +1 -1
  78. package/dist/esm/__types__/fieldsTypeTest.js +16 -8
  79. package/dist/esm/__types__/fieldsTypeTest.js.map +1 -1
  80. package/dist/esm/__types__/useDatesTypeTest.js +6 -3
  81. package/dist/esm/__types__/useDatesTypeTest.js.map +1 -1
  82. package/dist/esm/authAPI.js +79 -62
  83. package/dist/esm/authAPI.js.map +1 -1
  84. package/dist/esm/createRouteHandler.js +15 -5
  85. package/dist/esm/createRouteHandler.js.map +1 -1
  86. package/dist/esm/datalog.js +1 -1
  87. package/dist/esm/datalog.js.map +1 -1
  88. package/dist/esm/devtool.js +8 -26
  89. package/dist/esm/devtool.js.map +1 -1
  90. package/dist/esm/framework.d.ts.map +1 -1
  91. package/dist/esm/framework.js +152 -142
  92. package/dist/esm/framework.js.map +1 -1
  93. package/dist/esm/index.js +190 -204
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/instaml.js +30 -44
  96. package/dist/esm/instaml.js.map +1 -1
  97. package/dist/esm/instaql.js +33 -25
  98. package/dist/esm/instaql.js.map +1 -1
  99. package/dist/esm/parseSchemaFromJSON.js +7 -6
  100. package/dist/esm/parseSchemaFromJSON.js.map +1 -1
  101. package/dist/esm/presence.js +8 -7
  102. package/dist/esm/presence.js.map +1 -1
  103. package/dist/esm/queryValidation.js +2 -1
  104. package/dist/esm/queryValidation.js.map +1 -1
  105. package/dist/esm/schema.js +6 -8
  106. package/dist/esm/schema.js.map +1 -1
  107. package/dist/esm/schemaTypes.js +3 -22
  108. package/dist/esm/schemaTypes.js.map +1 -1
  109. package/dist/esm/store.js +38 -29
  110. package/dist/esm/store.js.map +1 -1
  111. package/dist/esm/transactionValidation.js +2 -1
  112. package/dist/esm/transactionValidation.js.map +1 -1
  113. package/dist/esm/utils/Deferred.js +0 -3
  114. package/dist/esm/utils/Deferred.js.map +1 -1
  115. package/dist/esm/utils/PersistedObject.js +233 -216
  116. package/dist/esm/utils/PersistedObject.js.map +1 -1
  117. package/dist/esm/utils/fetch.js +19 -9
  118. package/dist/esm/utils/fetch.js.map +1 -1
  119. package/dist/esm/utils/linkIndex.js +4 -2
  120. package/dist/esm/utils/linkIndex.js.map +1 -1
  121. package/dist/esm/utils/object.js +1 -1
  122. package/dist/esm/utils/object.js.map +1 -1
  123. package/dist/standalone/index.js +2367 -2610
  124. package/dist/standalone/index.umd.cjs +3 -3
  125. package/package.json +2 -2
  126. package/src/framework.ts +1 -0
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  const PersistedObject_ts_1 = require("./utils/PersistedObject.js");
4
13
  // Any time these are updates to the data format or new stores are added,
@@ -17,132 +26,142 @@ function logErrorCb(source) {
17
26
  console.error('Error in IndexedDB event', { source, event });
18
27
  };
19
28
  }
20
- async function existingDb(name) {
21
- return new Promise((resolve) => {
22
- const request = indexedDB.open(name);
23
- request.onerror = (_event) => {
24
- resolve(null);
25
- };
26
- request.onsuccess = (event) => {
27
- const target = event.target;
28
- const db = target.result;
29
- resolve(db);
30
- };
31
- request.onupgradeneeded = (event) => {
32
- const target = event.target;
33
- target.transaction?.abort();
34
- resolve(null);
35
- };
29
+ function existingDb(name) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ return new Promise((resolve) => {
32
+ const request = indexedDB.open(name);
33
+ request.onerror = (_event) => {
34
+ resolve(null);
35
+ };
36
+ request.onsuccess = (event) => {
37
+ const target = event.target;
38
+ const db = target.result;
39
+ resolve(db);
40
+ };
41
+ request.onupgradeneeded = (event) => {
42
+ var _a;
43
+ const target = event.target;
44
+ (_a = target.transaction) === null || _a === void 0 ? void 0 : _a.abort();
45
+ resolve(null);
46
+ };
47
+ });
36
48
  });
37
49
  }
38
- async function upgradeQuerySubs5To6(hash, value, querySubStore) {
39
- const subs =
40
- // Backwards compatibility for older versions where we JSON.stringified before storing
41
- typeof value === 'string' ? JSON.parse(value) : value;
42
- if (!subs) {
43
- return;
44
- }
45
- const putReqs = new Set();
46
- return new Promise((resolve, reject) => {
47
- const objects = {};
48
- for (const [hash, v] of Object.entries(subs)) {
49
- const value = typeof v === 'string' ? JSON.parse(v) : v;
50
- if (value.lastAccessed) {
51
- const objectMeta = {
52
- createdAt: value.lastAccessed,
53
- updatedAt: value.lastAccessed,
54
- size: value.result?.store?.triples?.length ?? 0,
50
+ function upgradeQuerySubs5To6(hash, value, querySubStore) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const subs =
53
+ // Backwards compatibility for older versions where we JSON.stringified before storing
54
+ typeof value === 'string' ? JSON.parse(value) : value;
55
+ if (!subs) {
56
+ return;
57
+ }
58
+ const putReqs = new Set();
59
+ return new Promise((resolve, reject) => {
60
+ var _a, _b, _c, _d;
61
+ const objects = {};
62
+ for (const [hash, v] of Object.entries(subs)) {
63
+ const value = typeof v === 'string' ? JSON.parse(v) : v;
64
+ if (value.lastAccessed) {
65
+ const objectMeta = {
66
+ createdAt: value.lastAccessed,
67
+ updatedAt: value.lastAccessed,
68
+ size: (_d = (_c = (_b = (_a = value.result) === null || _a === void 0 ? void 0 : _a.store) === null || _b === void 0 ? void 0 : _b.triples) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
69
+ };
70
+ objects[hash] = objectMeta;
71
+ }
72
+ const putReq = querySubStore.put(value, hash);
73
+ putReqs.add(putReq);
74
+ }
75
+ const meta = { objects };
76
+ const metaPutReq = querySubStore.put(meta, PersistedObject_ts_1.META_KEY);
77
+ putReqs.add(metaPutReq);
78
+ for (const r of putReqs) {
79
+ r.onsuccess = () => {
80
+ putReqs.delete(r);
81
+ if (putReqs.size === 0) {
82
+ resolve();
83
+ }
84
+ };
85
+ r.onerror = (event) => {
86
+ logErrorCb(`Move ${hash} to querySubs store failed`);
87
+ reject(event);
55
88
  };
56
- objects[hash] = objectMeta;
57
89
  }
58
- const putReq = querySubStore.put(value, hash);
59
- putReqs.add(putReq);
90
+ });
91
+ });
92
+ }
93
+ function moveKvEntry5To6(k, value, kvStore) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ const request = kvStore.put(value, k);
96
+ return new Promise((resolve, reject) => {
97
+ request.onsuccess = () => resolve();
98
+ request.onerror = (event) => reject(event);
99
+ });
100
+ });
101
+ }
102
+ function upgrade5To6(appId, v6Db) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ const v5db = yield existingDb(`instant_${appId}_5`);
105
+ if (!v5db) {
106
+ return;
60
107
  }
61
- const meta = { objects };
62
- const metaPutReq = querySubStore.put(meta, PersistedObject_ts_1.META_KEY);
63
- putReqs.add(metaPutReq);
64
- for (const r of putReqs) {
65
- r.onsuccess = () => {
66
- putReqs.delete(r);
67
- if (putReqs.size === 0) {
68
- resolve();
108
+ const data = yield new Promise((resolve, reject) => {
109
+ const v5Tx = v5db.transaction(['kv'], 'readonly');
110
+ const objectStore = v5Tx.objectStore('kv');
111
+ const cursorReq = objectStore.openCursor();
112
+ cursorReq.onerror = (event) => {
113
+ reject(event);
114
+ };
115
+ const data = [];
116
+ cursorReq.onsuccess = () => {
117
+ const cursor = cursorReq.result;
118
+ if (cursor) {
119
+ const key = cursor.key;
120
+ const value = cursor.value;
121
+ data.push([key, value]);
122
+ cursor.continue();
123
+ }
124
+ else {
125
+ resolve(data);
69
126
  }
70
127
  };
71
- r.onerror = (event) => {
72
- logErrorCb(`Move ${hash} to querySubs store failed`);
128
+ cursorReq.onerror = (event) => {
73
129
  reject(event);
74
130
  };
75
- }
76
- });
77
- }
78
- async function moveKvEntry5To6(k, value, kvStore) {
79
- const request = kvStore.put(value, k);
80
- return new Promise((resolve, reject) => {
81
- request.onsuccess = () => resolve();
82
- request.onerror = (event) => reject(event);
83
- });
84
- }
85
- async function upgrade5To6(appId, v6Db) {
86
- const v5db = await existingDb(`instant_${appId}_5`);
87
- if (!v5db) {
88
- return;
89
- }
90
- const data = await new Promise((resolve, reject) => {
91
- const v5Tx = v5db.transaction(['kv'], 'readonly');
92
- const objectStore = v5Tx.objectStore('kv');
93
- const cursorReq = objectStore.openCursor();
94
- cursorReq.onerror = (event) => {
95
- reject(event);
96
- };
97
- const data = [];
98
- cursorReq.onsuccess = () => {
99
- const cursor = cursorReq.result;
100
- if (cursor) {
101
- const key = cursor.key;
102
- const value = cursor.value;
103
- data.push([key, value]);
104
- cursor.continue();
105
- }
106
- else {
107
- resolve(data);
108
- }
109
- };
110
- cursorReq.onerror = (event) => {
111
- reject(event);
112
- };
113
- });
114
- const v6Tx = v6Db.transaction(['kv', 'querySubs'], 'readwrite');
115
- const kvStore = v6Tx.objectStore('kv');
116
- const querySubStore = v6Tx.objectStore('querySubs');
117
- const promises = [];
118
- const kvMeta = { objects: {} };
119
- for (const [key, value] of data) {
120
- switch (key) {
121
- case 'querySubs': {
122
- const p = upgradeQuerySubs5To6(key, value, querySubStore);
123
- promises.push(p);
124
- break;
125
- }
126
- default: {
127
- const p = moveKvEntry5To6(key, value, kvStore);
128
- promises.push(p);
129
- const objectMeta = {
130
- createdAt: Date.now(),
131
- updatedAt: Date.now(),
132
- size: 0,
133
- };
134
- kvMeta.objects[key] = objectMeta;
135
- break;
131
+ });
132
+ const v6Tx = v6Db.transaction(['kv', 'querySubs'], 'readwrite');
133
+ const kvStore = v6Tx.objectStore('kv');
134
+ const querySubStore = v6Tx.objectStore('querySubs');
135
+ const promises = [];
136
+ const kvMeta = { objects: {} };
137
+ for (const [key, value] of data) {
138
+ switch (key) {
139
+ case 'querySubs': {
140
+ const p = upgradeQuerySubs5To6(key, value, querySubStore);
141
+ promises.push(p);
142
+ break;
143
+ }
144
+ default: {
145
+ const p = moveKvEntry5To6(key, value, kvStore);
146
+ promises.push(p);
147
+ const objectMeta = {
148
+ createdAt: Date.now(),
149
+ updatedAt: Date.now(),
150
+ size: 0,
151
+ };
152
+ kvMeta.objects[key] = objectMeta;
153
+ break;
154
+ }
136
155
  }
137
156
  }
138
- }
139
- const p = moveKvEntry5To6(PersistedObject_ts_1.META_KEY, kvMeta, kvStore);
140
- promises.push(p);
141
- await Promise.all(promises);
142
- await new Promise((resolve, reject) => {
143
- v6Tx.oncomplete = (e) => resolve(e);
144
- v6Tx.onerror = (e) => reject(e);
145
- v6Tx.onabort = (e) => reject(e);
157
+ const p = moveKvEntry5To6(PersistedObject_ts_1.META_KEY, kvMeta, kvStore);
158
+ promises.push(p);
159
+ yield Promise.all(promises);
160
+ yield new Promise((resolve, reject) => {
161
+ v6Tx.oncomplete = (e) => resolve(e);
162
+ v6Tx.onerror = (e) => reject(e);
163
+ v6Tx.onabort = (e) => reject(e);
164
+ });
146
165
  });
147
166
  }
148
167
  // We create many IndexedDBStorage instances that talk to the same
@@ -151,11 +170,6 @@ async function upgrade5To6(appId, v6Db) {
151
170
  // we start writing.
152
171
  const upgradePromises = new Map();
153
172
  class IndexedDBStorage extends PersistedObject_ts_1.StorageInterface {
154
- dbName;
155
- _storeName;
156
- _appId;
157
- _prefix;
158
- _dbPromise;
159
173
  constructor(appId, storeName) {
160
174
  super(appId, storeName);
161
175
  this.dbName = `instant_${appId}_${version}`;
@@ -205,91 +219,101 @@ class IndexedDBStorage extends PersistedObject_ts_1.StorageInterface {
205
219
  }
206
220
  }
207
221
  }
208
- async getItem(k) {
209
- const db = await this._dbPromise;
210
- return new Promise((resolve, reject) => {
211
- const transaction = db.transaction([this._storeName], 'readonly');
212
- const objectStore = transaction.objectStore(this._storeName);
213
- const request = objectStore.get(k);
214
- request.onerror = (event) => {
215
- reject(event);
216
- };
217
- request.onsuccess = (_event) => {
218
- if (request.result) {
219
- resolve(request.result);
220
- }
221
- else {
222
- resolve(null);
223
- }
224
- };
225
- });
226
- }
227
- async setItem(k, v) {
228
- const db = await this._dbPromise;
229
- return new Promise((resolve, reject) => {
230
- const transaction = db.transaction([this._storeName], 'readwrite');
231
- const objectStore = transaction.objectStore(this._storeName);
232
- const request = objectStore.put(v, k);
233
- request.onerror = (event) => {
234
- reject(event);
235
- };
236
- request.onsuccess = (_event) => {
237
- resolve();
238
- };
222
+ getItem(k) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ const db = yield this._dbPromise;
225
+ return new Promise((resolve, reject) => {
226
+ const transaction = db.transaction([this._storeName], 'readonly');
227
+ const objectStore = transaction.objectStore(this._storeName);
228
+ const request = objectStore.get(k);
229
+ request.onerror = (event) => {
230
+ reject(event);
231
+ };
232
+ request.onsuccess = (_event) => {
233
+ if (request.result) {
234
+ resolve(request.result);
235
+ }
236
+ else {
237
+ resolve(null);
238
+ }
239
+ };
240
+ });
239
241
  });
240
242
  }
241
- // Performs all writes in a transaction so that all succeed or none succeed.
242
- async multiSet(keyValuePairs) {
243
- const db = await this._dbPromise;
244
- return new Promise((resolve, reject) => {
245
- const transaction = db.transaction([this._storeName], 'readwrite');
246
- const objectStore = transaction.objectStore(this._storeName);
247
- const requests = new Set();
248
- for (const [k, v] of keyValuePairs) {
243
+ setItem(k, v) {
244
+ return __awaiter(this, void 0, void 0, function* () {
245
+ const db = yield this._dbPromise;
246
+ return new Promise((resolve, reject) => {
247
+ const transaction = db.transaction([this._storeName], 'readwrite');
248
+ const objectStore = transaction.objectStore(this._storeName);
249
249
  const request = objectStore.put(v, k);
250
- requests.add(request);
251
- }
252
- for (const request of requests) {
253
250
  request.onerror = (event) => {
254
- transaction.abort();
255
251
  reject(event);
256
252
  };
257
253
  request.onsuccess = (_event) => {
258
- requests.delete(request);
259
- // Last request to finish resolves the transaction
260
- if (requests.size === 0) {
261
- resolve();
262
- }
254
+ resolve();
263
255
  };
264
- }
256
+ });
265
257
  });
266
258
  }
267
- async removeItem(k) {
268
- const db = await this._dbPromise;
269
- return new Promise((resolve, reject) => {
270
- const transaction = db.transaction([this._storeName], 'readwrite');
271
- const objectStore = transaction.objectStore(this._storeName);
272
- const request = objectStore.delete(k);
273
- request.onerror = (event) => {
274
- reject(event);
275
- };
276
- request.onsuccess = (_event) => {
277
- resolve();
278
- };
259
+ // Performs all writes in a transaction so that all succeed or none succeed.
260
+ multiSet(keyValuePairs) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ const db = yield this._dbPromise;
263
+ return new Promise((resolve, reject) => {
264
+ const transaction = db.transaction([this._storeName], 'readwrite');
265
+ const objectStore = transaction.objectStore(this._storeName);
266
+ const requests = new Set();
267
+ for (const [k, v] of keyValuePairs) {
268
+ const request = objectStore.put(v, k);
269
+ requests.add(request);
270
+ }
271
+ for (const request of requests) {
272
+ request.onerror = (event) => {
273
+ transaction.abort();
274
+ reject(event);
275
+ };
276
+ request.onsuccess = (_event) => {
277
+ requests.delete(request);
278
+ // Last request to finish resolves the transaction
279
+ if (requests.size === 0) {
280
+ resolve();
281
+ }
282
+ };
283
+ }
284
+ });
279
285
  });
280
286
  }
281
- async getAllKeys() {
282
- const db = await this._dbPromise;
283
- return new Promise((resolve, reject) => {
284
- const transaction = db.transaction([this._storeName], 'readonly');
285
- const objectStore = transaction.objectStore(this._storeName);
286
- const request = objectStore.getAllKeys();
287
- request.onerror = (event) => {
288
- reject(event);
289
- };
290
- request.onsuccess = (_event) => {
291
- resolve(request.result.filter((x) => typeof x === 'string'));
292
- };
287
+ removeItem(k) {
288
+ return __awaiter(this, void 0, void 0, function* () {
289
+ const db = yield this._dbPromise;
290
+ return new Promise((resolve, reject) => {
291
+ const transaction = db.transaction([this._storeName], 'readwrite');
292
+ const objectStore = transaction.objectStore(this._storeName);
293
+ const request = objectStore.delete(k);
294
+ request.onerror = (event) => {
295
+ reject(event);
296
+ };
297
+ request.onsuccess = (_event) => {
298
+ resolve();
299
+ };
300
+ });
301
+ });
302
+ }
303
+ getAllKeys() {
304
+ return __awaiter(this, void 0, void 0, function* () {
305
+ const db = yield this._dbPromise;
306
+ return new Promise((resolve, reject) => {
307
+ const transaction = db.transaction([this._storeName], 'readonly');
308
+ const objectStore = transaction.objectStore(this._storeName);
309
+ const request = objectStore.getAllKeys();
310
+ request.onerror = (event) => {
311
+ reject(event);
312
+ };
313
+ request.onsuccess = (_event) => {
314
+ resolve(request.result.filter((x) => typeof x === 'string'));
315
+ };
316
+ });
293
317
  });
294
318
  }
295
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedDBStorage.js","sourceRoot":"","sources":["../../src/IndexedDBStorage.ts"],"names":[],"mappings":";;AAAA,mEAMoC;AAEpC,yEAAyE;AACzE,+BAA+B;AAC/B,yDAAyD;AACzD,wCAAwC;AACxC,yDAAyD;AACzD,+DAA+D;AAC/D,iEAAiE;AACjE,YAAY;AACZ,MAAM,OAAO,GAAG,CAAC,CAAC;AAElB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAO5D,MAAM,gBAAgB,GAAU,IAAyB,CAAC;AAE1D,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,SAAS,QAAQ,CAAC,KAAK;QAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;YAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;YAChD,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,KAAU,EACV,aAA6B;IAE7B,MAAM,IAAI;IACR,sFAAsF;IACtF,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAiC,IAAI,GAAG,EAAE,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAe;oBAC7B,SAAS,EAAE,KAAK,CAAC,YAAY;oBAC7B,SAAS,EAAE,KAAK,CAAC,YAAY;oBAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;iBAChD,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YAC7B,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAiB,EAAE,OAAO,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,6BAAQ,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE;gBACjB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBACpB,UAAU,CAAC,QAAQ,IAAI,4BAA4B,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,CAAS,EACT,KAAU,EACV,OAAuB;IAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAAiB;IACzD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAyB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3C,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,IAAI,GAAyB,EAAE,CAAC;QACtC,SAAS,CAAC,SAAS,GAAG,GAAG,EAAE;YACzB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,CAAC,GAAa,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACxB,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QACF,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,CAAC,GAAG,eAAe,CAAC,GAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACzD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,UAAU,GAAe;oBAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,CAAC;iBACR,CAAC;gBACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;gBACjC,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,eAAe,CAAC,6BAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kEAAkE;AAClE,yEAAyE;AACzE,qEAAqE;AACrE,oBAAoB;AACpB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AAElC,MAAqB,gBAAiB,SAAQ,qCAAgB;IAC5D,MAAM,CAAS;IACf,UAAU,CAA4B;IACtC,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,UAAU,CAAuB;IAEjC,YAAY,KAAa,EAAE,SAAoC;QAC7D,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,WAAW,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;gBAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;gBACzB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,IAAI,CAAC,CAAC,EAAE,CAAC;wBACP,OAAO,CAAC,EAAE,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wBACjD,UAAU,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACH,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC;YAEF,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;gBAClC,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAA4B;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACrB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,CAAM;QAC7B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,QAAQ,CAAC,aAAmC;QAChD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC1B,WAAW,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC7B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACzB,kDAAkD;oBAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACxB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAS;QACxB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1JD,mCA0JC","sourcesContent":["import {\n Meta,\n META_KEY,\n ObjectMeta,\n StorageInterface,\n StorageInterfaceStoreName,\n} from './utils/PersistedObject.ts';\n\n// Any time these are updates to the data format or new stores are added,\n// the version must be updated.\n// onupgradeneeded will be called, which is where you can\n// move objects from one idb to another.\n// We create a new IDB for each version change instead of\n// using their built-in versioning because they have no ability\n// to roll back and if multiple tabs are active, then you'll just\n// be stuck.\nconst version = 6;\n\nconst storeNames = ['kv', 'querySubs', 'syncSubs'] as const;\n\n// Check that we're not missing a store name in storeNames\ntype MissingStoreNames = Exclude<\n StorageInterfaceStoreName,\n (typeof storeNames)[number]\n>;\nconst _exhaustiveCheck: never = null as MissingStoreNames;\n\nfunction logErrorCb(source: string) {\n return function logError(event) {\n console.error('Error in IndexedDB event', { source, event });\n };\n}\n\nasync function existingDb(name: string): Promise<IDBDatabase | null> {\n return new Promise((resolve) => {\n const request = indexedDB.open(name);\n\n request.onerror = (_event) => {\n resolve(null);\n };\n\n request.onsuccess = (event) => {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n resolve(db);\n };\n\n request.onupgradeneeded = (event) => {\n const target = event.target as IDBOpenDBRequest;\n target.transaction?.abort();\n resolve(null);\n };\n });\n}\n\nasync function upgradeQuerySubs5To6(\n hash: string,\n value: any,\n querySubStore: IDBObjectStore,\n): Promise<void> {\n const subs =\n // Backwards compatibility for older versions where we JSON.stringified before storing\n typeof value === 'string' ? JSON.parse(value) : value;\n if (!subs) {\n return;\n }\n const putReqs: Set<IDBRequest<IDBValidKey>> = new Set();\n return new Promise((resolve, reject) => {\n const objects = {};\n for (const [hash, v] of Object.entries(subs)) {\n const value = typeof v === 'string' ? JSON.parse(v) : v;\n if (value.lastAccessed) {\n const objectMeta: ObjectMeta = {\n createdAt: value.lastAccessed,\n updatedAt: value.lastAccessed,\n size: value.result?.store?.triples?.length ?? 0,\n };\n objects[hash] = objectMeta;\n }\n const putReq = querySubStore.put(value, hash);\n putReqs.add(putReq);\n }\n const meta: Meta<string> = { objects };\n const metaPutReq = querySubStore.put(meta, META_KEY);\n putReqs.add(metaPutReq);\n for (const r of putReqs) {\n r.onsuccess = () => {\n putReqs.delete(r);\n if (putReqs.size === 0) {\n resolve();\n }\n };\n r.onerror = (event) => {\n logErrorCb(`Move ${hash} to querySubs store failed`);\n reject(event);\n };\n }\n });\n}\n\nasync function moveKvEntry5To6(\n k: string,\n value: any,\n kvStore: IDBObjectStore,\n): Promise<void> {\n const request = kvStore.put(value, k);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve();\n request.onerror = (event) => reject(event);\n });\n}\n\nasync function upgrade5To6(appId: string, v6Db: IDBDatabase): Promise<void> {\n const v5db = await existingDb(`instant_${appId}_5`);\n if (!v5db) {\n return;\n }\n\n const data: Array<[string, any]> = await new Promise((resolve, reject) => {\n const v5Tx = v5db.transaction(['kv'], 'readonly');\n const objectStore = v5Tx.objectStore('kv');\n const cursorReq = objectStore.openCursor();\n cursorReq.onerror = (event) => {\n reject(event);\n };\n const data: Array<[string, any]> = [];\n cursorReq.onsuccess = () => {\n const cursor = cursorReq.result;\n if (cursor) {\n const key = cursor.key as string;\n const value = cursor.value;\n data.push([key, value]);\n cursor.continue();\n } else {\n resolve(data);\n }\n };\n cursorReq.onerror = (event) => {\n reject(event);\n };\n });\n\n const v6Tx = v6Db.transaction(['kv', 'querySubs'], 'readwrite');\n\n const kvStore = v6Tx.objectStore('kv');\n const querySubStore = v6Tx.objectStore('querySubs');\n\n const promises: Promise<any>[] = [];\n const kvMeta: Meta<string> = { objects: {} };\n for (const [key, value] of data) {\n switch (key) {\n case 'querySubs': {\n const p = upgradeQuerySubs5To6(key, value, querySubStore);\n promises.push(p);\n break;\n }\n default: {\n const p = moveKvEntry5To6(key as string, value, kvStore);\n promises.push(p);\n const objectMeta: ObjectMeta = {\n createdAt: Date.now(),\n updatedAt: Date.now(),\n size: 0,\n };\n kvMeta.objects[key] = objectMeta;\n break;\n }\n }\n }\n const p = moveKvEntry5To6(META_KEY, kvMeta, kvStore);\n promises.push(p);\n await Promise.all(promises);\n await new Promise((resolve, reject) => {\n v6Tx.oncomplete = (e) => resolve(e);\n v6Tx.onerror = (e) => reject(e);\n v6Tx.onabort = (e) => reject(e);\n });\n}\n\n// We create many IndexedDBStorage instances that talk to the same\n// underlying db, but we only get one `onupgradeneeded` event. This holds\n// the upgrade promises so that we wait until upgrade finishes before\n// we start writing.\nconst upgradePromises = new Map();\n\nexport default class IndexedDBStorage extends StorageInterface {\n dbName: string;\n _storeName: StorageInterfaceStoreName;\n _appId: string;\n _prefix: string;\n _dbPromise: Promise<IDBDatabase>;\n\n constructor(appId: string, storeName: StorageInterfaceStoreName) {\n super(appId, storeName);\n this.dbName = `instant_${appId}_${version}`;\n this._storeName = storeName;\n this._appId = appId;\n this._dbPromise = this._init();\n }\n\n _init(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n let requiresUpgrade = false;\n const request = indexedDB.open(this.dbName, 1);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (event) => {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n if (!requiresUpgrade) {\n const p = upgradePromises.get(this.dbName);\n if (!p) {\n resolve(db);\n } else {\n p.then(() => resolve(db)).catch(() => resolve(db));\n }\n } else {\n const p = upgrade5To6(this._appId, db).catch((e) => {\n logErrorCb('Error upgrading store from version 5 to 6.')(e);\n });\n upgradePromises.set(this.dbName, p);\n p.then(() => resolve(db)).catch(() => resolve(db));\n }\n };\n\n request.onupgradeneeded = (event) => {\n requiresUpgrade = true;\n this._upgradeStore(event);\n };\n });\n }\n\n _upgradeStore(event: IDBVersionChangeEvent) {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n for (const storeName of storeNames) {\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n }\n }\n\n async getItem(k: string): Promise<any> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readonly');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.get(k);\n request.onerror = (event) => {\n reject(event);\n };\n request.onsuccess = (_event) => {\n if (request.result) {\n resolve(request.result);\n } else {\n resolve(null);\n }\n };\n });\n }\n\n async setItem(k: string, v: any): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.put(v, k);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (_event) => {\n resolve();\n };\n });\n }\n\n // Performs all writes in a transaction so that all succeed or none succeed.\n async multiSet(keyValuePairs: Array<[string, any]>): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const requests: Set<IDBRequest<IDBValidKey>> = new Set();\n for (const [k, v] of keyValuePairs) {\n const request = objectStore.put(v, k);\n requests.add(request);\n }\n\n for (const request of requests) {\n request.onerror = (event) => {\n transaction.abort();\n reject(event);\n };\n request.onsuccess = (_event) => {\n requests.delete(request);\n // Last request to finish resolves the transaction\n if (requests.size === 0) {\n resolve();\n }\n };\n }\n });\n }\n\n async removeItem(k: string): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.delete(k);\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (_event) => {\n resolve();\n };\n });\n }\n\n async getAllKeys(): Promise<string[]> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readonly');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.getAllKeys();\n request.onerror = (event) => {\n reject(event);\n };\n request.onsuccess = (_event) => {\n resolve(request.result.filter((x) => typeof x === 'string'));\n };\n });\n }\n}\n"]}
1
+ {"version":3,"file":"IndexedDBStorage.js","sourceRoot":"","sources":["../../src/IndexedDBStorage.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mEAMoC;AAEpC,yEAAyE;AACzE,+BAA+B;AAC/B,yDAAyD;AACzD,wCAAwC;AACxC,yDAAyD;AACzD,+DAA+D;AAC/D,iEAAiE;AACjE,YAAY;AACZ,MAAM,OAAO,GAAG,CAAC,CAAC;AAElB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAO5D,MAAM,gBAAgB,GAAU,IAAyB,CAAC;AAE1D,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,SAAS,QAAQ,CAAC,KAAK;QAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAED,SAAe,UAAU,CAAC,IAAY;;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErC,OAAO,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;gBAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;gBACzB,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC,CAAC;YAEF,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;;gBAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;gBAChD,MAAA,MAAM,CAAC,WAAW,0CAAE,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAe,oBAAoB,CACjC,IAAY,EACZ,KAAU,EACV,aAA6B;;QAE7B,MAAM,IAAI;QACR,sFAAsF;QACtF,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAiC,IAAI,GAAG,EAAE,CAAC;QACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACrC,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvB,MAAM,UAAU,GAAe;wBAC7B,SAAS,EAAE,KAAK,CAAC,YAAY;wBAC7B,SAAS,EAAE,KAAK,CAAC,YAAY;wBAC7B,IAAI,EAAE,MAAA,MAAA,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,KAAK,0CAAE,OAAO,0CAAE,MAAM,mCAAI,CAAC;qBAChD,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBAC7B,CAAC;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,IAAI,GAAiB,EAAE,OAAO,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,6BAAQ,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE;oBACjB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAClB,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBACF,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBACpB,UAAU,CAAC,QAAQ,IAAI,4BAA4B,CAAC,CAAC;oBACrD,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAe,eAAe,CAC5B,CAAS,EACT,KAAU,EACV,OAAuB;;QAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAe,WAAW,CAAC,KAAa,EAAE,IAAiB;;QACzD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAyB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,MAAM,IAAI,GAAyB,EAAE,CAAC;YACtC,SAAS,CAAC,SAAS,GAAG,GAAG,EAAE;gBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;gBAChC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,GAAG,MAAM,CAAC,GAAa,CAAC;oBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;oBACxB,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC;YACF,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;oBAC1D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,CAAC,GAAG,eAAe,CAAC,GAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBACzD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,MAAM,UAAU,GAAe;wBAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,IAAI,EAAE,CAAC;qBACR,CAAC;oBACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;oBACjC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,CAAC,GAAG,eAAe,CAAC,6BAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,kEAAkE;AAClE,yEAAyE;AACzE,qEAAqE;AACrE,oBAAoB;AACpB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AAElC,MAAqB,gBAAiB,SAAQ,qCAAgB;IAO5D,YAAY,KAAa,EAAE,SAAoC;QAC7D,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,WAAW,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;gBAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;gBACzB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,IAAI,CAAC,CAAC,EAAE,CAAC;wBACP,OAAO,CAAC,EAAE,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wBACjD,UAAU,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACH,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC;YAEF,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;gBAClC,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAA4B;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEK,OAAO,CAAC,CAAS;;YACrB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;gBAClE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACnB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,OAAO,CAAC,CAAS,EAAE,CAAM;;YAC7B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBAEF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC7B,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED,4EAA4E;IACtE,QAAQ,CAAC,aAAmC;;YAChD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;gBACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;oBACnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;gBAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;wBAC1B,WAAW,CAAC,KAAK,EAAE,CAAC;wBACpB,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC,CAAC;oBACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;wBAC7B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACzB,kDAAkD;wBAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;4BACxB,OAAO,EAAE,CAAC;wBACZ,CAAC;oBACH,CAAC,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,UAAU,CAAC,CAAS;;YACxB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBAEF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC7B,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,UAAU;;YACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;gBAClE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;CACF;AA1JD,mCA0JC","sourcesContent":["import {\n Meta,\n META_KEY,\n ObjectMeta,\n StorageInterface,\n StorageInterfaceStoreName,\n} from './utils/PersistedObject.ts';\n\n// Any time these are updates to the data format or new stores are added,\n// the version must be updated.\n// onupgradeneeded will be called, which is where you can\n// move objects from one idb to another.\n// We create a new IDB for each version change instead of\n// using their built-in versioning because they have no ability\n// to roll back and if multiple tabs are active, then you'll just\n// be stuck.\nconst version = 6;\n\nconst storeNames = ['kv', 'querySubs', 'syncSubs'] as const;\n\n// Check that we're not missing a store name in storeNames\ntype MissingStoreNames = Exclude<\n StorageInterfaceStoreName,\n (typeof storeNames)[number]\n>;\nconst _exhaustiveCheck: never = null as MissingStoreNames;\n\nfunction logErrorCb(source: string) {\n return function logError(event) {\n console.error('Error in IndexedDB event', { source, event });\n };\n}\n\nasync function existingDb(name: string): Promise<IDBDatabase | null> {\n return new Promise((resolve) => {\n const request = indexedDB.open(name);\n\n request.onerror = (_event) => {\n resolve(null);\n };\n\n request.onsuccess = (event) => {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n resolve(db);\n };\n\n request.onupgradeneeded = (event) => {\n const target = event.target as IDBOpenDBRequest;\n target.transaction?.abort();\n resolve(null);\n };\n });\n}\n\nasync function upgradeQuerySubs5To6(\n hash: string,\n value: any,\n querySubStore: IDBObjectStore,\n): Promise<void> {\n const subs =\n // Backwards compatibility for older versions where we JSON.stringified before storing\n typeof value === 'string' ? JSON.parse(value) : value;\n if (!subs) {\n return;\n }\n const putReqs: Set<IDBRequest<IDBValidKey>> = new Set();\n return new Promise((resolve, reject) => {\n const objects = {};\n for (const [hash, v] of Object.entries(subs)) {\n const value = typeof v === 'string' ? JSON.parse(v) : v;\n if (value.lastAccessed) {\n const objectMeta: ObjectMeta = {\n createdAt: value.lastAccessed,\n updatedAt: value.lastAccessed,\n size: value.result?.store?.triples?.length ?? 0,\n };\n objects[hash] = objectMeta;\n }\n const putReq = querySubStore.put(value, hash);\n putReqs.add(putReq);\n }\n const meta: Meta<string> = { objects };\n const metaPutReq = querySubStore.put(meta, META_KEY);\n putReqs.add(metaPutReq);\n for (const r of putReqs) {\n r.onsuccess = () => {\n putReqs.delete(r);\n if (putReqs.size === 0) {\n resolve();\n }\n };\n r.onerror = (event) => {\n logErrorCb(`Move ${hash} to querySubs store failed`);\n reject(event);\n };\n }\n });\n}\n\nasync function moveKvEntry5To6(\n k: string,\n value: any,\n kvStore: IDBObjectStore,\n): Promise<void> {\n const request = kvStore.put(value, k);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve();\n request.onerror = (event) => reject(event);\n });\n}\n\nasync function upgrade5To6(appId: string, v6Db: IDBDatabase): Promise<void> {\n const v5db = await existingDb(`instant_${appId}_5`);\n if (!v5db) {\n return;\n }\n\n const data: Array<[string, any]> = await new Promise((resolve, reject) => {\n const v5Tx = v5db.transaction(['kv'], 'readonly');\n const objectStore = v5Tx.objectStore('kv');\n const cursorReq = objectStore.openCursor();\n cursorReq.onerror = (event) => {\n reject(event);\n };\n const data: Array<[string, any]> = [];\n cursorReq.onsuccess = () => {\n const cursor = cursorReq.result;\n if (cursor) {\n const key = cursor.key as string;\n const value = cursor.value;\n data.push([key, value]);\n cursor.continue();\n } else {\n resolve(data);\n }\n };\n cursorReq.onerror = (event) => {\n reject(event);\n };\n });\n\n const v6Tx = v6Db.transaction(['kv', 'querySubs'], 'readwrite');\n\n const kvStore = v6Tx.objectStore('kv');\n const querySubStore = v6Tx.objectStore('querySubs');\n\n const promises: Promise<any>[] = [];\n const kvMeta: Meta<string> = { objects: {} };\n for (const [key, value] of data) {\n switch (key) {\n case 'querySubs': {\n const p = upgradeQuerySubs5To6(key, value, querySubStore);\n promises.push(p);\n break;\n }\n default: {\n const p = moveKvEntry5To6(key as string, value, kvStore);\n promises.push(p);\n const objectMeta: ObjectMeta = {\n createdAt: Date.now(),\n updatedAt: Date.now(),\n size: 0,\n };\n kvMeta.objects[key] = objectMeta;\n break;\n }\n }\n }\n const p = moveKvEntry5To6(META_KEY, kvMeta, kvStore);\n promises.push(p);\n await Promise.all(promises);\n await new Promise((resolve, reject) => {\n v6Tx.oncomplete = (e) => resolve(e);\n v6Tx.onerror = (e) => reject(e);\n v6Tx.onabort = (e) => reject(e);\n });\n}\n\n// We create many IndexedDBStorage instances that talk to the same\n// underlying db, but we only get one `onupgradeneeded` event. This holds\n// the upgrade promises so that we wait until upgrade finishes before\n// we start writing.\nconst upgradePromises = new Map();\n\nexport default class IndexedDBStorage extends StorageInterface {\n dbName: string;\n _storeName: StorageInterfaceStoreName;\n _appId: string;\n _prefix: string;\n _dbPromise: Promise<IDBDatabase>;\n\n constructor(appId: string, storeName: StorageInterfaceStoreName) {\n super(appId, storeName);\n this.dbName = `instant_${appId}_${version}`;\n this._storeName = storeName;\n this._appId = appId;\n this._dbPromise = this._init();\n }\n\n _init(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n let requiresUpgrade = false;\n const request = indexedDB.open(this.dbName, 1);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (event) => {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n if (!requiresUpgrade) {\n const p = upgradePromises.get(this.dbName);\n if (!p) {\n resolve(db);\n } else {\n p.then(() => resolve(db)).catch(() => resolve(db));\n }\n } else {\n const p = upgrade5To6(this._appId, db).catch((e) => {\n logErrorCb('Error upgrading store from version 5 to 6.')(e);\n });\n upgradePromises.set(this.dbName, p);\n p.then(() => resolve(db)).catch(() => resolve(db));\n }\n };\n\n request.onupgradeneeded = (event) => {\n requiresUpgrade = true;\n this._upgradeStore(event);\n };\n });\n }\n\n _upgradeStore(event: IDBVersionChangeEvent) {\n const target = event.target as IDBOpenDBRequest;\n const db = target.result;\n for (const storeName of storeNames) {\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n }\n }\n\n async getItem(k: string): Promise<any> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readonly');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.get(k);\n request.onerror = (event) => {\n reject(event);\n };\n request.onsuccess = (_event) => {\n if (request.result) {\n resolve(request.result);\n } else {\n resolve(null);\n }\n };\n });\n }\n\n async setItem(k: string, v: any): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.put(v, k);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (_event) => {\n resolve();\n };\n });\n }\n\n // Performs all writes in a transaction so that all succeed or none succeed.\n async multiSet(keyValuePairs: Array<[string, any]>): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const requests: Set<IDBRequest<IDBValidKey>> = new Set();\n for (const [k, v] of keyValuePairs) {\n const request = objectStore.put(v, k);\n requests.add(request);\n }\n\n for (const request of requests) {\n request.onerror = (event) => {\n transaction.abort();\n reject(event);\n };\n request.onsuccess = (_event) => {\n requests.delete(request);\n // Last request to finish resolves the transaction\n if (requests.size === 0) {\n resolve();\n }\n };\n }\n });\n }\n\n async removeItem(k: string): Promise<void> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readwrite');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.delete(k);\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onsuccess = (_event) => {\n resolve();\n };\n });\n }\n\n async getAllKeys(): Promise<string[]> {\n const db = await this._dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this._storeName], 'readonly');\n const objectStore = transaction.objectStore(this._storeName);\n const request = objectStore.getAllKeys();\n request.onerror = (event) => {\n reject(event);\n };\n request.onsuccess = (_event) => {\n resolve(request.result.filter((x) => typeof x === 'string'));\n };\n });\n }\n}\n"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InstantError = void 0;
4
4
  class InstantError extends Error {
5
- hint;
6
5
  constructor(message, hint) {
7
6
  super(message);
8
7
  this.hint = hint;
@@ -1 +1 @@
1
- {"version":3,"file":"InstantError.js","sourceRoot":"","sources":["../../src/InstantError.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,CAAW;IAEf,YAAY,OAAe,EAAE,IAAc;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACzC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,6DAA6D;QAC7D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAvBD,oCAuBC","sourcesContent":["export class InstantError extends Error {\n hint?: unknown;\n\n constructor(message: string, hint?: unknown) {\n super(message);\n this.hint = hint;\n\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n\n // Maintain proper stack trace for where our error was thrown\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InstantError);\n }\n\n this.name = 'InstantError';\n }\n\n get [Symbol.toStringTag]() {\n return 'InstantError';\n }\n}\n"]}
1
+ {"version":3,"file":"InstantError.js","sourceRoot":"","sources":["../../src/InstantError.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IAGrC,YAAY,OAAe,EAAE,IAAc;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACzC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,6DAA6D;QAC7D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAvBD,oCAuBC","sourcesContent":["export class InstantError extends Error {\n hint?: unknown;\n\n constructor(message: string, hint?: unknown) {\n super(message);\n this.hint = hint;\n\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n }\n\n // Maintain proper stack trace for where our error was thrown\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InstantError);\n }\n\n this.name = 'InstantError';\n }\n\n get [Symbol.toStringTag]() {\n return 'InstantError';\n }\n}\n"]}