@dxos/random-access-storage 0.4.10-main.d9dc7ae → 0.4.10-main.e2d2318
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/lib/browser/index.mjs +25 -337
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +5 -5
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/browser/idb-storage.d.ts +8 -4
- package/dist/types/src/browser/idb-storage.d.ts.map +1 -1
- package/dist/types/src/browser/storage.d.ts.map +1 -1
- package/dist/types/src/common/abstract-storage.d.ts +1 -1
- package/dist/types/src/common/abstract-storage.d.ts.map +1 -1
- package/dist/types/src/common/storage.d.ts +3 -0
- package/dist/types/src/common/storage.d.ts.map +1 -1
- package/dist/types/src/testing/storage.blueprint-test.d.ts +1 -1
- package/dist/types/src/testing/storage.blueprint-test.d.ts.map +1 -1
- package/package.json +10 -15
- package/src/browser/idb-storage.ts +26 -4
- package/src/browser/storage.browser.test.ts +1 -1
- package/src/browser/storage.ts +2 -3
- package/src/common/abstract-storage.ts +2 -1
- package/src/common/storage.ts +3 -0
- package/src/testing/storage.blueprint-test.ts +70 -37
- package/dist/types/src/browser/browser-storage.d.ts +0 -13
- package/dist/types/src/browser/browser-storage.d.ts.map +0 -1
- package/dist/types/src/browser/firefox-storage.d.ts +0 -11
- package/dist/types/src/browser/firefox-storage.d.ts.map +0 -1
- package/src/browser/browser-storage.ts +0 -45
- package/src/browser/firefox-storage.ts +0 -23
|
@@ -1,287 +1,19 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
|
-
import import$random_access_storage from 'random-access-storage';
|
|
3
|
-
import import$inherits from 'inherits';
|
|
4
|
-
import import$next_tick from 'next-tick';
|
|
5
|
-
import import$once from 'once';
|
|
6
|
-
import import$buffer_from from 'buffer-from';
|
|
7
|
-
import import$buffer_alloc from 'buffer-alloc';
|
|
8
|
-
var __create = Object.create;
|
|
9
|
-
var __defProp = Object.defineProperty;
|
|
10
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
15
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
16
|
-
}) : x)(function(x) {
|
|
17
|
-
if (typeof require !== "undefined")
|
|
18
|
-
return require.apply(this, arguments);
|
|
19
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
20
|
-
});
|
|
21
|
-
var __esm = (fn, res) => function __init() {
|
|
22
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
23
|
-
};
|
|
24
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
25
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
26
|
-
};
|
|
27
|
-
var __copyProps = (to, from, except, desc) => {
|
|
28
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
29
|
-
for (let key of __getOwnPropNames(from))
|
|
30
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
31
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
32
|
-
}
|
|
33
|
-
return to;
|
|
34
|
-
};
|
|
35
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
36
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
37
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
38
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
39
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
40
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
41
|
-
mod
|
|
42
|
-
));
|
|
43
2
|
|
|
44
3
|
// inject-globals:@inject-globals
|
|
45
4
|
import {
|
|
46
5
|
global,
|
|
47
|
-
Buffer
|
|
6
|
+
Buffer,
|
|
48
7
|
process
|
|
49
8
|
} from "@dxos/node-std/inject-globals";
|
|
50
|
-
var init_inject_globals = __esm({
|
|
51
|
-
"inject-globals:@inject-globals"() {
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
// node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=mqfhtwnltd5kq5s4kb4gk7k2k4/node_modules/random-access-idb/lib/blocks.js
|
|
56
|
-
var require_blocks = __commonJS({
|
|
57
|
-
"node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=mqfhtwnltd5kq5s4kb4gk7k2k4/node_modules/random-access-idb/lib/blocks.js"(exports, module) {
|
|
58
|
-
init_inject_globals();
|
|
59
|
-
module.exports = function(size, start, end) {
|
|
60
|
-
var result = [];
|
|
61
|
-
for (var n = Math.floor(start / size) * size; n < end; n += size) {
|
|
62
|
-
result.push({
|
|
63
|
-
block: Math.floor(n / size),
|
|
64
|
-
start: Math.max(n, start) % size,
|
|
65
|
-
end: Math.min(n + size, end) % size || size
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return result;
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=mqfhtwnltd5kq5s4kb4gk7k2k4/node_modules/random-access-idb/index.js
|
|
74
|
-
var require_random_access_idb = __commonJS({
|
|
75
|
-
"node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=mqfhtwnltd5kq5s4kb4gk7k2k4/node_modules/random-access-idb/index.js"(exports, module) {
|
|
76
|
-
init_inject_globals();
|
|
77
|
-
var RandomAccess = import$random_access_storage;
|
|
78
|
-
var inherits = import$inherits;
|
|
79
|
-
var nextTick = import$next_tick;
|
|
80
|
-
var once = import$once;
|
|
81
|
-
var blocks = require_blocks();
|
|
82
|
-
var bufferFrom = import$buffer_from;
|
|
83
|
-
var bufferAlloc = import$buffer_alloc;
|
|
84
|
-
var DELIM2 = "\0";
|
|
85
|
-
var win = typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {};
|
|
86
|
-
module.exports = function(dbname, xopts) {
|
|
87
|
-
if (!xopts)
|
|
88
|
-
xopts = {};
|
|
89
|
-
var idb2 = xopts.idb || (typeof win !== "undefined" ? win.indexedDB || win.mozIndexedDB || win.webkitIndexedDB || win.msIndexedDB : null);
|
|
90
|
-
if (!idb2)
|
|
91
|
-
throw new Error("indexedDB not present and not given");
|
|
92
|
-
var db = null, dbqueue = [];
|
|
93
|
-
if (typeof idb2.open === "function") {
|
|
94
|
-
var req = idb2.open(dbname);
|
|
95
|
-
req.addEventListener("upgradeneeded", function() {
|
|
96
|
-
db = req.result;
|
|
97
|
-
db.createObjectStore("data");
|
|
98
|
-
});
|
|
99
|
-
req.addEventListener("success", function() {
|
|
100
|
-
db = req.result;
|
|
101
|
-
dbqueue.forEach(function(cb) {
|
|
102
|
-
cb(db);
|
|
103
|
-
});
|
|
104
|
-
dbqueue = null;
|
|
105
|
-
});
|
|
106
|
-
} else {
|
|
107
|
-
db = idb2;
|
|
108
|
-
}
|
|
109
|
-
function getdb(cb) {
|
|
110
|
-
if (db)
|
|
111
|
-
nextTick(function() {
|
|
112
|
-
cb(db);
|
|
113
|
-
});
|
|
114
|
-
else
|
|
115
|
-
dbqueue.push(cb);
|
|
116
|
-
}
|
|
117
|
-
return {
|
|
118
|
-
create: function(name, opts) {
|
|
119
|
-
if (typeof name === "object") {
|
|
120
|
-
opts = name;
|
|
121
|
-
name = opts.name;
|
|
122
|
-
}
|
|
123
|
-
if (!opts)
|
|
124
|
-
opts = {};
|
|
125
|
-
opts.name = name;
|
|
126
|
-
return new Store(Object.assign({ db: getdb }, xopts, opts));
|
|
127
|
-
},
|
|
128
|
-
getdb
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
function Store(opts) {
|
|
132
|
-
if (!(this instanceof Store))
|
|
133
|
-
return new Store(opts);
|
|
134
|
-
RandomAccess.call(this);
|
|
135
|
-
if (!opts)
|
|
136
|
-
opts = {};
|
|
137
|
-
if (typeof opts === "string")
|
|
138
|
-
opts = { name: opts };
|
|
139
|
-
this.size = opts.size || 4096;
|
|
140
|
-
this.name = opts.name;
|
|
141
|
-
this.length = opts.length || 0;
|
|
142
|
-
this._getdb = opts.db;
|
|
143
|
-
}
|
|
144
|
-
inherits(Store, RandomAccess);
|
|
145
|
-
Store.prototype._blocks = function(i, j) {
|
|
146
|
-
return blocks(this.size, i, j);
|
|
147
|
-
};
|
|
148
|
-
Store.prototype._read = function(req) {
|
|
149
|
-
var self2 = this;
|
|
150
|
-
var buffers = [];
|
|
151
|
-
self2._store("readonly", function(err, store) {
|
|
152
|
-
if ((self2.length || 0) < req.offset + req.size) {
|
|
153
|
-
return req.callback(new Error("Could not satisfy length"));
|
|
154
|
-
}
|
|
155
|
-
if (err)
|
|
156
|
-
return req.callback(err);
|
|
157
|
-
var offsets = self2._blocks(req.offset, req.offset + req.size);
|
|
158
|
-
var pending = offsets.length + 1;
|
|
159
|
-
var firstBlock = offsets.length > 0 ? offsets[0].block : 0;
|
|
160
|
-
var j = 0;
|
|
161
|
-
for (var i = 0; i < offsets.length; i++)
|
|
162
|
-
(function(o) {
|
|
163
|
-
var key = self2.name + DELIM2 + o.block;
|
|
164
|
-
backify(store.get(key), function(err2, ev) {
|
|
165
|
-
if (err2)
|
|
166
|
-
return req.callback(err2);
|
|
167
|
-
buffers[o.block - firstBlock] = ev.target.result ? bufferFrom(ev.target.result.subarray(o.start, o.end)) : bufferAlloc(o.end - o.start);
|
|
168
|
-
if (--pending === 0)
|
|
169
|
-
req.callback(null, Buffer2.concat(buffers));
|
|
170
|
-
});
|
|
171
|
-
})(offsets[i]);
|
|
172
|
-
if (--pending === 0)
|
|
173
|
-
req.callback(null, Buffer2.concat(buffers));
|
|
174
|
-
});
|
|
175
|
-
};
|
|
176
|
-
Store.prototype._write = function(req) {
|
|
177
|
-
var self2 = this;
|
|
178
|
-
self2._store("readwrite", function(err, store) {
|
|
179
|
-
if (err)
|
|
180
|
-
return req.callback(err);
|
|
181
|
-
var offsets = self2._blocks(req.offset, req.offset + req.data.length);
|
|
182
|
-
var pending = 1;
|
|
183
|
-
var buffers = {};
|
|
184
|
-
for (var i = 0; i < offsets.length; i++)
|
|
185
|
-
(function(o, i2) {
|
|
186
|
-
if (o.end - o.start === self2.size)
|
|
187
|
-
return;
|
|
188
|
-
pending++;
|
|
189
|
-
var key = self2.name + DELIM2 + o.block;
|
|
190
|
-
backify(store.get(key), function(err2, ev) {
|
|
191
|
-
if (err2)
|
|
192
|
-
return req.callback(err2);
|
|
193
|
-
buffers[i2] = bufferFrom(ev.target.result || bufferAlloc(self2.size));
|
|
194
|
-
if (--pending === 0)
|
|
195
|
-
write(store, offsets, buffers);
|
|
196
|
-
});
|
|
197
|
-
})(offsets[i], i);
|
|
198
|
-
if (--pending === 0)
|
|
199
|
-
write(store, offsets, buffers);
|
|
200
|
-
});
|
|
201
|
-
function write(store, offsets, buffers) {
|
|
202
|
-
var block;
|
|
203
|
-
for (var i = 0, j = 0; i < offsets.length; i++) {
|
|
204
|
-
var o = offsets[i];
|
|
205
|
-
var len = o.end - o.start;
|
|
206
|
-
if (len === self2.size) {
|
|
207
|
-
block = bufferFrom(req.data.slice(j, j + len));
|
|
208
|
-
} else {
|
|
209
|
-
block = buffers[i];
|
|
210
|
-
req.data.copy(block, o.start, j, j + len);
|
|
211
|
-
}
|
|
212
|
-
store.put(block, self2.name + DELIM2 + o.block);
|
|
213
|
-
j += len;
|
|
214
|
-
}
|
|
215
|
-
var length = Math.max(self2.length || 0, req.offset + req.data.length);
|
|
216
|
-
store.put(length, self2.name + DELIM2 + "length");
|
|
217
|
-
store.transaction.addEventListener("complete", function() {
|
|
218
|
-
self2.length = length;
|
|
219
|
-
req.callback(null);
|
|
220
|
-
});
|
|
221
|
-
store.transaction.addEventListener("error", function(err) {
|
|
222
|
-
req.callback(err);
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
Store.prototype._store = function(mode, cb) {
|
|
227
|
-
cb = once(cb);
|
|
228
|
-
var self2 = this;
|
|
229
|
-
self2._getdb(function(db) {
|
|
230
|
-
var tx = db.transaction(["data"], mode);
|
|
231
|
-
var store = tx.objectStore("data");
|
|
232
|
-
tx.addEventListener("error", cb);
|
|
233
|
-
cb(null, store);
|
|
234
|
-
});
|
|
235
|
-
};
|
|
236
|
-
Store.prototype._open = function(req) {
|
|
237
|
-
var self2 = this;
|
|
238
|
-
this._getdb(function(db) {
|
|
239
|
-
self2._store("readonly", function(err, store) {
|
|
240
|
-
backify(store.get(self2.name + DELIM2 + "length"), function(err2, ev) {
|
|
241
|
-
self2.length = ev.target.result || 0;
|
|
242
|
-
req.callback(null);
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
};
|
|
247
|
-
Store.prototype._close = function(req) {
|
|
248
|
-
this._getdb(function(db) {
|
|
249
|
-
req.callback();
|
|
250
|
-
});
|
|
251
|
-
};
|
|
252
|
-
Store.prototype._stat = function(req) {
|
|
253
|
-
var self2 = this;
|
|
254
|
-
nextTick(function() {
|
|
255
|
-
req.callback(null, { size: self2.length });
|
|
256
|
-
});
|
|
257
|
-
};
|
|
258
|
-
function backify(r, cb) {
|
|
259
|
-
r.addEventListener("success", function(ev) {
|
|
260
|
-
cb(null, ev);
|
|
261
|
-
});
|
|
262
|
-
r.addEventListener("error", cb);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
// packages/common/random-access-storage/src/browser/index.ts
|
|
268
|
-
init_inject_globals();
|
|
269
|
-
|
|
270
|
-
// packages/common/random-access-storage/src/common/index.ts
|
|
271
|
-
init_inject_globals();
|
|
272
9
|
|
|
273
10
|
// packages/common/random-access-storage/src/common/abstract-storage.ts
|
|
274
|
-
init_inject_globals();
|
|
275
11
|
import { join as join2 } from "@dxos/node-std/path";
|
|
276
12
|
import { inspect } from "@dxos/node-std/util";
|
|
277
13
|
import { inspectObject } from "@dxos/debug";
|
|
278
14
|
import { log as log2 } from "@dxos/log";
|
|
279
15
|
|
|
280
|
-
// packages/common/random-access-storage/src/common/directory.ts
|
|
281
|
-
init_inject_globals();
|
|
282
|
-
|
|
283
16
|
// packages/common/random-access-storage/src/common/utils.ts
|
|
284
|
-
init_inject_globals();
|
|
285
17
|
import { join } from "@dxos/node-std/path";
|
|
286
18
|
var stringDiff = (first, second) => first.split(second).join("");
|
|
287
19
|
var getFullPath = (root, path) => join(root, stringDiff(path, root));
|
|
@@ -338,7 +70,6 @@ var Directory = class _Directory {
|
|
|
338
70
|
};
|
|
339
71
|
|
|
340
72
|
// packages/common/random-access-storage/src/common/file.ts
|
|
341
|
-
init_inject_globals();
|
|
342
73
|
import pify from "pify";
|
|
343
74
|
import { log } from "@dxos/log";
|
|
344
75
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/common/random-access-storage/src/common/file.ts";
|
|
@@ -423,7 +154,7 @@ var AbstractStorage = class {
|
|
|
423
154
|
try {
|
|
424
155
|
log2.info("Erasing all data...", void 0, {
|
|
425
156
|
F: __dxlog_file2,
|
|
426
|
-
L:
|
|
157
|
+
L: 60,
|
|
427
158
|
S: this,
|
|
428
159
|
C: (f, a) => f(...a)
|
|
429
160
|
});
|
|
@@ -432,14 +163,14 @@ var AbstractStorage = class {
|
|
|
432
163
|
await this._destroy();
|
|
433
164
|
log2("Erased...", void 0, {
|
|
434
165
|
F: __dxlog_file2,
|
|
435
|
-
L:
|
|
166
|
+
L: 64,
|
|
436
167
|
S: this,
|
|
437
168
|
C: (f, a) => f(...a)
|
|
438
169
|
});
|
|
439
170
|
} catch (err) {
|
|
440
171
|
log2.catch(err, void 0, {
|
|
441
172
|
F: __dxlog_file2,
|
|
442
|
-
L:
|
|
173
|
+
L: 66,
|
|
443
174
|
S: this,
|
|
444
175
|
C: (f, a) => f(...a)
|
|
445
176
|
});
|
|
@@ -497,7 +228,7 @@ var AbstractStorage = class {
|
|
|
497
228
|
async _closeFilesInPath(path) {
|
|
498
229
|
await Promise.all(Array.from((await this._getFiles(path)).values()).map((file) => file.close().catch((err) => log2.catch(err, void 0, {
|
|
499
230
|
F: __dxlog_file2,
|
|
500
|
-
L:
|
|
231
|
+
L: 134,
|
|
501
232
|
S: this,
|
|
502
233
|
C: (f, a) => f(...a)
|
|
503
234
|
}))));
|
|
@@ -510,7 +241,7 @@ var AbstractStorage = class {
|
|
|
510
241
|
await Promise.all(Array.from(await this._getFiles(path)).map(([path2, file]) => {
|
|
511
242
|
return file.destroy().then(() => this._files.delete(path2)).catch((err) => log2.error(err.message, void 0, {
|
|
512
243
|
F: __dxlog_file2,
|
|
513
|
-
L:
|
|
244
|
+
L: 149,
|
|
514
245
|
S: this,
|
|
515
246
|
C: (f, a) => f(...a)
|
|
516
247
|
}));
|
|
@@ -519,12 +250,10 @@ var AbstractStorage = class {
|
|
|
519
250
|
};
|
|
520
251
|
|
|
521
252
|
// packages/common/random-access-storage/src/common/memory-storage.ts
|
|
522
|
-
init_inject_globals();
|
|
523
253
|
import ram from "random-access-memory";
|
|
524
254
|
import { arrayToBuffer } from "@dxos/util";
|
|
525
255
|
|
|
526
256
|
// packages/common/random-access-storage/src/common/storage.ts
|
|
527
|
-
init_inject_globals();
|
|
528
257
|
var StorageType;
|
|
529
258
|
(function(StorageType2) {
|
|
530
259
|
StorageType2["RAM"] = "ram";
|
|
@@ -572,71 +301,21 @@ var MemoryStorage = class extends AbstractStorage {
|
|
|
572
301
|
}
|
|
573
302
|
};
|
|
574
303
|
|
|
575
|
-
// packages/common/random-access-storage/src/browser/storage.ts
|
|
576
|
-
init_inject_globals();
|
|
577
|
-
|
|
578
|
-
// packages/common/random-access-storage/src/browser/firefox-storage.ts
|
|
579
|
-
init_inject_globals();
|
|
580
|
-
import raw from "random-access-web/mutable-file-wrapper.js";
|
|
581
|
-
|
|
582
|
-
// packages/common/random-access-storage/src/browser/browser-storage.ts
|
|
583
|
-
init_inject_globals();
|
|
584
|
-
var BrowserStorage = class extends AbstractStorage {
|
|
585
|
-
constructor(path) {
|
|
586
|
-
super(path);
|
|
587
|
-
this._fileStorage = this._createFileStorage(path);
|
|
588
|
-
}
|
|
589
|
-
_createFile(path, filename) {
|
|
590
|
-
const fullPath = getFullPath(path, filename);
|
|
591
|
-
return this._fileStorage(fullPath);
|
|
592
|
-
}
|
|
593
|
-
async _destroy() {
|
|
594
|
-
return new Promise((resolve, reject) => {
|
|
595
|
-
const request = indexedDB.deleteDatabase(this.path);
|
|
596
|
-
request.onsuccess = () => {
|
|
597
|
-
resolve();
|
|
598
|
-
};
|
|
599
|
-
request.onupgradeneeded = () => {
|
|
600
|
-
reject(new Error("Upgrade needed."));
|
|
601
|
-
};
|
|
602
|
-
request.onblocked = () => {
|
|
603
|
-
reject(new Error("Blocked."));
|
|
604
|
-
};
|
|
605
|
-
request.onerror = (err) => {
|
|
606
|
-
reject(err);
|
|
607
|
-
};
|
|
608
|
-
});
|
|
609
|
-
}
|
|
610
|
-
};
|
|
611
|
-
|
|
612
|
-
// packages/common/random-access-storage/src/browser/firefox-storage.ts
|
|
613
|
-
var FirefoxStorage = class extends BrowserStorage {
|
|
614
|
-
constructor() {
|
|
615
|
-
super(...arguments);
|
|
616
|
-
this.type = StorageType.FIREFOX;
|
|
617
|
-
}
|
|
618
|
-
_createFileStorage(path) {
|
|
619
|
-
return raw({
|
|
620
|
-
name: path
|
|
621
|
-
});
|
|
622
|
-
}
|
|
623
|
-
};
|
|
624
|
-
|
|
625
304
|
// packages/common/random-access-storage/src/browser/idb-storage.ts
|
|
626
|
-
|
|
627
|
-
var import_random_access_idb = __toESM(require_random_access_idb());
|
|
305
|
+
import idb from "random-access-idb";
|
|
628
306
|
import { invariant } from "@dxos/invariant";
|
|
629
307
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/common/random-access-storage/src/browser/idb-storage.ts";
|
|
630
308
|
var DELIM = "\0";
|
|
631
|
-
var IDbStorage = class extends
|
|
632
|
-
constructor() {
|
|
633
|
-
super(
|
|
309
|
+
var IDbStorage = class extends AbstractStorage {
|
|
310
|
+
constructor(path) {
|
|
311
|
+
super(path);
|
|
634
312
|
this.type = StorageType.IDB;
|
|
635
313
|
this._store = "data";
|
|
636
314
|
this._initialized = false;
|
|
315
|
+
this._fileStorage = this._createFileStorage(path);
|
|
637
316
|
}
|
|
638
317
|
_createFileStorage(path) {
|
|
639
|
-
const database = (
|
|
318
|
+
const database = idb(path);
|
|
640
319
|
let res;
|
|
641
320
|
this._db = new Promise((resolve) => {
|
|
642
321
|
res = resolve;
|
|
@@ -644,6 +323,16 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
644
323
|
database.getdb(res);
|
|
645
324
|
return database.create;
|
|
646
325
|
}
|
|
326
|
+
async close() {
|
|
327
|
+
await this._closeFilesInPath("");
|
|
328
|
+
}
|
|
329
|
+
async reset() {
|
|
330
|
+
await this._closeFilesInPath("");
|
|
331
|
+
await this._remove("");
|
|
332
|
+
}
|
|
333
|
+
async _destroy() {
|
|
334
|
+
throw new Error("Unreachable");
|
|
335
|
+
}
|
|
647
336
|
_createFile(path, filename) {
|
|
648
337
|
const file = this._fileStorage(getFullPath(path, filename));
|
|
649
338
|
file.destroy = (cb) => {
|
|
@@ -670,7 +359,7 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
670
359
|
const db = await this._db;
|
|
671
360
|
invariant(db, "Database is not initialized.", {
|
|
672
361
|
F: __dxlog_file3,
|
|
673
|
-
L:
|
|
362
|
+
L: 85,
|
|
674
363
|
S: this,
|
|
675
364
|
A: [
|
|
676
365
|
"db",
|
|
@@ -712,7 +401,6 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
712
401
|
};
|
|
713
402
|
|
|
714
403
|
// packages/common/random-access-storage/src/browser/web-fs.ts
|
|
715
|
-
init_inject_globals();
|
|
716
404
|
import { EventEmitter } from "@dxos/node-std/events";
|
|
717
405
|
import { callbackify } from "@dxos/node-std/util";
|
|
718
406
|
import { synchronized } from "@dxos/async";
|
|
@@ -1027,7 +715,7 @@ var WebFile = class extends EventEmitter {
|
|
|
1027
715
|
if (offset + size > this._buffer.length) {
|
|
1028
716
|
throw new Error("Read out of bounds");
|
|
1029
717
|
}
|
|
1030
|
-
return
|
|
718
|
+
return Buffer.from(this._buffer.slice(offset, offset + size));
|
|
1031
719
|
}
|
|
1032
720
|
async write(offset, data) {
|
|
1033
721
|
this.assertNotDestroyed("Write");
|
|
@@ -1191,7 +879,7 @@ var createStorage = ({ type, root = "" } = {}) => {
|
|
|
1191
879
|
return new IDbStorage(root);
|
|
1192
880
|
}
|
|
1193
881
|
case StorageType.FIREFOX: {
|
|
1194
|
-
|
|
882
|
+
throw new Error("Firefox storage is no longer supported.");
|
|
1195
883
|
}
|
|
1196
884
|
case StorageType.WEBFS: {
|
|
1197
885
|
return new WebFS(root);
|