@peerbit/any-store 2.1.9 → 2.1.10
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/src/level.d.ts +2 -1
- package/dist/src/level.d.ts.map +1 -1
- package/dist/src/level.js +18 -26
- package/dist/src/level.js.map +1 -1
- package/dist/src/store.js +1 -1
- package/dist/src/store.js.map +1 -1
- package/package.json +2 -2
- package/src/level.ts +22 -28
- package/src/store.ts +1 -1
package/dist/src/level.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ import { type AnyStore } from "@peerbit/any-store-interface";
|
|
|
2
2
|
import { type AbstractLevel } from "abstract-level";
|
|
3
3
|
export declare class LevelStore implements AnyStore {
|
|
4
4
|
readonly store: AbstractLevel<any, any, any>;
|
|
5
|
+
private getFn;
|
|
5
6
|
constructor(store: AbstractLevel<any, any, any>);
|
|
6
7
|
status(): "opening" | "open" | "closing" | "closed";
|
|
7
8
|
close(): Promise<void>;
|
|
8
9
|
open(): Promise<void>;
|
|
9
|
-
get(key: string):
|
|
10
|
+
get(key: string): Uint8Array<ArrayBufferLike> | Promise<Uint8Array<ArrayBufferLike>>;
|
|
10
11
|
iterator(): AsyncGenerator<[string, Uint8Array], void, void>;
|
|
11
12
|
clear(): Promise<void>;
|
|
12
13
|
put(key: string, value: Uint8Array): Promise<void>;
|
package/dist/src/level.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAmBpD,qBAAa,UAAW,YAAW,QAAQ;IAE9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IADxD,OAAO,CAAC,KAAK,CAAQ;gBACA,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAIxD,MAAM;IAIA,KAAK;IAWL,IAAI;IAYV,GAAG,CAAC,GAAG,EAAE,MAAM;IAIR,QAAQ,IAAI,cAAc,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAS7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAQlC,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA6BvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAI3B,SAAS;CAGT"}
|
package/dist/src/level.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import {} from "@peerbit/any-store-interface";
|
|
2
2
|
import {} from "abstract-level";
|
|
3
3
|
import { ClassicLevel } from "classic-level";
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const getOrGetSync = (level) => {
|
|
5
|
+
const canGetSync = level.supports["getSync"] !== false;
|
|
6
|
+
if (!canGetSync) {
|
|
7
|
+
return (key) => {
|
|
8
|
+
return level.get(key);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return (key) => {
|
|
13
|
+
return level.getSync(key);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
};
|
|
6
17
|
export class LevelStore {
|
|
7
18
|
store;
|
|
19
|
+
getFn;
|
|
8
20
|
constructor(store) {
|
|
9
21
|
this.store = store;
|
|
22
|
+
this.getFn = getOrGetSync(store);
|
|
10
23
|
}
|
|
11
24
|
status() {
|
|
12
25
|
return this.store.status;
|
|
@@ -32,19 +45,8 @@ export class LevelStore {
|
|
|
32
45
|
await this.store.open({ passive: true });
|
|
33
46
|
}
|
|
34
47
|
}
|
|
35
|
-
|
|
36
|
-
return
|
|
37
|
-
this.store.get(key, (err, result) => {
|
|
38
|
-
if (err) {
|
|
39
|
-
// Ignore error if key was not found
|
|
40
|
-
if (isNotFoundError(err)) {
|
|
41
|
-
return reject(err);
|
|
42
|
-
}
|
|
43
|
-
resolve(undefined);
|
|
44
|
-
}
|
|
45
|
-
resolve(result);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
+
get(key) {
|
|
49
|
+
return this.getFn(key);
|
|
48
50
|
}
|
|
49
51
|
async *iterator() {
|
|
50
52
|
const iterator = this.store.iterator({
|
|
@@ -68,17 +70,7 @@ export class LevelStore {
|
|
|
68
70
|
if (this.store.status !== "open") {
|
|
69
71
|
throw new Error("Cache store not open: " + this.store.status);
|
|
70
72
|
}
|
|
71
|
-
|
|
72
|
-
this.store.del(key, (err) => {
|
|
73
|
-
if (err) {
|
|
74
|
-
// Ignore error if key was not found
|
|
75
|
-
if (isNotFoundError(err)) {
|
|
76
|
-
return reject(err);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
resolve();
|
|
80
|
-
});
|
|
81
|
-
});
|
|
73
|
+
await this.store.del(key);
|
|
82
74
|
}
|
|
83
75
|
async size() {
|
|
84
76
|
let size = 0;
|
package/dist/src/level.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAsB,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"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"}
|
package/dist/src/store.js
CHANGED
|
@@ -5,7 +5,7 @@ import { MemoryStore } from "./memory.js";
|
|
|
5
5
|
import { check } from 'diskusage' */
|
|
6
6
|
export const createStore = (directory) => {
|
|
7
7
|
return directory
|
|
8
|
-
? new LevelStore(new Level(directory, { valueEncoding: "view" }))
|
|
8
|
+
? new LevelStore(new Level(directory, { valueEncoding: "view" })) // TODO types? hooks does not seem to be updated
|
|
9
9
|
: new MemoryStore();
|
|
10
10
|
};
|
|
11
11
|
/* export const estimate = (directory: string): Promise<{ quota?: number, usage?: number }> => {
|
package/dist/src/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;oCACoC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAkB,EAAE,EAAE;IACjD,OAAO,SAAS;QACf,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;oCACoC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAkB,EAAE,EAAE;IACjD,OAAO,SAAS;QACf,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC,gDAAgD;QACzH,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF;;IAEI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/any-store",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.10",
|
|
4
4
|
"description": "Level with lazy transactions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@peerbit/any-store-opfs": "^1.0.9",
|
|
71
71
|
"@peerbit/any-store-interface": "^1.0.0",
|
|
72
72
|
"@peerbit/time": "2.1.0",
|
|
73
|
-
"level": "^
|
|
73
|
+
"level": "^10.0.0",
|
|
74
74
|
"uuid": "^10.0.0"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
package/src/level.ts
CHANGED
|
@@ -2,12 +2,27 @@ import { type AnyStore } from "@peerbit/any-store-interface";
|
|
|
2
2
|
import { type AbstractLevel } from "abstract-level";
|
|
3
3
|
import { ClassicLevel } from "classic-level";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
type GetFn = (
|
|
6
|
+
key: string,
|
|
7
|
+
) => Uint8Array | undefined | Promise<Uint8Array | undefined>;
|
|
8
|
+
const getOrGetSync = (level: AbstractLevel<any, any, any>): GetFn => {
|
|
9
|
+
const canGetSync = (level.supports as any)["getSync"] !== false;
|
|
10
|
+
if (!canGetSync) {
|
|
11
|
+
return (key: string): Promise<Uint8Array | undefined> => {
|
|
12
|
+
return level.get(key);
|
|
13
|
+
};
|
|
14
|
+
} else {
|
|
15
|
+
return (key: string): Uint8Array | undefined => {
|
|
16
|
+
return level.getSync(key);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
};
|
|
8
20
|
|
|
9
21
|
export class LevelStore implements AnyStore {
|
|
10
|
-
|
|
22
|
+
private getFn: GetFn;
|
|
23
|
+
constructor(readonly store: AbstractLevel<any, any, any>) {
|
|
24
|
+
this.getFn = getOrGetSync(store);
|
|
25
|
+
}
|
|
11
26
|
|
|
12
27
|
status() {
|
|
13
28
|
return this.store.status;
|
|
@@ -36,19 +51,8 @@ export class LevelStore implements AnyStore {
|
|
|
36
51
|
}
|
|
37
52
|
}
|
|
38
53
|
|
|
39
|
-
|
|
40
|
-
return
|
|
41
|
-
this.store.get(key, (err, result) => {
|
|
42
|
-
if (err) {
|
|
43
|
-
// Ignore error if key was not found
|
|
44
|
-
if (isNotFoundError(err)) {
|
|
45
|
-
return reject(err);
|
|
46
|
-
}
|
|
47
|
-
resolve(undefined);
|
|
48
|
-
}
|
|
49
|
-
resolve(result);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
54
|
+
get(key: string) {
|
|
55
|
+
return this.getFn(key);
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
async *iterator(): AsyncGenerator<[string, Uint8Array], void, void> {
|
|
@@ -77,17 +81,7 @@ export class LevelStore implements AnyStore {
|
|
|
77
81
|
throw new Error("Cache store not open: " + this.store.status);
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
this.store.del(key, (err) => {
|
|
82
|
-
if (err) {
|
|
83
|
-
// Ignore error if key was not found
|
|
84
|
-
if (isNotFoundError(err)) {
|
|
85
|
-
return reject(err);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
resolve();
|
|
89
|
-
});
|
|
90
|
-
});
|
|
84
|
+
await this.store.del(key);
|
|
91
85
|
}
|
|
92
86
|
|
|
93
87
|
async size(): Promise<number> {
|
package/src/store.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { check } from 'diskusage' */
|
|
|
7
7
|
|
|
8
8
|
export const createStore = (directory?: string) => {
|
|
9
9
|
return directory
|
|
10
|
-
? new LevelStore(new Level(directory, { valueEncoding: "view" }))
|
|
10
|
+
? new LevelStore(new Level(directory, { valueEncoding: "view" }) as any) // TODO types? hooks does not seem to be updated
|
|
11
11
|
: new MemoryStore();
|
|
12
12
|
};
|
|
13
13
|
|