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

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 (53) hide show
  1. package/README.md +25 -23
  2. package/dist/createAsyncStore.d.ts +3 -3
  3. package/dist/createStore.d.ts +1 -1
  4. package/dist/global-store.es.js +18 -25
  5. package/dist/global-store.es.js.map +1 -1
  6. package/dist/global-store.es5.js +1 -1
  7. package/dist/global-store.es5.js.map +1 -1
  8. package/dist/global-store.systemjs.js +21 -27
  9. package/dist/global-store.systemjs.js.map +1 -1
  10. package/dist/types.d.ts +4 -4
  11. package/dist/util.d.ts +6 -5
  12. package/lib/compareVersion.js +3 -4
  13. package/lib/compareVersion.js.map +1 -1
  14. package/lib/createAsyncStore.js +7 -14
  15. package/lib/createAsyncStore.js.map +1 -1
  16. package/lib/createStore.js +5 -5
  17. package/lib/createStore.js.map +1 -1
  18. package/lib/index.js +2 -1
  19. package/lib/index.js.map +1 -1
  20. package/lib/shouldInvokeInitializer.js +3 -2
  21. package/lib/shouldInvokeInitializer.js.map +1 -1
  22. package/lib/toVersionArray.js.map +1 -1
  23. package/lib/util.js +7 -5
  24. package/lib/util.js.map +1 -1
  25. package/libm/compareVersion.js +1 -2
  26. package/libm/compareVersion.js.map +1 -1
  27. package/libm/createAsyncStore.d.ts +3 -3
  28. package/libm/createAsyncStore.js +7 -14
  29. package/libm/createAsyncStore.js.map +1 -1
  30. package/libm/createStore.d.ts +1 -1
  31. package/libm/createStore.js +3 -3
  32. package/libm/createStore.js.map +1 -1
  33. package/libm/shouldInvokeInitializer.js +2 -1
  34. package/libm/shouldInvokeInitializer.js.map +1 -1
  35. package/libm/toVersionArray.js.map +1 -1
  36. package/libm/types.d.ts +4 -4
  37. package/libm/types.js +1 -0
  38. package/libm/typesInternal.d.ts +5 -5
  39. package/libm/typesInternal.js +1 -0
  40. package/libm/util.d.ts +7 -6
  41. package/libm/util.js +4 -3
  42. package/libm/util.js.map +1 -1
  43. package/package.json +40 -23
  44. package/src/compareVersion.ts +1 -2
  45. package/src/createAsyncStore.spec.ts +8 -0
  46. package/src/createAsyncStore.ts +7 -14
  47. package/src/createStore.spec.ts +13 -6
  48. package/src/createStore.ts +4 -4
  49. package/src/shouldInvokeInitializer.ts +2 -2
  50. package/src/toVersionArray.ts +1 -1
  51. package/src/types.ts +7 -7
  52. package/src/typesInternal.ts +7 -5
  53. package/src/util.ts +11 -9
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  [![Visual Studio Code][vscode-image]][vscode-url]
16
16
  [![Wallaby.js][wallaby-image]][wallaby-url]
17
17
 
18
- [global-store] provides version stable stores for library.
18
+ [global-store] provides version stable stores for libraries.
19
19
 
20
20
  Once this library reaches `1.0`, it will forever be backward compatible.
21
21
  Meaning there will never be a breaking change or `2.0` version of this library.
