@kvs/storage 1.1.0 → 2.1.1
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/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/storage.d.ts +7 -7
- package/lib/storage.js +62 -54
- package/lib/storage.js.map +1 -1
- package/module/JSONValue.js +1 -0
- package/module/storage.d.ts +7 -7
- package/module/storage.js +56 -54
- package/module/storage.js.map +1 -1
- package/package.json +9 -10
- package/CHANGELOG.md +0 -68
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasItem = exports.createIterator = exports.clearItem = exports.getItem = exports.setItem = exports.deleteItem = exports.kvsStorage = void 0;
|
|
3
4
|
var storage_1 = require("./storage");
|
|
4
5
|
Object.defineProperty(exports, "kvsStorage", { enumerable: true, get: function () { return storage_1.kvsStorage; } });
|
|
5
6
|
Object.defineProperty(exports, "deleteItem", { enumerable: true, get: function () { return storage_1.deleteItem; } });
|
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,qCAWmB;AAVf,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,oGAAA,SAAS,OAAA;AACT,yGAAA,cAAc,OAAA;AACd,kGAAA,OAAO,OAAA"}
|
package/lib/storage.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { KVS, KVSOptions, StoreNames, StoreValue } from "@kvs/types";
|
|
2
2
|
import { JsonValue } from "./JSONValue";
|
|
3
3
|
export declare type KVSStorageKey = string;
|
|
4
|
-
export declare const getItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => any;
|
|
5
|
-
export declare const hasItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => boolean;
|
|
6
|
-
export declare const setItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>, value: StoreValue<Schema, StoreNames<Schema>> | undefined) => boolean | void;
|
|
7
|
-
export declare const clearItem: (storage: Storage, kvsVersionKey: string, options: {
|
|
4
|
+
export declare const getItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => any;
|
|
5
|
+
export declare const hasItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => boolean;
|
|
6
|
+
export declare const setItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>, value: StoreValue<Schema, StoreNames<Schema>> | undefined) => boolean | void;
|
|
7
|
+
export declare const clearItem: (storage: Storage, tableName: string, kvsVersionKey: string, options: {
|
|
8
8
|
force: boolean;
|
|
9
9
|
}) => void;
|
|
10
|
-
export declare const deleteItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => boolean;
|
|
11
|
-
export declare function createIterator<Schema extends StorageSchema>(storage: Storage, kvsVersionKey: string): Iterator<[StoreNames<Schema>, StoreValue<Schema, StoreNames<Schema>>]>;
|
|
10
|
+
export declare const deleteItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => boolean;
|
|
11
|
+
export declare function createIterator<Schema extends StorageSchema>(storage: Storage, tableName: string, kvsVersionKey: string): Iterator<[StoreNames<Schema>, StoreValue<Schema, StoreNames<Schema>>]>;
|
|
12
12
|
export declare type StorageSchema = {
|
|
13
13
|
[index: string]: JsonValue;
|
|
14
14
|
};
|
|
@@ -17,4 +17,4 @@ export declare type KvsStorageOptions<Schema extends StorageSchema> = KVSOptions
|
|
|
17
17
|
kvsVersionKey?: string;
|
|
18
18
|
storage: Storage;
|
|
19
19
|
};
|
|
20
|
-
export declare const kvsStorage: <Schema extends StorageSchema>(options: KvsStorageOptions<Schema>) => Promise<
|
|
20
|
+
export declare const kvsStorage: <Schema extends StorageSchema>(options: KvsStorageOptions<Schema>) => Promise<KvsStorage<Schema>>;
|
package/lib/storage.js
CHANGED
|
@@ -1,44 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
-
var t = {};
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
-
t[p[i]] = s[p[i]];
|
|
19
|
-
}
|
|
20
|
-
return t;
|
|
21
|
-
};
|
|
22
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
3
|
exports.kvsStorage = exports.createIterator = exports.deleteItem = exports.clearItem = exports.setItem = exports.hasItem = exports.getItem = void 0;
|
|
24
|
-
|
|
25
|
-
|
|
4
|
+
function invariant(condition, message) {
|
|
5
|
+
if (condition) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
throw new Error(message);
|
|
9
|
+
}
|
|
10
|
+
const TABLE_KEY_MARKER = ".__.";
|
|
11
|
+
const getItem = (storage, tableName, key) => {
|
|
12
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
13
|
+
const item = storage.getItem(storageKey);
|
|
26
14
|
return item !== null ? JSON.parse(item) : undefined;
|
|
27
15
|
};
|
|
28
|
-
exports.
|
|
29
|
-
|
|
16
|
+
exports.getItem = getItem;
|
|
17
|
+
const hasItem = (storage, tableName, key) => {
|
|
18
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
19
|
+
return storage.getItem(storageKey) !== null;
|
|
30
20
|
};
|
|
31
|
-
exports.
|
|
21
|
+
exports.hasItem = hasItem;
|
|
22
|
+
const setItem = (storage, tableName, key, value) => {
|
|
32
23
|
// It is difference with IndexedDB implementation.
|
|
33
24
|
// This behavior compatible with localStorage.
|
|
34
25
|
if (value === undefined) {
|
|
35
|
-
return exports.deleteItem(storage, key);
|
|
26
|
+
return (0, exports.deleteItem)(storage, tableName, key);
|
|
36
27
|
}
|
|
37
|
-
|
|
28
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
29
|
+
return storage.setItem(storageKey, JSON.stringify(value));
|
|
38
30
|
};
|
|
39
|
-
exports.
|
|
31
|
+
exports.setItem = setItem;
|
|
32
|
+
const clearItem = (storage, tableName, kvsVersionKey, options) => {
|
|
40
33
|
// TODO: kvsVersionKey is special type
|
|
41
|
-
const currentVersion = exports.getItem(storage, kvsVersionKey);
|
|
34
|
+
const currentVersion = (0, exports.getItem)(storage, tableName, kvsVersionKey);
|
|
42
35
|
// clear all
|
|
43
36
|
storage.clear();
|
|
44
37
|
// if option.force is true, does not restore metadata.
|
|
@@ -47,40 +40,49 @@ exports.clearItem = (storage, kvsVersionKey, options) => {
|
|
|
47
40
|
}
|
|
48
41
|
// set kvs version again
|
|
49
42
|
if (currentVersion !== undefined) {
|
|
50
|
-
exports.setItem(storage, kvsVersionKey, currentVersion);
|
|
43
|
+
(0, exports.setItem)(storage, tableName, kvsVersionKey, currentVersion);
|
|
51
44
|
}
|
|
52
45
|
};
|
|
53
|
-
exports.
|
|
46
|
+
exports.clearItem = clearItem;
|
|
47
|
+
const deleteItem = (storage, tableName, key) => {
|
|
48
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
54
49
|
try {
|
|
55
|
-
storage.removeItem(
|
|
50
|
+
storage.removeItem(storageKey);
|
|
56
51
|
return true;
|
|
57
52
|
}
|
|
58
53
|
catch (_a) {
|
|
59
54
|
return false;
|
|
60
55
|
}
|
|
61
56
|
};
|
|
62
|
-
|
|
57
|
+
exports.deleteItem = deleteItem;
|
|
58
|
+
function* createIterator(storage, tableName, kvsVersionKey) {
|
|
59
|
+
const tableKeyPrefix = `${tableName}${TABLE_KEY_MARKER}`;
|
|
63
60
|
for (let i = 0; i < storage.length; i++) {
|
|
64
61
|
const key = storage.key(i);
|
|
65
62
|
if (!key) {
|
|
66
63
|
continue;
|
|
67
64
|
}
|
|
65
|
+
// skip another storage
|
|
66
|
+
if (!key.startsWith(tableKeyPrefix)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
68
69
|
// skip meta key
|
|
69
|
-
|
|
70
|
+
const keyWithoutPrefix = key.replace(tableKeyPrefix, "");
|
|
71
|
+
if (keyWithoutPrefix === kvsVersionKey) {
|
|
70
72
|
continue;
|
|
71
73
|
}
|
|
72
|
-
const value = exports.getItem(storage,
|
|
73
|
-
yield [
|
|
74
|
+
const value = (0, exports.getItem)(storage, tableName, keyWithoutPrefix);
|
|
75
|
+
yield [keyWithoutPrefix, value];
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
exports.createIterator = createIterator;
|
|
77
79
|
const DEFAULT_KVS_VERSION = 1;
|
|
78
|
-
const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) =>
|
|
80
|
+
const openStorage = async ({ storage, version, tableName, kvsVersionKey, onUpgrade }) => {
|
|
79
81
|
// kvsVersionKey is special type
|
|
80
82
|
// first `oldVersion` is `0`
|
|
81
|
-
let oldVersion = exports.getItem(storage, kvsVersionKey);
|
|
83
|
+
let oldVersion = (0, exports.getItem)(storage, tableName, kvsVersionKey);
|
|
82
84
|
if (oldVersion === undefined) {
|
|
83
|
-
exports.setItem(storage, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
85
|
+
(0, exports.setItem)(storage, tableName, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
84
86
|
// first `oldVersion` is `0`
|
|
85
87
|
// https://github.com/azu/kvs/issues/8
|
|
86
88
|
oldVersion = 0;
|
|
@@ -96,23 +98,23 @@ const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaite
|
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
100
|
return storage;
|
|
99
|
-
}
|
|
100
|
-
const createStore = ({ storage, kvsVersionKey }) => {
|
|
101
|
+
};
|
|
102
|
+
const createStore = ({ tableName, storage, kvsVersionKey }) => {
|
|
101
103
|
const store = {
|
|
102
104
|
get(key) {
|
|
103
105
|
return Promise.resolve().then(() => {
|
|
104
|
-
return exports.getItem(storage, key);
|
|
106
|
+
return (0, exports.getItem)(storage, tableName, key);
|
|
105
107
|
});
|
|
106
108
|
},
|
|
107
109
|
has(key) {
|
|
108
110
|
return Promise.resolve().then(() => {
|
|
109
|
-
return exports.hasItem(storage, key);
|
|
111
|
+
return (0, exports.hasItem)(storage, tableName, key);
|
|
110
112
|
});
|
|
111
113
|
},
|
|
112
114
|
set(key, value) {
|
|
113
115
|
return Promise.resolve()
|
|
114
116
|
.then(() => {
|
|
115
|
-
return exports.setItem(storage, key, value);
|
|
117
|
+
return (0, exports.setItem)(storage, tableName, key, value);
|
|
116
118
|
})
|
|
117
119
|
.then(() => {
|
|
118
120
|
return store;
|
|
@@ -120,17 +122,17 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
120
122
|
},
|
|
121
123
|
clear() {
|
|
122
124
|
return Promise.resolve().then(() => {
|
|
123
|
-
return exports.clearItem(storage, kvsVersionKey, { force: false });
|
|
125
|
+
return (0, exports.clearItem)(storage, tableName, kvsVersionKey, { force: false });
|
|
124
126
|
});
|
|
125
127
|
},
|
|
126
128
|
delete(key) {
|
|
127
129
|
return Promise.resolve().then(() => {
|
|
128
|
-
return exports.deleteItem(storage, key);
|
|
130
|
+
return (0, exports.deleteItem)(storage, tableName, key);
|
|
129
131
|
});
|
|
130
132
|
},
|
|
131
133
|
dropInstance() {
|
|
132
134
|
return Promise.resolve().then(() => {
|
|
133
|
-
return exports.clearItem(storage, kvsVersionKey, { force: true });
|
|
135
|
+
return (0, exports.clearItem)(storage, tableName, kvsVersionKey, { force: true });
|
|
134
136
|
});
|
|
135
137
|
},
|
|
136
138
|
close() {
|
|
@@ -138,7 +140,7 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
138
140
|
return Promise.resolve();
|
|
139
141
|
},
|
|
140
142
|
[Symbol.asyncIterator]() {
|
|
141
|
-
const iterator = createIterator(storage, kvsVersionKey);
|
|
143
|
+
const iterator = createIterator(storage, tableName, kvsVersionKey);
|
|
142
144
|
return {
|
|
143
145
|
next() {
|
|
144
146
|
return Promise.resolve().then(() => {
|
|
@@ -150,25 +152,31 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
150
152
|
};
|
|
151
153
|
return store;
|
|
152
154
|
};
|
|
153
|
-
|
|
155
|
+
const kvsStorage = async (options) => {
|
|
154
156
|
var _a;
|
|
155
|
-
const { name, version, upgrade
|
|
157
|
+
const { name, version, upgrade, ...kvStorageOptions } = options;
|
|
158
|
+
invariant(typeof name === "string", "name should be string");
|
|
159
|
+
invariant(name.length > 0, "name should not be empty");
|
|
160
|
+
invariant(!name.includes(TABLE_KEY_MARKER), `name can not include ${TABLE_KEY_MARKER}. It is reserved in kvs.`);
|
|
161
|
+
invariant(typeof version === "number", `version should be number`);
|
|
156
162
|
const kvsVersionKey = (_a = kvStorageOptions.kvsVersionKey) !== null && _a !== void 0 ? _a : "__kvs_version__";
|
|
157
|
-
const storage =
|
|
163
|
+
const storage = await openStorage({
|
|
158
164
|
storage: options.storage,
|
|
159
165
|
version: options.version,
|
|
166
|
+
tableName: name,
|
|
160
167
|
onUpgrade: ({ oldVersion, newVersion, storage }) => {
|
|
161
168
|
if (!options.upgrade) {
|
|
162
169
|
return;
|
|
163
170
|
}
|
|
164
171
|
return options.upgrade({
|
|
165
|
-
kvs: createStore({ storage, kvsVersionKey }),
|
|
172
|
+
kvs: createStore({ tableName: name, storage, kvsVersionKey }),
|
|
166
173
|
oldVersion,
|
|
167
174
|
newVersion
|
|
168
175
|
});
|
|
169
176
|
},
|
|
170
177
|
kvsVersionKey
|
|
171
178
|
});
|
|
172
|
-
return createStore({ storage, kvsVersionKey });
|
|
173
|
-
}
|
|
179
|
+
return createStore({ tableName: name, storage, kvsVersionKey });
|
|
180
|
+
};
|
|
181
|
+
exports.kvsStorage = kvsStorage;
|
|
174
182
|
//# sourceMappingURL=storage.js.map
|
package/lib/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/module/JSONValue.js
CHANGED
package/module/storage.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { KVS, KVSOptions, StoreNames, StoreValue } from "@kvs/types";
|
|
2
2
|
import { JsonValue } from "./JSONValue";
|
|
3
3
|
export declare type KVSStorageKey = string;
|
|
4
|
-
export declare const getItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => any;
|
|
5
|
-
export declare const hasItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => boolean;
|
|
6
|
-
export declare const setItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>, value: StoreValue<Schema, StoreNames<Schema>> | undefined) => boolean | void;
|
|
7
|
-
export declare const clearItem: (storage: Storage, kvsVersionKey: string, options: {
|
|
4
|
+
export declare const getItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => any;
|
|
5
|
+
export declare const hasItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => boolean;
|
|
6
|
+
export declare const setItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>, value: StoreValue<Schema, StoreNames<Schema>> | undefined) => boolean | void;
|
|
7
|
+
export declare const clearItem: (storage: Storage, tableName: string, kvsVersionKey: string, options: {
|
|
8
8
|
force: boolean;
|
|
9
9
|
}) => void;
|
|
10
|
-
export declare const deleteItem: <Schema extends StorageSchema>(storage: Storage, key: StoreNames<Schema>) => boolean;
|
|
11
|
-
export declare function createIterator<Schema extends StorageSchema>(storage: Storage, kvsVersionKey: string): Iterator<[StoreNames<Schema>, StoreValue<Schema, StoreNames<Schema>>]>;
|
|
10
|
+
export declare const deleteItem: <Schema extends StorageSchema>(storage: Storage, tableName: string, key: StoreNames<Schema>) => boolean;
|
|
11
|
+
export declare function createIterator<Schema extends StorageSchema>(storage: Storage, tableName: string, kvsVersionKey: string): Iterator<[StoreNames<Schema>, StoreValue<Schema, StoreNames<Schema>>]>;
|
|
12
12
|
export declare type StorageSchema = {
|
|
13
13
|
[index: string]: JsonValue;
|
|
14
14
|
};
|
|
@@ -17,4 +17,4 @@ export declare type KvsStorageOptions<Schema extends StorageSchema> = KVSOptions
|
|
|
17
17
|
kvsVersionKey?: string;
|
|
18
18
|
storage: Storage;
|
|
19
19
|
};
|
|
20
|
-
export declare const kvsStorage: <Schema extends StorageSchema>(options: KvsStorageOptions<Schema>) => Promise<
|
|
20
|
+
export declare const kvsStorage: <Schema extends StorageSchema>(options: KvsStorageOptions<Schema>) => Promise<KvsStorage<Schema>>;
|
package/module/storage.js
CHANGED
|
@@ -1,41 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
var t = {};
|
|
12
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
-
t[p] = s[p];
|
|
14
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
-
t[p[i]] = s[p[i]];
|
|
18
|
-
}
|
|
19
|
-
return t;
|
|
20
|
-
};
|
|
21
|
-
export const getItem = (storage, key) => {
|
|
22
|
-
const item = storage.getItem(String(key));
|
|
1
|
+
function invariant(condition, message) {
|
|
2
|
+
if (condition) {
|
|
3
|
+
return;
|
|
4
|
+
}
|
|
5
|
+
throw new Error(message);
|
|
6
|
+
}
|
|
7
|
+
const TABLE_KEY_MARKER = ".__.";
|
|
8
|
+
export const getItem = (storage, tableName, key) => {
|
|
9
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
10
|
+
const item = storage.getItem(storageKey);
|
|
23
11
|
return item !== null ? JSON.parse(item) : undefined;
|
|
24
12
|
};
|
|
25
|
-
export const hasItem = (storage, key) => {
|
|
26
|
-
|
|
13
|
+
export const hasItem = (storage, tableName, key) => {
|
|
14
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
15
|
+
return storage.getItem(storageKey) !== null;
|
|
27
16
|
};
|
|
28
|
-
export const setItem = (storage, key, value) => {
|
|
17
|
+
export const setItem = (storage, tableName, key, value) => {
|
|
29
18
|
// It is difference with IndexedDB implementation.
|
|
30
19
|
// This behavior compatible with localStorage.
|
|
31
20
|
if (value === undefined) {
|
|
32
|
-
return deleteItem(storage, key);
|
|
21
|
+
return deleteItem(storage, tableName, key);
|
|
33
22
|
}
|
|
34
|
-
|
|
23
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
24
|
+
return storage.setItem(storageKey, JSON.stringify(value));
|
|
35
25
|
};
|
|
36
|
-
export const clearItem = (storage, kvsVersionKey, options) => {
|
|
26
|
+
export const clearItem = (storage, tableName, kvsVersionKey, options) => {
|
|
37
27
|
// TODO: kvsVersionKey is special type
|
|
38
|
-
const currentVersion = getItem(storage, kvsVersionKey);
|
|
28
|
+
const currentVersion = getItem(storage, tableName, kvsVersionKey);
|
|
39
29
|
// clear all
|
|
40
30
|
storage.clear();
|
|
41
31
|
// if option.force is true, does not restore metadata.
|
|
@@ -44,39 +34,46 @@ export const clearItem = (storage, kvsVersionKey, options) => {
|
|
|
44
34
|
}
|
|
45
35
|
// set kvs version again
|
|
46
36
|
if (currentVersion !== undefined) {
|
|
47
|
-
setItem(storage, kvsVersionKey, currentVersion);
|
|
37
|
+
setItem(storage, tableName, kvsVersionKey, currentVersion);
|
|
48
38
|
}
|
|
49
39
|
};
|
|
50
|
-
export const deleteItem = (storage, key) => {
|
|
40
|
+
export const deleteItem = (storage, tableName, key) => {
|
|
41
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
51
42
|
try {
|
|
52
|
-
storage.removeItem(
|
|
43
|
+
storage.removeItem(storageKey);
|
|
53
44
|
return true;
|
|
54
45
|
}
|
|
55
46
|
catch (_a) {
|
|
56
47
|
return false;
|
|
57
48
|
}
|
|
58
49
|
};
|
|
59
|
-
export function* createIterator(storage, kvsVersionKey) {
|
|
50
|
+
export function* createIterator(storage, tableName, kvsVersionKey) {
|
|
51
|
+
const tableKeyPrefix = `${tableName}${TABLE_KEY_MARKER}`;
|
|
60
52
|
for (let i = 0; i < storage.length; i++) {
|
|
61
53
|
const key = storage.key(i);
|
|
62
54
|
if (!key) {
|
|
63
55
|
continue;
|
|
64
56
|
}
|
|
57
|
+
// skip another storage
|
|
58
|
+
if (!key.startsWith(tableKeyPrefix)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
65
61
|
// skip meta key
|
|
66
|
-
|
|
62
|
+
const keyWithoutPrefix = key.replace(tableKeyPrefix, "");
|
|
63
|
+
if (keyWithoutPrefix === kvsVersionKey) {
|
|
67
64
|
continue;
|
|
68
65
|
}
|
|
69
|
-
const value = getItem(storage,
|
|
70
|
-
yield [
|
|
66
|
+
const value = getItem(storage, tableName, keyWithoutPrefix);
|
|
67
|
+
yield [keyWithoutPrefix, value];
|
|
71
68
|
}
|
|
72
69
|
}
|
|
73
70
|
const DEFAULT_KVS_VERSION = 1;
|
|
74
|
-
const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) =>
|
|
71
|
+
const openStorage = async ({ storage, version, tableName, kvsVersionKey, onUpgrade }) => {
|
|
75
72
|
// kvsVersionKey is special type
|
|
76
73
|
// first `oldVersion` is `0`
|
|
77
|
-
let oldVersion = getItem(storage, kvsVersionKey);
|
|
74
|
+
let oldVersion = getItem(storage, tableName, kvsVersionKey);
|
|
78
75
|
if (oldVersion === undefined) {
|
|
79
|
-
setItem(storage, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
76
|
+
setItem(storage, tableName, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
80
77
|
// first `oldVersion` is `0`
|
|
81
78
|
// https://github.com/azu/kvs/issues/8
|
|
82
79
|
oldVersion = 0;
|
|
@@ -92,23 +89,23 @@ const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaite
|
|
|
92
89
|
});
|
|
93
90
|
}
|
|
94
91
|
return storage;
|
|
95
|
-
}
|
|
96
|
-
const createStore = ({ storage, kvsVersionKey }) => {
|
|
92
|
+
};
|
|
93
|
+
const createStore = ({ tableName, storage, kvsVersionKey }) => {
|
|
97
94
|
const store = {
|
|
98
95
|
get(key) {
|
|
99
96
|
return Promise.resolve().then(() => {
|
|
100
|
-
return getItem(storage, key);
|
|
97
|
+
return getItem(storage, tableName, key);
|
|
101
98
|
});
|
|
102
99
|
},
|
|
103
100
|
has(key) {
|
|
104
101
|
return Promise.resolve().then(() => {
|
|
105
|
-
return hasItem(storage, key);
|
|
102
|
+
return hasItem(storage, tableName, key);
|
|
106
103
|
});
|
|
107
104
|
},
|
|
108
105
|
set(key, value) {
|
|
109
106
|
return Promise.resolve()
|
|
110
107
|
.then(() => {
|
|
111
|
-
return setItem(storage, key, value);
|
|
108
|
+
return setItem(storage, tableName, key, value);
|
|
112
109
|
})
|
|
113
110
|
.then(() => {
|
|
114
111
|
return store;
|
|
@@ -116,17 +113,17 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
116
113
|
},
|
|
117
114
|
clear() {
|
|
118
115
|
return Promise.resolve().then(() => {
|
|
119
|
-
return clearItem(storage, kvsVersionKey, { force: false });
|
|
116
|
+
return clearItem(storage, tableName, kvsVersionKey, { force: false });
|
|
120
117
|
});
|
|
121
118
|
},
|
|
122
119
|
delete(key) {
|
|
123
120
|
return Promise.resolve().then(() => {
|
|
124
|
-
return deleteItem(storage, key);
|
|
121
|
+
return deleteItem(storage, tableName, key);
|
|
125
122
|
});
|
|
126
123
|
},
|
|
127
124
|
dropInstance() {
|
|
128
125
|
return Promise.resolve().then(() => {
|
|
129
|
-
return clearItem(storage, kvsVersionKey, { force: true });
|
|
126
|
+
return clearItem(storage, tableName, kvsVersionKey, { force: true });
|
|
130
127
|
});
|
|
131
128
|
},
|
|
132
129
|
close() {
|
|
@@ -134,7 +131,7 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
134
131
|
return Promise.resolve();
|
|
135
132
|
},
|
|
136
133
|
[Symbol.asyncIterator]() {
|
|
137
|
-
const iterator = createIterator(storage, kvsVersionKey);
|
|
134
|
+
const iterator = createIterator(storage, tableName, kvsVersionKey);
|
|
138
135
|
return {
|
|
139
136
|
next() {
|
|
140
137
|
return Promise.resolve().then(() => {
|
|
@@ -146,25 +143,30 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
146
143
|
};
|
|
147
144
|
return store;
|
|
148
145
|
};
|
|
149
|
-
export const kvsStorage = (options) =>
|
|
146
|
+
export const kvsStorage = async (options) => {
|
|
150
147
|
var _a;
|
|
151
|
-
const { name, version, upgrade
|
|
148
|
+
const { name, version, upgrade, ...kvStorageOptions } = options;
|
|
149
|
+
invariant(typeof name === "string", "name should be string");
|
|
150
|
+
invariant(name.length > 0, "name should not be empty");
|
|
151
|
+
invariant(!name.includes(TABLE_KEY_MARKER), `name can not include ${TABLE_KEY_MARKER}. It is reserved in kvs.`);
|
|
152
|
+
invariant(typeof version === "number", `version should be number`);
|
|
152
153
|
const kvsVersionKey = (_a = kvStorageOptions.kvsVersionKey) !== null && _a !== void 0 ? _a : "__kvs_version__";
|
|
153
|
-
const storage =
|
|
154
|
+
const storage = await openStorage({
|
|
154
155
|
storage: options.storage,
|
|
155
156
|
version: options.version,
|
|
157
|
+
tableName: name,
|
|
156
158
|
onUpgrade: ({ oldVersion, newVersion, storage }) => {
|
|
157
159
|
if (!options.upgrade) {
|
|
158
160
|
return;
|
|
159
161
|
}
|
|
160
162
|
return options.upgrade({
|
|
161
|
-
kvs: createStore({ storage, kvsVersionKey }),
|
|
163
|
+
kvs: createStore({ tableName: name, storage, kvsVersionKey }),
|
|
162
164
|
oldVersion,
|
|
163
165
|
newVersion
|
|
164
166
|
});
|
|
165
167
|
},
|
|
166
168
|
kvsVersionKey
|
|
167
169
|
});
|
|
168
|
-
return createStore({ storage, kvsVersionKey });
|
|
169
|
-
}
|
|
170
|
+
return createStore({ tableName: name, storage, kvsVersionKey });
|
|
171
|
+
};
|
|
170
172
|
//# sourceMappingURL=storage.js.map
|
package/module/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kvs/storage",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Storage(localStorage, sessionStorage) helper for KVS.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kvs",
|
|
@@ -45,23 +45,22 @@
|
|
|
45
45
|
"trailingComma": "none"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@kvs/types": "^1.1
|
|
48
|
+
"@kvs/types": "^2.1.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@jsdevtools/karma-config": "^3.1.7",
|
|
52
|
-
"@types/mocha": "^
|
|
53
|
-
"@types/node": "^
|
|
54
|
-
"karma": "^
|
|
52
|
+
"@types/mocha": "^9.0.0",
|
|
53
|
+
"@types/node": "^16.9.1",
|
|
54
|
+
"karma": "^6.3.4",
|
|
55
55
|
"karma-cli": "^2.0.0",
|
|
56
|
-
"
|
|
57
|
-
"mocha": "^8.1.1",
|
|
56
|
+
"mocha": "^9.1.1",
|
|
58
57
|
"prettier": "^2.0.5",
|
|
59
58
|
"rimraf": "^3.0.2",
|
|
60
|
-
"ts-loader": "^8.0
|
|
61
|
-
"typescript": "^
|
|
59
|
+
"ts-loader": "^8.2.0",
|
|
60
|
+
"typescript": "^4.2.4"
|
|
62
61
|
},
|
|
63
62
|
"publishConfig": {
|
|
64
63
|
"access": "public"
|
|
65
64
|
},
|
|
66
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "d8ec6e0ba796bc2cab189a395bcda9754ffc4c9e"
|
|
67
66
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
# [1.1.0](https://github.com/azu/kvs/compare/v1.0.0...v1.1.0) (2020-10-29)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
### Features
|
|
10
|
-
|
|
11
|
-
* **examples:** add basic example ([#14](https://github.com/azu/kvs/issues/14)) ([351215d](https://github.com/azu/kvs/commit/351215d6c04158201768036caaa6e792c72717ea))
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# [1.0.0](https://github.com/azu/kvs/compare/v0.3.1...v1.0.0) (2020-08-22)
|
|
18
|
-
|
|
19
|
-
**Note:** Version bump only for package @kvs/storage
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
# [0.3.0](https://github.com/azu/kvs/compare/v0.2.1...v0.3.0) (2020-08-22)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### Features
|
|
29
|
-
|
|
30
|
-
* **storage-sync:** add storage-sync package ([#11](https://github.com/azu/kvs/issues/11)) ([5748776](https://github.com/azu/kvs/commit/574877624202660c0427cd050d30e807d7bbbd26))
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## [0.2.1](https://github.com/azu/kvs/compare/v0.2.0...v0.2.1) (2020-08-22)
|
|
37
|
-
|
|
38
|
-
**Note:** Version bump only for package @kvs/storage
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
# [0.2.0](https://github.com/azu/kvs/compare/v0.1.0...v0.2.0) (2020-08-08)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
### Features
|
|
48
|
-
|
|
49
|
-
* **@kvs/indexeddb:** migrate Schema Type ([ec143e2](https://github.com/azu/kvs/commit/ec143e27d174271f4ce45f657e1ae644ef01591c))
|
|
50
|
-
* **@kvs/localstorage:** migrate to Schema type ([0c84640](https://github.com/azu/kvs/commit/0c84640c1c1d28955c60ca83d8a01bdce936d9ef))
|
|
51
|
-
* **storage:** use Schema interface ([2560aae](https://github.com/azu/kvs/commit/2560aae28d642c8f2e8ee5920dc1cc15f7c8c3f6))
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# 0.1.0 (2020-08-08)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### Bug Fixes
|
|
61
|
-
|
|
62
|
-
* add deps ([b72e91a](https://github.com/azu/kvs/commit/b72e91aaa2487d69d44200ef0a11cc0b5f8fb904))
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
### Features
|
|
66
|
-
|
|
67
|
-
* **@kvs/node-localstorage:** add node implementation ([5160012](https://github.com/azu/kvs/commit/516001286c96ac85cb54d55fbba62549d6d7eb0e))
|
|
68
|
-
* add `close()` to interface ([a269d1d](https://github.com/azu/kvs/commit/a269d1dda6ce63388771e6fa4d897a26f284b72c))
|