@wordpress/data 6.8.0 → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +39 -4
  3. package/build/components/use-select/index.js +113 -0
  4. package/build/components/use-select/index.js.map +1 -1
  5. package/build/components/with-registry/index.js.map +1 -1
  6. package/build/controls.js.map +1 -1
  7. package/build/index.js +22 -3
  8. package/build/index.js.map +1 -1
  9. package/build/plugins/persistence/index.js.map +1 -1
  10. package/build/redux-store/index.js +52 -5
  11. package/build/redux-store/index.js.map +1 -1
  12. package/build/redux-store/metadata/utils.js.map +1 -1
  13. package/build/registry.js +31 -4
  14. package/build/registry.js.map +1 -1
  15. package/build/resolvers-cache-middleware.js.map +1 -1
  16. package/build/store/index.js.map +1 -1
  17. package/build-module/components/use-select/index.js +111 -0
  18. package/build-module/components/use-select/index.js.map +1 -1
  19. package/build-module/components/with-registry/index.js.map +1 -1
  20. package/build-module/controls.js.map +1 -1
  21. package/build-module/index.js +13 -1
  22. package/build-module/index.js.map +1 -1
  23. package/build-module/plugins/persistence/index.js.map +1 -1
  24. package/build-module/redux-store/index.js +52 -5
  25. package/build-module/redux-store/index.js.map +1 -1
  26. package/build-module/redux-store/metadata/utils.js.map +1 -1
  27. package/build-module/registry.js +31 -4
  28. package/build-module/registry.js.map +1 -1
  29. package/build-module/resolvers-cache-middleware.js.map +1 -1
  30. package/build-module/store/index.js.map +1 -1
  31. package/build-types/redux-store/metadata/utils.d.ts.map +1 -1
  32. package/build-types/types.d.ts.map +1 -1
  33. package/package.json +8 -8
  34. package/src/components/use-select/index.js +127 -0
  35. package/src/components/use-select/test/index.js +71 -0
  36. package/src/components/use-select/test/suspense.js +164 -0
  37. package/src/components/with-dispatch/test/index.js +4 -5
  38. package/src/components/with-registry/index.js +8 -7
  39. package/src/components/with-select/test/index.js +12 -18
  40. package/src/controls.js +16 -11
  41. package/src/index.js +16 -1
  42. package/src/plugins/persistence/index.js +2 -4
  43. package/src/redux-store/index.js +51 -5
  44. package/src/redux-store/metadata/test/utils.js +1 -2
  45. package/src/redux-store/metadata/utils.ts +24 -24
  46. package/src/redux-store/test/index.js +4 -3
  47. package/src/registry.js +30 -4
  48. package/src/resolvers-cache-middleware.js +33 -34
  49. package/src/store/index.js +10 -6
  50. package/src/test/registry.js +6 -7
  51. package/src/types.ts +4 -5
  52. package/tsconfig.json +2 -2
  53. package/tsconfig.tsbuildinfo +1 -1
