@peerbit/any-store 2.0.1 → 2.0.2-0691c73

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.
Files changed (48) hide show
  1. package/dist/src/index.d.ts +4 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +2 -0
  4. package/dist/src/index.js.map +1 -0
  5. package/{lib/esm → dist/src}/level.d.ts +2 -1
  6. package/dist/src/level.d.ts.map +1 -0
  7. package/{lib/esm → dist/src}/level.js +3 -5
  8. package/dist/src/level.js.map +1 -0
  9. package/{lib/esm → dist/src}/memory.d.ts +3 -2
  10. package/dist/src/memory.d.ts.map +1 -0
  11. package/{lib/esm → dist/src}/memory.js +3 -2
  12. package/dist/src/memory.js.map +1 -0
  13. package/{lib/esm → dist/src}/store.browser.d.ts +2 -1
  14. package/dist/src/store.browser.d.ts.map +1 -0
  15. package/{lib/esm → dist/src}/store.browser.js +1 -1
  16. package/dist/src/store.browser.js.map +1 -0
  17. package/{lib/esm → dist/src}/store.d.ts +1 -0
  18. package/dist/src/store.d.ts.map +1 -0
  19. package/package.json +79 -50
  20. package/src/index.ts +2 -2
  21. package/src/level.ts +11 -16
  22. package/src/memory.ts +3 -3
  23. package/src/store.browser.ts +1 -1
  24. package/LICENSE +0 -202
  25. package/lib/esm/index.d.ts +0 -3
  26. package/lib/esm/index.js +0 -4
  27. package/lib/esm/index.js.map +0 -1
  28. package/lib/esm/interface.d.ts +0 -18
  29. package/lib/esm/interface.js +0 -2
  30. package/lib/esm/interface.js.map +0 -1
  31. package/lib/esm/level.js.map +0 -1
  32. package/lib/esm/memory.js.map +0 -1
  33. package/lib/esm/opfs-worker-messages.d.ts +0 -122
  34. package/lib/esm/opfs-worker-messages.js +0 -325
  35. package/lib/esm/opfs-worker-messages.js.map +0 -1
  36. package/lib/esm/opfs-worker.d.ts +0 -8
  37. package/lib/esm/opfs-worker.js +0 -276
  38. package/lib/esm/opfs-worker.js.map +0 -1
  39. package/lib/esm/opfs.d.ts +0 -27
  40. package/lib/esm/opfs.js +0 -148
  41. package/lib/esm/opfs.js.map +0 -1
  42. package/lib/esm/store.browser.js.map +0 -1
  43. package/src/interface.ts +0 -20
  44. package/src/opfs-worker-messages.ts +0 -210
  45. package/src/opfs-worker.ts +0 -347
  46. package/src/opfs.ts +0 -205
  47. /package/{lib/esm → dist/src}/store.js +0 -0
  48. /package/{lib/esm → dist/src}/store.js.map +0 -0
