global-store 1.0.0-beta.21 → 1.0.0-beta.22
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/LICENSE +1 -1
- package/README.md +2 -244
- package/dist/global-store.js +2 -0
- package/dist/global-store.js.map +1 -0
- package/index.js.flow +2 -2
- package/lib/compareVersion.d.ts +2 -1
- package/lib/compareVersion.d.ts.map +1 -0
- package/lib/compareVersion.js +4 -8
- package/lib/compareVersion.js.map +1 -1
- package/lib/createAsyncStore.d.ts +3 -2
- package/lib/createAsyncStore.d.ts.map +1 -0
- package/lib/createAsyncStore.js +13 -59
- package/lib/createAsyncStore.js.map +1 -1
- package/lib/createStore.d.ts +3 -2
- package/lib/createStore.d.ts.map +1 -0
- package/lib/createStore.js +8 -13
- package/lib/createStore.js.map +1 -1
- package/lib/index.d.ts +5 -4
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +4 -22
- package/lib/index.js.map +1 -1
- package/lib/shouldInvokeInitializer.d.ts +2 -1
- package/lib/shouldInvokeInitializer.d.ts.map +1 -0
- package/lib/shouldInvokeInitializer.js +7 -11
- package/lib/shouldInvokeInitializer.js.map +1 -1
- package/lib/toVersionArray.d.ts +3 -2
- package/lib/toVersionArray.d.ts.map +1 -0
- package/lib/toVersionArray.js +2 -6
- package/lib/toVersionArray.js.map +1 -1
- package/lib/types.d.ts +8 -3
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +1 -2
- package/lib/types.js.map +1 -1
- package/lib/typesInternal.d.ts +4 -3
- package/lib/typesInternal.d.ts.map +1 -0
- package/lib/typesInternal.js +1 -2
- package/lib/typesInternal.js.map +1 -1
- package/lib/util.d.ts +4 -3
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +22 -36
- package/lib/util.js.map +1 -1
- package/package.json +44 -62
- package/dist/compareVersion.d.ts +0 -7
- package/dist/createAsyncStore.d.ts +0 -12
- package/dist/createStore.d.ts +0 -28
- package/dist/global-store.es.js +0 -127
- package/dist/global-store.es.js.map +0 -1
- package/dist/global-store.es5.js +0 -2
- package/dist/global-store.es5.js.map +0 -1
- package/dist/global-store.systemjs.js +0 -141
- package/dist/global-store.systemjs.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/shouldInvokeInitializer.d.ts +0 -2
- package/dist/toVersionArray.d.ts +0 -3
- package/dist/types.d.ts +0 -9
- package/dist/util.d.ts +0 -14
- package/libm/compareVersion.d.ts +0 -7
- package/libm/compareVersion.js +0 -13
- package/libm/compareVersion.js.map +0 -1
- package/libm/createAsyncStore.d.ts +0 -12
- package/libm/createAsyncStore.js +0 -27
- package/libm/createAsyncStore.js.map +0 -1
- package/libm/createStore.d.ts +0 -28
- package/libm/createStore.js +0 -16
- package/libm/createStore.js.map +0 -1
- package/libm/index.d.ts +0 -4
- package/libm/index.js +0 -5
- package/libm/index.js.map +0 -1
- package/libm/shouldInvokeInitializer.d.ts +0 -2
- package/libm/shouldInvokeInitializer.js +0 -14
- package/libm/shouldInvokeInitializer.js.map +0 -1
- package/libm/toVersionArray.d.ts +0 -3
- package/libm/toVersionArray.js +0 -5
- package/libm/toVersionArray.js.map +0 -1
- package/libm/types.d.ts +0 -9
- package/libm/types.js +0 -2
- package/libm/types.js.map +0 -1
- package/libm/typesInternal.d.ts +0 -16
- package/libm/typesInternal.js +0 -2
- package/libm/typesInternal.js.map +0 -1
- package/libm/util.d.ts +0 -14
- package/libm/util.js +0 -57
- package/libm/util.js.map +0 -1
- package/ts/compareVersion.spec.ts +0 -9
- package/ts/compareVersion.ts +0 -14
- package/ts/createAsyncStore.spec.ts +0 -142
- package/ts/createAsyncStore.ts +0 -31
- package/ts/createStore.spec.ts +0 -217
- package/ts/createStore.ts +0 -43
- package/ts/index.spec.ts +0 -7
- package/ts/index.ts +0 -5
- package/ts/shouldInvokeInitializer.spec.ts +0 -41
- package/ts/shouldInvokeInitializer.ts +0 -17
- package/ts/toVersionArray.ts +0 -8
- package/ts/types.ts +0 -12
- package/ts/typesInternal.ts +0 -21
- package/ts/util.ts +0 -69
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-store.es5.js","mappings":"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","sources":["webpack://GlobalStore/./ts/compareVersion.ts","webpack://GlobalStore/./ts/createAsyncStore.ts","webpack://GlobalStore/./ts/createStore.ts","webpack://GlobalStore/./ts/index.ts","webpack://GlobalStore/./ts/shouldInvokeInitializer.ts","webpack://GlobalStore/./ts/toVersionArray.ts","webpack://GlobalStore/./ts/util.ts","webpack://GlobalStore/webpack/bootstrap","webpack://GlobalStore/webpack/startup"],"sourcesContent":["import { toVersionArray } from './toVersionArray'\nimport { StoreVersion } from './types'\n\n/**\n * Compare version.\n * Positive when processed > current\n * Negative when processed < current\n */\nexport function compareVersion(processed: StoreVersion, current: StoreVersion) {\n const v1 = toVersionArray(processed)\n const v2 = toVersionArray(current)\n return v1[0] !== v2[0] ? v1[0] - v2[0] :\n v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2]\n}\n","import { createStore, Store } from './createStore'\nimport { StoreOptions, StoreValue } from './types'\nimport { StoreCreators } from './typesInternal'\nimport { resolveCreators } from './util'\n\nconst asyncStoreCreators = Object.create(null) as StoreCreators<Store<any>>\n\n/**\n * Creates a store of type T asynchronously.\n * @see https://github.com/unional/global-store#createAsyncStore\n */\nexport async function createAsyncStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Promise<Store<T>> {\n return new Promise(resolve => {\n const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null)\n const k = key ?? 'default'\n const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || []\n storeCreators.push({ version, resolve, initializer })\n })\n}\n\n/**\n * Initializes the stores for `createAsyncStore()`.\n * @see https://github.com/unional/global-store#initializeAsyncStore\n */\nexport function initializeAsyncStore(moduleName: string, key?: string) {\n const creatorsOfModules = asyncStoreCreators[moduleName]\n if (!creatorsOfModules) return\n\n const keys = key ? [key] : Object.keys(creatorsOfModules)\n keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore))\n}\n","import { StoreOptions, StoreValue } from './types'\nimport { Stores } from './typesInternal'\nimport { freezeStoreValue, getStoreValue, initStoreValue, resetStoreValue } from './util'\n\nexport type Store<T extends StoreValue> = {\n /**\n * The store value.\n */\n readonly value: T,\n /**\n * Freezes the store value.\n * @param value Optional new store value.\n * If supplied, this value will be freezed and used as the store value.\n * You can use this update the store value and freeze part of it.\n * If not supplied,\n * the original value will be freezed and its array property will also be freezed.\n */\n freeze(value?: { [k in keyof T]: Readonly<T[k]> }): void,\n /**\n * Resets the store to its initial value.\n * You should only use this during testing.\n */\n reset(): void,\n}\n\nconst stores = Object.create(null) as Stores\n\n/**\n * Creates a store of type T.\n * @see https://www.npmjs.com/package/global-store\n */\nexport function createStore<\n T extends StoreValue\n>({ moduleName, key, version, initializer }: StoreOptions<T>): Store<T> {\n const id = { moduleName, key }\n initStoreValue(stores, id, version, initializer)\n\n return {\n get value() { return getStoreValue<T>(stores, id) },\n freeze(value) { return freezeStoreValue(stores, id, value) },\n reset() { return resetStoreValue(stores, id) }\n }\n}\n","export * from './createAsyncStore'\nexport * from './createStore'\nexport { createStore as default } from './createStore'\nexport * from './types'\n\n","import { ParsedVersion, toVersionArray } from './toVersionArray'\nimport { StoreVersion } from './types'\n\nexport function shouldInvokeInitializer(versions: StoreVersion[], version: StoreVersion) {\n const vs = versions.map(toVersionArray)\n const v = toVersionArray(version)\n return noMatchMajor(vs, v) || hasNewVersion(vs, v)\n}\n\nfunction noMatchMajor(versions: ParsedVersion[], version: ParsedVersion) {\n return !versions.some(v => v[0] === version[0])\n}\n\nfunction hasNewVersion(versions: ParsedVersion[], version: ParsedVersion) {\n return versions.filter(v => v[0] === version[0])\n .some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]))\n}\n","import { StoreVersion } from './types'\n\nexport type ParsedVersion = [number, number, number]\n\nexport function toVersionArray(v: StoreVersion): ParsedVersion {\n return typeof v === 'number' ? [0, 0, v] :\n v.split('.').map(v => parseInt(v, 10)) as ParsedVersion\n}\n","import { compareVersion } from './compareVersion'\nimport { createStore } from './createStore'\nimport { shouldInvokeInitializer } from './shouldInvokeInitializer'\nimport { StoreInitializer, StoreValue, StoreVersion } from './types'\nimport { StoreCreator, StoreId, Stores } from './typesInternal'\n\nexport function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T {\n return getStore(stores, id).value as T\n}\n\nexport function initStoreValue<T extends StoreValue>(stores: Stores, id: StoreId, version: StoreVersion, initializer: StoreInitializer<T>) {\n const store = getStore(stores, id)\n if (shouldInvokeInitializer(store.versions, version)) {\n store.initializers.push(initializer as StoreInitializer<StoreValue>)\n store.value = initializer(store.value as T, store.versions)\n store.versions.push(version)\n }\n}\n\nexport function resetStoreValue(stores: Stores, id: StoreId) {\n const store = getStore(stores, id)\n const versions = store.versions\n store.versions = []\n store.value = store.initializers.reduce<StoreValue>((value, initializer, i) => {\n value = initializer(value, store.versions)\n store.versions.push(versions[i])\n return value\n }, {})\n}\n\nexport function getStore(stores: Stores, id: StoreId) {\n const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null)\n const key = id.key ?? 'default'\n return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] }\n}\n\nexport function resolveCreators(moduleName: string, key: string, storeCreators: Array<StoreCreator<any>>, cs: typeof createStore) {\n sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })))\n}\n\nexport function sortByVersion<S>(storeCreators: Array<StoreCreator<S>>) {\n return storeCreators.sort((a, b) => compareVersion(a.version, b.version))\n}\n\nexport function freezeStoreValue(stores: Stores, id: StoreId, value?: StoreValue) {\n const store = getStore(stores, id)\n store.value = value ?\n Object.isFrozen(value) ? value : Object.freeze(value) :\n freezeValue(store.value)\n}\n\nfunction freezeValue(storeValue: StoreValue) {\n if (Object.isFrozen(storeValue)) throw TypeError('Frozen value cannot be freezed again')\n\n Object.keys(storeValue).forEach(k => freezeIfIsArray(storeValue, k))\n // istanbul ignore next\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(storeValue).forEach(k => freezeIfIsArray(storeValue, k))\n }\n\n return Object.freeze(storeValue)\n}\n\nfunction freezeIfIsArray(storeValue: StoreValue, k: string | number | symbol) {\n const value = storeValue[k]\n if (Array.isArray(value)) {\n storeValue[k] = Object.freeze(value)\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(733);\n"],"names":["processed","current","v1","toVersionArray","v2","asyncStoreCreators","Object","create","moduleName","key","version","initializer","Promise","resolve","creatorsOfModules","k","push","keys","forEach","resolveCreators","createStore","stores","id","initStoreValue","value","getStoreValue","freeze","freezeStoreValue","reset","resetStoreValue","versions","vs","map","v","some","noMatchMajor","filter","hasNewVersion","split","parseInt","getStore","moduleStore","initializers","sortByVersion","storeCreators","sort","a","b","compareVersion","freezeIfIsArray","storeValue","Array","isArray","store","shouldInvokeInitializer","reduce","i","cs","isFrozen","TypeError","getOwnPropertySymbols","freezeValue","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call"],"sourceRoot":""}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
System.register([], (function (exports) {
|
|
2
|
-
'use strict';
|
|
3
|
-
return {
|
|
4
|
-
execute: (function () {
|
|
5
|
-
|
|
6
|
-
exports({
|
|
7
|
-
createAsyncStore: createAsyncStore,
|
|
8
|
-
createStore: createStore,
|
|
9
|
-
default: createStore,
|
|
10
|
-
initializeAsyncStore: initializeAsyncStore
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
function toVersionArray(v) {
|
|
14
|
-
return typeof v === 'number' ? [0, 0, v] :
|
|
15
|
-
v.split('.').map(v => parseInt(v, 10));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Compare version.
|
|
20
|
-
* Positive when processed > current
|
|
21
|
-
* Negative when processed < current
|
|
22
|
-
*/
|
|
23
|
-
function compareVersion(processed, current) {
|
|
24
|
-
const v1 = toVersionArray(processed);
|
|
25
|
-
const v2 = toVersionArray(current);
|
|
26
|
-
return v1[0] !== v2[0] ? v1[0] - v2[0] :
|
|
27
|
-
v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function shouldInvokeInitializer(versions, version) {
|
|
31
|
-
const vs = versions.map(toVersionArray);
|
|
32
|
-
const v = toVersionArray(version);
|
|
33
|
-
return noMatchMajor(vs, v) || hasNewVersion(vs, v);
|
|
34
|
-
}
|
|
35
|
-
function noMatchMajor(versions, version) {
|
|
36
|
-
return !versions.some(v => v[0] === version[0]);
|
|
37
|
-
}
|
|
38
|
-
function hasNewVersion(versions, version) {
|
|
39
|
-
return versions.filter(v => v[0] === version[0])
|
|
40
|
-
.some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function getStoreValue(stores, id) {
|
|
44
|
-
return getStore(stores, id).value;
|
|
45
|
-
}
|
|
46
|
-
function initStoreValue(stores, id, version, initializer) {
|
|
47
|
-
const store = getStore(stores, id);
|
|
48
|
-
if (shouldInvokeInitializer(store.versions, version)) {
|
|
49
|
-
store.initializers.push(initializer);
|
|
50
|
-
store.value = initializer(store.value, store.versions);
|
|
51
|
-
store.versions.push(version);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function resetStoreValue(stores, id) {
|
|
55
|
-
const store = getStore(stores, id);
|
|
56
|
-
const versions = store.versions;
|
|
57
|
-
store.versions = [];
|
|
58
|
-
store.value = store.initializers.reduce((value, initializer, i) => {
|
|
59
|
-
value = initializer(value, store.versions);
|
|
60
|
-
store.versions.push(versions[i]);
|
|
61
|
-
return value;
|
|
62
|
-
}, {});
|
|
63
|
-
}
|
|
64
|
-
function getStore(stores, id) {
|
|
65
|
-
const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
|
|
66
|
-
const key = id.key ?? 'default';
|
|
67
|
-
return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
|
|
68
|
-
}
|
|
69
|
-
function resolveCreators(moduleName, key, storeCreators, cs) {
|
|
70
|
-
sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })));
|
|
71
|
-
}
|
|
72
|
-
function sortByVersion(storeCreators) {
|
|
73
|
-
return storeCreators.sort((a, b) => compareVersion(a.version, b.version));
|
|
74
|
-
}
|
|
75
|
-
function freezeStoreValue(stores, id, value) {
|
|
76
|
-
const store = getStore(stores, id);
|
|
77
|
-
store.value = value ?
|
|
78
|
-
Object.isFrozen(value) ? value : Object.freeze(value) :
|
|
79
|
-
freezeValue(store.value);
|
|
80
|
-
}
|
|
81
|
-
function freezeValue(storeValue) {
|
|
82
|
-
if (Object.isFrozen(storeValue))
|
|
83
|
-
throw TypeError('Frozen value cannot be freezed again');
|
|
84
|
-
Object.keys(storeValue).forEach(k => freezeIfIsArray(storeValue, k));
|
|
85
|
-
// istanbul ignore next
|
|
86
|
-
if (Object.getOwnPropertySymbols) {
|
|
87
|
-
Object.getOwnPropertySymbols(storeValue).forEach(k => freezeIfIsArray(storeValue, k));
|
|
88
|
-
}
|
|
89
|
-
return Object.freeze(storeValue);
|
|
90
|
-
}
|
|
91
|
-
function freezeIfIsArray(storeValue, k) {
|
|
92
|
-
const value = storeValue[k];
|
|
93
|
-
if (Array.isArray(value)) {
|
|
94
|
-
storeValue[k] = Object.freeze(value);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const stores = Object.create(null);
|
|
99
|
-
/**
|
|
100
|
-
* Creates a store of type T.
|
|
101
|
-
* @see https://www.npmjs.com/package/global-store
|
|
102
|
-
*/
|
|
103
|
-
function createStore({ moduleName, key, version, initializer }) {
|
|
104
|
-
const id = { moduleName, key };
|
|
105
|
-
initStoreValue(stores, id, version, initializer);
|
|
106
|
-
return {
|
|
107
|
-
get value() { return getStoreValue(stores, id); },
|
|
108
|
-
freeze(value) { return freezeStoreValue(stores, id, value); },
|
|
109
|
-
reset() { return resetStoreValue(stores, id); }
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const asyncStoreCreators = Object.create(null);
|
|
114
|
-
/**
|
|
115
|
-
* Creates a store of type T asynchronously.
|
|
116
|
-
* @see https://github.com/unional/global-store#createAsyncStore
|
|
117
|
-
*/
|
|
118
|
-
async function createAsyncStore({ moduleName, key, version, initializer }) {
|
|
119
|
-
return new Promise(resolve => {
|
|
120
|
-
const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
|
|
121
|
-
const k = key ?? 'default';
|
|
122
|
-
const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
|
|
123
|
-
storeCreators.push({ version, resolve, initializer });
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Initializes the stores for `createAsyncStore()`.
|
|
128
|
-
* @see https://github.com/unional/global-store#initializeAsyncStore
|
|
129
|
-
*/
|
|
130
|
-
function initializeAsyncStore(moduleName, key) {
|
|
131
|
-
const creatorsOfModules = asyncStoreCreators[moduleName];
|
|
132
|
-
if (!creatorsOfModules)
|
|
133
|
-
return;
|
|
134
|
-
const keys = key ? [key] : Object.keys(creatorsOfModules);
|
|
135
|
-
keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore));
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
})
|
|
139
|
-
};
|
|
140
|
-
}));
|
|
141
|
-
//# sourceMappingURL=global-store.systemjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-store.systemjs.js","sources":["../ts/toVersionArray.ts","../ts/compareVersion.ts","../ts/shouldInvokeInitializer.ts","../ts/util.ts","../ts/createStore.ts","../ts/createAsyncStore.ts"],"sourcesContent":["import { StoreVersion } from './types'\n\nexport type ParsedVersion = [number, number, number]\n\nexport function toVersionArray(v: StoreVersion): ParsedVersion {\n return typeof v === 'number' ? [0, 0, v] :\n v.split('.').map(v => parseInt(v, 10)) as ParsedVersion\n}\n","import { toVersionArray } from './toVersionArray'\nimport { StoreVersion } from './types'\n\n/**\n * Compare version.\n * Positive when processed > current\n * Negative when processed < current\n */\nexport function compareVersion(processed: StoreVersion, current: StoreVersion) {\n const v1 = toVersionArray(processed)\n const v2 = toVersionArray(current)\n return v1[0] !== v2[0] ? v1[0] - v2[0] :\n v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2]\n}\n","import { ParsedVersion, toVersionArray } from './toVersionArray'\nimport { StoreVersion } from './types'\n\nexport function shouldInvokeInitializer(versions: StoreVersion[], version: StoreVersion) {\n const vs = versions.map(toVersionArray)\n const v = toVersionArray(version)\n return noMatchMajor(vs, v) || hasNewVersion(vs, v)\n}\n\nfunction noMatchMajor(versions: ParsedVersion[], version: ParsedVersion) {\n return !versions.some(v => v[0] === version[0])\n}\n\nfunction hasNewVersion(versions: ParsedVersion[], version: ParsedVersion) {\n return versions.filter(v => v[0] === version[0])\n .some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]))\n}\n","import { compareVersion } from './compareVersion'\nimport { createStore } from './createStore'\nimport { shouldInvokeInitializer } from './shouldInvokeInitializer'\nimport { StoreInitializer, StoreValue, StoreVersion } from './types'\nimport { StoreCreator, StoreId, Stores } from './typesInternal'\n\nexport function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T {\n return getStore(stores, id).value as T\n}\n\nexport function initStoreValue<T extends StoreValue>(stores: Stores, id: StoreId, version: StoreVersion, initializer: StoreInitializer<T>) {\n const store = getStore(stores, id)\n if (shouldInvokeInitializer(store.versions, version)) {\n store.initializers.push(initializer as StoreInitializer<StoreValue>)\n store.value = initializer(store.value as T, store.versions)\n store.versions.push(version)\n }\n}\n\nexport function resetStoreValue(stores: Stores, id: StoreId) {\n const store = getStore(stores, id)\n const versions = store.versions\n store.versions = []\n store.value = store.initializers.reduce<StoreValue>((value, initializer, i) => {\n value = initializer(value, store.versions)\n store.versions.push(versions[i])\n return value\n }, {})\n}\n\nexport function getStore(stores: Stores, id: StoreId) {\n const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null)\n const key = id.key ?? 'default'\n return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] }\n}\n\nexport function resolveCreators(moduleName: string, key: string, storeCreators: Array<StoreCreator<any>>, cs: typeof createStore) {\n sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })))\n}\n\nexport function sortByVersion<S>(storeCreators: Array<StoreCreator<S>>) {\n return storeCreators.sort((a, b) => compareVersion(a.version, b.version))\n}\n\nexport function freezeStoreValue(stores: Stores, id: StoreId, value?: StoreValue) {\n const store = getStore(stores, id)\n store.value = value ?\n Object.isFrozen(value) ? value : Object.freeze(value) :\n freezeValue(store.value)\n}\n\nfunction freezeValue(storeValue: StoreValue) {\n if (Object.isFrozen(storeValue)) throw TypeError('Frozen value cannot be freezed again')\n\n Object.keys(storeValue).forEach(k => freezeIfIsArray(storeValue, k))\n // istanbul ignore next\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(storeValue).forEach(k => freezeIfIsArray(storeValue, k))\n }\n\n return Object.freeze(storeValue)\n}\n\nfunction freezeIfIsArray(storeValue: StoreValue, k: string | number | symbol) {\n const value = storeValue[k]\n if (Array.isArray(value)) {\n storeValue[k] = Object.freeze(value)\n }\n}\n","import { StoreOptions, StoreValue } from './types'\nimport { Stores } from './typesInternal'\nimport { freezeStoreValue, getStoreValue, initStoreValue, resetStoreValue } from './util'\n\nexport type Store<T extends StoreValue> = {\n /**\n * The store value.\n */\n readonly value: T,\n /**\n * Freezes the store value.\n * @param value Optional new store value.\n * If supplied, this value will be freezed and used as the store value.\n * You can use this update the store value and freeze part of it.\n * If not supplied,\n * the original value will be freezed and its array property will also be freezed.\n */\n freeze(value?: { [k in keyof T]: Readonly<T[k]> }): void,\n /**\n * Resets the store to its initial value.\n * You should only use this during testing.\n */\n reset(): void,\n}\n\nconst stores = Object.create(null) as Stores\n\n/**\n * Creates a store of type T.\n * @see https://www.npmjs.com/package/global-store\n */\nexport function createStore<\n T extends StoreValue\n>({ moduleName, key, version, initializer }: StoreOptions<T>): Store<T> {\n const id = { moduleName, key }\n initStoreValue(stores, id, version, initializer)\n\n return {\n get value() { return getStoreValue<T>(stores, id) },\n freeze(value) { return freezeStoreValue(stores, id, value) },\n reset() { return resetStoreValue(stores, id) }\n }\n}\n","import { createStore, Store } from './createStore'\nimport { StoreOptions, StoreValue } from './types'\nimport { StoreCreators } from './typesInternal'\nimport { resolveCreators } from './util'\n\nconst asyncStoreCreators = Object.create(null) as StoreCreators<Store<any>>\n\n/**\n * Creates a store of type T asynchronously.\n * @see https://github.com/unional/global-store#createAsyncStore\n */\nexport async function createAsyncStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Promise<Store<T>> {\n return new Promise(resolve => {\n const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null)\n const k = key ?? 'default'\n const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || []\n storeCreators.push({ version, resolve, initializer })\n })\n}\n\n/**\n * Initializes the stores for `createAsyncStore()`.\n * @see https://github.com/unional/global-store#initializeAsyncStore\n */\nexport function initializeAsyncStore(moduleName: string, key?: string) {\n const creatorsOfModules = asyncStoreCreators[moduleName]\n if (!creatorsOfModules) return\n\n const keys = key ? [key] : Object.keys(creatorsOfModules)\n keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore))\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/toVersionArray.d.ts
DELETED
package/dist/types.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare type StoreValue = Record<string | symbol, unknown>;
|
|
2
|
-
export declare type StoreVersion = `${number}.${number}.${number}` | number;
|
|
3
|
-
export declare type StoreInitializer<T extends StoreValue> = (current: StoreValue, processedVersions: StoreVersion[]) => T;
|
|
4
|
-
export interface StoreOptions<T extends StoreValue> {
|
|
5
|
-
moduleName: string;
|
|
6
|
-
key?: string;
|
|
7
|
-
version: StoreVersion;
|
|
8
|
-
initializer: StoreInitializer<T>;
|
|
9
|
-
}
|
package/dist/util.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createStore } from './createStore';
|
|
2
|
-
import { StoreInitializer, StoreValue, StoreVersion } from './types';
|
|
3
|
-
import { StoreCreator, StoreId, Stores } from './typesInternal';
|
|
4
|
-
export declare function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T;
|
|
5
|
-
export declare function initStoreValue<T extends StoreValue>(stores: Stores, id: StoreId, version: StoreVersion, initializer: StoreInitializer<T>): void;
|
|
6
|
-
export declare function resetStoreValue(stores: Stores, id: StoreId): void;
|
|
7
|
-
export declare function getStore(stores: Stores, id: StoreId): {
|
|
8
|
-
versions: StoreVersion[];
|
|
9
|
-
initializers: StoreInitializer<StoreValue>[];
|
|
10
|
-
value: StoreValue;
|
|
11
|
-
};
|
|
12
|
-
export declare function resolveCreators(moduleName: string, key: string, storeCreators: Array<StoreCreator<any>>, cs: typeof createStore): void;
|
|
13
|
-
export declare function sortByVersion<S>(storeCreators: Array<StoreCreator<S>>): StoreCreator<S>[];
|
|
14
|
-
export declare function freezeStoreValue(stores: Stores, id: StoreId, value?: StoreValue): void;
|
package/libm/compareVersion.d.ts
DELETED
package/libm/compareVersion.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { toVersionArray } from './toVersionArray';
|
|
2
|
-
/**
|
|
3
|
-
* Compare version.
|
|
4
|
-
* Positive when processed > current
|
|
5
|
-
* Negative when processed < current
|
|
6
|
-
*/
|
|
7
|
-
export function compareVersion(processed, current) {
|
|
8
|
-
const v1 = toVersionArray(processed);
|
|
9
|
-
const v2 = toVersionArray(current);
|
|
10
|
-
return v1[0] !== v2[0] ? v1[0] - v2[0] :
|
|
11
|
-
v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2];
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=compareVersion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compareVersion.js","sourceRoot":"","sources":["../ts/compareVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAuB,EAAE,OAAqB;IAC3E,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAClC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Store } from './createStore';
|
|
2
|
-
import { StoreOptions, StoreValue } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Creates a store of type T asynchronously.
|
|
5
|
-
* @see https://github.com/unional/global-store#createAsyncStore
|
|
6
|
-
*/
|
|
7
|
-
export declare function createAsyncStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Promise<Store<T>>;
|
|
8
|
-
/**
|
|
9
|
-
* Initializes the stores for `createAsyncStore()`.
|
|
10
|
-
* @see https://github.com/unional/global-store#initializeAsyncStore
|
|
11
|
-
*/
|
|
12
|
-
export declare function initializeAsyncStore(moduleName: string, key?: string): void;
|
package/libm/createAsyncStore.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createStore } from './createStore';
|
|
2
|
-
import { resolveCreators } from './util';
|
|
3
|
-
const asyncStoreCreators = Object.create(null);
|
|
4
|
-
/**
|
|
5
|
-
* Creates a store of type T asynchronously.
|
|
6
|
-
* @see https://github.com/unional/global-store#createAsyncStore
|
|
7
|
-
*/
|
|
8
|
-
export async function createAsyncStore({ moduleName, key, version, initializer }) {
|
|
9
|
-
return new Promise(resolve => {
|
|
10
|
-
const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
|
|
11
|
-
const k = key ?? 'default';
|
|
12
|
-
const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
|
|
13
|
-
storeCreators.push({ version, resolve, initializer });
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Initializes the stores for `createAsyncStore()`.
|
|
18
|
-
* @see https://github.com/unional/global-store#initializeAsyncStore
|
|
19
|
-
*/
|
|
20
|
-
export function initializeAsyncStore(moduleName, key) {
|
|
21
|
-
const creatorsOfModules = asyncStoreCreators[moduleName];
|
|
22
|
-
if (!creatorsOfModules)
|
|
23
|
-
return;
|
|
24
|
-
const keys = key ? [key] : Object.keys(creatorsOfModules);
|
|
25
|
-
keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore));
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=createAsyncStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createAsyncStore.js","sourceRoot":"","sources":["../ts/createAsyncStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,eAAe,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA8B,CAAA;AAE3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAuB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAmB;IACrH,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChH,MAAM,CAAC,GAAG,GAAG,IAAI,SAAS,CAAA;QAC1B,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,GAAY;IACnE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACxD,IAAI,CAAC,iBAAiB;QAAE,OAAM;IAE9B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;AAC5F,CAAC"}
|
package/libm/createStore.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { StoreOptions, StoreValue } from './types';
|
|
2
|
-
export declare type Store<T extends StoreValue> = {
|
|
3
|
-
/**
|
|
4
|
-
* The store value.
|
|
5
|
-
*/
|
|
6
|
-
readonly value: T;
|
|
7
|
-
/**
|
|
8
|
-
* Freezes the store value.
|
|
9
|
-
* @param value Optional new store value.
|
|
10
|
-
* If supplied, this value will be freezed and used as the store value.
|
|
11
|
-
* You can use this update the store value and freeze part of it.
|
|
12
|
-
* If not supplied,
|
|
13
|
-
* the original value will be freezed and its array property will also be freezed.
|
|
14
|
-
*/
|
|
15
|
-
freeze(value?: {
|
|
16
|
-
[k in keyof T]: Readonly<T[k]>;
|
|
17
|
-
}): void;
|
|
18
|
-
/**
|
|
19
|
-
* Resets the store to its initial value.
|
|
20
|
-
* You should only use this during testing.
|
|
21
|
-
*/
|
|
22
|
-
reset(): void;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Creates a store of type T.
|
|
26
|
-
* @see https://www.npmjs.com/package/global-store
|
|
27
|
-
*/
|
|
28
|
-
export declare function createStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Store<T>;
|
package/libm/createStore.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { freezeStoreValue, getStoreValue, initStoreValue, resetStoreValue } from './util';
|
|
2
|
-
const stores = Object.create(null);
|
|
3
|
-
/**
|
|
4
|
-
* Creates a store of type T.
|
|
5
|
-
* @see https://www.npmjs.com/package/global-store
|
|
6
|
-
*/
|
|
7
|
-
export function createStore({ moduleName, key, version, initializer }) {
|
|
8
|
-
const id = { moduleName, key };
|
|
9
|
-
initStoreValue(stores, id, version, initializer);
|
|
10
|
-
return {
|
|
11
|
-
get value() { return getStoreValue(stores, id); },
|
|
12
|
-
freeze(value) { return freezeStoreValue(stores, id, value); },
|
|
13
|
-
reset() { return resetStoreValue(stores, id); }
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=createStore.js.map
|
package/libm/createStore.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../ts/createStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAuBzF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAW,CAAA;AAE5C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAEzB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAmB;IAC1D,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAC9B,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAEhD,OAAO;QACL,IAAI,KAAK,KAAK,OAAO,aAAa,CAAI,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC;QAC5D,KAAK,KAAK,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;KAC/C,CAAA;AACH,CAAC"}
|
package/libm/index.d.ts
DELETED
package/libm/index.js
DELETED
package/libm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,eAAe,CAAA;AACtD,cAAc,SAAS,CAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { toVersionArray } from './toVersionArray';
|
|
2
|
-
export function shouldInvokeInitializer(versions, version) {
|
|
3
|
-
const vs = versions.map(toVersionArray);
|
|
4
|
-
const v = toVersionArray(version);
|
|
5
|
-
return noMatchMajor(vs, v) || hasNewVersion(vs, v);
|
|
6
|
-
}
|
|
7
|
-
function noMatchMajor(versions, version) {
|
|
8
|
-
return !versions.some(v => v[0] === version[0]);
|
|
9
|
-
}
|
|
10
|
-
function hasNewVersion(versions, version) {
|
|
11
|
-
return versions.filter(v => v[0] === version[0])
|
|
12
|
-
.some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=shouldInvokeInitializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shouldInvokeInitializer.js","sourceRoot":"","sources":["../ts/shouldInvokeInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGhE,MAAM,UAAU,uBAAuB,CAAC,QAAwB,EAAE,OAAqB;IACrF,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,QAAyB,EAAE,OAAsB;IACrE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB,EAAE,OAAsB;IACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;SAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/E,CAAC"}
|
package/libm/toVersionArray.d.ts
DELETED
package/libm/toVersionArray.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toVersionArray.js","sourceRoot":"","sources":["../ts/toVersionArray.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,cAAc,CAAC,CAAe;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAkB,CAAA;AAC3D,CAAC"}
|
package/libm/types.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare type StoreValue = Record<string | symbol, unknown>;
|
|
2
|
-
export declare type StoreVersion = `${number}.${number}.${number}` | number;
|
|
3
|
-
export declare type StoreInitializer<T extends StoreValue> = (current: StoreValue, processedVersions: StoreVersion[]) => T;
|
|
4
|
-
export interface StoreOptions<T extends StoreValue> {
|
|
5
|
-
moduleName: string;
|
|
6
|
-
key?: string;
|
|
7
|
-
version: StoreVersion;
|
|
8
|
-
initializer: StoreInitializer<T>;
|
|
9
|
-
}
|
package/libm/types.js
DELETED
package/libm/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":""}
|
package/libm/typesInternal.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { StoreInitializer, StoreVersion, StoreValue } from './types';
|
|
2
|
-
export interface StoreId {
|
|
3
|
-
moduleName: string;
|
|
4
|
-
key?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare type Stores = Record<StoreId['moduleName'], Record<string, {
|
|
7
|
-
versions: StoreVersion[];
|
|
8
|
-
initializers: StoreInitializer<StoreValue>[];
|
|
9
|
-
value: StoreValue;
|
|
10
|
-
}>>;
|
|
11
|
-
export interface StoreCreator<S> {
|
|
12
|
-
version: StoreVersion;
|
|
13
|
-
resolve: (store: S) => void;
|
|
14
|
-
initializer: StoreInitializer<StoreValue>;
|
|
15
|
-
}
|
|
16
|
-
export declare type StoreCreators<Store> = Record<StoreId['moduleName'], Record<string, Array<StoreCreator<Store>>>>;
|
package/libm/typesInternal.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typesInternal.js","sourceRoot":"","sources":["../ts/typesInternal.ts"],"names":[],"mappings":""}
|
package/libm/util.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createStore } from './createStore';
|
|
2
|
-
import { StoreInitializer, StoreValue, StoreVersion } from './types';
|
|
3
|
-
import { StoreCreator, StoreId, Stores } from './typesInternal';
|
|
4
|
-
export declare function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T;
|
|
5
|
-
export declare function initStoreValue<T extends StoreValue>(stores: Stores, id: StoreId, version: StoreVersion, initializer: StoreInitializer<T>): void;
|
|
6
|
-
export declare function resetStoreValue(stores: Stores, id: StoreId): void;
|
|
7
|
-
export declare function getStore(stores: Stores, id: StoreId): {
|
|
8
|
-
versions: StoreVersion[];
|
|
9
|
-
initializers: StoreInitializer<StoreValue>[];
|
|
10
|
-
value: StoreValue;
|
|
11
|
-
};
|
|
12
|
-
export declare function resolveCreators(moduleName: string, key: string, storeCreators: Array<StoreCreator<any>>, cs: typeof createStore): void;
|
|
13
|
-
export declare function sortByVersion<S>(storeCreators: Array<StoreCreator<S>>): StoreCreator<S>[];
|
|
14
|
-
export declare function freezeStoreValue(stores: Stores, id: StoreId, value?: StoreValue): void;
|
package/libm/util.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { compareVersion } from './compareVersion';
|
|
2
|
-
import { shouldInvokeInitializer } from './shouldInvokeInitializer';
|
|
3
|
-
export function getStoreValue(stores, id) {
|
|
4
|
-
return getStore(stores, id).value;
|
|
5
|
-
}
|
|
6
|
-
export function initStoreValue(stores, id, version, initializer) {
|
|
7
|
-
const store = getStore(stores, id);
|
|
8
|
-
if (shouldInvokeInitializer(store.versions, version)) {
|
|
9
|
-
store.initializers.push(initializer);
|
|
10
|
-
store.value = initializer(store.value, store.versions);
|
|
11
|
-
store.versions.push(version);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export function resetStoreValue(stores, id) {
|
|
15
|
-
const store = getStore(stores, id);
|
|
16
|
-
const versions = store.versions;
|
|
17
|
-
store.versions = [];
|
|
18
|
-
store.value = store.initializers.reduce((value, initializer, i) => {
|
|
19
|
-
value = initializer(value, store.versions);
|
|
20
|
-
store.versions.push(versions[i]);
|
|
21
|
-
return value;
|
|
22
|
-
}, {});
|
|
23
|
-
}
|
|
24
|
-
export function getStore(stores, id) {
|
|
25
|
-
const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
|
|
26
|
-
const key = id.key ?? 'default';
|
|
27
|
-
return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
|
|
28
|
-
}
|
|
29
|
-
export function resolveCreators(moduleName, key, storeCreators, cs) {
|
|
30
|
-
sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })));
|
|
31
|
-
}
|
|
32
|
-
export function sortByVersion(storeCreators) {
|
|
33
|
-
return storeCreators.sort((a, b) => compareVersion(a.version, b.version));
|
|
34
|
-
}
|
|
35
|
-
export function freezeStoreValue(stores, id, value) {
|
|
36
|
-
const store = getStore(stores, id);
|
|
37
|
-
store.value = value ?
|
|
38
|
-
Object.isFrozen(value) ? value : Object.freeze(value) :
|
|
39
|
-
freezeValue(store.value);
|
|
40
|
-
}
|
|
41
|
-
function freezeValue(storeValue) {
|
|
42
|
-
if (Object.isFrozen(storeValue))
|
|
43
|
-
throw TypeError('Frozen value cannot be freezed again');
|
|
44
|
-
Object.keys(storeValue).forEach(k => freezeIfIsArray(storeValue, k));
|
|
45
|
-
// istanbul ignore next
|
|
46
|
-
if (Object.getOwnPropertySymbols) {
|
|
47
|
-
Object.getOwnPropertySymbols(storeValue).forEach(k => freezeIfIsArray(storeValue, k));
|
|
48
|
-
}
|
|
49
|
-
return Object.freeze(storeValue);
|
|
50
|
-
}
|
|
51
|
-
function freezeIfIsArray(storeValue, k) {
|
|
52
|
-
const value = storeValue[k];
|
|
53
|
-
if (Array.isArray(value)) {
|
|
54
|
-
storeValue[k] = Object.freeze(value);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=util.js.map
|
package/libm/util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../ts/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { compareVersion } from './compareVersion'
|
|
2
|
-
|
|
3
|
-
test('processed > current returns positive', () => {
|
|
4
|
-
expect(compareVersion('1.0.0', '0.2.3') > 0).toBeTruthy()
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
test('processed < current returns negative', () => {
|
|
8
|
-
expect(compareVersion('1.0.0', '1.2.3') < 0).toBeTruthy()
|
|
9
|
-
})
|
package/ts/compareVersion.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { toVersionArray } from './toVersionArray'
|
|
2
|
-
import { StoreVersion } from './types'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Compare version.
|
|
6
|
-
* Positive when processed > current
|
|
7
|
-
* Negative when processed < current
|
|
8
|
-
*/
|
|
9
|
-
export function compareVersion(processed: StoreVersion, current: StoreVersion) {
|
|
10
|
-
const v1 = toVersionArray(processed)
|
|
11
|
-
const v2 = toVersionArray(current)
|
|
12
|
-
return v1[0] !== v2[0] ? v1[0] - v2[0] :
|
|
13
|
-
v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2]
|
|
14
|
-
}
|