@@ -136,8 +136,9 @@ export default function createReduxStore( key, options ) {
136
136
  {
137
137
  ...mapValues(
138
138
  metadataSelectors,
139
- ( selector ) => ( state, ...args ) =>
140
- selector( state.metadata, ...args )
139
+ ( selector ) =>
140
+ ( state, ...args ) =>
141
+ selector( state.metadata, ...args )
141
142
  ),
142
143
  ...mapValues( options.selectors, ( selector ) => {
143
144
  if ( selector.isRegistrySelector ) {
@@ -162,10 +163,12 @@ export default function createReduxStore( key, options ) {
162
163
  }
163
164
 
164
165
  const resolveSelectors = mapResolveSelectors( selectors, store );
166
+ const suspendSelectors = mapSuspendSelectors( selectors, store );
165
167
 
166
168
  const getSelectors = () => selectors;
167
169
  const getActions = () => actions;
168
170
  const getResolveSelectors = () => resolveSelectors;
171
+ const getSuspendSelectors = () => suspendSelectors;
169
172
 
170
173
  // We have some modules monkey-patching the store object
171
174
  // It's wrong to do so but until we refactor all of our effects to controls
@@ -200,6 +203,7 @@ export default function createReduxStore( key, options ) {
200
203
  resolvers,
201
204
  getSelectors,
202
205
  getResolveSelectors,
206
+ getSuspendSelectors,
203
207
  getActions,
204
208
  subscribe,
205
209
  };
@@ -305,9 +309,11 @@ function mapSelectors( selectors, store ) {
305
309
  * @return {Object} Actions mapped to the redux store provided.
306
310
  */
307
311
  function mapActions( actions, store ) {
308
- const createBoundAction = ( action ) => ( ...args ) => {
309
- return Promise.resolve( store.dispatch( action( ...args ) ) );
310
- };
312
+ const createBoundAction =
313
+ ( action ) =>
314
+ ( ...args ) => {
315
+ return Promise.resolve( store.dispatch( action( ...args ) ) );
316
+ };
311
317
 
312
318
  return mapValues( actions, createBoundAction );
313
319
  }
@@ -376,6 +382,46 @@ function mapResolveSelectors( selectors, store ) {
376
382
  } );
377
383
  }
378
384
 
385
+ /**
386
+ * Maps selectors to functions that throw a suspense promise if not yet resolved.
387
+ *
388
+ * @param {Object} selectors Selectors to map.
389
+ * @param {Object} store The redux store the selectors select from.
390
+ *
391
+ * @return {Object} Selectors mapped to their suspense functions.
392
+ */
393
+ function mapSuspendSelectors( selectors, store ) {
394
+ return mapValues( selectors, ( selector, selectorName ) => {
395
+ // Selector without a resolver doesn't have any extra suspense behavior.
396
+ if ( ! selector.hasResolver ) {
397
+ return selector;
398
+ }
399
+
400
+ return ( ...args ) => {
401
+ const result = selector.apply( null, args );
402
+
403
+ if ( selectors.hasFinishedResolution( selectorName, args ) ) {
404
+ if ( selectors.hasResolutionFailed( selectorName, args ) ) {
405
+ throw selectors.getResolutionError( selectorName, args );
406
+ }
407
+
408
+ return result;
409
+ }
410
+
411
+ throw new Promise( ( resolve ) => {
412
+ const unsubscribe = store.subscribe( () => {
413
+ if (
414
+ selectors.hasFinishedResolution( selectorName, args )
415
+ ) {
416
+ resolve();
417
+ unsubscribe();
418
+ }
419
+ } );
420
+ } );
421
+ };
422
+ } );
423
+ }
424
+
379
425
  /**
380
426
  * Returns resolvers with matched selectors for a given namespace.
381
427
  * Resolvers are side effects invoked once per argument set of a given selector call,
@@ -47,8 +47,7 @@ describe( 'selectorArgsToStateKey', () => {
47
47
 
48
48
  it( 'should remove trailing undefined values', () => {
49
49
  expect( selectorArgsToStateKey( [ 1, 2, undefined ] ) ).toEqual( [
50
- 1,
51
- 2,
50
+ 1, 2,
52
51
  ] );
53
52
  expect(
54
53
  selectorArgsToStateKey( [ 1, 2, undefined, undefined ] )
@@ -10,33 +10,33 @@ import type { AnyAction, Reducer } from 'redux';
10
10
  * @param actionProperty Action property by which to key object.
11
11
  * @return Higher-order reducer.
12
12
  */
13
- export const onSubKey = < TState extends unknown, TAction extends AnyAction >(
14
- actionProperty: string
15
- ) => (
16
- reducer: Reducer< TState, TAction >
17
- ): Reducer< Record< string, TState >, TAction > => (
18
- state: Record< string, TState > = {},
19
- action
20
- ) => {
21
- // Retrieve subkey from action. Do not track if undefined; useful for cases
22
- // where reducer is scoped by action shape.
23
- const key = action[ actionProperty ];
24
- if ( key === undefined ) {
25
- return state;
26
- }
13
+ export const onSubKey =
14
+ < TState extends unknown, TAction extends AnyAction >(
15
+ actionProperty: string
16
+ ) =>
17
+ (
18
+ reducer: Reducer< TState, TAction >
19
+ ): Reducer< Record< string, TState >, TAction > =>
20
+ ( state: Record< string, TState > = {}, action ) => {
21
+ // Retrieve subkey from action. Do not track if undefined; useful for cases
22
+ // where reducer is scoped by action shape.
23
+ const key = action[ actionProperty ];
24
+ if ( key === undefined ) {
25
+ return state;
26
+ }
27
27
 
28
- // Avoid updating state if unchanged. Note that this also accounts for a
29
- // reducer which returns undefined on a key which is not yet tracked.
30
- const nextKeyState = reducer( state[ key ], action );
31
- if ( nextKeyState === state[ key ] ) {
32
- return state;
33
- }
28
+ // Avoid updating state if unchanged. Note that this also accounts for a
29
+ // reducer which returns undefined on a key which is not yet tracked.
30
+ const nextKeyState = reducer( state[ key ], action );
31
+ if ( nextKeyState === state[ key ] ) {
32
+ return state;
33
+ }
34
34
 
35
- return {
36
- ...state,
37
- [ key ]: nextKeyState,
35
+ return {
36
+ ...state,
37
+ [ key ]: nextKeyState,
38
+ };
38
39
  };
39
- };
40
40
 
41
41
  /**
42
42
  * Normalize selector argument array by defaulting `undefined` value to an empty array
@@ -32,9 +32,10 @@ describe( 'controls', () => {
32
32
  },
33
33
  controls: {
34
34
  DISPATCH: createRegistryControl(
35
- ( reg ) => ( { store, action } ) => {
36
- return reg.dispatch( store )[ action ]();
37
- }
35
+ ( reg ) =>
36
+ ( { store, action } ) => {
37
+ return reg.dispatch( store )[ action ]();
38
+ }
38
39
  ),
39
40
  },
40
41
  } );
package/src/registry.js CHANGED
@@ -93,14 +93,16 @@ export function createRegistry( storeConfigs = {}, parent = null ) {
93
93
  return store.getSelectors();
94
94
  }
95
95
 
96
- return parent && parent.select( storeName );
96
+ return parent?.select( storeName );
97
97
  }
98
98
 
99
99
  function __unstableMarkListeningStores( callback, ref ) {
100
100
  listeningStores.clear();
101
- const result = callback.call( this );
102
- ref.current = Array.from( listeningStores );
103
- return result;
101
+ try {
102
+ return callback.call( this );
103
+ } finally {
104
+ ref.current = Array.from( listeningStores );
105
+ }
104
106
  }
105
107
 
106
108
  /**
@@ -127,6 +129,29 @@ export function createRegistry( storeConfigs = {}, parent = null ) {
127
129
  return parent && parent.resolveSelect( storeName );
128
130
  }
129
131
 
132
+ /**
133
+ * Given the name of a registered store, returns an object containing the store's
134
+ * selectors pre-bound to state so that you only need to supply additional arguments,
135
+ * and modified so that they throw promises in case the selector is not resolved yet.
136
+ *
137
+ * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
138
+ * or the store descriptor.
139
+ *
140
+ * @return {Object} Object containing the store's suspense-wrapped selectors.
141
+ */
142
+ function suspendSelect( storeNameOrDescriptor ) {
143
+ const storeName = isObject( storeNameOrDescriptor )
144
+ ? storeNameOrDescriptor.name
145
+ : storeNameOrDescriptor;
146
+ listeningStores.add( storeName );
147
+ const store = stores[ storeName ];
148
+ if ( store ) {
149
+ return store.getSuspendSelectors();
150
+ }
151
+
152
+ return parent && parent.suspendSelect( storeName );
153
+ }
154
+
130
155
  /**
131
156
  * Returns the available actions for a part of the state.
132
157
  *
@@ -276,6 +301,7 @@ export function createRegistry( storeConfigs = {}, parent = null ) {
276
301
  subscribe,
277
302
  select,
278
303
  resolveSelect,
304
+ suspendSelect,
279
305
  dispatch,
280
306
  use,
281
307
  register,
@@ -20,42 +20,41 @@ import coreDataStore from './store';
20
20
  *
21
21
  * @return {Function} Middleware function.
22
22
  */
23
- const createResolversCacheMiddleware = ( registry, reducerKey ) => () => (
24
- next
25
- ) => ( action ) => {
26
- const resolvers = registry
27
- .select( coreDataStore )
28
- .getCachedResolvers( reducerKey );
29
- Object.entries( resolvers ).forEach(
30
- ( [ selectorName, resolversByArgs ] ) => {
31
- const resolver = get( registry.stores, [
32
- reducerKey,
33
- 'resolvers',
34
- selectorName,
35
- ] );
36
- if ( ! resolver || ! resolver.shouldInvalidate ) {
37
- return;
38
- }
39
- resolversByArgs.forEach( ( value, args ) => {
40
- // resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.
41
- // If the value is "finished" or "error" it means this resolver has finished its resolution which means we need
42
- // to invalidate it, if it's true it means it's inflight and the invalidation is not necessary.
43
- if (
44
- ( value?.status !== 'finished' &&
45
- value?.status !== 'error' ) ||
46
- ! resolver.shouldInvalidate( action, ...args )
47
- ) {
23
+ const createResolversCacheMiddleware =
24
+ ( registry, reducerKey ) => () => ( next ) => ( action ) => {
25
+ const resolvers = registry
26
+ .select( coreDataStore )
27
+ .getCachedResolvers( reducerKey );
28
+ Object.entries( resolvers ).forEach(
29
+ ( [ selectorName, resolversByArgs ] ) => {
30
+ const resolver = get( registry.stores, [
31
+ reducerKey,
32
+ 'resolvers',
33
+ selectorName,
34
+ ] );
35
+ if ( ! resolver || ! resolver.shouldInvalidate ) {
48
36
  return;
49
37
  }
38
+ resolversByArgs.forEach( ( value, args ) => {
39
+ // resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.
40
+ // If the value is "finished" or "error" it means this resolver has finished its resolution which means we need
41
+ // to invalidate it, if it's true it means it's inflight and the invalidation is not necessary.
42
+ if (
43
+ ( value?.status !== 'finished' &&
44
+ value?.status !== 'error' ) ||
45
+ ! resolver.shouldInvalidate( action, ...args )
46
+ ) {
47
+ return;
48
+ }
50
49
 
51
- // Trigger cache invalidation
52
- registry
53
- .dispatch( coreDataStore )
54
- .invalidateResolution( reducerKey, selectorName, args );
55
- } );
56
- }
57
- );
58
- return next( action );
59
- };
50
+ // Trigger cache invalidation
51
+ registry
52
+ .dispatch( coreDataStore )
53
+ .invalidateResolution( reducerKey, selectorName, args );
54
+ } );
55
+ }
56
+ );
57
+ return next( action );
58
+ };
60
59
 
61
60
  export default createResolversCacheMiddleware;
@@ -1,13 +1,17 @@
1
1
  const coreDataStore = {
2
2
  name: 'core/data',
3
3
  instantiate( registry ) {
4
- const getCoreDataSelector = ( selectorName ) => ( key, ...args ) => {
5
- return registry.select( key )[ selectorName ]( ...args );
6
- };
4
+ const getCoreDataSelector =
5
+ ( selectorName ) =>
6
+ ( key, ...args ) => {
7
+ return registry.select( key )[ selectorName ]( ...args );
8
+ };
7
9
 
8
- const getCoreDataAction = ( actionName ) => ( key, ...args ) => {
9
- return registry.dispatch( key )[ actionName ]( ...args );
10
- };
10
+ const getCoreDataAction =
11
+ ( actionName ) =>
12
+ ( key, ...args ) => {
13
+ return registry.dispatch( key )[ actionName ]( ...args );
14
+ };
11
15
 
12
16
  return {
13
17
  getSelectors() {
@@ -553,8 +553,8 @@ describe( 'createRegistry', () => {
553
553
 
554
554
  it( 'should run the registry selectors properly', () => {
555
555
  const selector1 = () => 'result1';
556
- const selector2 = createRegistrySelector( ( select ) => () =>
557
- select( 'reducer1' ).selector1()
556
+ const selector2 = createRegistrySelector(
557
+ ( select ) => () => select( 'reducer1' ).selector1()
558
558
  );
559
559
  registry.registerStore( 'reducer1', {
560
560
  reducer: () => 'state1',
@@ -576,8 +576,8 @@ describe( 'createRegistry', () => {
576
576
 
577
577
  it( 'should run the registry selector from a non-registry selector', () => {
578
578
  const selector1 = () => 'result1';
579
- const selector2 = createRegistrySelector( ( select ) => () =>
580
- select( 'reducer1' ).selector1()
579
+ const selector2 = createRegistrySelector(
580
+ ( select ) => () => select( 'reducer1' ).selector1()
581
581
  );
582
582
  const selector3 = () => selector2();
583
583
  registry.registerStore( 'reducer1', {
@@ -656,9 +656,8 @@ describe( 'createRegistry', () => {
656
656
  const secondListener = jest.fn();
657
657
 
658
658
  subscribeWithUnsubscribe( firstListener );
659
- const secondUnsubscribe = subscribeWithUnsubscribe(
660
- secondListener
661
- );
659
+ const secondUnsubscribe =
660
+ subscribeWithUnsubscribe( secondListener );
662
661
 
663
662
  store.dispatch( { type: 'dummy' } );
664
663
 
package/src/types.ts CHANGED
@@ -51,11 +51,10 @@ export interface DataEmitter {
51
51
 
52
52
  // Type Helpers.
53
53
 
54
- type ActionCreatorsOf<
55
- Config extends AnyConfig
56
- > = Config extends ReduxStoreConfig< any, infer ActionCreators, any >
57
- ? { [ name in keyof ActionCreators ]: Function | Generator }
58
- : never;
54
+ type ActionCreatorsOf< Config extends AnyConfig > =
55
+ Config extends ReduxStoreConfig< any, infer ActionCreators, any >
56
+ ? { [ name in keyof ActionCreators ]: Function | Generator }
57
+ : never;
59
58
 
60
59
  type SelectorsOf< Config extends AnyConfig > = Config extends ReduxStoreConfig<
61
60
  any,
package/tsconfig.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "compilerOptions": {
4
4
  "rootDir": "src",
5
5
  "declarationDir": "build-types",
6
- "noUnusedParameters": false,
6
+ "noUnusedParameters": false
7
7
  },
8
8
  "references": [
9
9
  { "path": "../compose" },
@@ -17,6 +17,6 @@
17
17
  "src/redux-store/metadata/**/*",
18
18
  "src/promise-middleware.js",
19
19
  "src/utils",
20
- "src/*.ts"
20
+ "src/*.ts"
21
21
  ]
22
22
  }
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","./src/redux-store/metadata/actions.js","./src/redux-store/metadata/equivalent-key-map.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/redux/index.d.ts","./src/redux-store/metadata/utils.ts","./src/redux-store/metadata/reducer.ts","./src/redux-store/metadata/selectors.js","../../node_modules/is-promise/index.d.ts","./src/promise-middleware.js","./src/types.ts","./src/utils/emitter.js"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"c67951274199df6c887191adafac1c605901c3f6ce123351225e2e93c4282de4","8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"7c0e0a014730cc0c78fcf150c12bf07b47493a4b66c0809bdd8ba793a9752b74","c79043d0c35ecd15afb17e476816872357df76446071c6b754828dea6e910ab7","ffb454554054fdfa52dbe72f6a0f5320cfeff52452f4e8deddcfc3f5bba80f82","5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24","9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","28dc10cd60a6837eb8ee12304195f0da811f0b879ecc9135e4a6188b68709b14","412e9398be155d644b609b06bb2d0b6f99d86bf3d7db81b27a357ad8df07e0c0"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"importsNotUsedAsValues":2,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[47,49,50,51,52,53,54,55,56,57,58,59],[47,48,50,51,52,53,54,55,56,57,58,59],[48,49,50,51,52,53,54,55,56,57,58,59],[47,48,49,51,52,53,54,55,56,57,58,59],[47,48,49,50,52,53,54,55,56,57,58,59],[47,48,49,50,51,53,54,55,56,57,58,59],[47,48,49,50,51,52,54,55,56,57,58,59],[47,48,49,50,51,52,53,55,56,57,58,59],[47,48,49,50,51,52,53,54,56,57,58,59],[47,48,49,50,51,52,53,54,55,57,58,59],[47,48,49,50,51,52,53,54,55,56,58,59],[47,48,49,50,51,52,53,54,55,56,57,59],[47,48,49,50,51,52,53,54,55,56,57,58],[60,64],[45,46,59,60,61],[59,61,62],[60],[66]],"referencedMap":[[48,1],[49,2],[47,3],[50,4],[51,5],[52,6],[53,7],[54,8],[55,9],[56,10],[57,11],[58,12],[59,13],[65,14],[62,15],[63,16],[61,17],[67,18]],"exportedModulesMap":[[48,1],[49,2],[47,3],[50,4],[51,5],[52,6],[53,7],[54,8],[55,9],[56,10],[57,11],[58,12],[59,13],[65,14],[62,15],[63,16],[61,17],[67,18]],"semanticDiagnosticsPerFile":[48,49,47,50,51,52,53,54,55,56,57,58,59,64,60,10,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,40,36,37,38,39,8,41,42,43,1,9,44,65,45,46,62,63,61,66,67]},"version":"4.4.2"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","./src/redux-store/metadata/actions.js","./src/redux-store/metadata/equivalent-key-map.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/redux/index.d.ts","./src/redux-store/metadata/utils.ts","./src/redux-store/metadata/reducer.ts","./src/redux-store/metadata/selectors.js","../../node_modules/is-promise/index.d.ts","./src/promise-middleware.js","./src/types.ts","./src/utils/emitter.js"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"c67951274199df6c887191adafac1c605901c3f6ce123351225e2e93c4282de4","8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"318affc58742934c99481fcb8043bba8b5a5caaf07f5971c34d00b5dc154da66","c79043d0c35ecd15afb17e476816872357df76446071c6b754828dea6e910ab7","ffb454554054fdfa52dbe72f6a0f5320cfeff52452f4e8deddcfc3f5bba80f82","5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24","9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","5b3fd806ef40b87048042c7039f1f7520fb378886dc8a565d5428a6085e8d1ae","412e9398be155d644b609b06bb2d0b6f99d86bf3d7db81b27a357ad8df07e0c0"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"importsNotUsedAsValues":2,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[47,49,50,51,52,53,54,55,56,57,58,59],[47,48,50,51,52,53,54,55,56,57,58,59],[48,49,50,51,52,53,54,55,56,57,58,59],[47,48,49,51,52,53,54,55,56,57,58,59],[47,48,49,50,52,53,54,55,56,57,58,59],[47,48,49,50,51,53,54,55,56,57,58,59],[47,48,49,50,51,52,54,55,56,57,58,59],[47,48,49,50,51,52,53,55,56,57,58,59],[47,48,49,50,51,52,53,54,56,57,58,59],[47,48,49,50,51,52,53,54,55,57,58,59],[47,48,49,50,51,52,53,54,55,56,58,59],[47,48,49,50,51,52,53,54,55,56,57,59],[47,48,49,50,51,52,53,54,55,56,57,58],[60,64],[45,46,59,60,61],[59,61,62],[60],[66]],"referencedMap":[[48,1],[49,2],[47,3],[50,4],[51,5],[52,6],[53,7],[54,8],[55,9],[56,10],[57,11],[58,12],[59,13],[65,14],[62,15],[63,16],[61,17],[67,18]],"exportedModulesMap":[[48,1],[49,2],[47,3],[50,4],[51,5],[52,6],[53,7],[54,8],[55,9],[56,10],[57,11],[58,12],[59,13],[65,14],[62,15],[63,16],[61,17],[67,18]],"semanticDiagnosticsPerFile":[48,49,47,50,51,52,53,54,55,56,57,58,59,64,60,10,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,40,36,37,38,39,8,41,42,43,1,9,44,65,45,46,62,63,61,66,67]},"version":"4.4.2"}