@@ -24,7 +24,7 @@ PLEASE NOTE: This document describes the new `1.0.0-beta` version (finally!! :ta
24
24
 
25
25
  For the current stable version, please check out [here](https://github.com/unional/global-store/blob/v0.8.2/README.md).
26
26
 
27
- ## Who need this
27
+ ## Who needs this
28
28
 
29
29
  - library can be used by other libraries, and
30
30
  - library with state, and/or
@@ -32,9 +32,9 @@ For the current stable version, please check out [here](https://github.com/union
32
32
 
33
33
  ## Why do you need this
34
34
 
35
- If you use a file level variable to store some states,
35
+ If you use a file-level variable to store some states,
36
36
  and your library can be used by other libraries,
37
- the state it stores could scatter around the memory and you will get inconsistent result.
37
+ the state it stores could scatter around the memory and you will get inconsistent results.
38
38
 
39
39
  For example, you have this:
40
40
 
@@ -50,7 +50,7 @@ When your library is used by other libraries,
50
50
  they may use different versions.
51
51
  For example:
52
52
 
53
- ```
53
+ ```sh
54
54
  app
55
55
  - some-library@1.5
56
56
  - your-library@1.0
@@ -60,8 +60,8 @@ app
60
60
  Since the versions are not compatible,
61
61
  both versions of your library are loaded thus two instances of the `registry` variable exist and contain different values.
62
62
 
63
- Solution to this problem is to use some form of global storage such as `global` in NodeJS,
64
- or global variable in browser.
63
+ The solution to this problem is to use some form of global storage such as `global` in NodeJS,
64
+ or global variable in the browser.
65
65
 
66
66
  The problem is that these mechanisms are shared by everything else in the application,
67
67
  completely exposed to everyone,
@@ -93,7 +93,7 @@ const store = createStore({
93
93
  moduleName: 'your-module',
94
94
  key: 'some-unique-string',
95
95
  version: '1.0.0',
96
- initializer: (current, versions) =>({
96
+ initializer: (current, versions) => ({
97
97
  prop1: false,
98
98
  prop2: [] as string[],
99
99
  ...current
@@ -118,43 +118,45 @@ This will be shown if something goes wrong.
118
118
 
119
119
  #### StoreOptions#key
120
120
 
121
- Type: `string`
121
+ Type: optional `string`
122
122
 
123
- Specific key for each store in your module.
123
+ A specific key for each store in your module.
124
124
 
125
125
  You can create multiple stores in your module for different purposes.
126
126
  The key for each store needs to be unique.
127
- And the key has to be remain the same across versions.
127
+ And the key has to remain the same across versions.
128
128
 
129
129
  For example, you can use a format like this to make it unique: `<some-purpose>:<UUID>`
130
130
 
131
131
  e.g. `config:d15427a4-75cf-4999-9065-1dc325839a59`
132
132
 
133
- `key` + `moduleName` forms an unique id to the store.
133
+ `key` + `moduleName` forms a unique id to the store.
134
134
 
135
135
  `key` will not be shown if something goes wrong.
136
136
 
137
+ If `key` is not specified, it is defaults to the string `default`.
138
+
137
139
  #### StoreOptions#version
138
140
 
139
141
  Type: `StoreVersion = string | number`
140
142
 
141
- Version of the store.
143
+ The version of the store.
142
144
 
143
145
  This is used during initialization to determine should the [`StoreOptions#initializer`](#StoreOptionsinitializer) be called (and in what order for [`createAsyncStore()`](#createAsyncStore)).
144
146
 
145
147
  It will be added to the `processedVersions` argument of the [`StoreOptions#initializer()`](#StoreOptionsinitializer) after it is being called.
146
148
 
147
- When specifing as string (recommended),
149
+ When specified as a string (recommended),
148
150
  it must be in this format: `major.minor.patch`.
149
151
 
150
- When there is a mix of string and numeric verions across different versions of your library,
152
+ When there is a mix of string and numeric versions across different versions of your library,
151
153
  the numeric value is compared to the patch number of the string version.
152
154
 
153
155
  #### StoreOptions#initializer()
154
156
 
155
157
  Type: `<T extends StoreValue>(current: StoreValue, processedVersions: StoreVersion[]) => T`
156
158
 
157
- Function to initialize the store.
159
+ The function to initialize the store.
158
160
 
159
161
  Since there may be multiple copies of your library loaded,
160
162
  multiple calls to the store creation function (e.g. [`createStore()`](#createStore)) may occur.
@@ -169,11 +171,11 @@ the `initializer` function will be called in the order of `version`.
169
171
 
170
172
  For [`createStore`](#createStore),
171
173
  since there is no way to control the load order,
172
- they can be called by a newer version of your libary before an older version.
173
- This means your `initializer` needs to be future proof.
174
+ they can be called by a newer version of your library before an older version.
175
+ This means your `initializer` needs to be future-proof.
174
176
 
175
177
  To do that, you should fill in the pieces your specific version needs,
176
- and carry over whatever currently available.
178
+ and carry over whatever is currently available.
177
179
 
178
180
  This is only a general guideline,
179
181
  the actual implementation will depend on how you use your store.
@@ -182,7 +184,7 @@ the actual implementation will depend on how you use your store.
182
184
 
183
185
  Type: `Record<string | symbol, any>`
184
186
 
185
- Shape of the value stored in the stores.****
187
+ The type of value stored in the stores.
186
188
 
187
189
  Note that the key must be string or `Symbol.for()` because `Symbol()` cannot be shared across versions.
188
190
 
@@ -203,7 +205,7 @@ store.value.x = 2
203
205
 
204
206
  Reset the store to its initial value.
205
207
 
206
- This is mostly used in tests, so that the tests would not interferred each other.
208
+ This is mostly used in tests so that the tests would not interfere each other.
207
209
 
208
210
  ### createAsyncStore()
209
211
 
@@ -221,7 +223,7 @@ Calling [`initializeAsyncStore()`](#initializeAsyncStore) will start the initial
221
223
 
222
224
  It takes two arguments:
223
225
 
224
- - `moduleName: string`: Name of your mdodule.
226
+ - `moduleName: string`: Name of your module.
225
227
  - `key: string`: Optional. Key of the specific store to initialize.
226
228
  If omitted, all stores in the module will be initialized.
227
229
 
@@ -232,7 +234,7 @@ If not, there will be multiple copies of [global-store] loaded and will complete
232
234
 
233
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.
234
236
 
235
- Any application that eventually uses your library should do the same, install [global-store] as their own dependency.
237
+ Any application that eventually uses your library should do the same, install [global-store] as their dependency.
236
238
 
237
239
  [badge-size-es5-url]: http://img.badgesize.io/unional/global-store/master/dist/global-store.es5.js.svg?label=es5_size&compression=gzip
238
240
  [badge-size-esnext-url]: http://img.badgesize.io/unional/global-store/master/dist/global-store.es.js.svg?label=esnext_size&compression=gzip
@@ -1,12 +1,12 @@
1
1
  import { Store } from './createStore';
2
2
  import { StoreOptions, StoreValue } from './types';
3
3
  /**
4
- * Creates a store of type T asychronously.
5
- * https://github.com/unional/global-store#createAsyncStore
4
+ * Creates a store of type T asynchronously.
5
+ * @see https://github.com/unional/global-store#createAsyncStore
6
6
  */
7
7
  export declare function createAsyncStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Promise<Store<T>>;
8
8
  /**
9
9
  * Initializes the stores for `createAsyncStore()`.
10
- * https://github.com/unional/global-store#initializeAsyncStore
10
+ * @see https://github.com/unional/global-store#initializeAsyncStore
11
11
  */
12
12
  export declare function initializeAsyncStore(moduleName: string, key?: string): void;
@@ -23,6 +23,6 @@ export declare type Store<T extends StoreValue> = {
23
23
  };
24
24
  /**
25
25
  * Creates a store of type T.
26
- * https://www.npmjs.com/package/global-store
26
+ * @see https://www.npmjs.com/package/global-store
27
27
  */
28
28
  export declare function createStore<T extends StoreValue>({ moduleName, key, version, initializer }: StoreOptions<T>): Store<T>;
@@ -12,8 +12,7 @@ function compareVersion(processed, current) {
12
12
  const v1 = toVersionArray(processed);
13
13
  const v2 = toVersionArray(current);
14
14
  return v1[0] !== v2[0] ? v1[0] - v2[0] :
15
- v1[1] !== v2[1] ? v1[1] - v2[1] :
16
- v1[2] - v2[2];
15
+ v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2];
17
16
  }
18
17
 
19
18
  function shouldInvokeInitializer(versions, version) {
@@ -25,7 +24,8 @@ function noMatchMajor(versions, version) {
25
24
  return !versions.some(v => v[0] === version[0]);
26
25
  }
27
26
  function hasNewVersion(versions, version) {
28
- return versions.filter(v => v[0] === version[0]).some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
27
+ return versions.filter(v => v[0] === version[0])
28
+ .some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
29
29
  }
30
30
 
31
31
  function getStoreValue(stores, id) {
@@ -51,10 +51,11 @@ function resetStoreValue(stores, id) {
51
51
  }
52
52
  function getStore(stores, id) {
53
53
  const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
54
- return moduleStore[id.key] = moduleStore[id.key] || { versions: [], value: {}, initializers: [] };
54
+ const key = id.key ?? 'default';
55
+ return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
55
56
  }
56
- function resolveCreators(moduleName, key, storeCreators, createStore) {
57
- sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(createStore({ moduleName, key, version, initializer })));
57
+ function resolveCreators(moduleName, key, storeCreators, cs) {
58
+ sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })));
58
59
  }
59
60
  function sortByVersion(storeCreators) {
60
61
  return storeCreators.sort((a, b) => compareVersion(a.version, b.version));
@@ -85,50 +86,42 @@ function freezeIfIsArray(storeValue, k) {
85
86
  const stores = {};
86
87
  /**
87
88
  * Creates a store of type T.
88
- * https://www.npmjs.com/package/global-store
89
+ * @see https://www.npmjs.com/package/global-store
89
90
  */
90
91
  function createStore({ moduleName, key, version, initializer }) {
91
92
  const id = { moduleName, key };
92
93
  initStoreValue(stores, id, version, initializer);
93
94
  return {
94
95
  get value() { return getStoreValue(stores, id); },
95
- freeze: (value) => freezeStoreValue(stores, id, value),
96
- reset: () => resetStoreValue(stores, id)
96
+ freeze(value) { return freezeStoreValue(stores, id, value); },
97
+ reset() { return resetStoreValue(stores, id); }
97
98
  };
98
99
  }
99
100
 
100
101
  const asyncStoreCreators = {};
101
102
  /**
102
- * Creates a store of type T asychronously.
103
- * https://github.com/unional/global-store#createAsyncStore
103
+ * Creates a store of type T asynchronously.
104
+ * @see https://github.com/unional/global-store#createAsyncStore
104
105
  */
105
106
  async function createAsyncStore({ moduleName, key, version, initializer }) {
106
107
  return new Promise(resolve => {
107
108
  const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
108
- const storeCreators = creatorsOfModules[key] = creatorsOfModules[key] || [];
109
+ const k = key ?? 'default';
110
+ const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
109
111
  storeCreators.push({ version, resolve, initializer });
110
112
  });
111
113
  }
112
114
  /**
113
115
  * Initializes the stores for `createAsyncStore()`.
114
- * https://github.com/unional/global-store#initializeAsyncStore
116
+ * @see https://github.com/unional/global-store#initializeAsyncStore
115
117
  */
116
118
  function initializeAsyncStore(moduleName, key) {
117
119
  const creatorsOfModules = asyncStoreCreators[moduleName];
118
120
  if (!creatorsOfModules)
119
121
  return;
120
- if (key) {
121
- const storeCreators = creatorsOfModules[key];
122
- resolveCreators(moduleName, key, storeCreators, createStore);
123
- }
124
- else {
125
- Object.keys(creatorsOfModules).forEach(k => {
126
- const storeCreators = creatorsOfModules[k];
127
- resolveCreators(moduleName, k, storeCreators, createStore);
128
- });
129
- }
122
+ const keys = key ? [key] : Object.keys(creatorsOfModules);
123
+ keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore));
130
124
  }
131
125
 
132
- export default createStore;
133
- export { createAsyncStore, createStore, initializeAsyncStore };
126
+ export { createAsyncStore, createStore, createStore as default, initializeAsyncStore };
134
127
  //# sourceMappingURL=global-store.es.js.map
@@ -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 any\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] :\n 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]).some(\n v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]))\n}\n","import { compareVersion } from './compareVersion'\nimport { shouldInvokeInitializer } from './shouldInvokeInitializer'\nimport { StoreInitializer, StoreValue, StoreVersion } from './types'\nimport { StoreCreator, StoreId, Stores } from './typesInternal'\n\nexport function getStoreValue(stores: Stores, id: StoreId): any {\n return getStore(stores, id).value\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)\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((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 return moduleStore[id.key as any] = moduleStore[id.key as any] || { versions: [], value: {}, initializers: [] }\n}\n\nexport function resolveCreators<S>(moduleName: string, key: string, storeCreators: Array<StoreCreator<S>>, createStore: any) {\n sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(createStore({ 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?: any) {\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: any) {\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 * 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(stores, id) },\n freeze: (value) => freezeStoreValue(stores, id, value),\n reset: () => 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 asychronously.\n * 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 storeCreators = creatorsOfModules[key as any] = creatorsOfModules[key as any] || []\n storeCreators.push({ version, resolve, initializer })\n })\n}\n\n/**\n * Initializes the stores for `createAsyncStore()`.\n * 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 if (key) {\n const storeCreators = creatorsOfModules[key as any]\n resolveCreators(moduleName, key, storeCreators, createStore)\n }\n else {\n Object.keys(creatorsOfModules).forEach(k => {\n const storeCreators = creatorsOfModules[k]\n resolveCreators(moduleName, k, storeCreators, createStore)\n })\n }\n}\n"],"names":[],"mappings":"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"}
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,2 +1,2 @@
1
- var GlobalStore=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=3)}([function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.createStore=void 0;var n=t(1),o={};r.createStore=function(e){var r=e.moduleName,t=e.key,i=e.version,u=e.initializer,a={moduleName:r,key:t};return n.initStoreValue(o,a,i,u),{get value(){return n.getStoreValue(o,a)},freeze:function(e){return n.freezeStoreValue(o,a,e)},reset:function(){return n.resetStoreValue(o,a)}}}},function(e,r,t){"use strict";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(5),o=t(6);function i(e,r){var t=e[r.moduleName]=e[r.moduleName]||{};return t[r.key]=t[r.key]||{versions:[],value:{},initializers:[]}}function u(e){return e.sort((function(e,r){return 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);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");Object.keys(e).forEach((function(r){return a(e,r)})),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach((function(r){return a(e,r)}));return Object.freeze(e)}(n.value)}},function(e,r,t){"use strict";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)}))}},function(e,r,t){"use strict";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||r.hasOwnProperty(t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),o(t(4),r),o(t(0),r);var i=t(0);Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i.createStore}}),o(t(7),r)},function(e,r,t){"use strict";var n=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(o,i){function u(e){try{c(n.next(e))}catch(e){i(e)}}function a(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(u,a)}c((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=u.trys,(o=o.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(0),u=t(1),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]||{};(n[t]=n[t]||[]).push({version:i,resolve:e,initializer:u})}))]}))}))},r.initializeAsyncStore=function(e,r){var t=a[e];if(t)if(r){var n=t[r];u.resolveCreators(e,r,n,i.createStore)}else Object.keys(t).forEach((function(r){var n=t[r];u.resolveCreators(e,r,n,i.createStore)}))}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.compareVersion=void 0;var n=t(2);r.compareVersion=function(e,r){var t=n.toVersionArray(e),o=n.toVersionArray(r);return t[0]!==o[0]?t[0]-o[0]:t[1]!==o[1]?t[1]-o[1]:t[2]-o[2]}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shouldInvokeInitializer=void 0;var n=t(2);r.shouldInvokeInitializer=function(e,r){var t=e.map(n.toVersionArray),o=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)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0})}]);
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})();
2
2
  //# sourceMappingURL=global-store.es5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://GlobalStore/webpack/bootstrap","webpack://GlobalStore/./src/createStore.ts","webpack://GlobalStore/./src/util.ts","webpack://GlobalStore/./src/toVersionArray.ts","webpack://GlobalStore/./src/index.ts","webpack://GlobalStore/./src/createAsyncStore.ts","webpack://GlobalStore/./src/compareVersion.ts","webpack://GlobalStore/./src/shouldInvokeInitializer.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","stores","moduleName","version","initializer","id","initStoreValue","getStoreValue","freeze","freezeStoreValue","reset","resetStoreValue","getStore","moduleStore","versions","initializers","sortByVersion","storeCreators","sort","a","b","compareVersion","freezeIfIsArray","storeValue","k","Array","isArray","store","shouldInvokeInitializer","push","reduce","createStore","forEach","resolve","isFrozen","TypeError","keys","getOwnPropertySymbols","freezeValue","v","split","map","parseInt","asyncStoreCreators","Promise","creatorsOfModules","resolveCreators","processed","current","v1","toVersionArray","v2","vs","some","noMatchMajor","filter","hasNewVersion"],"mappings":"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","file":"global-store.es5.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\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 * 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(stores, id) },\n freeze: (value) => freezeStoreValue(stores, id, value),\n reset: () => resetStoreValue(stores, id)\n }\n}\n","import { compareVersion } from './compareVersion'\nimport { shouldInvokeInitializer } from './shouldInvokeInitializer'\nimport { StoreInitializer, StoreValue, StoreVersion } from './types'\nimport { StoreCreator, StoreId, Stores } from './typesInternal'\n\nexport function getStoreValue(stores: Stores, id: StoreId): any {\n return getStore(stores, id).value\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)\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((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 return moduleStore[id.key as any] = moduleStore[id.key as any] || { versions: [], value: {}, initializers: [] }\n}\n\nexport function resolveCreators<S>(moduleName: string, key: string, storeCreators: Array<StoreCreator<S>>, createStore: any) {\n sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(createStore({ 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?: any) {\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: any) {\n const value = storeValue[k]\n if (Array.isArray(value)) {\n storeValue[k] = Object.freeze(value)\n }\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 any\n}\n","export * from './createAsyncStore'\nexport * from './createStore'\nexport { createStore as default } from './createStore'\nexport * from './types'\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 asychronously.\n * 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 storeCreators = creatorsOfModules[key as any] = creatorsOfModules[key as any] || []\n storeCreators.push({ version, resolve, initializer })\n })\n}\n\n/**\n * Initializes the stores for `createAsyncStore()`.\n * 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 if (key) {\n const storeCreators = creatorsOfModules[key as any]\n resolveCreators(moduleName, key, storeCreators, createStore)\n }\n else {\n Object.keys(creatorsOfModules).forEach(k => {\n const storeCreators = creatorsOfModules[k]\n resolveCreators(moduleName, k, storeCreators, createStore)\n })\n }\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] :\n 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]).some(\n v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]))\n}\n"],"sourceRoot":""}
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,7 +1,7 @@
1
- System.register([], function (exports) {
1
+ System.register([], (function (exports) {
2
2
  'use strict';
3
3
  return {
4
- execute: function () {
4
+ execute: (function () {
5
5
 
6
6
  exports({
7
7
  createAsyncStore: createAsyncStore,
@@ -24,8 +24,7 @@ System.register([], function (exports) {
24
24
  const v1 = toVersionArray(processed);
25
25
  const v2 = toVersionArray(current);
26
26
  return v1[0] !== v2[0] ? v1[0] - v2[0] :
27
- v1[1] !== v2[1] ? v1[1] - v2[1] :
28
- v1[2] - v2[2];
27
+ v1[1] !== v2[1] ? v1[1] - v2[1] : v1[2] - v2[2];
29
28
  }
30
29
 
31
30
  function shouldInvokeInitializer(versions, version) {
@@ -37,7 +36,8 @@ System.register([], function (exports) {
37
36
  return !versions.some(v => v[0] === version[0]);
38
37
  }
39
38
  function hasNewVersion(versions, version) {
40
- return versions.filter(v => v[0] === version[0]).some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
39
+ return versions.filter(v => v[0] === version[0])
40
+ .some(v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]));
41
41
  }
42
42
 
43
43
  function getStoreValue(stores, id) {
@@ -63,10 +63,11 @@ System.register([], function (exports) {
63
63
  }
64
64
  function getStore(stores, id) {
65
65
  const moduleStore = stores[id.moduleName] = stores[id.moduleName] || {};
66
- return moduleStore[id.key] = moduleStore[id.key] || { versions: [], value: {}, initializers: [] };
66
+ const key = id.key ?? 'default';
67
+ return moduleStore[key] = moduleStore[key] || { versions: [], value: {}, initializers: [] };
67
68
  }
68
- function resolveCreators(moduleName, key, storeCreators, createStore) {
69
- sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(createStore({ moduleName, key, version, initializer })));
69
+ function resolveCreators(moduleName, key, storeCreators, cs) {
70
+ sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(cs({ moduleName, key, version, initializer })));
70
71
  }
71
72
  function sortByVersion(storeCreators) {
72
73
  return storeCreators.sort((a, b) => compareVersion(a.version, b.version));
@@ -97,51 +98,44 @@ System.register([], function (exports) {
97
98
  const stores = {};
98
99
  /**
99
100
  * Creates a store of type T.
100
- * https://www.npmjs.com/package/global-store
101
+ * @see https://www.npmjs.com/package/global-store
101
102
  */
102
103
  function createStore({ moduleName, key, version, initializer }) {
103
104
  const id = { moduleName, key };
104
105
  initStoreValue(stores, id, version, initializer);
105
106
  return {
106
107
  get value() { return getStoreValue(stores, id); },
107
- freeze: (value) => freezeStoreValue(stores, id, value),
108
- reset: () => resetStoreValue(stores, id)
108
+ freeze(value) { return freezeStoreValue(stores, id, value); },
109
+ reset() { return resetStoreValue(stores, id); }
109
110
  };
110
111
  }
111
112
 
112
113
  const asyncStoreCreators = {};
113
114
  /**
114
- * Creates a store of type T asychronously.
115
- * https://github.com/unional/global-store#createAsyncStore
115
+ * Creates a store of type T asynchronously.
116
+ * @see https://github.com/unional/global-store#createAsyncStore
116
117
  */
117
118
  async function createAsyncStore({ moduleName, key, version, initializer }) {
118
119
  return new Promise(resolve => {
119
120
  const creatorsOfModules = asyncStoreCreators[moduleName] = asyncStoreCreators[moduleName] || {};
120
- const storeCreators = creatorsOfModules[key] = creatorsOfModules[key] || [];
121
+ const k = key ?? 'default';
122
+ const storeCreators = creatorsOfModules[k] = creatorsOfModules[k] || [];
121
123
  storeCreators.push({ version, resolve, initializer });
122
124
  });
123
125
  }
124
126
  /**
125
127
  * Initializes the stores for `createAsyncStore()`.
126
- * https://github.com/unional/global-store#initializeAsyncStore
128
+ * @see https://github.com/unional/global-store#initializeAsyncStore
127
129
  */
128
130
  function initializeAsyncStore(moduleName, key) {
129
131
  const creatorsOfModules = asyncStoreCreators[moduleName];
130
132
  if (!creatorsOfModules)
131
133
  return;
132
- if (key) {
133
- const storeCreators = creatorsOfModules[key];
134
- resolveCreators(moduleName, key, storeCreators, createStore);
135
- }
136
- else {
137
- Object.keys(creatorsOfModules).forEach(k => {
138
- const storeCreators = creatorsOfModules[k];
139
- resolveCreators(moduleName, k, storeCreators, createStore);
140
- });
141
- }
134
+ const keys = key ? [key] : Object.keys(creatorsOfModules);
135
+ keys.forEach(key => resolveCreators(moduleName, key, creatorsOfModules[key], createStore));
142
136
  }
143
137
 
144
- }
138
+ })
145
139
  };
146
- });
140
+ }));
147
141
  //# sourceMappingURL=global-store.systemjs.js.map
