@dxos/random-access-storage 0.4.9 → 0.4.10-main.05b9ab6
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 +302 -66
- 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 +9 -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 +16 -11
- package/src/browser/idb-storage.ts +26 -4
- package/src/browser/storage.browser.test.ts +1 -1
- package/src/browser/storage.ts +4 -18
- package/src/common/abstract-storage.ts +2 -1
- package/src/common/storage.ts +9 -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,19 +1,287 @@
|
|
|
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
|
+
));
|
|
2
43
|
|
|
3
44
|
// inject-globals:@inject-globals
|
|
4
45
|
import {
|
|
5
46
|
global,
|
|
6
|
-
Buffer,
|
|
47
|
+
Buffer as Buffer2,
|
|
7
48
|
process
|
|
8
49
|
} 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();
|
|
9
272
|
|
|
10
273
|
// packages/common/random-access-storage/src/common/abstract-storage.ts
|
|
274
|
+
init_inject_globals();
|
|
11
275
|
import { join as join2 } from "@dxos/node-std/path";
|
|
12
276
|
import { inspect } from "@dxos/node-std/util";
|
|
13
277
|
import { inspectObject } from "@dxos/debug";
|
|
14
278
|
import { log as log2 } from "@dxos/log";
|
|
15
279
|
|
|
280
|
+
// packages/common/random-access-storage/src/common/directory.ts
|
|
281
|
+
init_inject_globals();
|
|
282
|
+
|
|
16
283
|
// packages/common/random-access-storage/src/common/utils.ts
|
|
284
|
+
init_inject_globals();
|
|
17
285
|
import { join } from "@dxos/node-std/path";
|
|
18
286
|
var stringDiff = (first, second) => first.split(second).join("");
|
|
19
287
|
var getFullPath = (root, path) => join(root, stringDiff(path, root));
|
|
@@ -70,6 +338,7 @@ var Directory = class _Directory {
|
|
|
70
338
|
};
|
|
71
339
|
|
|
72
340
|
// packages/common/random-access-storage/src/common/file.ts
|
|
341
|
+
init_inject_globals();
|
|
73
342
|
import pify from "pify";
|
|
74
343
|
import { log } from "@dxos/log";
|
|
75
344
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/common/random-access-storage/src/common/file.ts";
|
|
@@ -154,7 +423,7 @@ var AbstractStorage = class {
|
|
|
154
423
|
try {
|
|
155
424
|
log2.info("Erasing all data...", void 0, {
|
|
156
425
|
F: __dxlog_file2,
|
|
157
|
-
L:
|
|
426
|
+
L: 60,
|
|
158
427
|
S: this,
|
|
159
428
|
C: (f, a) => f(...a)
|
|
160
429
|
});
|
|
@@ -163,14 +432,14 @@ var AbstractStorage = class {
|
|
|
163
432
|
await this._destroy();
|
|
164
433
|
log2("Erased...", void 0, {
|
|
165
434
|
F: __dxlog_file2,
|
|
166
|
-
L:
|
|
435
|
+
L: 64,
|
|
167
436
|
S: this,
|
|
168
437
|
C: (f, a) => f(...a)
|
|
169
438
|
});
|
|
170
439
|
} catch (err) {
|
|
171
440
|
log2.catch(err, void 0, {
|
|
172
441
|
F: __dxlog_file2,
|
|
173
|
-
L:
|
|
442
|
+
L: 66,
|
|
174
443
|
S: this,
|
|
175
444
|
C: (f, a) => f(...a)
|
|
176
445
|
});
|
|
@@ -228,7 +497,7 @@ var AbstractStorage = class {
|
|
|
228
497
|
async _closeFilesInPath(path) {
|
|
229
498
|
await Promise.all(Array.from((await this._getFiles(path)).values()).map((file) => file.close().catch((err) => log2.catch(err, void 0, {
|
|
230
499
|
F: __dxlog_file2,
|
|
231
|
-
L:
|
|
500
|
+
L: 134,
|
|
232
501
|
S: this,
|
|
233
502
|
C: (f, a) => f(...a)
|
|
234
503
|
}))));
|
|
@@ -241,7 +510,7 @@ var AbstractStorage = class {
|
|
|
241
510
|
await Promise.all(Array.from(await this._getFiles(path)).map(([path2, file]) => {
|
|
242
511
|
return file.destroy().then(() => this._files.delete(path2)).catch((err) => log2.error(err.message, void 0, {
|
|
243
512
|
F: __dxlog_file2,
|
|
244
|
-
L:
|
|
513
|
+
L: 149,
|
|
245
514
|
S: this,
|
|
246
515
|
C: (f, a) => f(...a)
|
|
247
516
|
}));
|
|
@@ -250,10 +519,12 @@ var AbstractStorage = class {
|
|
|
250
519
|
};
|
|
251
520
|
|
|
252
521
|
// packages/common/random-access-storage/src/common/memory-storage.ts
|
|
522
|
+
init_inject_globals();
|
|
253
523
|
import ram from "random-access-memory";
|
|
254
524
|
import { arrayToBuffer } from "@dxos/util";
|
|
255
525
|
|
|
256
526
|
// packages/common/random-access-storage/src/common/storage.ts
|
|
527
|
+
init_inject_globals();
|
|
257
528
|
var StorageType;
|
|
258
529
|
(function(StorageType2) {
|
|
259
530
|
StorageType2["RAM"] = "ram";
|
|
@@ -301,65 +572,25 @@ var MemoryStorage = class extends AbstractStorage {
|
|
|
301
572
|
}
|
|
302
573
|
};
|
|
303
574
|
|
|
304
|
-
// packages/common/random-access-storage/src/browser/
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
// packages/common/random-access-storage/src/browser/browser-storage.ts
|
|
308
|
-
var BrowserStorage = class extends AbstractStorage {
|
|
309
|
-
constructor(path) {
|
|
310
|
-
super(path);
|
|
311
|
-
this._fileStorage = this._createFileStorage(path);
|
|
312
|
-
}
|
|
313
|
-
_createFile(path, filename) {
|
|
314
|
-
const fullPath = getFullPath(path, filename);
|
|
315
|
-
return this._fileStorage(fullPath);
|
|
316
|
-
}
|
|
317
|
-
async _destroy() {
|
|
318
|
-
return new Promise((resolve, reject) => {
|
|
319
|
-
const request = indexedDB.deleteDatabase(this.path);
|
|
320
|
-
request.onsuccess = () => {
|
|
321
|
-
resolve();
|
|
322
|
-
};
|
|
323
|
-
request.onupgradeneeded = () => {
|
|
324
|
-
reject(new Error("Upgrade needed."));
|
|
325
|
-
};
|
|
326
|
-
request.onblocked = () => {
|
|
327
|
-
reject(new Error("Blocked."));
|
|
328
|
-
};
|
|
329
|
-
request.onerror = (err) => {
|
|
330
|
-
reject(err);
|
|
331
|
-
};
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
};
|
|
335
|
-
|
|
336
|
-
// packages/common/random-access-storage/src/browser/firefox-storage.ts
|
|
337
|
-
var FirefoxStorage = class extends BrowserStorage {
|
|
338
|
-
constructor() {
|
|
339
|
-
super(...arguments);
|
|
340
|
-
this.type = StorageType.FIREFOX;
|
|
341
|
-
}
|
|
342
|
-
_createFileStorage(path) {
|
|
343
|
-
return raw({
|
|
344
|
-
name: path
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
};
|
|
575
|
+
// packages/common/random-access-storage/src/browser/storage.ts
|
|
576
|
+
init_inject_globals();
|
|
348
577
|
|
|
349
578
|
// packages/common/random-access-storage/src/browser/idb-storage.ts
|
|
350
|
-
|
|
579
|
+
init_inject_globals();
|
|
580
|
+
var import_random_access_idb = __toESM(require_random_access_idb());
|
|
351
581
|
import { invariant } from "@dxos/invariant";
|
|
352
582
|
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/common/random-access-storage/src/browser/idb-storage.ts";
|
|
353
583
|
var DELIM = "\0";
|
|
354
|
-
var IDbStorage = class extends
|
|
355
|
-
constructor() {
|
|
356
|
-
super(
|
|
584
|
+
var IDbStorage = class extends AbstractStorage {
|
|
585
|
+
constructor(path) {
|
|
586
|
+
super(path);
|
|
357
587
|
this.type = StorageType.IDB;
|
|
358
588
|
this._store = "data";
|
|
359
589
|
this._initialized = false;
|
|
590
|
+
this._fileStorage = this._createFileStorage(path);
|
|
360
591
|
}
|
|
361
592
|
_createFileStorage(path) {
|
|
362
|
-
const database =
|
|
593
|
+
const database = (0, import_random_access_idb.default)(path);
|
|
363
594
|
let res;
|
|
364
595
|
this._db = new Promise((resolve) => {
|
|
365
596
|
res = resolve;
|
|
@@ -367,6 +598,16 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
367
598
|
database.getdb(res);
|
|
368
599
|
return database.create;
|
|
369
600
|
}
|
|
601
|
+
async close() {
|
|
602
|
+
await this._closeFilesInPath("");
|
|
603
|
+
}
|
|
604
|
+
async reset() {
|
|
605
|
+
await this._closeFilesInPath("");
|
|
606
|
+
await this._remove("");
|
|
607
|
+
}
|
|
608
|
+
async _destroy() {
|
|
609
|
+
throw new Error("Unreachable");
|
|
610
|
+
}
|
|
370
611
|
_createFile(path, filename) {
|
|
371
612
|
const file = this._fileStorage(getFullPath(path, filename));
|
|
372
613
|
file.destroy = (cb) => {
|
|
@@ -393,7 +634,7 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
393
634
|
const db = await this._db;
|
|
394
635
|
invariant(db, "Database is not initialized.", {
|
|
395
636
|
F: __dxlog_file3,
|
|
396
|
-
L:
|
|
637
|
+
L: 85,
|
|
397
638
|
S: this,
|
|
398
639
|
A: [
|
|
399
640
|
"db",
|
|
@@ -435,6 +676,7 @@ var IDbStorage = class extends BrowserStorage {
|
|
|
435
676
|
};
|
|
436
677
|
|
|
437
678
|
// packages/common/random-access-storage/src/browser/web-fs.ts
|
|
679
|
+
init_inject_globals();
|
|
438
680
|
import { EventEmitter } from "@dxos/node-std/events";
|
|
439
681
|
import { callbackify } from "@dxos/node-std/util";
|
|
440
682
|
import { synchronized } from "@dxos/async";
|
|
@@ -749,7 +991,7 @@ var WebFile = class extends EventEmitter {
|
|
|
749
991
|
if (offset + size > this._buffer.length) {
|
|
750
992
|
throw new Error("Read out of bounds");
|
|
751
993
|
}
|
|
752
|
-
return
|
|
994
|
+
return Buffer2.from(this._buffer.slice(offset, offset + size));
|
|
753
995
|
}
|
|
754
996
|
async write(offset, data) {
|
|
755
997
|
this.assertNotDestroyed("Write");
|
|
@@ -898,22 +1140,16 @@ _ts_decorate([
|
|
|
898
1140
|
// packages/common/random-access-storage/src/browser/storage.ts
|
|
899
1141
|
var createStorage = ({ type, root = "" } = {}) => {
|
|
900
1142
|
if (type === void 0) {
|
|
901
|
-
|
|
902
|
-
return new WebFS(root);
|
|
903
|
-
} else {
|
|
904
|
-
return new IDbStorage(root);
|
|
905
|
-
}
|
|
1143
|
+
return new IDbStorage(root);
|
|
906
1144
|
}
|
|
907
1145
|
switch (type) {
|
|
908
1146
|
case StorageType.RAM: {
|
|
909
1147
|
return new MemoryStorage(root);
|
|
910
1148
|
}
|
|
911
1149
|
case StorageType.IDB:
|
|
912
|
-
case StorageType.CHROME:
|
|
913
|
-
return new IDbStorage(root);
|
|
914
|
-
}
|
|
1150
|
+
case StorageType.CHROME:
|
|
915
1151
|
case StorageType.FIREFOX: {
|
|
916
|
-
return new
|
|
1152
|
+
return new IDbStorage(root);
|
|
917
1153
|
}
|
|
918
1154
|
case StorageType.WEBFS: {
|
|
919
1155
|
return new WebFS(root);
|