@kvs/storage 0.3.0 → 2.0.0
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 +58 -30
- package/lib/storage.js.map +1 -1
- package/module/JSONValue.js +1 -0
- package/module/storage.d.ts +7 -7
- package/module/storage.js +51 -29
- package/module/storage.js.map +1 -1
- package/package.json +10 -11
- package/CHANGELOG.md +0 -49
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
|
@@ -21,24 +21,37 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.kvsStorage = exports.createIterator = exports.deleteItem = exports.clearItem = exports.setItem = exports.hasItem = exports.getItem = void 0;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
function invariant(condition, message) {
|
|
25
|
+
if (condition) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
throw new Error(message);
|
|
29
|
+
}
|
|
30
|
+
const TABLE_KEY_MARKER = ".__.";
|
|
31
|
+
const getItem = (storage, tableName, key) => {
|
|
32
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
33
|
+
const item = storage.getItem(storageKey);
|
|
26
34
|
return item !== null ? JSON.parse(item) : undefined;
|
|
27
35
|
};
|
|
28
|
-
exports.
|
|
29
|
-
|
|
36
|
+
exports.getItem = getItem;
|
|
37
|
+
const hasItem = (storage, tableName, key) => {
|
|
38
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
39
|
+
return storage.getItem(storageKey) !== null;
|
|
30
40
|
};
|
|
31
|
-
exports.
|
|
41
|
+
exports.hasItem = hasItem;
|
|
42
|
+
const setItem = (storage, tableName, key, value) => {
|
|
32
43
|
// It is difference with IndexedDB implementation.
|
|
33
44
|
// This behavior compatible with localStorage.
|
|
34
45
|
if (value === undefined) {
|
|
35
|
-
return exports.deleteItem(storage, key);
|
|
46
|
+
return (0, exports.deleteItem)(storage, tableName, key);
|
|
36
47
|
}
|
|
37
|
-
|
|
48
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
49
|
+
return storage.setItem(storageKey, JSON.stringify(value));
|
|
38
50
|
};
|
|
39
|
-
exports.
|
|
51
|
+
exports.setItem = setItem;
|
|
52
|
+
const clearItem = (storage, tableName, kvsVersionKey, options) => {
|
|
40
53
|
// TODO: kvsVersionKey is special type
|
|
41
|
-
const currentVersion = exports.getItem(storage, kvsVersionKey);
|
|
54
|
+
const currentVersion = (0, exports.getItem)(storage, tableName, kvsVersionKey);
|
|
42
55
|
// clear all
|
|
43
56
|
storage.clear();
|
|
44
57
|
// if option.force is true, does not restore metadata.
|
|
@@ -47,40 +60,49 @@ exports.clearItem = (storage, kvsVersionKey, options) => {
|
|
|
47
60
|
}
|
|
48
61
|
// set kvs version again
|
|
49
62
|
if (currentVersion !== undefined) {
|
|
50
|
-
exports.setItem(storage, kvsVersionKey, currentVersion);
|
|
63
|
+
(0, exports.setItem)(storage, tableName, kvsVersionKey, currentVersion);
|
|
51
64
|
}
|
|
52
65
|
};
|
|
53
|
-
exports.
|
|
66
|
+
exports.clearItem = clearItem;
|
|
67
|
+
const deleteItem = (storage, tableName, key) => {
|
|
68
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
54
69
|
try {
|
|
55
|
-
storage.removeItem(
|
|
70
|
+
storage.removeItem(storageKey);
|
|
56
71
|
return true;
|
|
57
72
|
}
|
|
58
73
|
catch (_a) {
|
|
59
74
|
return false;
|
|
60
75
|
}
|
|
61
76
|
};
|
|
62
|
-
|
|
77
|
+
exports.deleteItem = deleteItem;
|
|
78
|
+
function* createIterator(storage, tableName, kvsVersionKey) {
|
|
79
|
+
const tableKeyPrefix = `${tableName}${TABLE_KEY_MARKER}`;
|
|
63
80
|
for (let i = 0; i < storage.length; i++) {
|
|
64
81
|
const key = storage.key(i);
|
|
65
82
|
if (!key) {
|
|
66
83
|
continue;
|
|
67
84
|
}
|
|
85
|
+
// skip another storage
|
|
86
|
+
if (!key.startsWith(tableKeyPrefix)) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
68
89
|
// skip meta key
|
|
69
|
-
|
|
90
|
+
const keyWithoutPrefix = key.replace(tableKeyPrefix, "");
|
|
91
|
+
if (keyWithoutPrefix === kvsVersionKey) {
|
|
70
92
|
continue;
|
|
71
93
|
}
|
|
72
|
-
const value = exports.getItem(storage,
|
|
73
|
-
yield [
|
|
94
|
+
const value = (0, exports.getItem)(storage, tableName, keyWithoutPrefix);
|
|
95
|
+
yield [keyWithoutPrefix, value];
|
|
74
96
|
}
|
|
75
97
|
}
|
|
76
98
|
exports.createIterator = createIterator;
|
|
77
99
|
const DEFAULT_KVS_VERSION = 1;
|
|
78
|
-
const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
const openStorage = ({ storage, version, tableName, kvsVersionKey, onUpgrade }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
101
|
// kvsVersionKey is special type
|
|
80
102
|
// first `oldVersion` is `0`
|
|
81
|
-
let oldVersion = exports.getItem(storage, kvsVersionKey);
|
|
103
|
+
let oldVersion = (0, exports.getItem)(storage, tableName, kvsVersionKey);
|
|
82
104
|
if (oldVersion === undefined) {
|
|
83
|
-
exports.setItem(storage, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
105
|
+
(0, exports.setItem)(storage, tableName, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
84
106
|
// first `oldVersion` is `0`
|
|
85
107
|
// https://github.com/azu/kvs/issues/8
|
|
86
108
|
oldVersion = 0;
|
|
@@ -97,22 +119,22 @@ const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaite
|
|
|
97
119
|
}
|
|
98
120
|
return storage;
|
|
99
121
|
});
|
|
100
|
-
const createStore = ({ storage, kvsVersionKey }) => {
|
|
122
|
+
const createStore = ({ tableName, storage, kvsVersionKey }) => {
|
|
101
123
|
const store = {
|
|
102
124
|
get(key) {
|
|
103
125
|
return Promise.resolve().then(() => {
|
|
104
|
-
return exports.getItem(storage, key);
|
|
126
|
+
return (0, exports.getItem)(storage, tableName, key);
|
|
105
127
|
});
|
|
106
128
|
},
|
|
107
129
|
has(key) {
|
|
108
130
|
return Promise.resolve().then(() => {
|
|
109
|
-
return exports.hasItem(storage, key);
|
|
131
|
+
return (0, exports.hasItem)(storage, tableName, key);
|
|
110
132
|
});
|
|
111
133
|
},
|
|
112
134
|
set(key, value) {
|
|
113
135
|
return Promise.resolve()
|
|
114
136
|
.then(() => {
|
|
115
|
-
return exports.setItem(storage, key, value);
|
|
137
|
+
return (0, exports.setItem)(storage, tableName, key, value);
|
|
116
138
|
})
|
|
117
139
|
.then(() => {
|
|
118
140
|
return store;
|
|
@@ -120,17 +142,17 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
120
142
|
},
|
|
121
143
|
clear() {
|
|
122
144
|
return Promise.resolve().then(() => {
|
|
123
|
-
return exports.clearItem(storage, kvsVersionKey, { force: false });
|
|
145
|
+
return (0, exports.clearItem)(storage, tableName, kvsVersionKey, { force: false });
|
|
124
146
|
});
|
|
125
147
|
},
|
|
126
148
|
delete(key) {
|
|
127
149
|
return Promise.resolve().then(() => {
|
|
128
|
-
return exports.deleteItem(storage, key);
|
|
150
|
+
return (0, exports.deleteItem)(storage, tableName, key);
|
|
129
151
|
});
|
|
130
152
|
},
|
|
131
153
|
dropInstance() {
|
|
132
154
|
return Promise.resolve().then(() => {
|
|
133
|
-
return exports.clearItem(storage, kvsVersionKey, { force: true });
|
|
155
|
+
return (0, exports.clearItem)(storage, tableName, kvsVersionKey, { force: true });
|
|
134
156
|
});
|
|
135
157
|
},
|
|
136
158
|
close() {
|
|
@@ -138,7 +160,7 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
138
160
|
return Promise.resolve();
|
|
139
161
|
},
|
|
140
162
|
[Symbol.asyncIterator]() {
|
|
141
|
-
const iterator = createIterator(storage, kvsVersionKey);
|
|
163
|
+
const iterator = createIterator(storage, tableName, kvsVersionKey);
|
|
142
164
|
return {
|
|
143
165
|
next() {
|
|
144
166
|
return Promise.resolve().then(() => {
|
|
@@ -150,25 +172,31 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
150
172
|
};
|
|
151
173
|
return store;
|
|
152
174
|
};
|
|
153
|
-
|
|
175
|
+
const kvsStorage = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
154
176
|
var _a;
|
|
155
177
|
const { name, version, upgrade } = options, kvStorageOptions = __rest(options, ["name", "version", "upgrade"]);
|
|
178
|
+
invariant(typeof name === "string", "name should be string");
|
|
179
|
+
invariant(name.length > 0, "name should not be empty");
|
|
180
|
+
invariant(!name.includes(TABLE_KEY_MARKER), `name can not include ${TABLE_KEY_MARKER}. It is reserved in kvs.`);
|
|
181
|
+
invariant(typeof version === "number", `version should be number`);
|
|
156
182
|
const kvsVersionKey = (_a = kvStorageOptions.kvsVersionKey) !== null && _a !== void 0 ? _a : "__kvs_version__";
|
|
157
183
|
const storage = yield openStorage({
|
|
158
184
|
storage: options.storage,
|
|
159
185
|
version: options.version,
|
|
186
|
+
tableName: name,
|
|
160
187
|
onUpgrade: ({ oldVersion, newVersion, storage }) => {
|
|
161
188
|
if (!options.upgrade) {
|
|
162
189
|
return;
|
|
163
190
|
}
|
|
164
191
|
return options.upgrade({
|
|
165
|
-
kvs: createStore({ storage, kvsVersionKey }),
|
|
192
|
+
kvs: createStore({ tableName: name, storage, kvsVersionKey }),
|
|
166
193
|
oldVersion,
|
|
167
194
|
newVersion
|
|
168
195
|
});
|
|
169
196
|
},
|
|
170
197
|
kvsVersionKey
|
|
171
198
|
});
|
|
172
|
-
return createStore({ storage, kvsVersionKey });
|
|
199
|
+
return createStore({ tableName: name, storage, kvsVersionKey });
|
|
173
200
|
});
|
|
201
|
+
exports.kvsStorage = kvsStorage;
|
|
174
202
|
//# 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
|
@@ -18,24 +18,34 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
18
18
|
}
|
|
19
19
|
return t;
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
function invariant(condition, message) {
|
|
22
|
+
if (condition) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
throw new Error(message);
|
|
26
|
+
}
|
|
27
|
+
const TABLE_KEY_MARKER = ".__.";
|
|
28
|
+
export const getItem = (storage, tableName, key) => {
|
|
29
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
30
|
+
const item = storage.getItem(storageKey);
|
|
23
31
|
return item !== null ? JSON.parse(item) : undefined;
|
|
24
32
|
};
|
|
25
|
-
export const hasItem = (storage, key) => {
|
|
26
|
-
|
|
33
|
+
export const hasItem = (storage, tableName, key) => {
|
|
34
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
35
|
+
return storage.getItem(storageKey) !== null;
|
|
27
36
|
};
|
|
28
|
-
export const setItem = (storage, key, value) => {
|
|
37
|
+
export const setItem = (storage, tableName, key, value) => {
|
|
29
38
|
// It is difference with IndexedDB implementation.
|
|
30
39
|
// This behavior compatible with localStorage.
|
|
31
40
|
if (value === undefined) {
|
|
32
|
-
return deleteItem(storage, key);
|
|
41
|
+
return deleteItem(storage, tableName, key);
|
|
33
42
|
}
|
|
34
|
-
|
|
43
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
44
|
+
return storage.setItem(storageKey, JSON.stringify(value));
|
|
35
45
|
};
|
|
36
|
-
export const clearItem = (storage, kvsVersionKey, options) => {
|
|
46
|
+
export const clearItem = (storage, tableName, kvsVersionKey, options) => {
|
|
37
47
|
// TODO: kvsVersionKey is special type
|
|
38
|
-
const currentVersion = getItem(storage, kvsVersionKey);
|
|
48
|
+
const currentVersion = getItem(storage, tableName, kvsVersionKey);
|
|
39
49
|
// clear all
|
|
40
50
|
storage.clear();
|
|
41
51
|
// if option.force is true, does not restore metadata.
|
|
@@ -44,39 +54,46 @@ export const clearItem = (storage, kvsVersionKey, options) => {
|
|
|
44
54
|
}
|
|
45
55
|
// set kvs version again
|
|
46
56
|
if (currentVersion !== undefined) {
|
|
47
|
-
setItem(storage, kvsVersionKey, currentVersion);
|
|
57
|
+
setItem(storage, tableName, kvsVersionKey, currentVersion);
|
|
48
58
|
}
|
|
49
59
|
};
|
|
50
|
-
export const deleteItem = (storage, key) => {
|
|
60
|
+
export const deleteItem = (storage, tableName, key) => {
|
|
61
|
+
const storageKey = `${tableName}${TABLE_KEY_MARKER}${String(key)}`;
|
|
51
62
|
try {
|
|
52
|
-
storage.removeItem(
|
|
63
|
+
storage.removeItem(storageKey);
|
|
53
64
|
return true;
|
|
54
65
|
}
|
|
55
66
|
catch (_a) {
|
|
56
67
|
return false;
|
|
57
68
|
}
|
|
58
69
|
};
|
|
59
|
-
export function* createIterator(storage, kvsVersionKey) {
|
|
70
|
+
export function* createIterator(storage, tableName, kvsVersionKey) {
|
|
71
|
+
const tableKeyPrefix = `${tableName}${TABLE_KEY_MARKER}`;
|
|
60
72
|
for (let i = 0; i < storage.length; i++) {
|
|
61
73
|
const key = storage.key(i);
|
|
62
74
|
if (!key) {
|
|
63
75
|
continue;
|
|
64
76
|
}
|
|
77
|
+
// skip another storage
|
|
78
|
+
if (!key.startsWith(tableKeyPrefix)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
65
81
|
// skip meta key
|
|
66
|
-
|
|
82
|
+
const keyWithoutPrefix = key.replace(tableKeyPrefix, "");
|
|
83
|
+
if (keyWithoutPrefix === kvsVersionKey) {
|
|
67
84
|
continue;
|
|
68
85
|
}
|
|
69
|
-
const value = getItem(storage,
|
|
70
|
-
yield [
|
|
86
|
+
const value = getItem(storage, tableName, keyWithoutPrefix);
|
|
87
|
+
yield [keyWithoutPrefix, value];
|
|
71
88
|
}
|
|
72
89
|
}
|
|
73
90
|
const DEFAULT_KVS_VERSION = 1;
|
|
74
|
-
const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
const openStorage = ({ storage, version, tableName, kvsVersionKey, onUpgrade }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
92
|
// kvsVersionKey is special type
|
|
76
93
|
// first `oldVersion` is `0`
|
|
77
|
-
let oldVersion = getItem(storage, kvsVersionKey);
|
|
94
|
+
let oldVersion = getItem(storage, tableName, kvsVersionKey);
|
|
78
95
|
if (oldVersion === undefined) {
|
|
79
|
-
setItem(storage, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
96
|
+
setItem(storage, tableName, kvsVersionKey, DEFAULT_KVS_VERSION);
|
|
80
97
|
// first `oldVersion` is `0`
|
|
81
98
|
// https://github.com/azu/kvs/issues/8
|
|
82
99
|
oldVersion = 0;
|
|
@@ -93,22 +110,22 @@ const openStorage = ({ storage, version, kvsVersionKey, onUpgrade }) => __awaite
|
|
|
93
110
|
}
|
|
94
111
|
return storage;
|
|
95
112
|
});
|
|
96
|
-
const createStore = ({ storage, kvsVersionKey }) => {
|
|
113
|
+
const createStore = ({ tableName, storage, kvsVersionKey }) => {
|
|
97
114
|
const store = {
|
|
98
115
|
get(key) {
|
|
99
116
|
return Promise.resolve().then(() => {
|
|
100
|
-
return getItem(storage, key);
|
|
117
|
+
return getItem(storage, tableName, key);
|
|
101
118
|
});
|
|
102
119
|
},
|
|
103
120
|
has(key) {
|
|
104
121
|
return Promise.resolve().then(() => {
|
|
105
|
-
return hasItem(storage, key);
|
|
122
|
+
return hasItem(storage, tableName, key);
|
|
106
123
|
});
|
|
107
124
|
},
|
|
108
125
|
set(key, value) {
|
|
109
126
|
return Promise.resolve()
|
|
110
127
|
.then(() => {
|
|
111
|
-
return setItem(storage, key, value);
|
|
128
|
+
return setItem(storage, tableName, key, value);
|
|
112
129
|
})
|
|
113
130
|
.then(() => {
|
|
114
131
|
return store;
|
|
@@ -116,17 +133,17 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
116
133
|
},
|
|
117
134
|
clear() {
|
|
118
135
|
return Promise.resolve().then(() => {
|
|
119
|
-
return clearItem(storage, kvsVersionKey, { force: false });
|
|
136
|
+
return clearItem(storage, tableName, kvsVersionKey, { force: false });
|
|
120
137
|
});
|
|
121
138
|
},
|
|
122
139
|
delete(key) {
|
|
123
140
|
return Promise.resolve().then(() => {
|
|
124
|
-
return deleteItem(storage, key);
|
|
141
|
+
return deleteItem(storage, tableName, key);
|
|
125
142
|
});
|
|
126
143
|
},
|
|
127
144
|
dropInstance() {
|
|
128
145
|
return Promise.resolve().then(() => {
|
|
129
|
-
return clearItem(storage, kvsVersionKey, { force: true });
|
|
146
|
+
return clearItem(storage, tableName, kvsVersionKey, { force: true });
|
|
130
147
|
});
|
|
131
148
|
},
|
|
132
149
|
close() {
|
|
@@ -134,7 +151,7 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
134
151
|
return Promise.resolve();
|
|
135
152
|
},
|
|
136
153
|
[Symbol.asyncIterator]() {
|
|
137
|
-
const iterator = createIterator(storage, kvsVersionKey);
|
|
154
|
+
const iterator = createIterator(storage, tableName, kvsVersionKey);
|
|
138
155
|
return {
|
|
139
156
|
next() {
|
|
140
157
|
return Promise.resolve().then(() => {
|
|
@@ -149,22 +166,27 @@ const createStore = ({ storage, kvsVersionKey }) => {
|
|
|
149
166
|
export const kvsStorage = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
150
167
|
var _a;
|
|
151
168
|
const { name, version, upgrade } = options, kvStorageOptions = __rest(options, ["name", "version", "upgrade"]);
|
|
169
|
+
invariant(typeof name === "string", "name should be string");
|
|
170
|
+
invariant(name.length > 0, "name should not be empty");
|
|
171
|
+
invariant(!name.includes(TABLE_KEY_MARKER), `name can not include ${TABLE_KEY_MARKER}. It is reserved in kvs.`);
|
|
172
|
+
invariant(typeof version === "number", `version should be number`);
|
|
152
173
|
const kvsVersionKey = (_a = kvStorageOptions.kvsVersionKey) !== null && _a !== void 0 ? _a : "__kvs_version__";
|
|
153
174
|
const storage = yield openStorage({
|
|
154
175
|
storage: options.storage,
|
|
155
176
|
version: options.version,
|
|
177
|
+
tableName: name,
|
|
156
178
|
onUpgrade: ({ oldVersion, newVersion, storage }) => {
|
|
157
179
|
if (!options.upgrade) {
|
|
158
180
|
return;
|
|
159
181
|
}
|
|
160
182
|
return options.upgrade({
|
|
161
|
-
kvs: createStore({ storage, kvsVersionKey }),
|
|
183
|
+
kvs: createStore({ tableName: name, storage, kvsVersionKey }),
|
|
162
184
|
oldVersion,
|
|
163
185
|
newVersion
|
|
164
186
|
});
|
|
165
187
|
},
|
|
166
188
|
kvsVersionKey
|
|
167
189
|
});
|
|
168
|
-
return createStore({ storage, kvsVersionKey });
|
|
190
|
+
return createStore({ tableName: name, storage, kvsVersionKey });
|
|
169
191
|
});
|
|
170
192
|
//# 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": "0.
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Storage(localStorage, sessionStorage) helper for KVS.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kvs",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"build": "tsc -p . && tsc --project ./tsconfig.module.json",
|
|
35
35
|
"clean": "rimraf lib/ module/",
|
|
36
36
|
"prettier": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"",
|
|
37
|
-
"
|
|
37
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
38
38
|
"test": "karma start --single-run",
|
|
39
39
|
"watch": "tsc -p . --watch"
|
|
40
40
|
},
|
|
@@ -45,23 +45,22 @@
|
|
|
45
45
|
"trailingComma": "none"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@kvs/types": "^0.
|
|
48
|
+
"@kvs/types": "^2.0.0"
|
|
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": "b43dd2fdbefe4ee5714d0690b2f8f576dc8c1417"
|
|
67
66
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,49 +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
|
-
# [0.3.0](https://github.com/azu/kvs/compare/v0.2.1...v0.3.0) (2020-08-22)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
### Features
|
|
10
|
-
|
|
11
|
-
* **storage-sync:** add storage-sync package ([#11](https://github.com/azu/kvs/issues/11)) ([5748776](https://github.com/azu/kvs/commit/574877624202660c0427cd050d30e807d7bbbd26))
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## [0.2.1](https://github.com/azu/kvs/compare/v0.2.0...v0.2.1) (2020-08-22)
|
|
18
|
-
|
|
19
|
-
**Note:** Version bump only for package @kvs/storage
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
# [0.2.0](https://github.com/azu/kvs/compare/v0.1.0...v0.2.0) (2020-08-08)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### Features
|
|
29
|
-
|
|
30
|
-
* **@kvs/indexeddb:** migrate Schema Type ([ec143e2](https://github.com/azu/kvs/commit/ec143e27d174271f4ce45f657e1ae644ef01591c))
|
|
31
|
-
* **@kvs/localstorage:** migrate to Schema type ([0c84640](https://github.com/azu/kvs/commit/0c84640c1c1d28955c60ca83d8a01bdce936d9ef))
|
|
32
|
-
* **storage:** use Schema interface ([2560aae](https://github.com/azu/kvs/commit/2560aae28d642c8f2e8ee5920dc1cc15f7c8c3f6))
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
# 0.1.0 (2020-08-08)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
### Bug Fixes
|
|
42
|
-
|
|
43
|
-
* add deps ([b72e91a](https://github.com/azu/kvs/commit/b72e91aaa2487d69d44200ef0a11cc0b5f8fb904))
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
### Features
|
|
47
|
-
|
|
48
|
-
* **@kvs/node-localstorage:** add node implementation ([5160012](https://github.com/azu/kvs/commit/516001286c96ac85cb54d55fbba62549d6d7eb0e))
|
|
49
|
-
* add `close()` to interface ([a269d1d](https://github.com/azu/kvs/commit/a269d1dda6ce63388771e6fa4d897a26f284b72c))
|