@peerbit/any-store 1.0.1 → 1.0.2
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 +25 -7
- package/lib/esm/opfs-worker.js.map +1 -1
- package/package.json +3 -3
- package/src/opfs-worker.ts +31 -10
package/lib/esm/opfs-worker.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
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";
|
|
4
|
+
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
5
|
+
const encodeName = (name) => {
|
|
6
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
7
|
+
const writer = new BinaryWriter();
|
|
8
|
+
writer.string(name);
|
|
9
|
+
return toBase64URL(writer.finalize());
|
|
10
|
+
};
|
|
11
|
+
const decodeName = (name) => {
|
|
12
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
13
|
+
const writer = new BinaryReader(fromBase64URL(name));
|
|
14
|
+
return writer.string();
|
|
15
|
+
};
|
|
3
16
|
export class OPFSStoreWorker {
|
|
4
17
|
level;
|
|
5
18
|
_levels;
|
|
@@ -26,7 +39,7 @@ export class OPFSStoreWorker {
|
|
|
26
39
|
},
|
|
27
40
|
del: async (key) => {
|
|
28
41
|
try {
|
|
29
|
-
await m.removeEntry(key, { recursive: true });
|
|
42
|
+
await m.removeEntry(encodeName(key), { recursive: true });
|
|
30
43
|
}
|
|
31
44
|
catch (error) {
|
|
32
45
|
if (error instanceof DOMException &&
|
|
@@ -40,7 +53,7 @@ export class OPFSStoreWorker {
|
|
|
40
53
|
},
|
|
41
54
|
get: async (key) => {
|
|
42
55
|
try {
|
|
43
|
-
const fileHandle = await m.getFileHandle(key);
|
|
56
|
+
const fileHandle = await m.getFileHandle(encodeName(key));
|
|
44
57
|
const buffer = await (await fileHandle.getFile()).arrayBuffer();
|
|
45
58
|
return new Uint8Array(buffer);
|
|
46
59
|
}
|
|
@@ -55,7 +68,9 @@ export class OPFSStoreWorker {
|
|
|
55
68
|
}
|
|
56
69
|
},
|
|
57
70
|
put: async (key, value) => {
|
|
58
|
-
const fileHandle = await m.getFileHandle(key, {
|
|
71
|
+
const fileHandle = await m.getFileHandle(encodeName(key), {
|
|
72
|
+
create: true
|
|
73
|
+
});
|
|
59
74
|
const writeFileHandle = await fileHandle.createSyncAccessHandle();
|
|
60
75
|
writeFileHandle.write(value);
|
|
61
76
|
writeFileHandle.close();
|
|
@@ -73,8 +88,11 @@ export class OPFSStoreWorker {
|
|
|
73
88
|
},
|
|
74
89
|
status: () => (isOpen ? "open" : "closed"),
|
|
75
90
|
sublevel: async (name) => {
|
|
76
|
-
const
|
|
77
|
-
const
|
|
91
|
+
const encodedName = encodeName(name);
|
|
92
|
+
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
93
|
+
create: true
|
|
94
|
+
});
|
|
95
|
+
const sublevel = [...level, encodedName];
|
|
78
96
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
79
97
|
this._levels.set(memory.levelKey(sublevel), subMemory);
|
|
80
98
|
await subMemory.open();
|
|
@@ -84,7 +102,7 @@ export class OPFSStoreWorker {
|
|
|
84
102
|
for await (const v of m.values()) {
|
|
85
103
|
if (v.kind == "file") {
|
|
86
104
|
yield [
|
|
87
|
-
v.name,
|
|
105
|
+
decodeName(v.name),
|
|
88
106
|
new Uint8Array(await (await v.getFile()).arrayBuffer())
|
|
89
107
|
];
|
|
90
108
|
}
|
|
@@ -103,7 +121,7 @@ export class OPFSStoreWorker {
|
|
|
103
121
|
if (message instanceof memory.MemoryMessage) {
|
|
104
122
|
const m = message.level.length === 0
|
|
105
123
|
? this._rootStore
|
|
106
|
-
: this._levels.get(memory.levelKey(message.level));
|
|
124
|
+
: this._levels.get(memory.levelKey(message.level.map((x) => encodeName(x))));
|
|
107
125
|
if (!m) {
|
|
108
126
|
throw new Error("Recieved memory message for an undefined level");
|
|
109
127
|
}
|
|
@@ -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;
|
|
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;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,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,OAAO,eAAe;IAC3B,KAAK,CAAW;IACR,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,MAAM,YAAY,GAAG,CACpB,IAAgC,EAChC,QAAkB,EAAE,EACT,EAAE;YACb,IAAI,MAAM,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,GAA8B,IAAK,CAAC;YAEzC,uHAAuH;YACvH,oEAAoE;YACpE,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACvB,MAAM,GAAG,IAAI,CAAC;gBACd,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC;YAEF,OAAO;gBACN,KAAK,EAAE,KAAK,IAAI,EAAE;oBACjB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;wBAClC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,CAAC;gBACF,CAAC;gBAED,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,IAAI,CAAC;wBACJ,MAAM,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC3D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,IACC,KAAK,YAAY,YAAY;4BAC7B,KAAK,CAAC,IAAI,KAAK,eAAe,EAC7B,CAAC;4BACF,OAAO;wBACR,CAAC;6BAAM,CAAC;4BACP,MAAM,KAAK,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,IAAI,CAAC;wBACJ,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;wBAChE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,IACC,KAAK,YAAY,YAAY;4BAC7B,KAAK,CAAC,IAAI,KAAK,eAAe,EAC7B,CAAC;4BACF,OAAO;wBACR,CAAC;6BAAM,CAAC;4BACP,MAAM,KAAK,CAAC;wBACb,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,KAAiB,EAAE,EAAE;oBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;wBACzD,MAAM,EAAE,IAAI;qBACZ,CAAC,CAAC;oBACH,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,sBAAsB,EAAE,CAAC;oBAElE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7B,eAAe,CAAC,KAAK,EAAE,CAAC;gBACzB,CAAC;gBAED,IAAI,EAAE,KAAK,IAAI,EAAE;oBAChB,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;wBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;4BACpD,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;4BACzB,MAAM,CAAC,KAAK,EAAE,CAAC;wBAChB,CAAC;oBACF,CAAC;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAE1C,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACxB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE;wBAC1D,MAAM,EAAE,IAAI;qBACZ,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;oBACzC,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;oBACvD,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;oBACvB,OAAO,SAAS,CAAC;gBAClB,CAAC;gBAED,KAAK,CAAC,CAAC,QAAQ;oBACd,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;wBAClC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;4BACtB,MAAM;gCACL,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gCAClB,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;6BACvD,CAAC;wBACH,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,KAAK,EAAE,KAAK,IAAI,EAAE;oBACjB,MAAM,GAAG,KAAK,CAAC;oBACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC9B,CAAC;gBACD,IAAI;aACJ,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;QAEjC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,OAAO,YAAY,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC7C,MAAM,CAAC,GACN,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,UAAU;oBACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACxD,CAAC;gBACL,IAAI,CAAC,CAAC,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC;oBAChD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAC/C,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC;oBAChD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAC/C,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9C,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAC7C,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBACxD,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACf,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;wBAChD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;oBAChD,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,kBAAkB,CAAC;wBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACtC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxD,KAAK,EAAE,OAAO,CAAC,KAAK;qBACpB,CAAC,EACF,aAAa,CACb,CAAC;oBACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACzC,CAAC;gBACF,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBACxD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACxC,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EACvD,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACvC,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,QAAQ,CAAC;wBACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;wBAChD,KAAK,EAAE,OAAO,CAAC,KAAK;qBACpB,CAAC,EACF,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAC9C,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9C,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAC7C,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;wBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;qBACpB,CAAC,EACF,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC;oBACjD,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,WAAW,CAAC;wBACtB,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE;wBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;qBACpB,CAAC,EACF,aAAa,CACb,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC;oBACnD,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAE/B,MAAM,IAAI,CAAC,OAAO,CACjB,OAAO,EACP,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAClD,aAAa,CACb,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,OAA6B,EAC7B,QAA8B,EAC9B,aAAa,GAAG,WAAW;QAE3B,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,aAAa,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACD;AAED,IAAI,eAAe,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/any-store",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
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.
|
|
42
|
+
"@peerbit/crypto": "^2.1.0",
|
|
43
43
|
"@peerbit/logger": "1.0.2",
|
|
44
44
|
"@peerbit/time": "2.0.0",
|
|
45
45
|
"level": "^8.0.0",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"localMaintainers": [
|
|
49
49
|
"dao.xyz"
|
|
50
50
|
],
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "cba5d4b1a6f3343f044c7d3194494c3572710cc8"
|
|
52
52
|
}
|
package/src/opfs-worker.ts
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
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";
|
|
5
|
+
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
6
|
+
const encodeName = (name: string): string => {
|
|
7
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
8
|
+
const writer = new BinaryWriter();
|
|
9
|
+
writer.string(name);
|
|
10
|
+
return toBase64URL(writer.finalize());
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const decodeName = (name: string): string => {
|
|
14
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
15
|
+
const writer = new BinaryReader(fromBase64URL(name));
|
|
16
|
+
return writer.string();
|
|
17
|
+
};
|
|
4
18
|
|
|
5
19
|
export class OPFSStoreWorker {
|
|
6
20
|
level: string[];
|
|
@@ -38,9 +52,9 @@ export class OPFSStoreWorker {
|
|
|
38
52
|
}
|
|
39
53
|
},
|
|
40
54
|
|
|
41
|
-
del: async (key) => {
|
|
55
|
+
del: async (key: string) => {
|
|
42
56
|
try {
|
|
43
|
-
await m.removeEntry(key, { recursive: true });
|
|
57
|
+
await m.removeEntry(encodeName(key), { recursive: true });
|
|
44
58
|
} catch (error) {
|
|
45
59
|
if (
|
|
46
60
|
error instanceof DOMException &&
|
|
@@ -53,9 +67,9 @@ export class OPFSStoreWorker {
|
|
|
53
67
|
}
|
|
54
68
|
},
|
|
55
69
|
|
|
56
|
-
get: async (key) => {
|
|
70
|
+
get: async (key: string) => {
|
|
57
71
|
try {
|
|
58
|
-
const fileHandle = await m.getFileHandle(key);
|
|
72
|
+
const fileHandle = await m.getFileHandle(encodeName(key));
|
|
59
73
|
const buffer = await (await fileHandle.getFile()).arrayBuffer();
|
|
60
74
|
return new Uint8Array(buffer);
|
|
61
75
|
} catch (error) {
|
|
@@ -69,8 +83,10 @@ export class OPFSStoreWorker {
|
|
|
69
83
|
}
|
|
70
84
|
}
|
|
71
85
|
},
|
|
72
|
-
put: async (key, value) => {
|
|
73
|
-
const fileHandle = await m.getFileHandle(key, {
|
|
86
|
+
put: async (key: string, value: Uint8Array) => {
|
|
87
|
+
const fileHandle = await m.getFileHandle(encodeName(key), {
|
|
88
|
+
create: true
|
|
89
|
+
});
|
|
74
90
|
const writeFileHandle = await fileHandle.createSyncAccessHandle();
|
|
75
91
|
|
|
76
92
|
writeFileHandle.write(value);
|
|
@@ -91,8 +107,11 @@ export class OPFSStoreWorker {
|
|
|
91
107
|
status: () => (isOpen ? "open" : "closed"),
|
|
92
108
|
|
|
93
109
|
sublevel: async (name) => {
|
|
94
|
-
const
|
|
95
|
-
const
|
|
110
|
+
const encodedName = encodeName(name);
|
|
111
|
+
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
112
|
+
create: true
|
|
113
|
+
});
|
|
114
|
+
const sublevel = [...level, encodedName];
|
|
96
115
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
97
116
|
this._levels.set(memory.levelKey(sublevel), subMemory);
|
|
98
117
|
await subMemory.open();
|
|
@@ -103,7 +122,7 @@ export class OPFSStoreWorker {
|
|
|
103
122
|
for await (const v of m.values()) {
|
|
104
123
|
if (v.kind == "file") {
|
|
105
124
|
yield [
|
|
106
|
-
v.name,
|
|
125
|
+
decodeName(v.name),
|
|
107
126
|
new Uint8Array(await (await v.getFile()).arrayBuffer())
|
|
108
127
|
];
|
|
109
128
|
}
|
|
@@ -125,7 +144,9 @@ export class OPFSStoreWorker {
|
|
|
125
144
|
const m =
|
|
126
145
|
message.level.length === 0
|
|
127
146
|
? this._rootStore
|
|
128
|
-
: this._levels.get(
|
|
147
|
+
: this._levels.get(
|
|
148
|
+
memory.levelKey(message.level.map((x) => encodeName(x)))
|
|
149
|
+
);
|
|
129
150
|
if (!m) {
|
|
130
151
|
throw new Error("Recieved memory message for an undefined level");
|
|
131
152
|
} else if (message instanceof memory.REQ_Clear) {
|