@@ -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 any\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] :\n 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]).some(\n v => version[1] > v[1] || (version[1] === v[1] && version[2] > v[2]))\n}\n","import { compareVersion } from './compareVersion'\nimport { shouldInvokeInitializer } from './shouldInvokeInitializer'\nimport { StoreInitializer, StoreValue, StoreVersion } from './types'\nimport { StoreCreator, StoreId, Stores } from './typesInternal'\n\nexport function getStoreValue(stores: Stores, id: StoreId): any {\n return getStore(stores, id).value\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)\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((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 return moduleStore[id.key as any] = moduleStore[id.key as any] || { versions: [], value: {}, initializers: [] }\n}\n\nexport function resolveCreators<S>(moduleName: string, key: string, storeCreators: Array<StoreCreator<S>>, createStore: any) {\n sortByVersion(storeCreators).forEach(({ version, resolve, initializer }) => resolve(createStore({ 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?: any) {\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: any) {\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 * 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(stores, id) },\n freeze: (value) => freezeStoreValue(stores, id, value),\n reset: () => 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 asychronously.\n * 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 storeCreators = creatorsOfModules[key as any] = creatorsOfModules[key as any] || []\n storeCreators.push({ version, resolve, initializer })\n })\n}\n\n/**\n * Initializes the stores for `createAsyncStore()`.\n * 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 if (key) {\n const storeCreators = creatorsOfModules[key as any]\n resolveCreators(moduleName, key, storeCreators, createStore)\n }\n else {\n Object.keys(creatorsOfModules).forEach(k => {\n const storeCreators = creatorsOfModules[k]\n resolveCreators(moduleName, k, storeCreators, createStore)\n })\n }\n}\n"],"names":[],"mappings":"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"}
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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"}