global-store 1.0.0-beta.19 → 1.0.0-beta.21

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.
Files changed (61) hide show
  1. package/README.md +17 -32
  2. package/dist/global-store.es.js +4 -4
  3. package/dist/global-store.es.js.map +1 -1
  4. package/dist/global-store.es5.js +1 -1
  5. package/dist/global-store.es5.js.map +1 -1
  6. package/dist/global-store.systemjs.js +4 -4
  7. package/dist/global-store.systemjs.js.map +1 -1
  8. package/dist/types.d.ts +2 -2
  9. package/dist/util.d.ts +1 -1
  10. package/lib/compareVersion.d.ts +7 -0
  11. package/lib/compareVersion.js.map +1 -1
  12. package/lib/createAsyncStore.d.ts +12 -0
  13. package/lib/createAsyncStore.js +2 -2
  14. package/lib/createAsyncStore.js.map +1 -1
  15. package/lib/createStore.d.ts +28 -0
  16. package/lib/createStore.js +1 -1
  17. package/lib/createStore.js.map +1 -1
  18. package/lib/index.d.ts +4 -0
  19. package/lib/index.js +5 -1
  20. package/lib/index.js.map +1 -1
  21. package/lib/shouldInvokeInitializer.d.ts +2 -0
  22. package/lib/shouldInvokeInitializer.js.map +1 -1
  23. package/lib/toVersionArray.d.ts +3 -0
  24. package/lib/toVersionArray.js.map +1 -1
  25. package/lib/types.d.ts +9 -0
  26. package/lib/types.js.map +1 -1
  27. package/lib/typesInternal.d.ts +16 -0
  28. package/lib/typesInternal.js.map +1 -1
  29. package/lib/util.d.ts +14 -0
  30. package/lib/util.js +1 -1
  31. package/lib/util.js.map +1 -1
  32. package/libm/compareVersion.js.map +1 -1
  33. package/libm/createAsyncStore.js +2 -2
  34. package/libm/createAsyncStore.js.map +1 -1
  35. package/libm/createStore.js +1 -1
  36. package/libm/createStore.js.map +1 -1
  37. package/libm/index.js.map +1 -1
  38. package/libm/shouldInvokeInitializer.js.map +1 -1
  39. package/libm/toVersionArray.js.map +1 -1
  40. package/libm/types.d.ts +2 -2
  41. package/libm/types.js.map +1 -1
  42. package/libm/typesInternal.d.ts +4 -4
  43. package/libm/typesInternal.js.map +1 -1
  44. package/libm/util.d.ts +1 -1
  45. package/libm/util.js +1 -1
  46. package/libm/util.js.map +1 -1
  47. package/package.json +46 -42
  48. package/{src → ts}/compareVersion.spec.ts +0 -0
  49. package/{src → ts}/compareVersion.ts +0 -0
  50. package/{src → ts}/createAsyncStore.spec.ts +1 -1
  51. package/{src → ts}/createAsyncStore.ts +2 -2
  52. package/{src → ts}/createStore.spec.ts +0 -0
  53. package/{src → ts}/createStore.ts +1 -1
  54. package/{src → ts}/index.spec.ts +0 -0
  55. package/{src → ts}/index.ts +0 -0
  56. package/{src → ts}/shouldInvokeInitializer.spec.ts +0 -0
  57. package/{src → ts}/shouldInvokeInitializer.ts +0 -0
  58. package/{src → ts}/toVersionArray.ts +0 -0
  59. package/{src → ts}/types.ts +1 -1
  60. package/{src → ts}/typesInternal.ts +2 -2
  61. package/{src → ts}/util.ts +2 -2
package/README.md CHANGED
@@ -1,19 +1,13 @@
1
1
  # global-store
2
2
 
3
3
  [![NPM version][npm-image]][npm-url]
4
- [![NPM beta version][npm-beta-image]][npm-url]
5
4
  [![NPM downloads][downloads-image]][downloads-url]
6
5
  ![badge-size-es5-url]
7
- ![badge-size-esnext-url]
8
6
 
9
- [![Circle CI][circleci-image]][circleci-url]
10
- [![Travis CI][travis-image]][travis-url]
7
+ [![GitHub NodeJS][github-nodejs]][github-action-url]
11
8
  [![Codecov][codecov-image]][codecov-url]
12
- [![Coveralls Status][coveralls-image]][coveralls-url]
13
9
 
14
- [![Greenkeeper][greenkeeper-image]][greenkeeper-url]
15
10
  [![Visual Studio Code][vscode-image]][vscode-url]
16
- [![Wallaby.js][wallaby-image]][wallaby-url]
17
11
 
18
12
  [global-store] provides version stable stores for libraries.
19
13
 
