@peerbit/any-store 1.0.10 → 1.0.12
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.d.ts +0 -1
- package/lib/esm/opfs-worker.js +94 -75
- package/lib/esm/opfs-worker.js.map +1 -1
- package/lib/esm/opfs.d.ts +5 -5
- package/lib/esm/opfs.js +11 -10
- 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 +2 -2
- package/src/opfs-worker.ts +136 -113
- package/src/opfs.ts +11 -14
- package/src/store.browser.ts +1 -1
package/lib/esm/opfs-worker.d.ts
CHANGED
package/lib/esm/opfs-worker.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
2
|
import * as memory from "./opfs-worker-messages.js";
|
|
3
|
-
import { fromBase64URL, toBase64URL } from "@peerbit/crypto";
|
|
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();
|
|
@@ -37,7 +38,6 @@ const createWriteHandle = async (fileHandle) => {
|
|
|
37
38
|
return waitForSyncAcccess(fileHandle);
|
|
38
39
|
};
|
|
39
40
|
export class OPFSStoreWorker {
|
|
40
|
-
level;
|
|
41
41
|
_levels;
|
|
42
42
|
_rootStore;
|
|
43
43
|
_memoryIterator;
|
|
@@ -45,14 +45,21 @@ export class OPFSStoreWorker {
|
|
|
45
45
|
const postMessageFn = postMessage;
|
|
46
46
|
this._memoryIterator = new Map();
|
|
47
47
|
this._levels = new Map();
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
let isOpen = false;
|
|
49
|
+
const createMemory = (root, levels = []) => {
|
|
50
50
|
let m = root;
|
|
51
51
|
// 'open' | 'closed' is just a virtual thing since OPFS is always open as soone as we get the FileSystemDirectoryHandle
|
|
52
52
|
// TODO remove status? or assume not storage adapters can be closed?
|
|
53
53
|
const open = async () => {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
await ready;
|
|
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 () => {
|
|
@@ -84,7 +91,7 @@ export class OPFSStoreWorker {
|
|
|
84
91
|
catch (error) {
|
|
85
92
|
if (error instanceof DOMException &&
|
|
86
93
|
error.name === "NotFoundError") {
|
|
87
|
-
return;
|
|
94
|
+
return undefined;
|
|
88
95
|
}
|
|
89
96
|
else {
|
|
90
97
|
throw error;
|
|
@@ -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();
|
|
@@ -143,76 +150,88 @@ export class OPFSStoreWorker {
|
|
|
143
150
|
this._rootStore = createMemory();
|
|
144
151
|
self.addEventListener("message", async (ev) => {
|
|
145
152
|
const message = deserialize(ev["data"], memory.MemoryRequest);
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
153
|
+
try {
|
|
154
|
+
if (message instanceof memory.MemoryMessage) {
|
|
155
|
+
if (message instanceof memory.REQ_Open) {
|
|
156
|
+
if (!isOpen) {
|
|
157
|
+
await this._rootStore.open();
|
|
158
|
+
isOpen = true;
|
|
159
|
+
}
|
|
160
|
+
await this.respond(message, new memory.RESP_Open({ level: message.level }), postMessageFn);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const m = message.level.length === 0
|
|
164
|
+
? this._rootStore
|
|
165
|
+
: this._levels.get(memory.levelKey(message.level));
|
|
166
|
+
if (!m) {
|
|
167
|
+
throw new Error("Recieved memory message for an undefined level");
|
|
168
|
+
}
|
|
169
|
+
else if (message instanceof memory.REQ_Clear) {
|
|
170
|
+
await m.clear();
|
|
171
|
+
await this.respond(message, new memory.RESP_Clear({ level: message.level }), postMessageFn);
|
|
172
|
+
}
|
|
173
|
+
else if (message instanceof memory.REQ_Close) {
|
|
174
|
+
await m.close();
|
|
175
|
+
await this.respond(message, new memory.RESP_Close({ level: message.level }), postMessageFn);
|
|
176
|
+
}
|
|
177
|
+
else if (message instanceof memory.REQ_Del) {
|
|
178
|
+
await m.del(message.key);
|
|
179
|
+
await this.respond(message, new memory.RESP_Del({ level: message.level }), postMessageFn);
|
|
180
|
+
}
|
|
181
|
+
else if (message instanceof memory.REQ_Iterator_Next) {
|
|
182
|
+
let iterator = this._memoryIterator.get(message.id);
|
|
183
|
+
if (!iterator) {
|
|
184
|
+
iterator = m.iterator()[Symbol.asyncIterator]();
|
|
185
|
+
this._memoryIterator.set(message.id, iterator);
|
|
186
|
+
}
|
|
187
|
+
const next = await iterator.next();
|
|
188
|
+
await this.respond(message, new memory.RESP_Iterator_Next({
|
|
189
|
+
keys: next.done ? [] : [next.value[0]],
|
|
190
|
+
values: next.done ? [] : [new Uint8Array(next.value[1])],
|
|
191
|
+
level: message.level
|
|
192
|
+
}), postMessageFn);
|
|
193
|
+
if (next.done) {
|
|
194
|
+
this._memoryIterator.delete(message.id);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else if (message instanceof memory.REQ_Iterator_Stop) {
|
|
178
198
|
this._memoryIterator.delete(message.id);
|
|
199
|
+
await this.respond(message, new memory.RESP_Iterator_Stop({ level: message.level }), postMessageFn);
|
|
200
|
+
}
|
|
201
|
+
else if (message instanceof memory.REQ_Get) {
|
|
202
|
+
const value = await m.get(message.key);
|
|
203
|
+
await this.respond(message, new memory.RESP_Get({
|
|
204
|
+
bytes: value ? new Uint8Array(value) : undefined,
|
|
205
|
+
level: message.level
|
|
206
|
+
}), postMessageFn);
|
|
207
|
+
}
|
|
208
|
+
else if (message instanceof memory.REQ_Put) {
|
|
209
|
+
await m.put(message.key, message.bytes);
|
|
210
|
+
await this.respond(message, new memory.RESP_Put({ level: message.level }), postMessageFn);
|
|
211
|
+
}
|
|
212
|
+
else if (message instanceof memory.REQ_Size) {
|
|
213
|
+
await this.respond(message, new memory.RESP_Size({
|
|
214
|
+
size: await m.size(),
|
|
215
|
+
level: message.level
|
|
216
|
+
}), postMessageFn);
|
|
217
|
+
}
|
|
218
|
+
else if (message instanceof memory.REQ_Status) {
|
|
219
|
+
await this.respond(message, new memory.RESP_Status({
|
|
220
|
+
status: await m.status(),
|
|
221
|
+
level: message.level
|
|
222
|
+
}), postMessageFn);
|
|
223
|
+
}
|
|
224
|
+
else if (message instanceof memory.REQ_Sublevel) {
|
|
225
|
+
await m.sublevel(message.name);
|
|
226
|
+
await this.respond(message, new memory.RESP_Sublevel({ level: message.level }), postMessageFn);
|
|
179
227
|
}
|
|
180
228
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
await this.respond(message, new memory.RESP_Get({
|
|
188
|
-
bytes: value ? new Uint8Array(value) : undefined,
|
|
189
|
-
level: message.level
|
|
190
|
-
}), postMessageFn);
|
|
191
|
-
}
|
|
192
|
-
else if (message instanceof memory.REQ_Open) {
|
|
193
|
-
await m.open();
|
|
194
|
-
await this.respond(message, new memory.RESP_Open({ level: message.level }), postMessageFn);
|
|
195
|
-
}
|
|
196
|
-
else if (message instanceof memory.REQ_Put) {
|
|
197
|
-
await m.put(message.key, message.bytes);
|
|
198
|
-
await this.respond(message, new memory.RESP_Put({ level: message.level }), postMessageFn);
|
|
199
|
-
}
|
|
200
|
-
else if (message instanceof memory.REQ_Size) {
|
|
201
|
-
await this.respond(message, new memory.RESP_Size({
|
|
202
|
-
size: await m.size(),
|
|
203
|
-
level: message.level
|
|
204
|
-
}), postMessageFn);
|
|
205
|
-
}
|
|
206
|
-
else if (message instanceof memory.REQ_Status) {
|
|
207
|
-
await this.respond(message, new memory.RESP_Status({
|
|
208
|
-
status: await m.status(),
|
|
209
|
-
level: message.level
|
|
210
|
-
}), postMessageFn);
|
|
211
|
-
}
|
|
212
|
-
else if (message instanceof memory.REQ_Sublevel) {
|
|
213
|
-
await m.sublevel(message.name);
|
|
214
|
-
await this.respond(message, new memory.RESP_Sublevel({ level: message.level }), postMessageFn);
|
|
215
|
-
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
await this.respond(message, new memory.RESP_Error({
|
|
232
|
+
error: error?.["message"] || error?.constructor.name,
|
|
233
|
+
level: message["level"] || []
|
|
234
|
+
}), postMessageFn);
|
|
216
235
|
}
|
|
217
236
|
});
|
|
218
237
|
}
|
|
@@ -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,MAAM,iBAAiB,CAAC;
|
|
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,20 +1,20 @@
|
|
|
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>;
|
|
14
|
-
get(key: string):
|
|
15
|
-
put(key: string, value: Uint8Array):
|
|
14
|
+
get(key: string): MaybePromise<Uint8Array | undefined>;
|
|
15
|
+
put(key: string, value: Uint8Array): any;
|
|
16
16
|
del(key: any): MaybePromise<void>;
|
|
17
|
-
sublevel(name: string): AnyStore |
|
|
17
|
+
sublevel(name: string): AnyStore | MaybePromise<AnyStore>;
|
|
18
18
|
iterator(): {
|
|
19
19
|
[Symbol.asyncIterator]: () => AsyncIterator<[
|
|
20
20
|
string,
|
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) {
|
|
93
|
+
this.worker = createWorker(this.directory);
|
|
92
94
|
this.root = this._createMemory([]);
|
|
93
|
-
this.worker = createWorker();
|
|
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);
|
|
@@ -98,10 +99,10 @@ export class OPFSStore {
|
|
|
98
99
|
await this.root.open();
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
+
get(key) {
|
|
102
103
|
return this.root.get(key);
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
+
put(key, value) {
|
|
105
106
|
return this.root.put(key, value);
|
|
106
107
|
}
|
|
107
108
|
del(key) {
|
|
@@ -124,7 +125,7 @@ export class OPFSStore {
|
|
|
124
125
|
const onResponse = (message) => {
|
|
125
126
|
this._responseCallbacks.delete(request.messageId);
|
|
126
127
|
if (message instanceof memory.RESP_Error) {
|
|
127
|
-
reject(message.error);
|
|
128
|
+
reject(new Error(message.error));
|
|
128
129
|
}
|
|
129
130
|
else {
|
|
130
131
|
resolve(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.12",
|
|
4
4
|
"description": "Level with lazy transactions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"localMaintainers": [
|
|
49
49
|
"dao.xyz"
|
|
50
50
|
],
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "954ec9009b2cd65baf4558009504b83eb17badf6"
|
|
52
52
|
}
|
package/src/opfs-worker.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
2
|
import { AnyStore } from "./interface.js";
|
|
3
3
|
import * as memory from "./opfs-worker-messages.js";
|
|
4
|
-
import { fromBase64URL, toBase64URL } from "@peerbit/crypto";
|
|
4
|
+
import { fromBase64URL, toBase64URL, ready } from "@peerbit/crypto";
|
|
5
5
|
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
6
6
|
import { waitForResolved } from "@peerbit/time";
|
|
7
|
+
|
|
8
|
+
const directory = location.hash.split("#")?.[1];
|
|
9
|
+
|
|
7
10
|
const encodeName = (name: string): string => {
|
|
8
11
|
// since "/" and perhaps other characters might not be allowed we do encode
|
|
9
12
|
const writer = new BinaryWriter();
|
|
@@ -45,7 +48,6 @@ const createWriteHandle = async (fileHandle: FileSystemFileHandle) => {
|
|
|
45
48
|
};
|
|
46
49
|
|
|
47
50
|
export class OPFSStoreWorker {
|
|
48
|
-
level: string[];
|
|
49
51
|
private _levels: Map<string, AnyStore>;
|
|
50
52
|
private _rootStore: AnyStore;
|
|
51
53
|
|
|
@@ -58,21 +60,27 @@ export class OPFSStoreWorker {
|
|
|
58
60
|
const postMessageFn = postMessage;
|
|
59
61
|
this._memoryIterator = new Map();
|
|
60
62
|
this._levels = new Map();
|
|
63
|
+
let isOpen = false;
|
|
64
|
+
|
|
61
65
|
const createMemory = (
|
|
62
66
|
root?: FileSystemDirectoryHandle,
|
|
63
|
-
|
|
67
|
+
levels: string[] = []
|
|
64
68
|
): AnyStore => {
|
|
65
|
-
let isOpen = false;
|
|
66
|
-
|
|
67
69
|
let m: FileSystemDirectoryHandle = root!;
|
|
68
70
|
|
|
69
71
|
// 'open' | 'closed' is just a virtual thing since OPFS is always open as soone as we get the FileSystemDirectoryHandle
|
|
70
72
|
// TODO remove status? or assume not storage adapters can be closed?
|
|
71
73
|
const open = async () => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
await ready;
|
|
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
|
+
}
|
|
74
83
|
};
|
|
75
|
-
|
|
76
84
|
return {
|
|
77
85
|
clear: async () => {
|
|
78
86
|
for await (const key of m.keys()) {
|
|
@@ -106,7 +114,7 @@ export class OPFSStoreWorker {
|
|
|
106
114
|
error instanceof DOMException &&
|
|
107
115
|
error.name === "NotFoundError"
|
|
108
116
|
) {
|
|
109
|
-
return;
|
|
117
|
+
return undefined;
|
|
110
118
|
} else {
|
|
111
119
|
throw error;
|
|
112
120
|
}
|
|
@@ -140,7 +148,7 @@ export class OPFSStoreWorker {
|
|
|
140
148
|
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
141
149
|
create: true
|
|
142
150
|
});
|
|
143
|
-
const sublevel = [...
|
|
151
|
+
const sublevel = [...levels, name];
|
|
144
152
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
145
153
|
this._levels.set(memory.levelKey(sublevel), subMemory);
|
|
146
154
|
await subMemory.open();
|
|
@@ -169,113 +177,128 @@ export class OPFSStoreWorker {
|
|
|
169
177
|
|
|
170
178
|
self.addEventListener("message", async (ev) => {
|
|
171
179
|
const message = deserialize(ev["data"], memory.MemoryRequest);
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
message.
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
new memory.RESP_Clear({ level: message.level }),
|
|
186
|
-
postMessageFn
|
|
187
|
-
);
|
|
188
|
-
} else if (message instanceof memory.REQ_Close) {
|
|
189
|
-
await m.close();
|
|
190
|
-
await this.respond(
|
|
191
|
-
message,
|
|
192
|
-
new memory.RESP_Close({ level: message.level }),
|
|
193
|
-
postMessageFn
|
|
194
|
-
);
|
|
195
|
-
} else if (message instanceof memory.REQ_Del) {
|
|
196
|
-
await m.del(message.key);
|
|
197
|
-
await this.respond(
|
|
198
|
-
message,
|
|
199
|
-
new memory.RESP_Del({ level: message.level }),
|
|
200
|
-
postMessageFn
|
|
201
|
-
);
|
|
202
|
-
} else if (message instanceof memory.REQ_Iterator_Next) {
|
|
203
|
-
let iterator = this._memoryIterator.get(message.id);
|
|
204
|
-
if (!iterator) {
|
|
205
|
-
iterator = m.iterator()[Symbol.asyncIterator]();
|
|
206
|
-
this._memoryIterator.set(message.id, iterator);
|
|
180
|
+
try {
|
|
181
|
+
if (message instanceof memory.MemoryMessage) {
|
|
182
|
+
if (message instanceof memory.REQ_Open) {
|
|
183
|
+
if (!isOpen) {
|
|
184
|
+
await this._rootStore.open();
|
|
185
|
+
isOpen = true;
|
|
186
|
+
}
|
|
187
|
+
await this.respond(
|
|
188
|
+
message,
|
|
189
|
+
new memory.RESP_Open({ level: message.level }),
|
|
190
|
+
postMessageFn
|
|
191
|
+
);
|
|
192
|
+
return;
|
|
207
193
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
message
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
194
|
+
|
|
195
|
+
const m =
|
|
196
|
+
message.level.length === 0
|
|
197
|
+
? this._rootStore
|
|
198
|
+
: this._levels.get(memory.levelKey(message.level));
|
|
199
|
+
if (!m) {
|
|
200
|
+
throw new Error("Recieved memory message for an undefined level");
|
|
201
|
+
} else if (message instanceof memory.REQ_Clear) {
|
|
202
|
+
await m.clear();
|
|
203
|
+
await this.respond(
|
|
204
|
+
message,
|
|
205
|
+
new memory.RESP_Clear({ level: message.level }),
|
|
206
|
+
postMessageFn
|
|
207
|
+
);
|
|
208
|
+
} else if (message instanceof memory.REQ_Close) {
|
|
209
|
+
await m.close();
|
|
210
|
+
await this.respond(
|
|
211
|
+
message,
|
|
212
|
+
new memory.RESP_Close({ level: message.level }),
|
|
213
|
+
postMessageFn
|
|
214
|
+
);
|
|
215
|
+
} else if (message instanceof memory.REQ_Del) {
|
|
216
|
+
await m.del(message.key);
|
|
217
|
+
await this.respond(
|
|
218
|
+
message,
|
|
219
|
+
new memory.RESP_Del({ level: message.level }),
|
|
220
|
+
postMessageFn
|
|
221
|
+
);
|
|
222
|
+
} else if (message instanceof memory.REQ_Iterator_Next) {
|
|
223
|
+
let iterator = this._memoryIterator.get(message.id);
|
|
224
|
+
if (!iterator) {
|
|
225
|
+
iterator = m.iterator()[Symbol.asyncIterator]();
|
|
226
|
+
this._memoryIterator.set(message.id, iterator);
|
|
227
|
+
}
|
|
228
|
+
const next = await iterator.next();
|
|
229
|
+
await this.respond(
|
|
230
|
+
message,
|
|
231
|
+
new memory.RESP_Iterator_Next({
|
|
232
|
+
keys: next.done ? [] : [next.value[0]],
|
|
233
|
+
values: next.done ? [] : [new Uint8Array(next.value[1])],
|
|
234
|
+
level: message.level
|
|
235
|
+
}),
|
|
236
|
+
postMessageFn
|
|
237
|
+
);
|
|
238
|
+
if (next.done) {
|
|
239
|
+
this._memoryIterator.delete(message.id);
|
|
240
|
+
}
|
|
241
|
+
} else if (message instanceof memory.REQ_Iterator_Stop) {
|
|
219
242
|
this._memoryIterator.delete(message.id);
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
)
|
|
261
|
-
|
|
262
|
-
await this.respond(
|
|
263
|
-
message,
|
|
264
|
-
new memory.RESP_Status({
|
|
265
|
-
status: await m.status(),
|
|
266
|
-
level: message.level
|
|
267
|
-
}),
|
|
268
|
-
postMessageFn
|
|
269
|
-
);
|
|
270
|
-
} else if (message instanceof memory.REQ_Sublevel) {
|
|
271
|
-
await m.sublevel(message.name);
|
|
243
|
+
await this.respond(
|
|
244
|
+
message,
|
|
245
|
+
new memory.RESP_Iterator_Stop({ level: message.level }),
|
|
246
|
+
postMessageFn
|
|
247
|
+
);
|
|
248
|
+
} else if (message instanceof memory.REQ_Get) {
|
|
249
|
+
const value = await m.get(message.key);
|
|
250
|
+
await this.respond(
|
|
251
|
+
message,
|
|
252
|
+
new memory.RESP_Get({
|
|
253
|
+
bytes: value ? new Uint8Array(value) : undefined,
|
|
254
|
+
level: message.level
|
|
255
|
+
}),
|
|
256
|
+
postMessageFn
|
|
257
|
+
);
|
|
258
|
+
} else if (message instanceof memory.REQ_Put) {
|
|
259
|
+
await m.put(message.key, message.bytes);
|
|
260
|
+
await this.respond(
|
|
261
|
+
message,
|
|
262
|
+
new memory.RESP_Put({ level: message.level }),
|
|
263
|
+
postMessageFn
|
|
264
|
+
);
|
|
265
|
+
} else if (message instanceof memory.REQ_Size) {
|
|
266
|
+
await this.respond(
|
|
267
|
+
message,
|
|
268
|
+
new memory.RESP_Size({
|
|
269
|
+
size: await m.size(),
|
|
270
|
+
level: message.level
|
|
271
|
+
}),
|
|
272
|
+
postMessageFn
|
|
273
|
+
);
|
|
274
|
+
} else if (message instanceof memory.REQ_Status) {
|
|
275
|
+
await this.respond(
|
|
276
|
+
message,
|
|
277
|
+
new memory.RESP_Status({
|
|
278
|
+
status: await m.status(),
|
|
279
|
+
level: message.level
|
|
280
|
+
}),
|
|
281
|
+
postMessageFn
|
|
282
|
+
);
|
|
283
|
+
} else if (message instanceof memory.REQ_Sublevel) {
|
|
284
|
+
await m.sublevel(message.name);
|
|
272
285
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
286
|
+
await this.respond(
|
|
287
|
+
message,
|
|
288
|
+
new memory.RESP_Sublevel({ level: message.level }),
|
|
289
|
+
postMessageFn
|
|
290
|
+
);
|
|
291
|
+
}
|
|
278
292
|
}
|
|
293
|
+
} catch (error) {
|
|
294
|
+
await this.respond(
|
|
295
|
+
message,
|
|
296
|
+
new memory.RESP_Error({
|
|
297
|
+
error: error?.["message"] || error?.constructor.name,
|
|
298
|
+
level: message["level"] || []
|
|
299
|
+
}),
|
|
300
|
+
postMessageFn
|
|
301
|
+
);
|
|
279
302
|
}
|
|
280
303
|
});
|
|
281
304
|
}
|
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) {
|
|
140
|
+
this.worker = createWorker(this.directory);
|
|
143
141
|
this.root = this._createMemory([]);
|
|
144
|
-
this.worker = createWorker();
|
|
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);
|
|
@@ -149,16 +146,16 @@ export class OPFSStore implements AnyStore {
|
|
|
149
146
|
await this.root.open();
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
|
-
|
|
149
|
+
get(key: string): MaybePromise<Uint8Array | undefined> {
|
|
153
150
|
return this.root.get(key);
|
|
154
151
|
}
|
|
155
|
-
|
|
152
|
+
put(key: string, value: Uint8Array) {
|
|
156
153
|
return this.root.put(key, value);
|
|
157
154
|
}
|
|
158
155
|
del(key: any): MaybePromise<void> {
|
|
159
156
|
return this.root.del(key);
|
|
160
157
|
}
|
|
161
|
-
sublevel(name: string): AnyStore |
|
|
158
|
+
sublevel(name: string): AnyStore | MaybePromise<AnyStore> {
|
|
162
159
|
return this.root.sublevel(name);
|
|
163
160
|
}
|
|
164
161
|
iterator(): {
|
|
@@ -185,7 +182,7 @@ export class OPFSStore implements AnyStore {
|
|
|
185
182
|
const onResponse = (message: memory.MemoryRequest) => {
|
|
186
183
|
this._responseCallbacks.delete(request.messageId);
|
|
187
184
|
if (message instanceof memory.RESP_Error) {
|
|
188
|
-
reject(message.error);
|
|
185
|
+
reject(new Error(message.error));
|
|
189
186
|
} else {
|
|
190
187
|
resolve(message as T);
|
|
191
188
|
}
|
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 }> => {
|