@peerbit/any-store 1.0.11 → 1.0.13
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/lib/esm/opfs-worker.js +16 -11
- package/lib/esm/opfs-worker.js.map +1 -1
- package/lib/esm/opfs.d.ts +2 -2
- package/lib/esm/opfs.js +9 -8
- package/lib/esm/opfs.js.map +1 -1
- package/lib/esm/store.browser.js +1 -1
- package/lib/esm/store.browser.js.map +1 -1
- package/package.json +3 -3
- package/src/opfs-worker.ts +17 -14
- package/src/opfs.ts +8 -11
- package/src/store.browser.ts +1 -1
package/lib/esm/opfs-worker.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as memory from "./opfs-worker-messages.js";
|
|
|
3
3
|
import { fromBase64URL, toBase64URL, ready } from "@peerbit/crypto";
|
|
4
4
|
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
5
5
|
import { waitForResolved } from "@peerbit/time";
|
|
6
|
+
const directory = location.hash.split("#")?.[1];
|
|
6
7
|
const encodeName = (name) => {
|
|
7
8
|
// since "/" and perhaps other characters might not be allowed we do encode
|
|
8
9
|
const writer = new BinaryWriter();
|
|
@@ -45,14 +46,20 @@ export class OPFSStoreWorker {
|
|
|
45
46
|
this._memoryIterator = new Map();
|
|
46
47
|
this._levels = new Map();
|
|
47
48
|
let isOpen = false;
|
|
48
|
-
const createMemory = (root,
|
|
49
|
+
const createMemory = (root, levels = []) => {
|
|
49
50
|
let m = root;
|
|
50
51
|
// 'open' | 'closed' is just a virtual thing since OPFS is always open as soone as we get the FileSystemDirectoryHandle
|
|
51
52
|
// TODO remove status? or assume not storage adapters can be closed?
|
|
52
53
|
const open = async () => {
|
|
53
54
|
await ready;
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
if (!m) {
|
|
56
|
+
m = await navigator.storage.getDirectory();
|
|
57
|
+
if (directory) {
|
|
58
|
+
m = await m.getDirectoryHandle(encodeName(directory), {
|
|
59
|
+
create: true
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
56
63
|
};
|
|
57
64
|
return {
|
|
58
65
|
clear: async () => {
|
|
@@ -117,7 +124,7 @@ export class OPFSStoreWorker {
|
|
|
117
124
|
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
118
125
|
create: true
|
|
119
126
|
});
|
|
120
|
-
const sublevel = [...
|
|
127
|
+
const sublevel = [...levels, name];
|
|
121
128
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
122
129
|
this._levels.set(memory.levelKey(sublevel), subMemory);
|
|
123
130
|
await subMemory.open();
|
|
@@ -146,18 +153,16 @@ export class OPFSStoreWorker {
|
|
|
146
153
|
try {
|
|
147
154
|
if (message instanceof memory.MemoryMessage) {
|
|
148
155
|
if (message instanceof memory.REQ_Open) {
|
|
149
|
-
if (isOpen) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
await this._rootStore.open();
|
|
153
|
-
for (const level of message.level) {
|
|
154
|
-
this._rootStore = await this._rootStore.sublevel(level);
|
|
156
|
+
if (!isOpen) {
|
|
157
|
+
await this._rootStore.open();
|
|
158
|
+
isOpen = true;
|
|
155
159
|
}
|
|
156
160
|
await this.respond(message, new memory.RESP_Open({ level: message.level }), postMessageFn);
|
|
161
|
+
return;
|
|
157
162
|
}
|
|
158
163
|
const m = message.level.length === 0
|
|
159
164
|
? this._rootStore
|
|
160
|
-
: this._levels.get(memory.levelKey(message.level
|
|
165
|
+
: this._levels.get(memory.levelKey(message.level));
|
|
161
166
|
if (!m) {
|
|
162
167
|
throw new Error("Recieved memory message for an undefined level");
|
|
163
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfs-worker.js","sourceRoot":"","sources":["../../src/opfs-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3C,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3C,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC/B,UAAgC,EACM,EAAE;IACxC,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,sBAAsB,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,CACzC,UAAU,CAAC,sBAAsB,EAAE,CACnC,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,KAAK,CAAC;QACb,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,UAAgC,EAAE,EAAE;IACpE,2HAA2H;IAC3H,kCAAkC;IAClC;;;QAGI;IACJ,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,OAAO,eAAe;IACnB,OAAO,CAAwB;IAC/B,UAAU,CAAW;IAErB,eAAe,CAGrB;IAEF;QACC,MAAM,aAAa,GAAG,WAAW,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,MAAM,YAAY,GAAG,CACpB,IAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"opfs-worker.js","sourceRoot":"","sources":["../../src/opfs-worker.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/opfs.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AnyStore, MaybePromise } from "./interface.js";
|
|
2
2
|
import * as memory from "./opfs-worker-messages.js";
|
|
3
3
|
export declare class OPFSStore implements AnyStore {
|
|
4
|
+
readonly directory?: string | undefined;
|
|
4
5
|
worker: Worker;
|
|
5
|
-
level: string[];
|
|
6
6
|
levelMap: Map<string, AnyStore>;
|
|
7
7
|
root: AnyStore;
|
|
8
8
|
private _responseCallbacks;
|
|
9
9
|
private _createMemory;
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(directory?: string | undefined);
|
|
11
11
|
status(): MaybePromise<"opening" | "open" | "closing" | "closed">;
|
|
12
12
|
close(): Promise<void>;
|
|
13
13
|
open(): Promise<void>;
|
package/lib/esm/opfs.js
CHANGED
|
@@ -28,18 +28,19 @@ function memoryIterator(client, level) {
|
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const createWorker = (directory) => {
|
|
32
|
+
const workerURL = new URL("./opfs-worker.js#" + directory, import.meta.url);
|
|
33
|
+
return new Worker(workerURL, { type: "module" });
|
|
34
|
+
};
|
|
34
35
|
export class OPFSStore {
|
|
36
|
+
directory;
|
|
35
37
|
worker;
|
|
36
|
-
level;
|
|
37
38
|
levelMap;
|
|
38
39
|
root;
|
|
39
40
|
_responseCallbacks = new Map();
|
|
40
41
|
_createMemory;
|
|
41
|
-
constructor(
|
|
42
|
-
this.
|
|
42
|
+
constructor(directory) {
|
|
43
|
+
this.directory = directory;
|
|
43
44
|
this.levelMap = new Map();
|
|
44
45
|
this._createMemory = (level = []) => {
|
|
45
46
|
return {
|
|
@@ -89,8 +90,8 @@ export class OPFSStore {
|
|
|
89
90
|
}
|
|
90
91
|
async open() {
|
|
91
92
|
if (!this.worker) {
|
|
92
|
-
this.
|
|
93
|
-
this.
|
|
93
|
+
this.worker = createWorker(this.directory);
|
|
94
|
+
this.root = this._createMemory([]);
|
|
94
95
|
this.worker.addEventListener("message", async (ev) => {
|
|
95
96
|
const message = deserialize(ev.data, memory.MemoryMessage);
|
|
96
97
|
this._responseCallbacks.get(message.messageId).fn(message);
|
package/lib/esm/opfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfs.js","sourceRoot":"","sources":["../../src/opfs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,SAAS,cAAc,CACtB,MAIC,EACD,KAAe;IAIf,OAAO;QACN,CAAC,MAAM,CAAC,aAAa,CAAC;YACrB,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC;YAC1B,OAAO;gBACN,IAAI,EAAE,KAAK,IAAI,EAAE;oBAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAChC,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CACvD,CAAC;oBACF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBACnD,CAAC;oBACD,wCAAwC;oBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,OAAO;4BACN,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAyB;yBACb,CAAC;oBACnD,CAAC;oBACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAGpC,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,MAAM;oBACX,MAAM,MAAM,CAAC,OAAO,CACnB,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CACvD,CAAC;oBACF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAGpC,CAAC;gBACH,CAAC;aACD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"opfs.js","sourceRoot":"","sources":["../../src/opfs.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/store.browser.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MemoryStore } from "./memory.js";
|
|
2
2
|
import { OPFSStore } from "./opfs.js";
|
|
3
3
|
export const createStore = (directory) => {
|
|
4
|
-
return directory ? new OPFSStore(
|
|
4
|
+
return directory ? new OPFSStore(directory) : new MemoryStore();
|
|
5
5
|
};
|
|
6
6
|
/* export const estimate = (directory: string): Promise<{ quota?: number, usage?: number }> => {
|
|
7
7
|
return navigator.storage.estimate().then(x => { return { quota: x.quota, usage: x.usage } })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.browser.js","sourceRoot":"","sources":["../../src/store.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAkB,EAAE,EAAE;IACjD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"store.browser.js","sourceRoot":"","sources":["../../src/store.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAkB,EAAE,EAAE;IACjD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF;;IAEI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/any-store",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "Level with lazy transactions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@peerbit/crypto": "^2.1.
|
|
42
|
+
"@peerbit/crypto": "^2.1.7",
|
|
43
43
|
"@peerbit/logger": "1.0.2",
|
|
44
44
|
"@peerbit/time": "2.0.6",
|
|
45
45
|
"level": "^8.0.0",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"localMaintainers": [
|
|
49
49
|
"dao.xyz"
|
|
50
50
|
],
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "82d6f528faf0a4e060e400314bc01bc7260c41a5"
|
|
52
52
|
}
|
package/src/opfs-worker.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { fromBase64URL, toBase64URL, ready } from "@peerbit/crypto";
|
|
|
5
5
|
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
6
6
|
import { waitForResolved } from "@peerbit/time";
|
|
7
7
|
|
|
8
|
+
const directory = location.hash.split("#")?.[1];
|
|
9
|
+
|
|
8
10
|
const encodeName = (name: string): string => {
|
|
9
11
|
// since "/" and perhaps other characters might not be allowed we do encode
|
|
10
12
|
const writer = new BinaryWriter();
|
|
@@ -62,7 +64,7 @@ export class OPFSStoreWorker {
|
|
|
62
64
|
|
|
63
65
|
const createMemory = (
|
|
64
66
|
root?: FileSystemDirectoryHandle,
|
|
65
|
-
|
|
67
|
+
levels: string[] = []
|
|
66
68
|
): AnyStore => {
|
|
67
69
|
let m: FileSystemDirectoryHandle = root!;
|
|
68
70
|
|
|
@@ -70,10 +72,15 @@ export class OPFSStoreWorker {
|
|
|
70
72
|
// TODO remove status? or assume not storage adapters can be closed?
|
|
71
73
|
const open = async () => {
|
|
72
74
|
await ready;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
if (!m) {
|
|
76
|
+
m = await navigator.storage.getDirectory();
|
|
77
|
+
if (directory) {
|
|
78
|
+
m = await m.getDirectoryHandle(encodeName(directory), {
|
|
79
|
+
create: true
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
75
83
|
};
|
|
76
|
-
|
|
77
84
|
return {
|
|
78
85
|
clear: async () => {
|
|
79
86
|
for await (const key of m.keys()) {
|
|
@@ -141,7 +148,7 @@ export class OPFSStoreWorker {
|
|
|
141
148
|
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
142
149
|
create: true
|
|
143
150
|
});
|
|
144
|
-
const sublevel = [...
|
|
151
|
+
const sublevel = [...levels, name];
|
|
145
152
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
146
153
|
this._levels.set(memory.levelKey(sublevel), subMemory);
|
|
147
154
|
await subMemory.open();
|
|
@@ -173,26 +180,22 @@ export class OPFSStoreWorker {
|
|
|
173
180
|
try {
|
|
174
181
|
if (message instanceof memory.MemoryMessage) {
|
|
175
182
|
if (message instanceof memory.REQ_Open) {
|
|
176
|
-
if (isOpen) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
await this._rootStore.open();
|
|
180
|
-
for (const level of message.level) {
|
|
181
|
-
this._rootStore = await this._rootStore.sublevel(level);
|
|
183
|
+
if (!isOpen) {
|
|
184
|
+
await this._rootStore.open();
|
|
185
|
+
isOpen = true;
|
|
182
186
|
}
|
|
183
187
|
await this.respond(
|
|
184
188
|
message,
|
|
185
189
|
new memory.RESP_Open({ level: message.level }),
|
|
186
190
|
postMessageFn
|
|
187
191
|
);
|
|
192
|
+
return;
|
|
188
193
|
}
|
|
189
194
|
|
|
190
195
|
const m =
|
|
191
196
|
message.level.length === 0
|
|
192
197
|
? this._rootStore
|
|
193
|
-
: this._levels.get(
|
|
194
|
-
memory.levelKey(message.level.map((x) => encodeName(x)))
|
|
195
|
-
);
|
|
198
|
+
: this._levels.get(memory.levelKey(message.level));
|
|
196
199
|
if (!m) {
|
|
197
200
|
throw new Error("Recieved memory message for an undefined level");
|
|
198
201
|
} else if (message instanceof memory.REQ_Clear) {
|
package/src/opfs.ts
CHANGED
|
@@ -50,13 +50,13 @@ function memoryIterator(
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
const
|
|
53
|
+
const createWorker = (directory) => {
|
|
54
|
+
const workerURL = new URL("./opfs-worker.js#" + directory, import.meta.url);
|
|
55
|
+
return new Worker(workerURL, { type: "module" });
|
|
56
|
+
};
|
|
54
57
|
|
|
55
|
-
/* new Worker(workerURL, { type: 'module' }) */
|
|
56
|
-
const createWorker = () => new Worker(workerURL, { type: "module" });
|
|
57
58
|
export class OPFSStore implements AnyStore {
|
|
58
59
|
worker: Worker;
|
|
59
|
-
level: string[];
|
|
60
60
|
levelMap: Map<string, AnyStore>;
|
|
61
61
|
root: AnyStore;
|
|
62
62
|
|
|
@@ -66,8 +66,7 @@ export class OPFSStore implements AnyStore {
|
|
|
66
66
|
> = new Map();
|
|
67
67
|
|
|
68
68
|
private _createMemory: (level: string[]) => AnyStore;
|
|
69
|
-
constructor(
|
|
70
|
-
this.level = level;
|
|
69
|
+
constructor(readonly directory?: string) {
|
|
71
70
|
this.levelMap = new Map();
|
|
72
71
|
this._createMemory = (level: string[] = []): AnyStore => {
|
|
73
72
|
return {
|
|
@@ -100,9 +99,7 @@ export class OPFSStore implements AnyStore {
|
|
|
100
99
|
)
|
|
101
100
|
).status,
|
|
102
101
|
sublevel: async (name) => {
|
|
103
|
-
await this.request
|
|
104
|
-
new memory.REQ_Sublevel({ level, name })
|
|
105
|
-
);
|
|
102
|
+
await this.request(new memory.REQ_Sublevel({ level, name }));
|
|
106
103
|
const newLevels = [...level, name];
|
|
107
104
|
const sublevel = this._createMemory(newLevels);
|
|
108
105
|
this.levelMap.set(memory.levelKey(newLevels), sublevel);
|
|
@@ -140,8 +137,8 @@ export class OPFSStore implements AnyStore {
|
|
|
140
137
|
}
|
|
141
138
|
async open(): Promise<void> {
|
|
142
139
|
if (!this.worker) {
|
|
143
|
-
this.
|
|
144
|
-
this.
|
|
140
|
+
this.worker = createWorker(this.directory);
|
|
141
|
+
this.root = this._createMemory([]);
|
|
145
142
|
this.worker.addEventListener("message", async (ev) => {
|
|
146
143
|
const message = deserialize(ev.data, memory.MemoryMessage);
|
|
147
144
|
this._responseCallbacks.get(message.messageId)!.fn(message);
|
package/src/store.browser.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { MemoryStore } from "./memory.js";
|
|
|
2
2
|
import { OPFSStore } from "./opfs.js";
|
|
3
3
|
|
|
4
4
|
export const createStore = (directory?: string) => {
|
|
5
|
-
return directory ? new OPFSStore(
|
|
5
|
+
return directory ? new OPFSStore(directory) : new MemoryStore();
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
/* export const estimate = (directory: string): Promise<{ quota?: number, usage?: number }> => {
|