@@ -26,15 +20,16 @@ For the current stable version, please check out [here](https://github.com/union
26
20
 
27
21
  ## Who needs this
28
22
 
29
- - library can be used by other libraries, and
30
- - library with state, and/or
31
- - library wants to protect its state from modification.
23
+ - A library used by other libraries, and
24
+ - A library with state, and/or
25
+ - A library wants to protect its state from modification.
32
26
 
33
27
  ## Why do you need this
34
28
 
35
29
  If you use a file-level variable to store some states,
36
30
  and your library can be used by other libraries,
37
- the state it stores could scatter around the memory and you will get inconsistent results.
31
+ the state it stores could scatter around the memory,
32
+ and you will get inconsistent results.
38
33
 
39
34
  For example, you have this:
40
35
 
@@ -113,7 +108,7 @@ Type: `string`
113
108
 
114
109
  Name of your module.
115
110
 
116
- This is typically your npm package name.
111
+ This is typically your NPM package name.
117
112
  This will be shown if something goes wrong.
118
113
 
119
114
  #### StoreOptions#key
@@ -130,11 +125,11 @@ For example, you can use a format like this to make it unique: `<some-purpose>:<
130
125
 
131
126
  e.g. `config:d15427a4-75cf-4999-9065-1dc325839a59`
132
127
 
133
- `key` + `moduleName` forms a unique id to the store.
128
+ `key` + `moduleName` forms a unique ID to the store.
134
129
 
135
130
  `key` will not be shown if something goes wrong.
136
131
 
137
- If `key` is not specified, it is defaults to the string `default`.
132
+ If `key` is not specified, it defaults to the string `default`.
138
133
 
139
134
  #### StoreOptions#version
140
135
 
@@ -186,7 +181,7 @@ Type: `Record<string | symbol, any>`
186
181
 
187
182
  The type of value stored in the stores.
188
183
 
189
- Note that the key must be string or `Symbol.for()` because `Symbol()` cannot be shared across versions.
184
+ Note that the key must be a string or `Symbol.for()` because `Symbol()` cannot be shared across versions.
190
185
 
191
186
  #### Store#value
192
187
 
@@ -205,11 +200,11 @@ store.value.x = 2
205
200
 
206
201
  Reset the store to its initial value.
207
202
 
208
- This is mostly used in tests so that the tests would not interfere each other.
203
+ This is mostly used in tests so that the tests would not interfere with each other.
209
204
 
210
205
  ### createAsyncStore()
211
206
 
212
- An async variant of [`createStore()`](#createStore).
207
+ A `async` variant of [`createStore()`](#createStore).
213
208
  It will return a promise,
214
209
  which will resolve when the [`initializeAsyncStore()`](#initializeAsyncStore) is called.
215
210
 
@@ -230,33 +225,23 @@ It takes two arguments:
230
225
  ## Bundling
231
226
 
232
227
  If your library will be a standalone bundle, make sure to exclude [global-store].
233
- If not, there will be multiple copies of [global-store] loaded and will completely defeat the purpose.
234
228
 
235
- You also should mark [global-store] as a peer dependency and tell people who use your library to include [global-store] as their dependency.
229
+ If not, there will be multiple copies of [global-store] loaded and will completely defeat the purpose.
236
230
 
237
- Any application that eventually uses your library should do the same, install [global-store] as their dependency.
231
+ Except the consuming application, which will declare [global-store] as a regular dependency,
232
+ all libraries should declare [global-store] as a peer dependency.
238
233
 
239
234
  [badge-size-es5-url]: http://img.badgesize.io/unional/global-store/master/dist/global-store.es5.js.svg?label=es5_size&compression=gzip
240
- [badge-size-esnext-url]: http://img.badgesize.io/unional/global-store/master/dist/global-store.es.js.svg?label=esnext_size&compression=gzip
241
- [circleci-image]: https://circleci.com/gh/unional/global-store/tree/master.svg?style=shield
242
- [circleci-url]: https://circleci.com/gh/unional/global-store/tree/master
243
235
  [codecov-image]: https://codecov.io/gh/unional/global-store/branch/master/graph/badge.svg
244
236
  [codecov-url]: https://codecov.io/gh/unional/global-store
245
- [coveralls-image]: https://coveralls.io/repos/github/unional/global-store/badge.svg
246
- [coveralls-url]: https://coveralls.io/github/unional/global-store
247
237
  [downloads-image]: https://img.shields.io/npm/dm/global-store.svg?style=flat
248
238
  [downloads-url]: https://npmjs.org/package/global-store
239
+ [github-nodejs]: https://github.com/unional/global-store/workflows/release/badge.svg
240
+ [github-action-url]: https://github.com/unional/global-store/actions
249
241
  [global-store]: https://github.com/unional/global-store
250
- [greenkeeper-image]: https://badges.greenkeeper.io/unional/global-store.svg
251
- [greenkeeper-url]: https://greenkeeper.io/
252
- [npm-beta-image]: https://img.shields.io/npm/v/global-store/beta.svg?style=flat
253
242
  [npm-image]: https://img.shields.io/npm/v/global-store.svg?style=flat
254
243
  [npm-url]: https://npmjs.org/package/global-store
255
244
  [downloads-image]: https://img.shields.io/npm/dm/global-store.svg?style=flat
256
245
  [downloads-url]: https://npmjs.org/package/global-store
257
- [travis-image]: https://img.shields.io/travis/unional/global-store/master.svg?style=flat
258
- [travis-url]: https://travis-ci.org/unional/global-store?branch=master
259
246
  [vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg
260
247
  [vscode-url]: https://code.visualstudio.com/
261
- [wallaby-image]: https://img.shields.io/badge/wallaby.js-configured-green.svg
262
- [wallaby-url]: https://wallabyjs.com
@@ -50,7 +50,7 @@ function resetStoreValue(stores, id) {
50
50
  }, {});
51
51
  }
52
52
  function getStore(stores, id) {
53
- const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
53
+ const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
54
54
  const key = id.key ?? 'default';
55
55
  return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
56
56
  }
@@ -83,7 +83,7 @@ function freezeIfIsArray(storeValue, k) {
83
83
  }
84
84
  }
85
85
 
86
- const stores = {};
86
+ const stores = Object.create(null);
87
87
  /**
88
88
  * Creates a store of type T.
89
89
  * @see https://www.npmjs.com/package/global-store
@@ -98,14 +98,14 @@ function createStore({ moduleName, key, version, initializer }) {
98
98
  };
99
99
  }
100
100
 
101
- const asyncStoreCreators = {};
101
+ const asyncStoreCreators = Object.create(null);
102
102
  /**
103
103
  * Creates a store of type T asynchronously.
104
104
  * @see https://github.com/unional/global-store#createAsyncStore
105
105
  */
106
106
  async function createAsyncStore({ moduleName, key, version, initializer }) {
107
107
  return new Promise(resolve => {
108
- const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
108
+ const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
109
109
  const k = key ?? 'default';
110
110
  const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
111
111
  storeCreators.push({ version, resolve, initializer });
@@ -1 +1 @@
1
- {"version":3,"file":"global-store.es.js","sources":["../src/toVersionArray.ts","../src/compareVersion.ts","../src/shouldInvokeInitializer.ts","../src/util.ts","../src/createStore.ts","../src/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 createStore from '.'\nimport { compareVersion } from './compareVersion'\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] || {}\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: 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: 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] || {}\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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"}
1
+ {"version":3,"file":"global-store.es.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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"}
@@ -1,2 +1,2 @@
1
- var GlobalStore;(()=>{"use strict";var e={347:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.compareVersion=void 0;var n=t(777);r.compareVersion=function(e,r){var t=(0,n.toVersionArray)(e),o=(0,n.toVersionArray)(r);return t[0]!==o[0]?t[0]-o[0]:t[1]!==o[1]?t[1]-o[1]:t[2]-o[2]}},91:function(e,r,t){var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(o,i){function u(e){try{l(n.next(e))}catch(e){i(e)}}function a(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(u,a)}l((n=n.apply(e,r||[])).next())}))},o=this&&this.__generator||function(e,r){var t,n,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;u;)try{if(t=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,n=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!((o=(o=u.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=r.call(e,u)}catch(e){i=[6,e],n=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.initializeAsyncStore=r.createAsyncStore=void 0;var i=t(648),u=t(570),a={};r.createAsyncStore=function(e){var r=e.moduleName,t=e.key,i=e.version,u=e.initializer;return n(this,void 0,Promise,(function(){return o(this,(function(e){return[2,new Promise((function(e){var n=a[r]=a[r]||{},o=null!=t?t:"default";(n[o]=n[o]||[]).push({version:i,resolve:e,initializer:u})}))]}))}))},r.initializeAsyncStore=function(e,r){var t=a[e];t&&(r?[r]:Object.keys(t)).forEach((function(r){return(0,u.resolveCreators)(e,r,t[r],i.createStore)}))}},648:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.createStore=void 0;var n=t(570),o={};r.createStore=function(e){var r=e.moduleName,t=e.key,i=e.version,u=e.initializer,a={moduleName:r,key:t};return(0,n.initStoreValue)(o,a,i,u),{get value(){return(0,n.getStoreValue)(o,a)},freeze:function(e){return(0,n.freezeStoreValue)(o,a,e)},reset:function(){return(0,n.resetStoreValue)(o,a)}}}},341:function(e,r,t){var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),o=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,o(t(91),r),o(t(648),r);var i=t(648);Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i.createStore}}),o(t(683),r)},74:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.shouldInvokeInitializer=void 0;var n=t(777);r.shouldInvokeInitializer=function(e,r){var t=e.map(n.toVersionArray),o=(0,n.toVersionArray)(r);return function(e,r){return!e.some((function(e){return e[0]===r[0]}))}(t,o)||function(e,r){return e.filter((function(e){return e[0]===r[0]})).some((function(e){return r[1]>e[1]||r[1]===e[1]&&r[2]>e[2]}))}(t,o)}},777:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.toVersionArray=void 0,r.toVersionArray=function(e){return"number"==typeof e?[0,0,e]:e.split(".").map((function(e){return parseInt(e,10)}))}},683:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0})},570:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.freezeStoreValue=r.sortByVersion=r.resolveCreators=r.getStore=r.resetStoreValue=r.initStoreValue=r.getStoreValue=void 0;var n=t(347),o=t(74);function i(e,r){var t,n=e[r.moduleName]=e[r.moduleName]||{},o=null!==(t=r.key)&&void 0!==t?t:"default";return n[o]=n[o]||{versions:[],value:{},initializers:[]}}function u(e){return e.sort((function(e,r){return(0,n.compareVersion)(e.version,r.version)}))}function a(e,r){var t=e[r];Array.isArray(t)&&(e[r]=Object.freeze(t))}r.getStoreValue=function(e,r){return i(e,r).value},r.initStoreValue=function(e,r,t,n){var u=i(e,r);(0,o.shouldInvokeInitializer)(u.versions,t)&&(u.initializers.push(n),u.value=n(u.value,u.versions),u.versions.push(t))},r.resetStoreValue=function(e,r){var t=i(e,r),n=t.versions;t.versions=[],t.value=t.initializers.reduce((function(e,r,o){return e=r(e,t.versions),t.versions.push(n[o]),e}),{})},r.getStore=i,r.resolveCreators=function(e,r,t,n){u(t).forEach((function(t){var o=t.version,i=t.resolve,u=t.initializer;return i(n({moduleName:e,key:r,version:o,initializer:u}))}))},r.sortByVersion=u,r.freezeStoreValue=function(e,r,t){var n=i(e,r);n.value=t?Object.isFrozen(t)?t:Object.freeze(t):function(e){if(Object.isFrozen(e))throw TypeError("Frozen value cannot be freezed again");return Object.keys(e).forEach((function(r){return a(e,r)})),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach((function(r){return a(e,r)})),Object.freeze(e)}(n.value)}}},r={},t=function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n].call(i.exports,i,i.exports,t),i.exports}(341);GlobalStore=t})();
1
+ var GlobalStore;(()=>{"use strict";var e={629:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.compareVersion=void 0;var n=t(487);r.compareVersion=function(e,r){var t=(0,n.toVersionArray)(e),o=(0,n.toVersionArray)(r);return t[0]!==o[0]?t[0]-o[0]:t[1]!==o[1]?t[1]-o[1]:t[2]-o[2]}},490:function(e,r,t){var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(o,i){function u(e){try{l(n.next(e))}catch(e){i(e)}}function a(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(u,a)}l((n=n.apply(e,r||[])).next())}))},o=this&&this.__generator||function(e,r){var t,n,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;u;)try{if(t=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,n=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!((o=(o=u.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=r.call(e,u)}catch(e){i=[6,e],n=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}};Object.defineProperty(r,"__esModule",{value:!0}),r.initializeAsyncStore=r.createAsyncStore=void 0;var i=t(817),u=t(128),a=Object.create(null);r.createAsyncStore=function(e){var r=e.moduleName,t=e.key,i=e.version,u=e.initializer;return n(this,void 0,Promise,(function(){return o(this,(function(e){return[2,new Promise((function(e){var n=a[r]=a[r]||Object.create(null),o=null!=t?t:"default";(n[o]=n[o]||[]).push({version:i,resolve:e,initializer:u})}))]}))}))},r.initializeAsyncStore=function(e,r){var t=a[e];t&&(r?[r]:Object.keys(t)).forEach((function(r){return(0,u.resolveCreators)(e,r,t[r],i.createStore)}))}},817:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.createStore=void 0;var n=t(128),o=Object.create(null);r.createStore=function(e){var r=e.moduleName,t=e.key,i=e.version,u=e.initializer,a={moduleName:r,key:t};return(0,n.initStoreValue)(o,a,i,u),{get value(){return(0,n.getStoreValue)(o,a)},freeze:function(e){return(0,n.freezeStoreValue)(o,a,e)},reset:function(){return(0,n.resetStoreValue)(o,a)}}}},733:function(e,r,t){var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),o=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,o(t(490),r),o(t(817),r);var i=t(817);Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i.createStore}}),o(t(171),r)},420:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.shouldInvokeInitializer=void 0;var n=t(487);r.shouldInvokeInitializer=function(e,r){var t=e.map(n.toVersionArray),o=(0,n.toVersionArray)(r);return function(e,r){return!e.some((function(e){return e[0]===r[0]}))}(t,o)||function(e,r){return e.filter((function(e){return e[0]===r[0]})).some((function(e){return r[1]>e[1]||r[1]===e[1]&&r[2]>e[2]}))}(t,o)}},487:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.toVersionArray=void 0,r.toVersionArray=function(e){return"number"==typeof e?[0,0,e]:e.split(".").map((function(e){return parseInt(e,10)}))}},171:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0})},128:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.freezeStoreValue=r.sortByVersion=r.resolveCreators=r.getStore=r.resetStoreValue=r.initStoreValue=r.getStoreValue=void 0;var n=t(629),o=t(420);function i(e,r){var t,n=e[r.moduleName]=e[r.moduleName]||Object.create(null),o=null!==(t=r.key)&&void 0!==t?t:"default";return n[o]=n[o]||{versions:[],value:{},initializers:[]}}function u(e){return e.sort((function(e,r){return(0,n.compareVersion)(e.version,r.version)}))}function a(e,r){var t=e[r];Array.isArray(t)&&(e[r]=Object.freeze(t))}r.getStoreValue=function(e,r){return i(e,r).value},r.initStoreValue=function(e,r,t,n){var u=i(e,r);(0,o.shouldInvokeInitializer)(u.versions,t)&&(u.initializers.push(n),u.value=n(u.value,u.versions),u.versions.push(t))},r.resetStoreValue=function(e,r){var t=i(e,r),n=t.versions;t.versions=[],t.value=t.initializers.reduce((function(e,r,o){return e=r(e,t.versions),t.versions.push(n[o]),e}),{})},r.getStore=i,r.resolveCreators=function(e,r,t,n){u(t).forEach((function(t){var o=t.version,i=t.resolve,u=t.initializer;return i(n({moduleName:e,key:r,version:o,initializer:u}))}))},r.sortByVersion=u,r.freezeStoreValue=function(e,r,t){var n=i(e,r);n.value=t?Object.isFrozen(t)?t:Object.freeze(t):function(e){if(Object.isFrozen(e))throw TypeError("Frozen value cannot be freezed again");return Object.keys(e).forEach((function(r){return a(e,r)})),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach((function(r){return a(e,r)})),Object.freeze(e)}(n.value)}}},r={},t=function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n].call(i.exports,i,i.exports,t),i.exports}(733);GlobalStore=t})();
2
2
  //# sourceMappingURL=global-store.es5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-store.es5.js","mappings":"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","sources":["webpack://GlobalStore/./src/compareVersion.ts","webpack://GlobalStore/./src/createAsyncStore.ts","webpack://GlobalStore/./src/createStore.ts","webpack://GlobalStore/./src/index.ts","webpack://GlobalStore/./src/shouldInvokeInitializer.ts","webpack://GlobalStore/./src/toVersionArray.ts","webpack://GlobalStore/./src/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: 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] || {}\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: 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 createStore from '.'\nimport { compareVersion } from './compareVersion'\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] || {}\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__(341);\n"],"names":["processed","current","v1","toVersionArray","v2","asyncStoreCreators","moduleName","key","version","initializer","Promise","resolve","creatorsOfModules","k","push","Object","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
+ {"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":""}
@@ -62,7 +62,7 @@ System.register([], (function (exports) {
62
62
  }, {});
63
63
  }
64
64
  function getStore(stores, id) {
65
- const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
65
+ const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
66
66
  const key = id.key ?? 'default';
67
67
  return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
68
68
  }
@@ -95,7 +95,7 @@ System.register([], (function (exports) {
95
95
  }
96
96
  }
97
97
 
98
- const stores = {};
98
+ const stores = Object.create(null);
99
99
  /**
100
100
  * Creates a store of type T.
101
101
  * @see https://www.npmjs.com/package/global-store
@@ -110,14 +110,14 @@ System.register([], (function (exports) {
110
110
  };
111
111
  }
112
112
 
113
- const asyncStoreCreators = {};
113
+ const asyncStoreCreators = Object.create(null);
114
114
  /**
115
115
  * Creates a store of type T asynchronously.
116
116
  * @see https://github.com/unional/global-store#createAsyncStore
117
117
  */
118
118
  async function createAsyncStore({ moduleName, key, version, initializer }) {
119
119
  return new Promise(resolve => {
120
- const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
120
+ const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
121
121
  const k = key ?? 'default';
122
122
  const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
123
123
  storeCreators.push({ version, resolve, initializer });
@@ -1 +1 @@
1
- {"version":3,"file":"global-store.systemjs.js","sources":["../src/toVersionArray.ts","../src/compareVersion.ts","../src/shouldInvokeInitializer.ts","../src/util.ts","../src/createStore.ts","../src/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 createStore from '.'\nimport { compareVersion } from './compareVersion'\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] || {}\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: 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: 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] || {}\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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"}
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/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export declare type StoreValue = Record<string | symbol, unknown>;
2
2
  export declare type StoreVersion = `${number}.${number}.${number}` | number;
3
3
  export declare type StoreInitializer<T extends StoreValue> = (current: StoreValue, processedVersions: StoreVersion[]) => T;
4
- export declare type StoreOptions<T extends StoreValue> = {
4
+ export interface StoreOptions<T extends StoreValue> {
5
5
  moduleName: string;
6
6
  key?: string;
7
7
  version: StoreVersion;
8
8
  initializer: StoreInitializer<T>;
9
- };
9
+ }
package/dist/util.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import createStore from '.';
1
+ import { createStore } from './createStore';
2
2
  import { StoreInitializer, StoreValue, StoreVersion } from './types';
3
3
  import { StoreCreator, StoreId, Stores } from './typesInternal';
4
4
  export declare function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T;
@@ -0,0 +1,7 @@
1
+ import { StoreVersion } from './types';
2
+ /**
3
+ * Compare version.
4
+ * Positive when processed > current
5
+ * Negative when processed < current
6
+ */
7
+ export declare function compareVersion(processed: StoreVersion, current: StoreVersion): number;
@@ -1 +1 @@
1
- {"version":3,"file":"compareVersion.js","sourceRoot":"","sources":["../src/compareVersion.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAGjD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,SAAuB,EAAE,OAAqB;IAC3E,IAAM,EAAE,GAAG,IAAA,+BAAc,EAAC,SAAS,CAAC,CAAA;IACpC,IAAM,EAAE,GAAG,IAAA,+BAAc,EAAC,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;AALD,wCAKC"}
1
+ {"version":3,"file":"compareVersion.js","sourceRoot":"","sources":["../ts/compareVersion.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAGjD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,SAAuB,EAAE,OAAqB;IAC3E,IAAM,EAAE,GAAG,IAAA,+BAAc,EAAC,SAAS,CAAC,CAAA;IACpC,IAAM,EAAE,GAAG,IAAA,+BAAc,EAAC,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;AALD,wCAKC"}
@@ -0,0 +1,12 @@
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;
@@ -39,7 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.initializeAsyncStore = exports.createAsyncStore = void 0;
40
40
  var createStore_1 = require("./createStore");
41
41
  var util_1 = require("./util");
42
- var asyncStoreCreators = {};
42
+ var asyncStoreCreators = Object.create(null);
43
43
  /**
44
44
  * Creates a store of type T asynchronously.
45
45
  * @see https://github.com/unional/global-store#createAsyncStore
@@ -49,7 +49,7 @@ function createAsyncStore(_a) {
49
49
  return __awaiter(this, void 0, void 0, function () {
50
50
  return __generator(this, function (_b) {
51
51
  return [2 /*return*/, new Promise(function (resolve) {
52
- var creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
52
+ var creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
53
53
  var k = key !== null && key !== void 0 ? key : 'default';
54
54
  var storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
55
55
  storeCreators.push({ version: version, resolve: resolve, initializer: initializer });
@@ -1 +1 @@
1
- {"version":3,"file":"createAsyncStore.js","sourceRoot":"","sources":["../src/createAsyncStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAkD;AAGlD,+BAAwC;AAExC,IAAM,kBAAkB,GAA8B,EAAE,CAAA;AAExD;;;GAGG;AACH,SAAsB,gBAAgB,CAAuB,EAA0D;QAAxD,UAAU,gBAAA,EAAE,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA;;;YAClG,sBAAO,IAAI,OAAO,CAAC,UAAA,OAAO;oBACxB,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;oBAC/F,IAAM,CAAC,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,SAAS,CAAA;oBAC1B,IAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBACvE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAA;gBACvD,CAAC,CAAC,EAAA;;;CACH;AAPD,4CAOC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,GAAY;IACnE,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACxD,IAAI,CAAC,iBAAiB;QAAE,OAAM;IAE9B,IAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,IAAA,sBAAe,EAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,yBAAW,CAAC,EAArE,CAAqE,CAAC,CAAA;AAC5F,CAAC;AAND,oDAMC"}
1
+ {"version":3,"file":"createAsyncStore.js","sourceRoot":"","sources":["../ts/createAsyncStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAkD;AAGlD,+BAAwC;AAExC,IAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA8B,CAAA;AAE3E;;;GAGG;AACH,SAAsB,gBAAgB,CAAuB,EAA0D;QAAxD,UAAU,gBAAA,EAAE,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA;;;YAClG,sBAAO,IAAI,OAAO,CAAC,UAAA,OAAO;oBACxB,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAChH,IAAM,CAAC,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,SAAS,CAAA;oBAC1B,IAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBACvE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAA;gBACvD,CAAC,CAAC,EAAA;;;CACH;AAPD,4CAOC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,GAAY;IACnE,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACxD,IAAI,CAAC,iBAAiB;QAAE,OAAM;IAE9B,IAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,IAAA,sBAAe,EAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,yBAAW,CAAC,EAArE,CAAqE,CAAC,CAAA;AAC5F,CAAC;AAND,oDAMC"}
@@ -0,0 +1,28 @@
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>;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createStore = void 0;
4
4
  var util_1 = require("./util");
5
- var stores = {};
5
+ var stores = Object.create(null);
6
6
  /**
7
7
  * Creates a store of type T.
8
8
  * @see https://www.npmjs.com/package/global-store
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.js","sourceRoot":"","sources":["../src/createStore.ts"],"names":[],"mappings":";;;AAEA,+BAAyF;AAuBzF,IAAM,MAAM,GAAW,EAAE,CAAA;AAEzB;;;GAGG;AACH,SAAgB,WAAW,CAEzB,EAA0D;QAAxD,UAAU,gBAAA,EAAE,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA;IACvC,IAAM,EAAE,GAAG,EAAE,UAAU,YAAA,EAAE,GAAG,KAAA,EAAE,CAAA;IAC9B,IAAA,qBAAc,EAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAEhD,OAAO;QACL,IAAI,KAAK,KAAK,OAAO,IAAA,oBAAa,EAAI,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;QACnD,MAAM,YAAC,KAAK,IAAI,OAAO,IAAA,uBAAgB,EAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC;QAC5D,KAAK,gBAAK,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;KAC/C,CAAA;AACH,CAAC;AAXD,kCAWC"}
1
+ {"version":3,"file":"createStore.js","sourceRoot":"","sources":["../ts/createStore.ts"],"names":[],"mappings":";;;AAEA,+BAAyF;AAuBzF,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAW,CAAA;AAE5C;;;GAGG;AACH,SAAgB,WAAW,CAEzB,EAA0D;QAAxD,UAAU,gBAAA,EAAE,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA;IACvC,IAAM,EAAE,GAAG,EAAE,UAAU,YAAA,EAAE,GAAG,KAAA,EAAE,CAAA;IAC9B,IAAA,qBAAc,EAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAEhD,OAAO;QACL,IAAI,KAAK,KAAK,OAAO,IAAA,oBAAa,EAAI,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;QACnD,MAAM,YAAC,KAAK,IAAI,OAAO,IAAA,uBAAgB,EAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC;QAC5D,KAAK,gBAAK,OAAO,IAAA,sBAAe,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC;KAC/C,CAAA;AACH,CAAC;AAXD,kCAWC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './createAsyncStore';
2
+ export * from './createStore';
3
+ export { createStore as default } from './createStore';
4
+ export * from './types';
package/lib/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAAkC;AAClC,gDAA6B;AAC7B,6CAAsD;AAA7C,sGAAA,WAAW,OAAW;AAC/B,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,gDAA6B;AAC7B,6CAAsD;AAA7C,sGAAA,WAAW,OAAW;AAC/B,0CAAuB"}
@@ -0,0 +1,2 @@
1
+ import { StoreVersion } from './types';
2
+ export declare function shouldInvokeInitializer(versions: StoreVersion[], version: StoreVersion): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"shouldInvokeInitializer.js","sourceRoot":"","sources":["../src/shouldInvokeInitializer.ts"],"names":[],"mappings":";;;AAAA,mDAAgE;AAGhE,SAAgB,uBAAuB,CAAC,QAAwB,EAAE,OAAqB;IACrF,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,+BAAc,CAAC,CAAA;IACvC,IAAM,CAAC,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAA;IACjC,OAAO,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACpD,CAAC;AAJD,0DAIC;AAED,SAAS,YAAY,CAAC,QAAyB,EAAE,OAAsB;IACrE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB,EAAE,OAAsB;IACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC;SAC7C,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,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,EAA/D,CAA+D,CAAC,CAAA;AAC/E,CAAC"}
1
+ {"version":3,"file":"shouldInvokeInitializer.js","sourceRoot":"","sources":["../ts/shouldInvokeInitializer.ts"],"names":[],"mappings":";;;AAAA,mDAAgE;AAGhE,SAAgB,uBAAuB,CAAC,QAAwB,EAAE,OAAqB;IACrF,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,+BAAc,CAAC,CAAA;IACvC,IAAM,CAAC,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAA;IACjC,OAAO,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACpD,CAAC;AAJD,0DAIC;AAED,SAAS,YAAY,CAAC,QAAyB,EAAE,OAAsB;IACrE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB,EAAE,OAAsB;IACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC;SAC7C,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,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,EAA/D,CAA+D,CAAC,CAAA;AAC/E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { StoreVersion } from './types';
2
+ export declare type ParsedVersion = [number, number, number];
3
+ export declare function toVersionArray(v: StoreVersion): ParsedVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"toVersionArray.js","sourceRoot":"","sources":["../src/toVersionArray.ts"],"names":[],"mappings":";;;AAIA,SAAgB,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,UAAA,CAAC,IAAI,OAAA,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAf,CAAe,CAAkB,CAAA;AAC3D,CAAC;AAHD,wCAGC"}
1
+ {"version":3,"file":"toVersionArray.js","sourceRoot":"","sources":["../ts/toVersionArray.ts"],"names":[],"mappings":";;;AAIA,SAAgB,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,UAAA,CAAC,IAAI,OAAA,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAf,CAAe,CAAkB,CAAA;AAC3D,CAAC;AAHD,wCAGC"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,9 @@
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/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
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>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"typesInternal.js","sourceRoot":"","sources":["../src/typesInternal.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"typesInternal.js","sourceRoot":"","sources":["../ts/typesInternal.ts"],"names":[],"mappings":""}
package/lib/util.d.ts ADDED
@@ -0,0 +1,14 @@
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/lib/util.js CHANGED
@@ -29,7 +29,7 @@ function resetStoreValue(stores, id) {
29
29
  exports.resetStoreValue = resetStoreValue;
30
30
  function getStore(stores, id) {
31
31
  var _a;
32
- var moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
32
+ var moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
33
33
  var key = (_a = id.key) !== null && _a !== void 0 ? _a : 'default';
34
34
  return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
35
35
  }
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,qEAAmE;AAInE,SAAgB,aAAa,CAAuB,MAAc,EAAE,EAAW;IAC7E,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAU,CAAA;AACxC,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAAuB,MAAc,EAAE,EAAW,EAAE,OAAqB,EAAE,WAAgC;IACvI,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,IAAA,iDAAuB,EAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;QACpD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAA2C,CAAC,CAAA;QACpE,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC3D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC7B;AACH,CAAC;AAPD,wCAOC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,EAAW;IACzD,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClC,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAA;IACnB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAa,UAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QACxE,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AATD,0CASC;AAED,SAAgB,QAAQ,CAAC,MAAc,EAAE,EAAW;;IAClD,IAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACvE,IAAM,GAAG,GAAG,MAAA,EAAE,CAAC,GAAG,mCAAI,SAAS,CAAA;IAC/B,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;AAC7F,CAAC;AAJD,4BAIC;AAED,SAAgB,eAAe,CAAC,UAAkB,EAAE,GAAW,EAAE,aAAuC,EAAE,EAAsB;IAC9H,aAAa,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,UAAC,EAAiC;YAA/B,OAAO,aAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA;QAAO,OAAA,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,YAAA,EAAE,GAAG,KAAA,EAAE,OAAO,SAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;IAAtD,CAAsD,CAAC,CAAA;AACrI,CAAC;AAFD,0CAEC;AAED,SAAgB,aAAa,CAAI,aAAqC;IACpE,OAAO,aAAa,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,IAAA,+BAAc,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAApC,CAAoC,CAAC,CAAA;AAC3E,CAAC;AAFD,sCAEC;AAED,SAAgB,gBAAgB,CAAC,MAAc,EAAE,EAAW,EAAE,KAAkB;IAC9E,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QACnB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AALD,4CAKC;AAED,SAAS,WAAW,CAAC,UAAsB;IACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,MAAM,SAAS,CAAC,sCAAsC,CAAC,CAAA;IAExF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;IACpE,uBAAuB;IACvB,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAChC,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;KACtF;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,UAAsB,EAAE,CAA2B;IAC1E,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KACrC;AACH,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../ts/util.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compareVersion.js","sourceRoot":"","sources":["../src/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
+ {"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,13 +1,13 @@
1
1
  import { createStore } from './createStore';
2
2
  import { resolveCreators } from './util';
3
- const asyncStoreCreators = {};
3
+ const asyncStoreCreators = Object.create(null);
4
4
  /**
5
5
  * Creates a store of type T asynchronously.
6
6
  * @see https://github.com/unional/global-store#createAsyncStore
7
7
  */
8
8
  export async function createAsyncStore({ moduleName, key, version, initializer }) {
9
9
  return new Promise(resolve => {
10
- const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
10
+ const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null);
11
11
  const k = key ?? 'default';
12
12
  const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
13
13
  storeCreators.push({ version, resolve, initializer });
@@ -1 +1 @@
1
- {"version":3,"file":"createAsyncStore.js","sourceRoot":"","sources":["../src/createAsyncStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,eAAe,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,MAAM,kBAAkB,GAA8B,EAAE,CAAA;AAExD;;;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,EAAE,CAAA;QAC/F,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"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { freezeStoreValue, getStoreValue, initStoreValue, resetStoreValue } from './util';
2
- const stores = {};
2
+ const stores = Object.create(null);
3
3
  /**
4
4
  * Creates a store of type T.
5
5
  * @see https://www.npmjs.com/package/global-store
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.js","sourceRoot":"","sources":["../src/createStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAuBzF,MAAM,MAAM,GAAW,EAAE,CAAA;AAEzB;;;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"}
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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/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
+ {"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 +1 @@
1
- {"version":3,"file":"shouldInvokeInitializer.js","sourceRoot":"","sources":["../src/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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toVersionArray.js","sourceRoot":"","sources":["../src/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"}
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 CHANGED
@@ -1,9 +1,9 @@
1
1
  export declare type StoreValue = Record<string | symbol, unknown>;
2
2
  export declare type StoreVersion = `${number}.${number}.${number}` | number;
3
3
  export declare type StoreInitializer<T extends StoreValue> = (current: StoreValue, processedVersions: StoreVersion[]) => T;
4
- export declare type StoreOptions<T extends StoreValue> = {
4
+ export interface StoreOptions<T extends StoreValue> {
5
5
  moduleName: string;
6
6
  key?: string;
7
7
  version: StoreVersion;
8
8
  initializer: StoreInitializer<T>;
9
- };
9
+ }
package/libm/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":""}
@@ -1,16 +1,16 @@
1
1
  import { StoreInitializer, StoreVersion, StoreValue } from './types';
2
- export declare type StoreId = {
2
+ export interface StoreId {
3
3
  moduleName: string;
4
4
  key?: string;
5
- };
5
+ }
6
6
  export declare type Stores = Record<StoreId['moduleName'], Record<string, {
7
7
  versions: StoreVersion[];
8
8
  initializers: StoreInitializer<StoreValue>[];
9
9
  value: StoreValue;
10
10
  }>>;
11
- export declare type StoreCreator<S> = {
11
+ export interface StoreCreator<S> {
12
12
  version: StoreVersion;
13
13
  resolve: (store: S) => void;
14
14
  initializer: StoreInitializer<StoreValue>;
15
- };
15
+ }
16
16
  export declare type StoreCreators<Store> = Record<StoreId['moduleName'], Record<string, Array<StoreCreator<Store>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"typesInternal.js","sourceRoot":"","sources":["../src/typesInternal.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"typesInternal.js","sourceRoot":"","sources":["../ts/typesInternal.ts"],"names":[],"mappings":""}
package/libm/util.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import createStore from '.';
1
+ import { createStore } from './createStore';
2
2
  import { StoreInitializer, StoreValue, StoreVersion } from './types';
3
3
  import { StoreCreator, StoreId, Stores } from './typesInternal';
4
4
  export declare function getStoreValue<T extends StoreValue>(stores: Stores, id: StoreId): T;
package/libm/util.js CHANGED
@@ -22,7 +22,7 @@ export function resetStoreValue(stores, id) {
22
22
  }, {});
23
23
  }
24
24
  export function getStore(stores, id) {
25
- const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
25
+ const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null);
26
26
  const key = id.key ?? 'default';
27
27
  return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
28
28
  }
package/libm/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../ts/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "global-store",
3
- "version": "1.0.0-beta.19",
3
+ "version": "1.0.0-beta.21",
4
4
  "description": "A library provides version stable stores for libraries.",
5
5
  "homepage": "https://github.com/unional/global-store",
6
6
  "bugs": {
@@ -18,71 +18,75 @@
18
18
  "main": "lib/index.js",
19
19
  "module": "libm/index.js",
20
20
  "jsnext:main": "libm/index.js",
21
- "typings": "libm/index.d.ts",
21
+ "types": "libm/index.d.ts",
22
22
  "files": [
23
23
  "dist",
24
24
  "lib",
25
25
  "libm",
26
26
  "index.js.flow",
27
- "src"
27
+ "ts"
28
28
  ],
29
29
  "scripts": {
30
- "build": "tsc -p tsconfig.es5.json && tsc -p tsconfig.esnext.json",
31
- "bundle": "webpack && rollup -c rollup.config.js",
30
+ "build": "run-p build:es5 build:esnext bundle",
31
+ "build:es5": "tsc -p tsconfig.es5.json",
32
+ "build:esnext": "tsc -p tsconfig.esnext.json",
33
+ "bundle": "run-p bundle:webpack bundle:rollup",
34
+ "bundle:webpack": "webpack",
35
+ "bundle:rollup": "rollup -c rollup.config.mjs",
32
36
  "clean": "rimraf dist lib libm",
33
37
  "coverage": "jest --coverage",
34
- "declaration": "tsc -p tsconfig.es5.json --emitDeclarationOnly --outFile gs.d.ts",
35
- "depcheck": "dependency-check . --unused --no-dev && dependency-check . --missing --no-dev",
36
- "lint": "eslint --ext=ts .",
37
- "test": "jest --reporters=default",
38
+ "cs": "changeset",
39
+ "depcheck": "depcheck",
40
+ "lint": "eslint --ext=js,ts .",
41
+ "_postinstall": "husky install",
42
+ "prepack": "pinst --disable",
43
+ "postpack": "pinst --enable",
44
+ "size": "size-limit",
45
+ "test": "jest",
38
46
  "test:watch": "jest --watch",
39
- "verify": "yarn lint && jest --coverage --reporters=default && yarn build && yarn depcheck && yarn bundle",
40
- "verify:ci": "yarn lint && jest --coverage --reporters=default --maxWorkers=2 && yarn build && yarn depcheck && yarn bundle",
41
- "preversion": "yarn verify && git add .",
47
+ "verify": "npm-run-all clean -p build:es5 build:esnext -p size bundle lint depcheck coverage",
42
48
  "watch": "yarn test:watch"
43
49
  },
44
- "husky": {
45
- "hooks": {
46
- "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
47
- }
48
- },
49
- "dependencies": {},
50
50
  "devDependencies": {
51
- "@babel/core": "^7.16.0",
52
- "@babel/plugin-proposal-class-properties": "^7.16.0",
53
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
54
- "@babel/plugin-proposal-optional-chaining": "^7.16.0",
55
- "@babel/preset-env": "^7.16.4",
56
- "@babel/preset-typescript": "^7.16.0",
57
- "@commitlint/cli": "^15.0.0",
58
- "@commitlint/config-conventional": "^15.0.0",
59
- "@types/jest": "^27.0.3",
60
- "assertron": "^7.1.2",
61
- "dependency-check": "^4.1.0",
62
- "eslint": "^8.4.0",
51
+ "@babel/core": "^7.16.7",
52
+ "@babel/preset-env": "^7.16.7",
53
+ "@babel/preset-typescript": "^7.16.7",
54
+ "@changesets/cli": "^2.22.0",
55
+ "@commitlint/cli": "^16.0.1",
56
+ "@commitlint/config-conventional": "^16.0.0",
57
+ "@size-limit/preset-small-lib": "^7.0.5",
58
+ "@types/jest": "^27.4.0",
59
+ "@typescript-eslint/eslint-plugin": "^5.23.0",
60
+ "assertron": "^9.0.0",
61
+ "depcheck": "^1.4.3",
62
+ "eslint": "^8.6.0",
63
63
  "eslint-plugin-flowtype": "^8.0.3",
64
- "eslint-plugin-harmony": "^6.0.0",
65
- "flowgen": "^1.16.0",
66
- "http-server": "^14.0.0",
67
- "husky": "^7.0.4",
68
- "is-ci": "^3.0.1",
69
- "jest": "^27.4.3",
64
+ "eslint-plugin-harmony": "^7.0.2",
65
+ "husky": "^8.0.1",
66
+ "jest": "^28.0.0",
70
67
  "jest-junit": "^13.0.0",
71
- "jest-progress-tracker": "^2.0.2",
72
- "jest-validate": "^27.4.2",
68
+ "jest-validate": "^28.0.0",
73
69
  "jest-watch-suspend": "^1.1.2",
74
70
  "jest-watch-toggle-config": "^2.0.1",
75
71
  "jest-watch-typeahead": "^1.0.0",
72
+ "npm-run-all": "^4.1.5",
76
73
  "param-case": "^3.0.4",
77
74
  "pascal-case": "^3.1.2",
75
+ "pinst": "^3.0.0",
78
76
  "rimraf": "^3.0.0",
79
77
  "rollup": "^2.60.2",
80
78
  "rollup-plugin-typescript2": "^0.31.1",
81
- "systemjs": "^6.11.0",
79
+ "size-limit": "^7.0.5",
82
80
  "ts-loader": "^9.2.6",
83
- "type-plus": "^3.13.1",
84
- "typescript": "^4.5.2",
81
+ "type-plus": "^4.0.0",
82
+ "typescript": "^4.5.4",
85
83
  "webpack": "^5.64.4",
86
84
  "webpack-cli": "^4.9.1"
87
- }
85
+ },
86
+ "size-limit": [
87
+ {
88
+ "limit": "3 KB"
89
+ }
90
+ ],
91
+ "packageManager": "yarn@3.2.1"
88
92
  }
File without changes
File without changes
@@ -29,7 +29,7 @@ test('init single store without key', async () => {
29
29
  expect(store.value.a).toBe(1)
30
30
  })
31
31
 
32
- test('init multiple createAsynStore calls with key', async () => {
32
+ test('init multiple createAsyncStore calls with key', async () => {
33
33
  const moduleName = 'module-multi-stores-init-with-key'
34
34
  const key = '4f9a6b0c-8756-4c5b-9e98-030b1f973dbd'
35
35
  const p1 = createAsyncStore({ moduleName, key, version: 0, initializer: () => ({ a: 1 }) })
@@ -3,7 +3,7 @@ import { StoreOptions, StoreValue } from './types'
3
3
  import { StoreCreators } from './typesInternal'
4
4
  import { resolveCreators } from './util'
5
5
 
6
- const asyncStoreCreators: StoreCreators<Store<any>> = {}
6
+ const asyncStoreCreators = Object.create(null) as StoreCreators<Store<any>>
7
7
 
8
8
  /**
9
9
  * Creates a store of type T asynchronously.
@@ -11,7 +11,7 @@ const asyncStoreCreators: StoreCreators<Store<any>> = {}
11
11
  */
12
12
  export async function createAsyncStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Promise<Store<T>> {
13
13
  return new Promise(resolve => {
14
- const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {}
14
+ const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || Object.create(null)
15
15
  const k = key ?? 'default'
16
16
  const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || []
17
17
  storeCreators.push({ version, resolve, initializer })
File without changes
@@ -23,7 +23,7 @@ export type Store<T extends StoreValue> = {
23
23
  reset(): void,
24
24
  }
25
25
 
26
- const stores: Stores = {}
26
+ const stores = Object.create(null) as Stores
27
27
 
28
28
  /**
29
29
  * Creates a store of type T.
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,7 @@ export type StoreVersion = `${number}.${number}.${number}` | number
4
4
 
5
5
  export type StoreInitializer<T extends StoreValue> = (current: StoreValue, processedVersions: StoreVersion[]) => T
6
6
 
7
- export type StoreOptions<T extends StoreValue> = {
7
+ export interface StoreOptions<T extends StoreValue> {
8
8
  moduleName: string,
9
9
  key?: string,
10
10
  version: StoreVersion,
@@ -1,6 +1,6 @@
1
1
  import { StoreInitializer, StoreVersion, StoreValue } from './types'
2
2
 
3
- export type StoreId = { moduleName: string, key?: string }
3
+ export interface StoreId { moduleName: string, key?: string }
4
4
 
5
5
  export type Stores = Record<
6
6
  StoreId['moduleName'],
@@ -10,7 +10,7 @@ export type Stores = Record<
10
10
  >
11
11
  >
12
12
 
13
- export type StoreCreator<S> = {
13
+ export interface StoreCreator<S> {
14
14
  version: StoreVersion,
15
15
  resolve: (store: S) => void,
16
16
  initializer: StoreInitializer<StoreValue>
@@ -1,5 +1,5 @@
1
- import createStore from '.'
2
1
  import { compareVersion } from './compareVersion'
2
+ import { createStore } from './createStore'
3
3
  import { shouldInvokeInitializer } from './shouldInvokeInitializer'
4
4
  import { StoreInitializer, StoreValue, StoreVersion } from './types'
5
5
  import { StoreCreator, StoreId, Stores } from './typesInternal'
@@ -29,7 +29,7 @@ export function resetStoreValue(stores: Stores, id: StoreId) {
29
29
  }
30
30
 
31
31
  export function getStore(stores: Stores, id: StoreId) {
32
- const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {}
32
+ const moduleStore = stores[id.moduleName] = stores[id.moduleName] || Object.create(null)
33
33
  const key = id.key ?? 'default'
34
34
  return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] }
35
35
  }