extra-disk-store 0.1.3 → 0.1.5
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/README.md +10 -3
- package/lib/converters/prefix-key-converter.d.ts +2 -2
- package/lib/converters/prefix-key-converter.js +14 -7
- package/lib/converters/prefix-key-converter.js.map +1 -1
- package/lib/disk-store-async-view.js +3 -1
- package/lib/disk-store-async-view.js.map +1 -1
- package/lib/disk-store-view.js +3 -1
- package/lib/disk-store-view.js.map +1 -1
- package/lib/disk-store.d.ts +19 -7
- package/lib/disk-store.js +79 -17
- package/lib/disk-store.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +8 -2
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -20,8 +20,15 @@ const value = store.get('key')
|
|
|
20
20
|
## API
|
|
21
21
|
### DiskStore
|
|
22
22
|
```ts
|
|
23
|
+
interface ICache {
|
|
24
|
+
set(key: string, value: Buffer | boolean | undefined): void
|
|
25
|
+
get(key: string): Buffer | boolean | undefined
|
|
26
|
+
delete(key: string): void
|
|
27
|
+
clear(): void
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
class DiskStore {
|
|
24
|
-
static create(filename?: string): Promise<DiskStore>
|
|
31
|
+
static create(filename?: string, cache?: ICache): Promise<DiskStore>
|
|
25
32
|
|
|
26
33
|
close(): void
|
|
27
34
|
|
|
@@ -42,7 +49,7 @@ class DiskStore {
|
|
|
42
49
|
```ts
|
|
43
50
|
interface IKeyConverter<T> {
|
|
44
51
|
toString: (value: T) => string
|
|
45
|
-
fromString: (value: string) => T
|
|
52
|
+
fromString: (value: string) => T | undefined
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
interface IValueConverter<T> {
|
|
@@ -70,7 +77,7 @@ class DiskStoreView<K, V> {
|
|
|
70
77
|
```ts
|
|
71
78
|
interface IKeyAsyncConverter<T> {
|
|
72
79
|
toString: (value: T) => Awaitable<string>
|
|
73
|
-
fromString: (value: string) => Awaitable<T>
|
|
80
|
+
fromString: (value: string) => Awaitable<T | undefined>
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
interface IValueAsyncConverter<T> {
|
|
@@ -4,12 +4,12 @@ export declare class PrefixKeyConverter<T> implements IKeyConverter<T>, IKeyAsyn
|
|
|
4
4
|
private prefix;
|
|
5
5
|
constructor(keyConverter: IKeyConverter<T>, prefix: string);
|
|
6
6
|
toString(value: T): string;
|
|
7
|
-
fromString(value: string): T;
|
|
7
|
+
fromString(value: string): T | undefined;
|
|
8
8
|
}
|
|
9
9
|
export declare class PrefixKeyAsyncConverter<T> implements IKeyAsyncConverter<T> {
|
|
10
10
|
private keyConverter;
|
|
11
11
|
private prefix;
|
|
12
12
|
constructor(keyConverter: IKeyConverter<T> | IKeyAsyncConverter<T>, prefix: string);
|
|
13
13
|
toString(value: T): Promise<string>;
|
|
14
|
-
fromString(value: string): Promise<T>;
|
|
14
|
+
fromString(value: string): Promise<T | undefined>;
|
|
15
15
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PrefixKeyAsyncConverter = exports.PrefixKeyConverter = void 0;
|
|
4
|
-
const prelude_1 = require("@blackglory/prelude");
|
|
5
4
|
class PrefixKeyConverter {
|
|
6
5
|
constructor(keyConverter, prefix) {
|
|
7
6
|
this.keyConverter = keyConverter;
|
|
@@ -12,9 +11,13 @@ class PrefixKeyConverter {
|
|
|
12
11
|
return this.prefix + key;
|
|
13
12
|
}
|
|
14
13
|
fromString(value) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
if (value.startsWith(this.prefix)) {
|
|
15
|
+
const key = this.keyConverter.fromString(value.slice(this.prefix.length));
|
|
16
|
+
return key;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
exports.PrefixKeyConverter = PrefixKeyConverter;
|
|
@@ -28,9 +31,13 @@ class PrefixKeyAsyncConverter {
|
|
|
28
31
|
return this.prefix + key;
|
|
29
32
|
}
|
|
30
33
|
async fromString(value) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
if (value.startsWith(this.prefix)) {
|
|
35
|
+
const key = await this.keyConverter.fromString(value.slice(this.prefix.length));
|
|
36
|
+
return key;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
34
41
|
}
|
|
35
42
|
}
|
|
36
43
|
exports.PrefixKeyAsyncConverter = PrefixKeyAsyncConverter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefix-key-converter.js","sourceRoot":"","sources":["../../src/converters/prefix-key-converter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"prefix-key-converter.js","sourceRoot":"","sources":["../../src/converters/prefix-key-converter.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAC7B,YACU,YAA8B,EAC9B,MAAc;QADd,iBAAY,GAAZ,YAAY,CAAkB;QAC9B,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ,QAAQ,CAAC,KAAQ;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;IAC1B,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YACzE,OAAO,GAAG,CAAA;SACX;aAAM;YACL,OAAO,SAAS,CAAA;SACjB;IACH,CAAC;CACF;AAnBD,gDAmBC;AAED,MAAa,uBAAuB;IAClC,YACU,YAAsD,EACtD,MAAc;QADd,iBAAY,GAAZ,YAAY,CAA0C;QACtD,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,KAAQ;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACnD,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/E,OAAO,GAAG,CAAA;SACX;aAAM;YACL,OAAO,SAAS,CAAA;SACjB;IACH,CAAC;CACF;AAnBD,0DAmBC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DiskStoreAsyncView = void 0;
|
|
4
|
+
const extra_utils_1 = require("extra-utils");
|
|
4
5
|
const iterable_operator_1 = require("iterable-operator");
|
|
6
|
+
const prelude_1 = require("@blackglory/prelude");
|
|
5
7
|
class DiskStoreAsyncView {
|
|
6
8
|
constructor(store, keyConverter, valueConverter) {
|
|
7
9
|
this.store = store;
|
|
@@ -30,7 +32,7 @@ class DiskStoreAsyncView {
|
|
|
30
32
|
this.store.clear();
|
|
31
33
|
}
|
|
32
34
|
keys() {
|
|
33
|
-
return (0,
|
|
35
|
+
return (0, extra_utils_1.pipe)(this.store.keys(), iter => (0, iterable_operator_1.mapAsync)(iter, key => this.keyConverter.fromString(key)), iter => (0, iterable_operator_1.filterAsync)(iter, prelude_1.isntUndefined));
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
exports.DiskStoreAsyncView = DiskStoreAsyncView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-store-async-view.js","sourceRoot":"","sources":["../src/disk-store-async-view.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"disk-store-async-view.js","sourceRoot":"","sources":["../src/disk-store-async-view.ts"],"names":[],"mappings":";;;AAEA,6CAAkC;AAClC,yDAAyD;AACzD,iDAAmD;AAEnD,MAAa,kBAAkB;IAC7B,YACU,KAAgB,EAChB,YAAmC,EACnC,cAAuC;QAFvC,UAAK,GAAL,KAAK,CAAW;QAChB,iBAAY,GAAZ,YAAY,CAAuB;QACnC,mBAAc,GAAd,cAAc,CAAyB;IAC9C,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAM;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAM;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpE,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SACpD;aAAM;YACL,OAAO,SAAS,CAAA;SACjB;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAM,EAAE,KAAQ;QACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EACrC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAM;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,OAAO,IAAA,kBAAI,EACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EACjB,IAAI,CAAC,EAAE,CAAC,IAAA,4BAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAChE,IAAI,CAAC,EAAE,CAAC,IAAA,+BAAW,EAAC,IAAI,EAAE,uBAAa,CAAC,CACzC,CAAA;IACH,CAAC;CACF;AA3CD,gDA2CC"}
|
package/lib/disk-store-view.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DiskStoreView = void 0;
|
|
4
|
+
const extra_utils_1 = require("extra-utils");
|
|
4
5
|
const iterable_operator_1 = require("iterable-operator");
|
|
6
|
+
const prelude_1 = require("@blackglory/prelude");
|
|
5
7
|
class DiskStoreView {
|
|
6
8
|
constructor(store, keyConverter, valueConverter) {
|
|
7
9
|
this.store = store;
|
|
@@ -30,7 +32,7 @@ class DiskStoreView {
|
|
|
30
32
|
this.store.clear();
|
|
31
33
|
}
|
|
32
34
|
keys() {
|
|
33
|
-
return (0,
|
|
35
|
+
return (0, extra_utils_1.pipe)(this.store.keys(), iter => (0, iterable_operator_1.map)(iter, key => this.keyConverter.fromString(key)), iter => (0, iterable_operator_1.filter)(iter, prelude_1.isntUndefined));
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
exports.DiskStoreView = DiskStoreView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-store-view.js","sourceRoot":"","sources":["../src/disk-store-view.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"disk-store-view.js","sourceRoot":"","sources":["../src/disk-store-view.ts"],"names":[],"mappings":";;;AAEA,6CAAkC;AAClC,yDAA+C;AAC/C,iDAAmD;AAEnD,MAAa,aAAa;IACxB,YACU,KAAgB,EAChB,YAA8B,EAC9B,cAAkC;QAFlC,UAAK,GAAL,KAAK,CAAW;QAChB,iBAAY,GAAZ,YAAY,CAAkB;QAC9B,mBAAc,GAAd,cAAc,CAAoB;IACzC,CAAC;IAEJ,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAE9D,IAAI,MAAM,EAAE;YACV,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAC9C;aAAM;YACL,OAAO,SAAS,CAAA;SACjB;IACH,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CACpC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAM;QACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,OAAO,IAAA,kBAAI,EACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EACjB,IAAI,CAAC,EAAE,CAAC,IAAA,uBAAG,EAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC3D,IAAI,CAAC,EAAE,CAAC,IAAA,0BAAM,EAAC,IAAI,EAAE,uBAAa,CAAC,CACpC,CAAA;IACH,CAAC;CACF;AA3CD,sCA2CC"}
|
package/lib/disk-store.d.ts
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Database as IDatabase } from 'better-sqlite3';
|
|
3
|
+
import { ICache } from './types';
|
|
4
|
+
export declare enum CacheKeyType {
|
|
5
|
+
Exist = 0,
|
|
6
|
+
Value = 1
|
|
7
|
+
}
|
|
3
8
|
export declare class DiskStore {
|
|
4
9
|
_db: IDatabase;
|
|
5
|
-
|
|
6
|
-
|
|
10
|
+
cache?: ICache | undefined;
|
|
11
|
+
protected constructor(_db: IDatabase, cache?: ICache | undefined);
|
|
12
|
+
static create(filename?: string, cache?: ICache): Promise<DiskStore>;
|
|
7
13
|
close(): void;
|
|
8
|
-
has
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
has(key: string): boolean;
|
|
15
|
+
private _has;
|
|
16
|
+
get(key: string): Buffer | undefined;
|
|
17
|
+
private _get;
|
|
18
|
+
set(key: string, value: Buffer): void;
|
|
19
|
+
private _set;
|
|
20
|
+
delete(key: string): void;
|
|
21
|
+
private _delete;
|
|
22
|
+
clear(): void;
|
|
23
|
+
private _clear;
|
|
13
24
|
keys: () => IterableIterator<string>;
|
|
14
25
|
}
|
|
26
|
+
export declare function createCacheKey(type: CacheKeyType, key: string): string;
|
package/lib/disk-store.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.DiskStore = void 0;
|
|
29
|
+
exports.createCacheKey = exports.DiskStore = exports.CacheKeyType = void 0;
|
|
30
30
|
const path_1 = __importDefault(require("path"));
|
|
31
31
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
32
32
|
const migration_files_1 = require("migration-files");
|
|
@@ -36,30 +36,37 @@ const extra_promise_1 = require("extra-promise");
|
|
|
36
36
|
const extra_filesystem_1 = require("extra-filesystem");
|
|
37
37
|
const Iter = __importStar(require("iterable-operator"));
|
|
38
38
|
const extra_lazy_1 = require("extra-lazy");
|
|
39
|
+
var CacheKeyType;
|
|
40
|
+
(function (CacheKeyType) {
|
|
41
|
+
CacheKeyType[CacheKeyType["Exist"] = 0] = "Exist";
|
|
42
|
+
CacheKeyType[CacheKeyType["Value"] = 1] = "Value";
|
|
43
|
+
})(CacheKeyType = exports.CacheKeyType || (exports.CacheKeyType = {}));
|
|
39
44
|
class DiskStore {
|
|
40
|
-
constructor(_db) {
|
|
45
|
+
constructor(_db, cache) {
|
|
41
46
|
this._db = _db;
|
|
42
|
-
this.
|
|
47
|
+
this.cache = cache;
|
|
48
|
+
this._has = (0, extra_lazy_1.withLazyStatic)((key) => {
|
|
43
49
|
const row = (0, extra_lazy_1.lazyStatic)(() => this._db.prepare(`
|
|
44
50
|
SELECT EXISTS(
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
SELECT *
|
|
52
|
+
FROM store
|
|
47
53
|
WHERE key = $key
|
|
48
|
-
|
|
54
|
+
) AS item_exists
|
|
49
55
|
`), [this._db]).get({ key });
|
|
50
|
-
|
|
56
|
+
const result = row.item_exists === 1;
|
|
57
|
+
return result;
|
|
51
58
|
});
|
|
52
|
-
this.
|
|
59
|
+
this._get = (0, extra_lazy_1.withLazyStatic)((key) => {
|
|
53
60
|
const row = (0, extra_lazy_1.lazyStatic)(() => this._db.prepare(`
|
|
54
61
|
SELECT value
|
|
55
62
|
FROM store
|
|
56
|
-
|
|
63
|
+
WHERE key = $key
|
|
57
64
|
`), [this._db]).get({ key });
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
return (0, prelude_1.isUndefined)(row)
|
|
66
|
+
? undefined
|
|
67
|
+
: row.value;
|
|
61
68
|
});
|
|
62
|
-
this.
|
|
69
|
+
this._set = (0, extra_lazy_1.withLazyStatic)((key, value) => {
|
|
63
70
|
(0, extra_lazy_1.lazyStatic)(() => this._db.prepare(`
|
|
64
71
|
INSERT INTO store (
|
|
65
72
|
key
|
|
@@ -70,13 +77,13 @@ class DiskStore {
|
|
|
70
77
|
DO UPDATE SET value = $value
|
|
71
78
|
`), [this._db]).run({ key, value });
|
|
72
79
|
});
|
|
73
|
-
this.
|
|
80
|
+
this._delete = (0, extra_lazy_1.withLazyStatic)((key) => {
|
|
74
81
|
(0, extra_lazy_1.lazyStatic)(() => this._db.prepare(`
|
|
75
82
|
DELETE FROM store
|
|
76
83
|
WHERE key = $key
|
|
77
84
|
`), [this._db]).run({ key });
|
|
78
85
|
});
|
|
79
|
-
this.
|
|
86
|
+
this._clear = (0, extra_lazy_1.withLazyStatic)(() => {
|
|
80
87
|
(0, extra_lazy_1.lazyStatic)(() => this._db.prepare(`
|
|
81
88
|
DELETE FROM store
|
|
82
89
|
`), [this._db]).run();
|
|
@@ -89,14 +96,14 @@ class DiskStore {
|
|
|
89
96
|
return Iter.map(iter, ({ key }) => key);
|
|
90
97
|
});
|
|
91
98
|
}
|
|
92
|
-
static async create(filename) {
|
|
99
|
+
static async create(filename, cache) {
|
|
93
100
|
const db = await (0, prelude_1.go)(async () => {
|
|
94
101
|
const db = new better_sqlite3_1.default(filename !== null && filename !== void 0 ? filename : ':memory:');
|
|
95
102
|
await migrateDatabase(db);
|
|
96
103
|
db.unsafeMode(true);
|
|
97
104
|
return db;
|
|
98
105
|
});
|
|
99
|
-
const diskStore = new this(db);
|
|
106
|
+
const diskStore = new this(db, cache);
|
|
100
107
|
return diskStore;
|
|
101
108
|
async function migrateDatabase(db) {
|
|
102
109
|
const packageFilename = await (0, extra_filesystem_1.findUpPackageFilename)(__dirname);
|
|
@@ -115,6 +122,61 @@ class DiskStore {
|
|
|
115
122
|
`);
|
|
116
123
|
this._db.close();
|
|
117
124
|
}
|
|
125
|
+
has(key) {
|
|
126
|
+
if (this.cache) {
|
|
127
|
+
const cacheKey = createCacheKey(CacheKeyType.Exist, key);
|
|
128
|
+
const result = this.cache.get(cacheKey);
|
|
129
|
+
if ((0, prelude_1.isBoolean)(result)) {
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const result = this._has(key);
|
|
134
|
+
this.cache.set(cacheKey, result);
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return this._has(key);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
get(key) {
|
|
143
|
+
if (this.cache) {
|
|
144
|
+
const cacheKey = createCacheKey(CacheKeyType.Value, key);
|
|
145
|
+
const result = this.cache.get(cacheKey);
|
|
146
|
+
if (result instanceof Buffer) {
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const result = this._get(key);
|
|
151
|
+
this.cache.set(cacheKey, result);
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return this._get(key);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
set(key, value) {
|
|
160
|
+
var _a;
|
|
161
|
+
this._set(key, value);
|
|
162
|
+
(_a = this.cache) === null || _a === void 0 ? void 0 : _a.delete(createCacheKey(CacheKeyType.Value, key));
|
|
163
|
+
}
|
|
164
|
+
delete(key) {
|
|
165
|
+
this._delete(key);
|
|
166
|
+
if (this.cache) {
|
|
167
|
+
this.cache.delete(createCacheKey(CacheKeyType.Exist, key));
|
|
168
|
+
this.cache.delete(createCacheKey(CacheKeyType.Value, key));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
clear() {
|
|
172
|
+
var _a;
|
|
173
|
+
this._clear();
|
|
174
|
+
(_a = this.cache) === null || _a === void 0 ? void 0 : _a.clear();
|
|
175
|
+
}
|
|
118
176
|
}
|
|
119
177
|
exports.DiskStore = DiskStore;
|
|
178
|
+
function createCacheKey(type, key) {
|
|
179
|
+
return JSON.stringify([type, key]);
|
|
180
|
+
}
|
|
181
|
+
exports.createCacheKey = createCacheKey;
|
|
120
182
|
//# sourceMappingURL=disk-store.js.map
|
package/lib/disk-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-store.js","sourceRoot":"","sources":["../src/disk-store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,oEAAgE;AAChE,qDAA2E;AAC3E,qFAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"disk-store.js","sourceRoot":"","sources":["../src/disk-store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,oEAAgE;AAChE,qDAA2E;AAC3E,qFAA+D;AAC/D,iDAAwE;AACxE,iDAAmC;AACnC,uDAAwD;AACxD,wDAAyC;AACzC,2CAAuD;AAGvD,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iDAAK,CAAA;IACL,iDAAK,CAAA;AACP,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,MAAa,SAAS;IACpB,YACS,GAAc,EACd,KAAc;QADd,QAAG,GAAH,GAAG,CAAW;QACd,UAAK,GAAL,KAAK,CAAS;QAsDf,SAAI,GAAG,IAAA,2BAAc,EAAC,CAAC,GAAW,EAAW,EAAE;YACrD,MAAM,GAAG,GAA2B,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;;;;KAMrE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAE5B,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,CAAC,CAAA;YACpC,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAkBM,SAAI,GAAG,IAAA,2BAAc,EAAC,CAAC,GAAW,EAAsB,EAAE;YAChE,MAAM,GAAG,GAEO,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;;KAIjD,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAE5B,OAAO,IAAA,qBAAW,EAAC,GAAG,CAAC;gBAClB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA;QAClB,CAAC,CAAC,CAAA;QAQM,SAAI,GAAG,IAAA,2BAAc,EAAC,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;YACjE,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;;;;;;KAQjC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QAWM,YAAO,GAAG,IAAA,2BAAc,EAAC,CAAC,GAAW,EAAQ,EAAE;YACrD,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;KAGjC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QAQM,WAAM,GAAG,IAAA,2BAAc,EAAC,GAAS,EAAE;YACzC,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;KAEjC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,SAAI,GAAG,IAAA,2BAAc,EAAC,GAA6B,EAAE;YACnD,MAAM,IAAI,GAA8B,IAAA,uBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;KAGzE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAEzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IArJC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAiB,EAAE,KAAc;QACnD,MAAM,EAAE,GAAG,MAAM,IAAA,YAAE,EAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,UAAU,CAAC,CAAA;YAE/C,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;YACzB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAEnB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAErC,OAAO,SAAS,CAAA;QAEhB,KAAK,UAAU,eAAe,CAAC,EAAa;YAC1C,MAAM,eAAe,GAAG,MAAM,IAAA,wCAAqB,EAAC,SAAS,CAAC,CAAA;YAC9D,IAAA,gBAAM,EAAC,eAAe,EAAE,wBAAwB,CAAC,CAAA;YAEjD,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;YACjD,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YAC3D,MAAM,kBAAkB,GAAG,MAAM,IAAA,wCAAsB,EAAC,cAAc,CAAC,CAAA;YACvE,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAG,EAAC,kBAAkB,EAAE,mCAAiB,CAAC,CAAA;YACnE,IAAA,mCAAO,EAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;;KAGb,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,IAAA,mBAAS,EAAC,MAAM,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAA;aACd;iBAAM;gBACL,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAChC,OAAO,MAAM,CAAA;aACd;SACF;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACtB;IACH,CAAC;IAeD,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,MAAM,YAAY,MAAM,EAAE;gBAC5B,OAAO,MAAM,CAAA;aACd;iBAAM;gBACL,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAChC,OAAO,MAAM,CAAA;aACd;SACF;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACtB;IACH,CAAC;IAgBD,GAAG,CAAC,GAAW,EAAE,KAAa;;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAErB,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7D,CAAC;IAcD,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;YAC1D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;SAC3D;IACH,CAAC;IASD,KAAK;;QACH,IAAI,CAAC,MAAM,EAAE,CAAA;QAEb,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,EAAE,CAAA;IACrB,CAAC;CAgBF;AA1JD,8BA0JC;AAED,SAAgB,cAAc,CAAC,IAAkB,EAAE,GAAW;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;AACpC,CAAC;AAFD,wCAEC"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
17
|
+
exports.DiskStore = void 0;
|
|
18
|
+
var disk_store_1 = require("./disk-store");
|
|
19
|
+
Object.defineProperty(exports, "DiskStore", { enumerable: true, get: function () { return disk_store_1.DiskStore; } });
|
|
18
20
|
__exportStar(require("./disk-store-view"), exports);
|
|
19
21
|
__exportStar(require("./disk-store-async-view"), exports);
|
|
20
22
|
__exportStar(require("./converters"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,oDAAiC;AACjC,0DAAuC;AACvC,+CAA4B;AAC5B,0CAAuB"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Awaitable } from '@blackglory/prelude';
|
|
3
|
+
export interface ICache {
|
|
4
|
+
set(key: string, value: Buffer | boolean | undefined): void;
|
|
5
|
+
get(key: string): Buffer | boolean | undefined;
|
|
6
|
+
delete(key: string): void;
|
|
7
|
+
clear(): void;
|
|
8
|
+
}
|
|
3
9
|
export interface IKeyConverter<T> {
|
|
4
10
|
toString: (value: T) => string;
|
|
5
|
-
fromString: (value: string) => T;
|
|
11
|
+
fromString: (value: string) => T | undefined;
|
|
6
12
|
}
|
|
7
13
|
export interface IValueConverter<T> {
|
|
8
14
|
toBuffer: (value: T) => Buffer;
|
|
@@ -10,7 +16,7 @@ export interface IValueConverter<T> {
|
|
|
10
16
|
}
|
|
11
17
|
export interface IKeyAsyncConverter<T> {
|
|
12
18
|
toString: (value: T) => Awaitable<string>;
|
|
13
|
-
fromString: (value: string) => Awaitable<T>;
|
|
19
|
+
fromString: (value: string) => Awaitable<T | undefined>;
|
|
14
20
|
}
|
|
15
21
|
export interface IValueAsyncConverter<T> {
|
|
16
22
|
toBuffer: (value: T) => Awaitable<Buffer>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "extra-disk-store",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"files": [
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"@commitlint/cli": "^17.3.0",
|
|
40
40
|
"@commitlint/config-conventional": "^17.3.0",
|
|
41
41
|
"@types/better-sqlite3": "^7.6.2",
|
|
42
|
-
"@types/jest": "^29.2.
|
|
42
|
+
"@types/jest": "^29.2.4",
|
|
43
43
|
"@types/node": "14",
|
|
44
|
-
"@typescript-eslint/eslint-plugin": "^5.45.
|
|
45
|
-
"@typescript-eslint/parser": "^5.45.
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^5.45.1",
|
|
45
|
+
"@typescript-eslint/parser": "^5.45.1",
|
|
46
46
|
"eslint": "^8.29.0",
|
|
47
47
|
"husky": "^4.3.0",
|
|
48
48
|
"jest": "^29.3.1",
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"extra-lazy": "^1.3.1",
|
|
65
65
|
"extra-promise": "^4.4.0",
|
|
66
66
|
"extra-timers": "^0.2.5",
|
|
67
|
+
"extra-utils": "^3.5.1",
|
|
67
68
|
"iterable-operator": "^2.5.0",
|
|
68
69
|
"lz4-wasm-nodejs": "^0.9.2",
|
|
69
70
|
"migration-files": "^0.4.0"
|