package/src/opfs.ts DELETED
@@ -1,205 +0,0 @@
1
- import { AnyStore, MaybePromise } from "./interface.js";
2
- import * as memory from "./opfs-worker-messages.js";
3
- import { v4 as uuid } from "uuid";
4
- import { serialize, deserialize } from "@dao-xyz/borsh";
5
- import workerUrl from "./opfs-worker?worker&url";
6
-
7
- function memoryIterator(
8
- client: {
9
- request<T extends memory.MemoryRequest>(
10
- request: memory.MemoryRequest
11
- ): Promise<T>;
12
- },
13
- level: string[]
14
- ): {
15
- [Symbol.asyncIterator]: () => AsyncIterator<[string, Uint8Array], void, void>;
16
- } {
17
- return {
18
- [Symbol.asyncIterator]() {
19
- const iteratorId = uuid();
20
- return {
21
- next: async () => {
22
- const resp = await client.request<memory.RESP_Iterator_Next>(
23
- new memory.REQ_Iterator_Next({ id: iteratorId, level })
24
- );
25
- if (resp.keys.length > 1) {
26
- throw new Error("Unsupported iteration response");
27
- }
28
- // Will only have 0 or 1 element for now
29
- for (let i = 0; i < resp.keys.length; i++) {
30
- return {
31
- done: false,
32
- value: [resp.keys[i], resp.values[i]] as [string, Uint8Array]
33
- } as { done: false; value: [string, Uint8Array] };
34
- }
35
- return { done: true, value: undefined } as {
36
- done: true;
37
- value: undefined;
38
- };
39
- },
40
- async return() {
41
- await client.request<memory.RESP_Iterator_Next>(
42
- new memory.REQ_Iterator_Stop({ id: iteratorId, level })
43
- );
44
- return { done: true, value: undefined } as {
45
- done: true;
46
- value: undefined;
47
- };
48
- }
49
- };
50
- }
51
- };
52
- }
53
-
54
- const createWorker = (directory) => {
55
- const workerURL = workerUrl + "#" + directory;
56
- return new Worker(workerURL, { type: "module" });
57
- };
58
-
59
- export class OPFSStore implements AnyStore {
60
- worker: Worker;
61
- levelMap: Map<string, AnyStore>;
62
- root: AnyStore;
63
-
64
- private _responseCallbacks: Map<
65
- string,
66
- { fn: (message: memory.MemoryRequest) => any; once: boolean }
67
- > = new Map();
68
-
69
- private _createStorage: (level: string[]) => AnyStore;
70
- constructor(readonly directory?: string) {
71
- this.levelMap = new Map();
72
- this._createStorage = (level: string[] = []): AnyStore => {
73
- return {
74
- clear: async () => {
75
- await this.request<memory.RESP_Clear>(
76
- new memory.REQ_Clear({ level })
77
- );
78
- },
79
- del: async (key) => {
80
- await this.request<memory.RESP_Del>(
81
- new memory.REQ_Del({ level, key })
82
- );
83
- },
84
- get: async (key) => {
85
- return (
86
- await this.request<memory.RESP_Get>(
87
- new memory.REQ_Get({ level, key })
88
- )
89
- ).bytes;
90
- },
91
- put: async (key, value) => {
92
- await this.request<memory.RESP_Put>(
93
- new memory.REQ_Put({ level, key, bytes: value })
94
- );
95
- },
96
- status: async () =>
97
- (
98
- await this.request<memory.RESP_Status>(
99
- new memory.REQ_Status({ level })
100
- )
101
- ).status,
102
- sublevel: async (name) => {
103
- await this.request(new memory.REQ_Sublevel({ level, name }));
104
- const newLevels = [...level, name];
105
- const sublevel = this._createStorage(newLevels);
106
- this.levelMap.set(memory.levelKey(newLevels), sublevel);
107
- return sublevel;
108
- },
109
-
110
- iterator: () => memoryIterator(this, level),
111
- close: async () => {
112
- await this.request<memory.RESP_Close>(
113
- new memory.REQ_Close({ level })
114
- );
115
- /* this.levelMap.delete(memory.levelKey(level)); */
116
- },
117
- open: async () => {
118
- await this.request<memory.RESP_Open>(new memory.REQ_Open({ level }));
119
- },
120
-
121
- size: async () => {
122
- const size = await this.request<memory.RESP_Size>(
123
- new memory.REQ_Size({ level })
124
- );
125
- return size.size;
126
- }
127
- };
128
- };
129
- }
130
- status() {
131
- return this.worker ? this.root.status() : "closed";
132
- }
133
- async close(): Promise<void> {
134
- this.worker.terminate();
135
- this.worker = undefined!;
136
- this._responseCallbacks.clear();
137
- this.levelMap.clear();
138
- }
139
- async open(): Promise<void> {
140
- if (!this.worker) {
141
- if (
142
- !globalThis["__playwright_test__"] &&
143
- (await navigator.storage.persist()) === false
144
- ) {
145
- throw new Error("OPFS not allowed to persist data");
146
- }
147
- this.worker = createWorker(this.directory);
148
- this.root = this._createStorage([]);
149
- this.worker.addEventListener("message", async (ev) => {
150
- const message = deserialize(ev.data, memory.MemoryMessage);
151
- this._responseCallbacks.get(message.messageId)!.fn(message);
152
- });
153
- await this.root.open();
154
- }
155
- }
156
- get(key: string): MaybePromise<Uint8Array | undefined> {
157
- return this.root.get(key);
158
- }
159
- put(key: string, value: Uint8Array) {
160
- return this.root.put(key, value);
161
- }
162
- del(key: any): MaybePromise<void> {
163
- return this.root.del(key);
164
- }
165
- sublevel(name: string): AnyStore | MaybePromise<AnyStore> {
166
- return this.root.sublevel(name);
167
- }
168
- iterator(): {
169
- [Symbol.asyncIterator]: () => AsyncIterator<
170
- [string, Uint8Array],
171
- void,
172
- void
173
- >;
174
- } {
175
- return this.root.iterator();
176
- }
177
- clear(): MaybePromise<void> {
178
- return this.root.clear();
179
- }
180
-
181
- size(): MaybePromise<number> {
182
- return this.root.size();
183
- }
184
-
185
- async request<T extends memory.MemoryRequest>(
186
- request: memory.MemoryRequest
187
- ): Promise<T> {
188
- return new Promise<T>((resolve, reject) => {
189
- const onResponse = (message: memory.MemoryRequest) => {
190
- this._responseCallbacks.delete(request.messageId);
191
- if (message instanceof memory.RESP_Error) {
192
- reject(new Error(message.error));
193
- } else {
194
- resolve(message as T);
195
- }
196
- };
197
- this._responseCallbacks.set(request.messageId, {
198
- fn: onResponse,
199
- once: true
200
- });
201
- const bytes = serialize(request);
202
- this.worker.postMessage(bytes, [bytes.buffer]);
203
- });
204
- }
205
- }
File without changes
File without changes