@wordpress/data 10.32.0 → 10.32.1-next.47f435fc9.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 (157) hide show
  1. package/build/components/async-mode-provider/context.js +35 -54
  2. package/build/components/async-mode-provider/context.js.map +7 -1
  3. package/build/components/async-mode-provider/index.js +40 -25
  4. package/build/components/async-mode-provider/index.js.map +7 -1
  5. package/build/components/async-mode-provider/use-async-mode.js +25 -16
  6. package/build/components/async-mode-provider/use-async-mode.js.map +7 -1
  7. package/build/components/registry-provider/context.js +46 -64
  8. package/build/components/registry-provider/context.js.map +7 -1
  9. package/build/components/registry-provider/index.js +40 -25
  10. package/build/components/registry-provider/index.js.map +7 -1
  11. package/build/components/registry-provider/use-registry.js +25 -55
  12. package/build/components/registry-provider/use-registry.js.map +7 -1
  13. package/build/components/use-dispatch/index.js +38 -17
  14. package/build/components/use-dispatch/index.js.map +7 -1
  15. package/build/components/use-dispatch/use-dispatch-with-map.js +59 -44
  16. package/build/components/use-dispatch/use-dispatch-with-map.js.map +7 -1
  17. package/build/components/use-dispatch/use-dispatch.js +36 -71
  18. package/build/components/use-dispatch/use-dispatch.js.map +7 -1
  19. package/build/components/use-select/index.js +79 -208
  20. package/build/components/use-select/index.js.map +7 -1
  21. package/build/components/with-dispatch/index.js +34 -107
  22. package/build/components/with-dispatch/index.js.map +7 -1
  23. package/build/components/with-registry/index.js +30 -30
  24. package/build/components/with-registry/index.js.map +7 -1
  25. package/build/components/with-select/index.js +44 -67
  26. package/build/components/with-select/index.js.map +7 -1
  27. package/build/controls.js +49 -110
  28. package/build/controls.js.map +7 -1
  29. package/build/create-selector.js +36 -11
  30. package/build/create-selector.js.map +7 -1
  31. package/build/default-registry.js +24 -10
  32. package/build/default-registry.js.map +7 -1
  33. package/build/dispatch.js +38 -31
  34. package/build/dispatch.js.map +7 -1
  35. package/build/factory.js +29 -85
  36. package/build/factory.js.map +7 -1
  37. package/build/index.js +114 -301
  38. package/build/index.js.map +7 -1
  39. package/build/lock-unlock.js +31 -14
  40. package/build/lock-unlock.js.map +7 -1
  41. package/build/plugins/index.js +36 -11
  42. package/build/plugins/index.js.map +7 -1
  43. package/build/plugins/persistence/index.js +74 -139
  44. package/build/plugins/persistence/index.js.map +7 -1
  45. package/build/plugins/persistence/storage/default.js +37 -18
  46. package/build/plugins/persistence/storage/default.js.map +7 -1
  47. package/build/plugins/persistence/storage/object.js +24 -7
  48. package/build/plugins/persistence/storage/object.js.map +7 -1
  49. package/build/promise-middleware.js +37 -20
  50. package/build/promise-middleware.js.map +7 -1
  51. package/build/redux-store/combine-reducers.js +26 -5
  52. package/build/redux-store/combine-reducers.js.map +7 -1
  53. package/build/redux-store/index.js +221 -331
  54. package/build/redux-store/index.js.map +7 -1
  55. package/build/redux-store/metadata/actions.js +51 -112
  56. package/build/redux-store/metadata/actions.js.map +7 -1
  57. package/build/redux-store/metadata/equivalent-key-map.d.js +1 -1
  58. package/build/redux-store/metadata/equivalent-key-map.d.js.map +7 -1
  59. package/build/redux-store/metadata/reducer.js +111 -115
  60. package/build/redux-store/metadata/reducer.js.map +7 -1
  61. package/build/redux-store/metadata/selectors.js +109 -181
  62. package/build/redux-store/metadata/selectors.js.map +7 -1
  63. package/build/redux-store/metadata/utils.js +32 -35
  64. package/build/redux-store/metadata/utils.js.map +7 -1
  65. package/build/redux-store/thunk-middleware.js +24 -7
  66. package/build/redux-store/thunk-middleware.js.map +7 -1
  67. package/build/registry.js +94 -198
  68. package/build/registry.js.map +7 -1
  69. package/build/resolvers-cache-middleware.js +26 -27
  70. package/build/resolvers-cache-middleware.js.map +7 -1
  71. package/build/select.js +38 -31
  72. package/build/select.js.map +7 -1
  73. package/build/store/index.js +52 -16
  74. package/build/store/index.js.map +7 -1
  75. package/build/types.js +16 -5
  76. package/build/types.js.map +7 -1
  77. package/build/utils/emitter.js +33 -16
  78. package/build/utils/emitter.js.map +7 -1
  79. package/build-module/components/async-mode-provider/context.js +12 -49
  80. package/build-module/components/async-mode-provider/context.js.map +7 -1
  81. package/build-module/components/async-mode-provider/index.js +8 -3
  82. package/build-module/components/async-mode-provider/index.js.map +7 -1
  83. package/build-module/components/async-mode-provider/use-async-mode.js +7 -11
  84. package/build-module/components/async-mode-provider/use-async-mode.js.map +7 -1
  85. package/build-module/components/registry-provider/context.js +13 -58
  86. package/build-module/components/registry-provider/context.js.map +7 -1
  87. package/build-module/components/registry-provider/index.js +8 -3
  88. package/build-module/components/registry-provider/index.js.map +7 -1
  89. package/build-module/components/registry-provider/use-registry.js +7 -51
  90. package/build-module/components/registry-provider/use-registry.js.map +7 -1
  91. package/build-module/components/use-dispatch/index.js +7 -3
  92. package/build-module/components/use-dispatch/index.js.map +7 -1
  93. package/build-module/components/use-dispatch/use-dispatch-with-map.js +27 -35
  94. package/build-module/components/use-dispatch/use-dispatch-with-map.js.map +7 -1
  95. package/build-module/components/use-dispatch/use-dispatch.js +8 -66
  96. package/build-module/components/use-dispatch/use-dispatch.js.map +7 -1
  97. package/build-module/components/use-select/index.js +45 -193
  98. package/build-module/components/use-select/index.js.map +7 -1
  99. package/build-module/components/with-dispatch/index.js +16 -104
  100. package/build-module/components/with-dispatch/index.js.map +7 -1
  101. package/build-module/components/with-registry/index.js +12 -27
  102. package/build-module/components/with-registry/index.js.map +7 -1
  103. package/build-module/components/with-select/index.js +16 -63
  104. package/build-module/components/with-select/index.js.map +7 -1
  105. package/build-module/controls.js +25 -105
  106. package/build-module/controls.js.map +7 -1
  107. package/build-module/create-selector.js +5 -8
  108. package/build-module/create-selector.js.map +7 -1
  109. package/build-module/default-registry.js +6 -6
  110. package/build-module/default-registry.js.map +7 -1
  111. package/build-module/dispatch.js +6 -27
  112. package/build-module/dispatch.js.map +7 -1
  113. package/build-module/factory.js +8 -82
  114. package/build-module/factory.js.map +7 -1
  115. package/build-module/index.js +62 -185
  116. package/build-module/index.js.map +7 -1
  117. package/build-module/lock-unlock.js +8 -7
  118. package/build-module/lock-unlock.js.map +7 -1
  119. package/build-module/plugins/index.js +5 -2
  120. package/build-module/plugins/index.js.map +7 -1
  121. package/build-module/plugins/persistence/index.js +38 -129
  122. package/build-module/plugins/persistence/index.js.map +7 -1
  123. package/build-module/plugins/persistence/storage/default.js +8 -11
  124. package/build-module/plugins/persistence/storage/default.js.map +7 -1
  125. package/build-module/plugins/persistence/storage/object.js +6 -3
  126. package/build-module/plugins/persistence/storage/object.js.map +7 -1
  127. package/build-module/promise-middleware.js +8 -14
  128. package/build-module/promise-middleware.js.map +7 -1
  129. package/build-module/redux-store/combine-reducers.js +5 -2
  130. package/build-module/redux-store/combine-reducers.js.map +7 -1
  131. package/build-module/redux-store/index.js +180 -310
  132. package/build-module/redux-store/index.js.map +7 -1
  133. package/build-module/redux-store/metadata/actions.js +30 -109
  134. package/build-module/redux-store/metadata/actions.js.map +7 -1
  135. package/build-module/redux-store/metadata/equivalent-key-map.d.js +1 -2
  136. package/build-module/redux-store/metadata/equivalent-key-map.d.js.map +7 -1
  137. package/build-module/redux-store/metadata/reducer.js +83 -108
  138. package/build-module/redux-store/metadata/reducer.js.map +7 -1
  139. package/build-module/redux-store/metadata/selectors.js +76 -175
  140. package/build-module/redux-store/metadata/selectors.js.map +7 -1
  141. package/build-module/redux-store/metadata/utils.js +10 -30
  142. package/build-module/redux-store/metadata/utils.js.map +7 -1
  143. package/build-module/redux-store/thunk-middleware.js +7 -4
  144. package/build-module/redux-store/thunk-middleware.js.map +7 -1
  145. package/build-module/registry.js +56 -187
  146. package/build-module/registry.js.map +7 -1
  147. package/build-module/resolvers-cache-middleware.js +8 -23
  148. package/build-module/resolvers-cache-middleware.js.map +7 -1
  149. package/build-module/select.js +6 -27
  150. package/build-module/select.js.map +7 -1
  151. package/build-module/store/index.js +34 -12
  152. package/build-module/store/index.js.map +7 -1
  153. package/build-module/types.js +1 -2
  154. package/build-module/types.js.map +7 -1
  155. package/build-module/utils/emitter.js +12 -13
  156. package/build-module/utils/emitter.js.map +7 -1
  157. package/package.json +17 -10
@@ -1 +1,7 @@
1
- {"version":3,"names":["createStore","applyMiddleware","EquivalentKeyMap","createReduxRoutineMiddleware","compose","combineReducers","builtinControls","lock","promise","createResolversCacheMiddleware","createThunkMiddleware","metadataReducer","metadataSelectors","metadataActions","trimUndefinedValues","array","result","i","length","undefined","splice","mapValues","obj","callback","Object","fromEntries","entries","map","key","value","devToolsReplacer","state","Map","window","HTMLElement","createResolversCache","cache","isRunning","selectorName","args","get","clear","delete","markAsRunning","set","createBindingCache","getItem","bindItem","WeakMap","itemName","item","boundItem","createPrivateProxy","publicItems","privateItems","Proxy","target","Reflect","createReduxStore","options","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","name","instantiate","registry","listeners","Set","reducer","thunkArgs","dispatch","thunkDispatch","select","thunkSelect","resolveSelect","resolveSelectors","store","instantiateReduxStore","resolversCache","bindAction","action","Promise","resolve","allActions","resolvers","mapResolver","bindSelector","selector","isRegistrySelector","boundSelector","normalize","__unstableOriginalGetState","root","__unstableNormalizeArgs","resolver","hasResolver","mapSelectorWithResolver","boundMetadataSelectors","bindMetadataSelector","metaDataSelector","selectorArgs","targetSelector","metadata","boundSelectors","boundPrivateSelectors","allSelectors","keys","bindResolveSelector","mapResolveSelector","allResolveSelectors","bindSuspendSelector","mapSuspendSelector","suspendSelectors","allSuspendSelectors","getSelectors","getActions","getResolveSelectors","getSuspendSelectors","getState","subscribe","listener","add","lastState","hasChanged","controls","normalizedControls","control","isRegistryControl","middlewares","enhancers","__REDUX_DEVTOOLS_EXTENSION__","push","instanceId","serialize","replacer","initialState","enhancedReducer","apply","reject","hasFinished","hasFinishedResolution","finalize","hasFailed","hasResolutionFailed","error","getResolutionError","getResult","unsubscribe","fulfill","fulfillSelector","isFulfilled","hasStartedResolution","setTimeout","startResolution","finishResolution","failResolution","selectorResolver"],"sources":["@wordpress/data/src/redux-store/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { combineReducers } from './combine-reducers';\nimport { builtinControls } from '../controls';\nimport { lock } from '../lock-unlock';\nimport promise from '../promise-middleware';\nimport createResolversCacheMiddleware from '../resolvers-cache-middleware';\nimport createThunkMiddleware from './thunk-middleware';\nimport metadataReducer from './metadata/reducer';\nimport * as metadataSelectors from './metadata/selectors';\nimport * as metadataActions from './metadata/actions';\n\nexport { combineReducers };\n\n/** @typedef {import('../types').DataRegistry} DataRegistry */\n/** @typedef {import('../types').ListenerFunction} ListenerFunction */\n/**\n * @typedef {import('../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../types').AnyConfig} C\n */\n/**\n * @typedef {import('../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n */\n\nconst trimUndefinedValues = ( array ) => {\n\tconst result = [ ...array ];\n\tfor ( let i = result.length - 1; i >= 0; i-- ) {\n\t\tif ( result[ i ] === undefined ) {\n\t\t\tresult.splice( i, 1 );\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Creates a new object with the same keys, but with `callback()` called as\n * a transformer function on each of the values.\n *\n * @param {Object} obj The object to transform.\n * @param {Function} callback The function to transform each object value.\n * @return {Array} Transformed object.\n */\nconst mapValues = ( obj, callback ) =>\n\tObject.fromEntries(\n\t\tObject.entries( obj ?? {} ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tcallback( value, key ),\n\t\t] )\n\t);\n\n// Convert non serializable types to plain objects\nconst devToolsReplacer = ( key, state ) => {\n\tif ( state instanceof Map ) {\n\t\treturn Object.fromEntries( state );\n\t}\n\n\tif ( state instanceof window.HTMLElement ) {\n\t\treturn null;\n\t}\n\n\treturn state;\n};\n\n/**\n * Create a cache to track whether resolvers started running or not.\n *\n * @return {Object} Resolvers Cache.\n */\nfunction createResolversCache() {\n\tconst cache = {};\n\treturn {\n\t\tisRunning( selectorName, args ) {\n\t\t\treturn (\n\t\t\t\tcache[ selectorName ] &&\n\t\t\t\tcache[ selectorName ].get( trimUndefinedValues( args ) )\n\t\t\t);\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( trimUndefinedValues( args ) );\n\t\t\t}\n\t\t},\n\n\t\tmarkAsRunning( selectorName, args ) {\n\t\t\tif ( ! cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ] = new EquivalentKeyMap();\n\t\t\t}\n\n\t\t\tcache[ selectorName ].set( trimUndefinedValues( args ), true );\n\t\t},\n\t};\n}\n\nfunction createBindingCache( getItem, bindItem ) {\n\tconst cache = new WeakMap();\n\n\treturn {\n\t\tget( itemName ) {\n\t\t\tconst item = getItem( itemName );\n\t\t\tif ( ! item ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tlet boundItem = cache.get( item );\n\t\t\tif ( ! boundItem ) {\n\t\t\t\tboundItem = bindItem( item, itemName );\n\t\t\t\tcache.set( item, boundItem );\n\t\t\t}\n\t\t\treturn boundItem;\n\t\t},\n\t};\n}\n\nfunction createPrivateProxy( publicItems, privateItems ) {\n\treturn new Proxy( publicItems, {\n\t\tget: ( target, itemName ) =>\n\t\t\tprivateItems.get( itemName ) || Reflect.get( target, itemName ),\n\t} );\n}\n\n/**\n * Creates a data store descriptor for the provided Redux store configuration containing\n * properties describing reducer, actions, selectors, controls and resolvers.\n *\n * @example\n * ```js\n * import { createReduxStore } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * ```\n *\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n * @param {string} key Unique namespace identifier.\n * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\tconst privateActions = {};\n\tconst privateSelectors = {};\n\tconst privateRegistrationFunctions = {\n\t\tprivateActions,\n\t\tregisterPrivateActions: ( actions ) => {\n\t\t\tObject.assign( privateActions, actions );\n\t\t},\n\t\tprivateSelectors,\n\t\tregisterPrivateSelectors: ( selectors ) => {\n\t\t\tObject.assign( privateSelectors, selectors );\n\t\t},\n\t};\n\tconst storeDescriptor = {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\t/**\n\t\t\t * Stores listener functions registered with `subscribe()`.\n\t\t\t *\n\t\t\t * When functions register to listen to store changes with\n\t\t\t * `subscribe()` they get added here. Although Redux offers\n\t\t\t * its own `subscribe()` function directly, by wrapping the\n\t\t\t * subscription in this store instance it's possible to\n\t\t\t * optimize checking if the state has changed before calling\n\t\t\t * each listener.\n\t\t\t *\n\t\t\t * @type {Set<ListenerFunction>}\n\t\t\t */\n\t\t\tconst listeners = new Set();\n\t\t\tconst reducer = options.reducer;\n\n\t\t\t// Object that every thunk function receives as the first argument. It contains the\n\t\t\t// `registry`, `dispatch`, `select` and `resolveSelect` fields. Some of them are\n\t\t\t// constructed as getters to avoid circular dependencies.\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn thunkDispatch;\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn thunkSelect;\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn resolveSelectors;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst store = instantiateReduxStore(\n\t\t\t\tkey,\n\t\t\t\toptions,\n\t\t\t\tregistry,\n\t\t\t\tthunkArgs\n\t\t\t);\n\n\t\t\t// Expose the private registration functions on the store\n\t\t\t// so they can be copied to a sub registry in registry.js.\n\t\t\tlock( store, privateRegistrationFunctions );\n\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\t// Binds an action creator (`action`) to the `store`, making it a callable function.\n\t\t\t// These are the functions that are returned by `useDispatch`, for example.\n\t\t\t// It always returns a `Promise`, although actions are not always async. That's an\n\t\t\t// unfortunate backward compatibility measure.\n\t\t\tfunction bindAction( action ) {\n\t\t\t\treturn ( ...args ) =>\n\t\t\t\t\tPromise.resolve( store.dispatch( action( ...args ) ) );\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Object with all public actions, both metadata and store actions.\n\t\t\t */\n\t\t\tconst actions = {\n\t\t\t\t...mapValues( metadataActions, bindAction ),\n\t\t\t\t...mapValues( options.actions, bindAction ),\n\t\t\t};\n\n\t\t\t// Object with both public and private actions. Private actions are accessed through a proxy,\n\t\t\t// which looks them up in real time on the `privateActions` object. That's because private\n\t\t\t// actions can be registered at any time with `registerPrivateActions`. Also once a private\n\t\t\t// action creator is bound to the store, it is cached to give it a stable identity.\n\t\t\tconst allActions = createPrivateProxy(\n\t\t\t\tactions,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => privateActions[ name ],\n\t\t\t\t\tbindAction\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// An object that implements the `dispatch` object that is passed to thunk functions.\n\t\t\t// It is callable (`dispatch( action )`) and also has methods (`dispatch.foo()`) that\n\t\t\t// correspond to bound registered actions, both public and private. Implemented with the proxy\n\t\t\t// `get` method, delegating to `allActions`.\n\t\t\tconst thunkDispatch = new Proxy(\n\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t{ get: ( target, name ) => allActions[ name ] }\n\t\t\t);\n\n\t\t\t// To the public `actions` object, add the \"locked\" `allActions` object. When used,\n\t\t\t// `unlock( actions )` will return `allActions`, implementing a way how to get at the private actions.\n\t\t\tlock( actions, allActions );\n\n\t\t\t// If we have selector resolvers, convert them to a normalized form.\n\t\t\tconst resolvers = options.resolvers\n\t\t\t\t? mapValues( options.resolvers, mapResolver )\n\t\t\t\t: {};\n\n\t\t\t// Bind a selector to the store. Call the selector with the current state, correct registry,\n\t\t\t// and if there is a resolver, attach the resolver logic to the selector.\n\t\t\tfunction bindSelector( selector, selectorName ) {\n\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\tselector.registry = registry;\n\t\t\t\t}\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\targs = normalize( selector, args );\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t// Before calling the selector, switch to the correct registry.\n\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t}\n\t\t\t\t\treturn selector( state.root, ...args );\n\t\t\t\t};\n\n\t\t\t\t// Expose normalization method on the bound selector\n\t\t\t\t// in order that it can be called when fulfilling\n\t\t\t\t// the resolver.\n\t\t\t\tboundSelector.__unstableNormalizeArgs =\n\t\t\t\t\tselector.__unstableNormalizeArgs;\n\n\t\t\t\tconst resolver = resolvers[ selectorName ];\n\n\t\t\t\tif ( ! resolver ) {\n\t\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\t\treturn boundSelector;\n\t\t\t\t}\n\n\t\t\t\treturn mapSelectorWithResolver(\n\t\t\t\t\tboundSelector,\n\t\t\t\t\tselectorName,\n\t\t\t\t\tresolver,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache,\n\t\t\t\t\tboundMetadataSelectors\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Metadata selectors are bound differently: different state (`state.metadata`), no resolvers,\n\t\t\t// normalization depending on the target selector.\n\t\t\tfunction bindMetadataSelector( metaDataSelector ) {\n\t\t\t\tconst boundSelector = (\n\t\t\t\t\tselectorName,\n\t\t\t\t\tselectorArgs,\n\t\t\t\t\t...args\n\t\t\t\t) => {\n\t\t\t\t\t// Normalize the arguments passed to the target selector.\n\t\t\t\t\tif ( selectorName ) {\n\t\t\t\t\t\tconst targetSelector =\n\t\t\t\t\t\t\toptions.selectors?.[ selectorName ];\n\t\t\t\t\t\tif ( targetSelector ) {\n\t\t\t\t\t\t\tselectorArgs = normalize(\n\t\t\t\t\t\t\t\ttargetSelector,\n\t\t\t\t\t\t\t\tselectorArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\n\t\t\t\t\treturn metaDataSelector(\n\t\t\t\t\t\tstate.metadata,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\tselectorArgs,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\treturn boundSelector;\n\t\t\t}\n\n\t\t\t// Perform binding of both metadata and store selectors and combine them in one\n\t\t\t// `selectors` object. These are all public selectors of the store.\n\t\t\tconst boundMetadataSelectors = mapValues(\n\t\t\t\tmetadataSelectors,\n\t\t\t\tbindMetadataSelector\n\t\t\t);\n\n\t\t\tconst boundSelectors = mapValues( options.selectors, bindSelector );\n\n\t\t\tconst selectors = {\n\t\t\t\t...boundMetadataSelectors,\n\t\t\t\t...boundSelectors,\n\t\t\t};\n\n\t\t\t// Cache of bould private selectors. They are bound only when first accessed, because\n\t\t\t// new private selectors can be registered at any time (with `registerPrivateSelectors`).\n\t\t\t// Once bound, they are cached to give them a stable identity.\n\t\t\tconst boundPrivateSelectors = createBindingCache(\n\t\t\t\t( name ) => privateSelectors[ name ],\n\t\t\t\tbindSelector\n\t\t\t);\n\n\t\t\tconst allSelectors = createPrivateProxy(\n\t\t\t\tselectors,\n\t\t\t\tboundPrivateSelectors\n\t\t\t);\n\n\t\t\t// Pre-bind the private selectors that have been registered by the time of\n\t\t\t// instantiation, so that registry selectors are bound to the registry.\n\t\t\tfor ( const selectorName of Object.keys( privateSelectors ) ) {\n\t\t\t\tboundPrivateSelectors.get( selectorName );\n\t\t\t}\n\n\t\t\t// An object that implements the `select` object that is passed to thunk functions.\n\t\t\t// It is callable (`select( selector )`) and also has methods (`select.foo()`) that\n\t\t\t// correspond to bound registered selectors, both public and private. Implemented with the proxy\n\t\t\t// `get` method, delegating to `allSelectors`.\n\t\t\tconst thunkSelect = new Proxy(\n\t\t\t\t( selector ) => selector( store.__unstableOriginalGetState() ),\n\t\t\t\t{ get: ( target, name ) => allSelectors[ name ] }\n\t\t\t);\n\n\t\t\t// To the public `selectors` object, add the \"locked\" `allSelectors` object. When used,\n\t\t\t// `unlock( selectors )` will return `allSelectors`, implementing a way how to get at the private selectors.\n\t\t\tlock( selectors, allSelectors );\n\n\t\t\t// For each selector, create a function that calls the selector, waits for resolution and returns\n\t\t\t// a promise that resolves when the resolution is finished.\n\t\t\tconst bindResolveSelector = mapResolveSelector(\n\t\t\t\tstore,\n\t\t\t\tboundMetadataSelectors\n\t\t\t);\n\n\t\t\t// Now apply this function to all bound selectors, public and private. We are excluding\n\t\t\t// metadata selectors because they don't have resolvers.\n\t\t\tconst resolveSelectors = mapValues(\n\t\t\t\tboundSelectors,\n\t\t\t\tbindResolveSelector\n\t\t\t);\n\n\t\t\tconst allResolveSelectors = createPrivateProxy(\n\t\t\t\tresolveSelectors,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => boundPrivateSelectors.get( name ),\n\t\t\t\t\tbindResolveSelector\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Lock the selectors so that `unlock( resolveSelectors )` returns `allResolveSelectors`.\n\t\t\tlock( resolveSelectors, allResolveSelectors );\n\n\t\t\t// Now, in a way very similar to `bindResolveSelector`, we create a function that maps\n\t\t\t// selectors to functions that throw a suspense promise if not yet resolved.\n\t\t\tconst bindSuspendSelector = mapSuspendSelector(\n\t\t\t\tstore,\n\t\t\t\tboundMetadataSelectors\n\t\t\t);\n\n\t\t\tconst suspendSelectors = {\n\t\t\t\t...boundMetadataSelectors, // no special suspense behavior\n\t\t\t\t...mapValues( boundSelectors, bindSuspendSelector ),\n\t\t\t};\n\n\t\t\tconst allSuspendSelectors = createPrivateProxy(\n\t\t\t\tsuspendSelectors,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => boundPrivateSelectors.get( name ),\n\t\t\t\t\tbindSuspendSelector\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Lock the selectors so that `unlock( suspendSelectors )` returns 'allSuspendSelectors`.\n\t\t\tlock( suspendSelectors, allSuspendSelectors );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\n\t\t\tconst getSuspendSelectors = () => suspendSelectors;\n\n\t\t\t// We have some modules monkey-patching the store object\n\t\t\t// It's wrong to do so but until we refactor all of our effects to controls\n\t\t\t// We need to keep the same \"store\" instance here.\n\t\t\tstore.__unstableOriginalGetState = store.getState;\n\t\t\tstore.getState = () => store.__unstableOriginalGetState().root;\n\n\t\t\t// Customize subscribe behavior to call listeners only on effective change,\n\t\t\t// not on every dispatch.\n\t\t\tconst subscribe =\n\t\t\t\tstore &&\n\t\t\t\t( ( listener ) => {\n\t\t\t\t\tlisteners.add( listener );\n\n\t\t\t\t\treturn () => listeners.delete( listener );\n\t\t\t\t} );\n\n\t\t\tlet lastState = store.__unstableOriginalGetState();\n\t\t\tstore.subscribe( () => {\n\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\tlastState = state;\n\n\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\tfor ( const listener of listeners ) {\n\t\t\t\t\t\tlistener();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// This can be simplified to just { subscribe, getSelectors, getActions }\n\t\t\t// Once we remove the use function.\n\t\t\treturn {\n\t\t\t\treducer,\n\t\t\t\tstore,\n\t\t\t\tactions,\n\t\t\t\tselectors,\n\t\t\t\tresolvers,\n\t\t\t\tgetSelectors,\n\t\t\t\tgetResolveSelectors,\n\t\t\t\tgetSuspendSelectors,\n\t\t\t\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\n\n\t// Expose the private registration functions on the store\n\t// descriptor. That's a natural choice since that's where the\n\t// public actions and selectors are stored.\n\tlock( storeDescriptor, privateRegistrationFunctions );\n\n\treturn storeDescriptor;\n}\n\n/**\n * Creates a redux store for a namespace.\n *\n * @param {string} key Unique namespace identifier.\n * @param {Object} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n * @param {DataRegistry} registry Registry reference.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @return {Object} Newly created redux store.\n */\nfunction instantiateReduxStore( key, options, registry, thunkArgs ) {\n\tconst controls = {\n\t\t...options.controls,\n\t\t...builtinControls,\n\t};\n\n\tconst normalizedControls = mapValues( controls, ( control ) =>\n\t\tcontrol.isRegistryControl ? control( registry ) : control\n\t);\n\n\tconst middlewares = [\n\t\tcreateResolversCacheMiddleware( registry, key ),\n\t\tpromise,\n\t\tcreateReduxRoutineMiddleware( normalizedControls ),\n\t\tcreateThunkMiddleware( thunkArgs ),\n\t];\n\n\tconst enhancers = [ applyMiddleware( ...middlewares ) ];\n\tif (\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.__REDUX_DEVTOOLS_EXTENSION__\n\t) {\n\t\tenhancers.push(\n\t\t\twindow.__REDUX_DEVTOOLS_EXTENSION__( {\n\t\t\t\tname: key,\n\t\t\t\tinstanceId: key,\n\t\t\t\tserialize: {\n\t\t\t\t\treplacer: devToolsReplacer,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\t}\n\n\tconst { reducer, initialState } = options;\n\tconst enhancedReducer = combineReducers( {\n\t\tmetadata: metadataReducer,\n\t\troot: reducer,\n\t} );\n\n\treturn createStore(\n\t\tenhancedReducer,\n\t\t{ root: initialState },\n\t\tcompose( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them.\n *\n * @param {Object} store The redux store the selectors are bound to.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n *\n * @return {Function} Function that maps selectors to resolvers.\n */\nfunction mapResolveSelector( store, boundMetadataSelectors ) {\n\treturn ( selector, selectorName ) => {\n\t\t// If the selector doesn't have a resolver, just convert the return value\n\t\t// (including exceptions) to a Promise, no additional extra behavior is needed.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn async ( ...args ) => selector.apply( null, args );\n\t\t}\n\n\t\treturn ( ...args ) =>\n\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\tconst hasFinished = () => {\n\t\t\t\t\treturn boundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tconst finalize = ( result ) => {\n\t\t\t\t\tconst hasFailed =\n\t\t\t\t\t\tboundMetadataSelectors.hasResolutionFailed(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\tif ( hasFailed ) {\n\t\t\t\t\t\tconst error = boundMetadataSelectors.getResolutionError(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject( error );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve( result );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst getResult = () => selector.apply( null, args );\n\n\t\t\t\t// Trigger the selector (to trigger the resolver)\n\t\t\t\tconst result = getResult();\n\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\treturn finalize( result );\n\t\t\t\t}\n\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\tfinalize( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t};\n}\n\n/**\n * Maps selectors to functions that throw a suspense promise if not yet resolved.\n *\n * @param {Object} store The redux store the selectors select from.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n *\n * @return {Function} Function that maps selectors to their suspending versions.\n */\nfunction mapSuspendSelector( store, boundMetadataSelectors ) {\n\treturn ( selector, selectorName ) => {\n\t\t// Selector without a resolver doesn't have any extra suspense behavior.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\tconst result = selector.apply( null, args );\n\n\t\t\tif (\n\t\t\t\tboundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\tselectorName,\n\t\t\t\t\targs\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tboundMetadataSelectors.hasResolutionFailed(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tthrow boundMetadataSelectors.getResolutionError(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tthrow new Promise( ( resolve ) => {\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tboundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t};\n}\n\n/**\n * Convert a resolver to a normalized form, an object with `fulfill` method and\n * optional methods like `isFulfilled`.\n *\n * @param {Function} resolver Resolver to convert\n */\nfunction mapResolver( resolver ) {\n\tif ( resolver.fulfill ) {\n\t\treturn resolver;\n\t}\n\n\treturn {\n\t\t...resolver, // Copy the enumerable properties of the resolver function.\n\t\tfulfill: resolver, // Add the fulfill method.\n\t};\n}\n\n/**\n * Returns a selector with a matched resolver.\n * Resolvers are side effects invoked once per argument set of a given selector call,\n * used in ensuring that the data needs for the selector are satisfied.\n *\n * @param {Object} selector The selector function to be bound.\n * @param {string} selectorName The selector name.\n * @param {Object} resolver Resolver to call.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n */\nfunction mapSelectorWithResolver(\n\tselector,\n\tselectorName,\n\tresolver,\n\tstore,\n\tresolversCache,\n\tboundMetadataSelectors\n) {\n\tfunction fulfillSelector( args ) {\n\t\tconst state = store.getState();\n\n\t\tif (\n\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tboundMetadataSelectors.hasStartedResolution( selectorName, args )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\tsetTimeout( async () => {\n\t\t\tresolversCache.clear( selectorName, args );\n\t\t\tstore.dispatch(\n\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst action = resolver.fulfill( ...args );\n\t\t\t\tif ( action ) {\n\t\t\t\t\tawait store.dispatch( action );\n\t\t\t\t}\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.failResolution( selectorName, args, error )\n\t\t\t\t);\n\t\t\t}\n\t\t}, 0 );\n\t}\n\n\tconst selectorResolver = ( ...args ) => {\n\t\targs = normalize( selector, args );\n\t\tfulfillSelector( args );\n\t\treturn selector( ...args );\n\t};\n\tselectorResolver.hasResolver = true;\n\treturn selectorResolver;\n}\n\n/**\n * Applies selector's normalization function to the given arguments\n * if it exists.\n *\n * @param {Object} selector The selector potentially with a normalization method property.\n * @param {Array} args selector arguments to normalize.\n * @return {Array} Potentially normalized arguments.\n */\nfunction normalize( selector, args ) {\n\tif (\n\t\tselector.__unstableNormalizeArgs &&\n\t\ttypeof selector.__unstableNormalizeArgs === 'function' &&\n\t\targs?.length\n\t) {\n\t\treturn selector.__unstableNormalizeArgs( args );\n\t}\n\treturn args;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/redux-store/index.js"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { combineReducers } from './combine-reducers';\nimport { builtinControls } from '../controls';\nimport { lock } from '../lock-unlock';\nimport promise from '../promise-middleware';\nimport createResolversCacheMiddleware from '../resolvers-cache-middleware';\nimport createThunkMiddleware from './thunk-middleware';\nimport metadataReducer from './metadata/reducer';\nimport * as metadataSelectors from './metadata/selectors';\nimport * as metadataActions from './metadata/actions';\n\nexport { combineReducers };\n\n/** @typedef {import('../types').DataRegistry} DataRegistry */\n/** @typedef {import('../types').ListenerFunction} ListenerFunction */\n/**\n * @typedef {import('../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../types').AnyConfig} C\n */\n/**\n * @typedef {import('../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n */\n\nconst trimUndefinedValues = ( array ) => {\n\tconst result = [ ...array ];\n\tfor ( let i = result.length - 1; i >= 0; i-- ) {\n\t\tif ( result[ i ] === undefined ) {\n\t\t\tresult.splice( i, 1 );\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Creates a new object with the same keys, but with `callback()` called as\n * a transformer function on each of the values.\n *\n * @param {Object} obj The object to transform.\n * @param {Function} callback The function to transform each object value.\n * @return {Array} Transformed object.\n */\nconst mapValues = ( obj, callback ) =>\n\tObject.fromEntries(\n\t\tObject.entries( obj ?? {} ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tcallback( value, key ),\n\t\t] )\n\t);\n\n// Convert non serializable types to plain objects\nconst devToolsReplacer = ( key, state ) => {\n\tif ( state instanceof Map ) {\n\t\treturn Object.fromEntries( state );\n\t}\n\n\tif ( state instanceof window.HTMLElement ) {\n\t\treturn null;\n\t}\n\n\treturn state;\n};\n\n/**\n * Create a cache to track whether resolvers started running or not.\n *\n * @return {Object} Resolvers Cache.\n */\nfunction createResolversCache() {\n\tconst cache = {};\n\treturn {\n\t\tisRunning( selectorName, args ) {\n\t\t\treturn (\n\t\t\t\tcache[ selectorName ] &&\n\t\t\t\tcache[ selectorName ].get( trimUndefinedValues( args ) )\n\t\t\t);\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( trimUndefinedValues( args ) );\n\t\t\t}\n\t\t},\n\n\t\tmarkAsRunning( selectorName, args ) {\n\t\t\tif ( ! cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ] = new EquivalentKeyMap();\n\t\t\t}\n\n\t\t\tcache[ selectorName ].set( trimUndefinedValues( args ), true );\n\t\t},\n\t};\n}\n\nfunction createBindingCache( getItem, bindItem ) {\n\tconst cache = new WeakMap();\n\n\treturn {\n\t\tget( itemName ) {\n\t\t\tconst item = getItem( itemName );\n\t\t\tif ( ! item ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tlet boundItem = cache.get( item );\n\t\t\tif ( ! boundItem ) {\n\t\t\t\tboundItem = bindItem( item, itemName );\n\t\t\t\tcache.set( item, boundItem );\n\t\t\t}\n\t\t\treturn boundItem;\n\t\t},\n\t};\n}\n\nfunction createPrivateProxy( publicItems, privateItems ) {\n\treturn new Proxy( publicItems, {\n\t\tget: ( target, itemName ) =>\n\t\t\tprivateItems.get( itemName ) || Reflect.get( target, itemName ),\n\t} );\n}\n\n/**\n * Creates a data store descriptor for the provided Redux store configuration containing\n * properties describing reducer, actions, selectors, controls and resolvers.\n *\n * @example\n * ```js\n * import { createReduxStore } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * ```\n *\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n * @param {string} key Unique namespace identifier.\n * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\tconst privateActions = {};\n\tconst privateSelectors = {};\n\tconst privateRegistrationFunctions = {\n\t\tprivateActions,\n\t\tregisterPrivateActions: ( actions ) => {\n\t\t\tObject.assign( privateActions, actions );\n\t\t},\n\t\tprivateSelectors,\n\t\tregisterPrivateSelectors: ( selectors ) => {\n\t\t\tObject.assign( privateSelectors, selectors );\n\t\t},\n\t};\n\tconst storeDescriptor = {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\t/**\n\t\t\t * Stores listener functions registered with `subscribe()`.\n\t\t\t *\n\t\t\t * When functions register to listen to store changes with\n\t\t\t * `subscribe()` they get added here. Although Redux offers\n\t\t\t * its own `subscribe()` function directly, by wrapping the\n\t\t\t * subscription in this store instance it's possible to\n\t\t\t * optimize checking if the state has changed before calling\n\t\t\t * each listener.\n\t\t\t *\n\t\t\t * @type {Set<ListenerFunction>}\n\t\t\t */\n\t\t\tconst listeners = new Set();\n\t\t\tconst reducer = options.reducer;\n\n\t\t\t// Object that every thunk function receives as the first argument. It contains the\n\t\t\t// `registry`, `dispatch`, `select` and `resolveSelect` fields. Some of them are\n\t\t\t// constructed as getters to avoid circular dependencies.\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn thunkDispatch;\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn thunkSelect;\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn resolveSelectors;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst store = instantiateReduxStore(\n\t\t\t\tkey,\n\t\t\t\toptions,\n\t\t\t\tregistry,\n\t\t\t\tthunkArgs\n\t\t\t);\n\n\t\t\t// Expose the private registration functions on the store\n\t\t\t// so they can be copied to a sub registry in registry.js.\n\t\t\tlock( store, privateRegistrationFunctions );\n\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\t// Binds an action creator (`action`) to the `store`, making it a callable function.\n\t\t\t// These are the functions that are returned by `useDispatch`, for example.\n\t\t\t// It always returns a `Promise`, although actions are not always async. That's an\n\t\t\t// unfortunate backward compatibility measure.\n\t\t\tfunction bindAction( action ) {\n\t\t\t\treturn ( ...args ) =>\n\t\t\t\t\tPromise.resolve( store.dispatch( action( ...args ) ) );\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Object with all public actions, both metadata and store actions.\n\t\t\t */\n\t\t\tconst actions = {\n\t\t\t\t...mapValues( metadataActions, bindAction ),\n\t\t\t\t...mapValues( options.actions, bindAction ),\n\t\t\t};\n\n\t\t\t// Object with both public and private actions. Private actions are accessed through a proxy,\n\t\t\t// which looks them up in real time on the `privateActions` object. That's because private\n\t\t\t// actions can be registered at any time with `registerPrivateActions`. Also once a private\n\t\t\t// action creator is bound to the store, it is cached to give it a stable identity.\n\t\t\tconst allActions = createPrivateProxy(\n\t\t\t\tactions,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => privateActions[ name ],\n\t\t\t\t\tbindAction\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// An object that implements the `dispatch` object that is passed to thunk functions.\n\t\t\t// It is callable (`dispatch( action )`) and also has methods (`dispatch.foo()`) that\n\t\t\t// correspond to bound registered actions, both public and private. Implemented with the proxy\n\t\t\t// `get` method, delegating to `allActions`.\n\t\t\tconst thunkDispatch = new Proxy(\n\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t{ get: ( target, name ) => allActions[ name ] }\n\t\t\t);\n\n\t\t\t// To the public `actions` object, add the \"locked\" `allActions` object. When used,\n\t\t\t// `unlock( actions )` will return `allActions`, implementing a way how to get at the private actions.\n\t\t\tlock( actions, allActions );\n\n\t\t\t// If we have selector resolvers, convert them to a normalized form.\n\t\t\tconst resolvers = options.resolvers\n\t\t\t\t? mapValues( options.resolvers, mapResolver )\n\t\t\t\t: {};\n\n\t\t\t// Bind a selector to the store. Call the selector with the current state, correct registry,\n\t\t\t// and if there is a resolver, attach the resolver logic to the selector.\n\t\t\tfunction bindSelector( selector, selectorName ) {\n\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\tselector.registry = registry;\n\t\t\t\t}\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\targs = normalize( selector, args );\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t// Before calling the selector, switch to the correct registry.\n\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t}\n\t\t\t\t\treturn selector( state.root, ...args );\n\t\t\t\t};\n\n\t\t\t\t// Expose normalization method on the bound selector\n\t\t\t\t// in order that it can be called when fulfilling\n\t\t\t\t// the resolver.\n\t\t\t\tboundSelector.__unstableNormalizeArgs =\n\t\t\t\t\tselector.__unstableNormalizeArgs;\n\n\t\t\t\tconst resolver = resolvers[ selectorName ];\n\n\t\t\t\tif ( ! resolver ) {\n\t\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\t\treturn boundSelector;\n\t\t\t\t}\n\n\t\t\t\treturn mapSelectorWithResolver(\n\t\t\t\t\tboundSelector,\n\t\t\t\t\tselectorName,\n\t\t\t\t\tresolver,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache,\n\t\t\t\t\tboundMetadataSelectors\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Metadata selectors are bound differently: different state (`state.metadata`), no resolvers,\n\t\t\t// normalization depending on the target selector.\n\t\t\tfunction bindMetadataSelector( metaDataSelector ) {\n\t\t\t\tconst boundSelector = (\n\t\t\t\t\tselectorName,\n\t\t\t\t\tselectorArgs,\n\t\t\t\t\t...args\n\t\t\t\t) => {\n\t\t\t\t\t// Normalize the arguments passed to the target selector.\n\t\t\t\t\tif ( selectorName ) {\n\t\t\t\t\t\tconst targetSelector =\n\t\t\t\t\t\t\toptions.selectors?.[ selectorName ];\n\t\t\t\t\t\tif ( targetSelector ) {\n\t\t\t\t\t\t\tselectorArgs = normalize(\n\t\t\t\t\t\t\t\ttargetSelector,\n\t\t\t\t\t\t\t\tselectorArgs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\n\t\t\t\t\treturn metaDataSelector(\n\t\t\t\t\t\tstate.metadata,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\tselectorArgs,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\treturn boundSelector;\n\t\t\t}\n\n\t\t\t// Perform binding of both metadata and store selectors and combine them in one\n\t\t\t// `selectors` object. These are all public selectors of the store.\n\t\t\tconst boundMetadataSelectors = mapValues(\n\t\t\t\tmetadataSelectors,\n\t\t\t\tbindMetadataSelector\n\t\t\t);\n\n\t\t\tconst boundSelectors = mapValues( options.selectors, bindSelector );\n\n\t\t\tconst selectors = {\n\t\t\t\t...boundMetadataSelectors,\n\t\t\t\t...boundSelectors,\n\t\t\t};\n\n\t\t\t// Cache of bould private selectors. They are bound only when first accessed, because\n\t\t\t// new private selectors can be registered at any time (with `registerPrivateSelectors`).\n\t\t\t// Once bound, they are cached to give them a stable identity.\n\t\t\tconst boundPrivateSelectors = createBindingCache(\n\t\t\t\t( name ) => privateSelectors[ name ],\n\t\t\t\tbindSelector\n\t\t\t);\n\n\t\t\tconst allSelectors = createPrivateProxy(\n\t\t\t\tselectors,\n\t\t\t\tboundPrivateSelectors\n\t\t\t);\n\n\t\t\t// Pre-bind the private selectors that have been registered by the time of\n\t\t\t// instantiation, so that registry selectors are bound to the registry.\n\t\t\tfor ( const selectorName of Object.keys( privateSelectors ) ) {\n\t\t\t\tboundPrivateSelectors.get( selectorName );\n\t\t\t}\n\n\t\t\t// An object that implements the `select` object that is passed to thunk functions.\n\t\t\t// It is callable (`select( selector )`) and also has methods (`select.foo()`) that\n\t\t\t// correspond to bound registered selectors, both public and private. Implemented with the proxy\n\t\t\t// `get` method, delegating to `allSelectors`.\n\t\t\tconst thunkSelect = new Proxy(\n\t\t\t\t( selector ) => selector( store.__unstableOriginalGetState() ),\n\t\t\t\t{ get: ( target, name ) => allSelectors[ name ] }\n\t\t\t);\n\n\t\t\t// To the public `selectors` object, add the \"locked\" `allSelectors` object. When used,\n\t\t\t// `unlock( selectors )` will return `allSelectors`, implementing a way how to get at the private selectors.\n\t\t\tlock( selectors, allSelectors );\n\n\t\t\t// For each selector, create a function that calls the selector, waits for resolution and returns\n\t\t\t// a promise that resolves when the resolution is finished.\n\t\t\tconst bindResolveSelector = mapResolveSelector(\n\t\t\t\tstore,\n\t\t\t\tboundMetadataSelectors\n\t\t\t);\n\n\t\t\t// Now apply this function to all bound selectors, public and private. We are excluding\n\t\t\t// metadata selectors because they don't have resolvers.\n\t\t\tconst resolveSelectors = mapValues(\n\t\t\t\tboundSelectors,\n\t\t\t\tbindResolveSelector\n\t\t\t);\n\n\t\t\tconst allResolveSelectors = createPrivateProxy(\n\t\t\t\tresolveSelectors,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => boundPrivateSelectors.get( name ),\n\t\t\t\t\tbindResolveSelector\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Lock the selectors so that `unlock( resolveSelectors )` returns `allResolveSelectors`.\n\t\t\tlock( resolveSelectors, allResolveSelectors );\n\n\t\t\t// Now, in a way very similar to `bindResolveSelector`, we create a function that maps\n\t\t\t// selectors to functions that throw a suspense promise if not yet resolved.\n\t\t\tconst bindSuspendSelector = mapSuspendSelector(\n\t\t\t\tstore,\n\t\t\t\tboundMetadataSelectors\n\t\t\t);\n\n\t\t\tconst suspendSelectors = {\n\t\t\t\t...boundMetadataSelectors, // no special suspense behavior\n\t\t\t\t...mapValues( boundSelectors, bindSuspendSelector ),\n\t\t\t};\n\n\t\t\tconst allSuspendSelectors = createPrivateProxy(\n\t\t\t\tsuspendSelectors,\n\t\t\t\tcreateBindingCache(\n\t\t\t\t\t( name ) => boundPrivateSelectors.get( name ),\n\t\t\t\t\tbindSuspendSelector\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Lock the selectors so that `unlock( suspendSelectors )` returns 'allSuspendSelectors`.\n\t\t\tlock( suspendSelectors, allSuspendSelectors );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\n\t\t\tconst getSuspendSelectors = () => suspendSelectors;\n\n\t\t\t// We have some modules monkey-patching the store object\n\t\t\t// It's wrong to do so but until we refactor all of our effects to controls\n\t\t\t// We need to keep the same \"store\" instance here.\n\t\t\tstore.__unstableOriginalGetState = store.getState;\n\t\t\tstore.getState = () => store.__unstableOriginalGetState().root;\n\n\t\t\t// Customize subscribe behavior to call listeners only on effective change,\n\t\t\t// not on every dispatch.\n\t\t\tconst subscribe =\n\t\t\t\tstore &&\n\t\t\t\t( ( listener ) => {\n\t\t\t\t\tlisteners.add( listener );\n\n\t\t\t\t\treturn () => listeners.delete( listener );\n\t\t\t\t} );\n\n\t\t\tlet lastState = store.__unstableOriginalGetState();\n\t\t\tstore.subscribe( () => {\n\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\tlastState = state;\n\n\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\tfor ( const listener of listeners ) {\n\t\t\t\t\t\tlistener();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// This can be simplified to just { subscribe, getSelectors, getActions }\n\t\t\t// Once we remove the use function.\n\t\t\treturn {\n\t\t\t\treducer,\n\t\t\t\tstore,\n\t\t\t\tactions,\n\t\t\t\tselectors,\n\t\t\t\tresolvers,\n\t\t\t\tgetSelectors,\n\t\t\t\tgetResolveSelectors,\n\t\t\t\tgetSuspendSelectors,\n\t\t\t\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\n\n\t// Expose the private registration functions on the store\n\t// descriptor. That's a natural choice since that's where the\n\t// public actions and selectors are stored.\n\tlock( storeDescriptor, privateRegistrationFunctions );\n\n\treturn storeDescriptor;\n}\n\n/**\n * Creates a redux store for a namespace.\n *\n * @param {string} key Unique namespace identifier.\n * @param {Object} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n * @param {DataRegistry} registry Registry reference.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @return {Object} Newly created redux store.\n */\nfunction instantiateReduxStore( key, options, registry, thunkArgs ) {\n\tconst controls = {\n\t\t...options.controls,\n\t\t...builtinControls,\n\t};\n\n\tconst normalizedControls = mapValues( controls, ( control ) =>\n\t\tcontrol.isRegistryControl ? control( registry ) : control\n\t);\n\n\tconst middlewares = [\n\t\tcreateResolversCacheMiddleware( registry, key ),\n\t\tpromise,\n\t\tcreateReduxRoutineMiddleware( normalizedControls ),\n\t\tcreateThunkMiddleware( thunkArgs ),\n\t];\n\n\tconst enhancers = [ applyMiddleware( ...middlewares ) ];\n\tif (\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.__REDUX_DEVTOOLS_EXTENSION__\n\t) {\n\t\tenhancers.push(\n\t\t\twindow.__REDUX_DEVTOOLS_EXTENSION__( {\n\t\t\t\tname: key,\n\t\t\t\tinstanceId: key,\n\t\t\t\tserialize: {\n\t\t\t\t\treplacer: devToolsReplacer,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\t}\n\n\tconst { reducer, initialState } = options;\n\tconst enhancedReducer = combineReducers( {\n\t\tmetadata: metadataReducer,\n\t\troot: reducer,\n\t} );\n\n\treturn createStore(\n\t\tenhancedReducer,\n\t\t{ root: initialState },\n\t\tcompose( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them.\n *\n * @param {Object} store The redux store the selectors are bound to.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n *\n * @return {Function} Function that maps selectors to resolvers.\n */\nfunction mapResolveSelector( store, boundMetadataSelectors ) {\n\treturn ( selector, selectorName ) => {\n\t\t// If the selector doesn't have a resolver, just convert the return value\n\t\t// (including exceptions) to a Promise, no additional extra behavior is needed.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn async ( ...args ) => selector.apply( null, args );\n\t\t}\n\n\t\treturn ( ...args ) =>\n\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\tconst hasFinished = () => {\n\t\t\t\t\treturn boundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tconst finalize = ( result ) => {\n\t\t\t\t\tconst hasFailed =\n\t\t\t\t\t\tboundMetadataSelectors.hasResolutionFailed(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\tif ( hasFailed ) {\n\t\t\t\t\t\tconst error = boundMetadataSelectors.getResolutionError(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject( error );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve( result );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst getResult = () => selector.apply( null, args );\n\n\t\t\t\t// Trigger the selector (to trigger the resolver)\n\t\t\t\tconst result = getResult();\n\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\treturn finalize( result );\n\t\t\t\t}\n\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\tfinalize( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t};\n}\n\n/**\n * Maps selectors to functions that throw a suspense promise if not yet resolved.\n *\n * @param {Object} store The redux store the selectors select from.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n *\n * @return {Function} Function that maps selectors to their suspending versions.\n */\nfunction mapSuspendSelector( store, boundMetadataSelectors ) {\n\treturn ( selector, selectorName ) => {\n\t\t// Selector without a resolver doesn't have any extra suspense behavior.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\tconst result = selector.apply( null, args );\n\n\t\t\tif (\n\t\t\t\tboundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\tselectorName,\n\t\t\t\t\targs\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tboundMetadataSelectors.hasResolutionFailed(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tthrow boundMetadataSelectors.getResolutionError(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tthrow new Promise( ( resolve ) => {\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tboundMetadataSelectors.hasFinishedResolution(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t};\n}\n\n/**\n * Convert a resolver to a normalized form, an object with `fulfill` method and\n * optional methods like `isFulfilled`.\n *\n * @param {Function} resolver Resolver to convert\n */\nfunction mapResolver( resolver ) {\n\tif ( resolver.fulfill ) {\n\t\treturn resolver;\n\t}\n\n\treturn {\n\t\t...resolver, // Copy the enumerable properties of the resolver function.\n\t\tfulfill: resolver, // Add the fulfill method.\n\t};\n}\n\n/**\n * Returns a selector with a matched resolver.\n * Resolvers are side effects invoked once per argument set of a given selector call,\n * used in ensuring that the data needs for the selector are satisfied.\n *\n * @param {Object} selector The selector function to be bound.\n * @param {string} selectorName The selector name.\n * @param {Object} resolver Resolver to call.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n * @param {Object} boundMetadataSelectors The bound metadata selectors.\n */\nfunction mapSelectorWithResolver(\n\tselector,\n\tselectorName,\n\tresolver,\n\tstore,\n\tresolversCache,\n\tboundMetadataSelectors\n) {\n\tfunction fulfillSelector( args ) {\n\t\tconst state = store.getState();\n\n\t\tif (\n\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tboundMetadataSelectors.hasStartedResolution( selectorName, args )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\tsetTimeout( async () => {\n\t\t\tresolversCache.clear( selectorName, args );\n\t\t\tstore.dispatch(\n\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst action = resolver.fulfill( ...args );\n\t\t\t\tif ( action ) {\n\t\t\t\t\tawait store.dispatch( action );\n\t\t\t\t}\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.failResolution( selectorName, args, error )\n\t\t\t\t);\n\t\t\t}\n\t\t}, 0 );\n\t}\n\n\tconst selectorResolver = ( ...args ) => {\n\t\targs = normalize( selector, args );\n\t\tfulfillSelector( args );\n\t\treturn selector( ...args );\n\t};\n\tselectorResolver.hasResolver = true;\n\treturn selectorResolver;\n}\n\n/**\n * Applies selector's normalization function to the given arguments\n * if it exists.\n *\n * @param {Object} selector The selector potentially with a normalization method property.\n * @param {Array} args selector arguments to normalize.\n * @return {Array} Potentially normalized arguments.\n */\nfunction normalize( selector, args ) {\n\tif (\n\t\tselector.__unstableNormalizeArgs &&\n\t\ttypeof selector.__unstableNormalizeArgs === 'function' &&\n\t\targs?.length\n\t) {\n\t\treturn selector.__unstableNormalizeArgs( args );\n\t}\n\treturn args;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["result"]
7
+ }
@@ -1,153 +1,74 @@
1
- /**
2
- * Returns an action object used in signalling that selector resolution has
3
- * started.
4
- *
5
- * @param {string} selectorName Name of selector for which resolver triggered.
6
- * @param {unknown[]} args Arguments to associate for uniqueness.
7
- *
8
- * @return {{ type: 'START_RESOLUTION', selectorName: string, args: unknown[] }} Action object.
9
- */
10
- export function startResolution(selectorName, args) {
1
+ function startResolution(selectorName, args) {
11
2
  return {
12
- type: 'START_RESOLUTION',
3
+ type: "START_RESOLUTION",
13
4
  selectorName,
14
5
  args
15
6
  };
16
7
  }
17
-
18
- /**
19
- * Returns an action object used in signalling that selector resolution has
20
- * completed.
21
- *
22
- * @param {string} selectorName Name of selector for which resolver triggered.
23
- * @param {unknown[]} args Arguments to associate for uniqueness.
24
- *
25
- * @return {{ type: 'FINISH_RESOLUTION', selectorName: string, args: unknown[] }} Action object.
26
- */
27
- export function finishResolution(selectorName, args) {
8
+ function finishResolution(selectorName, args) {
28
9
  return {
29
- type: 'FINISH_RESOLUTION',
10
+ type: "FINISH_RESOLUTION",
30
11
  selectorName,
31
12
  args
32
13
  };
33
14
  }
34
-
35
- /**
36
- * Returns an action object used in signalling that selector resolution has
37
- * failed.
38
- *
39
- * @param {string} selectorName Name of selector for which resolver triggered.
40
- * @param {unknown[]} args Arguments to associate for uniqueness.
41
- * @param {Error|unknown} error The error that caused the failure.
42
- *
43
- * @return {{ type: 'FAIL_RESOLUTION', selectorName: string, args: unknown[], error: Error|unknown }} Action object.
44
- */
45
- export function failResolution(selectorName, args, error) {
15
+ function failResolution(selectorName, args, error) {
46
16
  return {
47
- type: 'FAIL_RESOLUTION',
17
+ type: "FAIL_RESOLUTION",
48
18
  selectorName,
49
19
  args,
50
20
  error
51
21
  };
52
22
  }
53
-
54
- /**
55
- * Returns an action object used in signalling that a batch of selector resolutions has
56
- * started.
57
- *
58
- * @param {string} selectorName Name of selector for which resolver triggered.
59
- * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item
60
- * is associated to a resolution.
61
- *
62
- * @return {{ type: 'START_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.
63
- */
64
- export function startResolutions(selectorName, args) {
23
+ function startResolutions(selectorName, args) {
65
24
  return {
66
- type: 'START_RESOLUTIONS',
25
+ type: "START_RESOLUTIONS",
67
26
  selectorName,
68
27
  args
69
28
  };
70
29
  }
71
-
72
- /**
73
- * Returns an action object used in signalling that a batch of selector resolutions has
74
- * completed.
75
- *
76
- * @param {string} selectorName Name of selector for which resolver triggered.
77
- * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item
78
- * is associated to a resolution.
79
- *
80
- * @return {{ type: 'FINISH_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.
81
- */
82
- export function finishResolutions(selectorName, args) {
30
+ function finishResolutions(selectorName, args) {
83
31
  return {
84
- type: 'FINISH_RESOLUTIONS',
32
+ type: "FINISH_RESOLUTIONS",
85
33
  selectorName,
86
34
  args
87
35
  };
88
36
  }
89
-
90
- /**
91
- * Returns an action object used in signalling that a batch of selector resolutions has
92
- * completed and at least one of them has failed.
93
- *
94
- * @param {string} selectorName Name of selector for which resolver triggered.
95
- * @param {unknown[]} args Array of arguments to associate for uniqueness, each item
96
- * is associated to a resolution.
97
- * @param {(Error|unknown)[]} errors Array of errors to associate for uniqueness, each item
98
- * is associated to a resolution.
99
- * @return {{ type: 'FAIL_RESOLUTIONS', selectorName: string, args: unknown[], errors: Array<Error|unknown> }} Action object.
100
- */
101
- export function failResolutions(selectorName, args, errors) {
37
+ function failResolutions(selectorName, args, errors) {
102
38
  return {
103
- type: 'FAIL_RESOLUTIONS',
39
+ type: "FAIL_RESOLUTIONS",
104
40
  selectorName,
105
41
  args,
106
42
  errors
107
43
  };
108
44
  }
109
-
110
- /**
111
- * Returns an action object used in signalling that we should invalidate the resolution cache.
112
- *
113
- * @param {string} selectorName Name of selector for which resolver should be invalidated.
114
- * @param {unknown[]} args Arguments to associate for uniqueness.
115
- *
116
- * @return {{ type: 'INVALIDATE_RESOLUTION', selectorName: string, args: any[] }} Action object.
117
- */
118
- export function invalidateResolution(selectorName, args) {
45
+ function invalidateResolution(selectorName, args) {
119
46
  return {
120
- type: 'INVALIDATE_RESOLUTION',
47
+ type: "INVALIDATE_RESOLUTION",
121
48
  selectorName,
122
49
  args
123
50
  };
124
51
  }
125
-
126
- /**
127
- * Returns an action object used in signalling that the resolution
128
- * should be invalidated.
129
- *
130
- * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.
131
- */
132
- export function invalidateResolutionForStore() {
52
+ function invalidateResolutionForStore() {
133
53
  return {
134
- type: 'INVALIDATE_RESOLUTION_FOR_STORE'
54
+ type: "INVALIDATE_RESOLUTION_FOR_STORE"
135
55
  };
136
56
  }
137
-
138
- /**
139
- * Returns an action object used in signalling that the resolution cache for a
140
- * given selectorName should be invalidated.
141
- *
142
- * @param {string} selectorName Name of selector for which all resolvers should
143
- * be invalidated.
144
- *
145
- * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.
146
- */
147
- export function invalidateResolutionForStoreSelector(selectorName) {
57
+ function invalidateResolutionForStoreSelector(selectorName) {
148
58
  return {
149
- type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',
59
+ type: "INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR",
150
60
  selectorName
151
61
  };
152
62
  }
153
- //# sourceMappingURL=actions.js.map
63
+ export {
64
+ failResolution,
65
+ failResolutions,
66
+ finishResolution,
67
+ finishResolutions,
68
+ invalidateResolution,
69
+ invalidateResolutionForStore,
70
+ invalidateResolutionForStoreSelector,
71
+ startResolution,
72
+ startResolutions
73
+ };
74
+ //# sourceMappingURL=actions.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["startResolution","selectorName","args","type","finishResolution","failResolution","error","startResolutions","finishResolutions","failResolutions","errors","invalidateResolution","invalidateResolutionForStore","invalidateResolutionForStoreSelector"],"sources":["@wordpress/data/src/redux-store/metadata/actions.js"],"sourcesContent":["/**\n * Returns an action object used in signalling that selector resolution has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'START_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function startResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'FINISH_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function finishResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n * @param {Error|unknown} error The error that caused the failure.\n *\n * @return {{ type: 'FAIL_RESOLUTION', selectorName: string, args: unknown[], error: Error|unknown }} Action object.\n */\nexport function failResolution( selectorName, args, error ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t\terror,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'START_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function startResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'FINISH_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function finishResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed and at least one of them has failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n * @param {(Error|unknown)[]} errors Array of errors to associate for uniqueness, each item\n * is associated to a resolution.\n * @return {{ type: 'FAIL_RESOLUTIONS', selectorName: string, args: unknown[], errors: Array<Error|unknown> }} Action object.\n */\nexport function failResolutions( selectorName, args, errors ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t\terrors,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that we should invalidate the resolution cache.\n *\n * @param {string} selectorName Name of selector for which resolver should be invalidated.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION', selectorName: string, args: any[] }} Action object.\n */\nexport function invalidateResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution\n * should be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.\n */\nexport function invalidateResolutionForStore() {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution cache for a\n * given selectorName should be invalidated.\n *\n * @param {string} selectorName Name of selector for which all resolvers should\n * be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.\n */\nexport function invalidateResolutionForStoreSelector( selectorName ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',\n\t\tselectorName,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAAEC,YAAY,EAAEC,IAAI,EAAG;EACrD,OAAO;IACNC,IAAI,EAAE,kBAAkB;IACxBF,YAAY;IACZC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,gBAAgBA,CAAEH,YAAY,EAAEC,IAAI,EAAG;EACtD,OAAO;IACNC,IAAI,EAAE,mBAAmB;IACzBF,YAAY;IACZC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,cAAcA,CAAEJ,YAAY,EAAEC,IAAI,EAAEI,KAAK,EAAG;EAC3D,OAAO;IACNH,IAAI,EAAE,iBAAiB;IACvBF,YAAY;IACZC,IAAI;IACJI;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEN,YAAY,EAAEC,IAAI,EAAG;EACtD,OAAO;IACNC,IAAI,EAAE,mBAAmB;IACzBF,YAAY;IACZC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,iBAAiBA,CAAEP,YAAY,EAAEC,IAAI,EAAG;EACvD,OAAO;IACNC,IAAI,EAAE,oBAAoB;IAC1BF,YAAY;IACZC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,eAAeA,CAAER,YAAY,EAAEC,IAAI,EAAEQ,MAAM,EAAG;EAC7D,OAAO;IACNP,IAAI,EAAE,kBAAkB;IACxBF,YAAY;IACZC,IAAI;IACJQ;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAEV,YAAY,EAAEC,IAAI,EAAG;EAC1D,OAAO;IACNC,IAAI,EAAE,uBAAuB;IAC7BF,YAAY;IACZC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASU,4BAA4BA,CAAA,EAAG;EAC9C,OAAO;IACNT,IAAI,EAAE;EACP,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASU,oCAAoCA,CAAEZ,YAAY,EAAG;EACpE,OAAO;IACNE,IAAI,EAAE,0CAA0C;IAChDF;EACD,CAAC;AACF","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/redux-store/metadata/actions.js"],
4
+ "sourcesContent": ["/**\n * Returns an action object used in signalling that selector resolution has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'START_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function startResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'FINISH_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function finishResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n * @param {Error|unknown} error The error that caused the failure.\n *\n * @return {{ type: 'FAIL_RESOLUTION', selectorName: string, args: unknown[], error: Error|unknown }} Action object.\n */\nexport function failResolution( selectorName, args, error ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t\terror,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'START_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function startResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'FINISH_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function finishResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed and at least one of them has failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n * @param {(Error|unknown)[]} errors Array of errors to associate for uniqueness, each item\n * is associated to a resolution.\n * @return {{ type: 'FAIL_RESOLUTIONS', selectorName: string, args: unknown[], errors: Array<Error|unknown> }} Action object.\n */\nexport function failResolutions( selectorName, args, errors ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t\terrors,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that we should invalidate the resolution cache.\n *\n * @param {string} selectorName Name of selector for which resolver should be invalidated.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION', selectorName: string, args: any[] }} Action object.\n */\nexport function invalidateResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution\n * should be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.\n */\nexport function invalidateResolutionForStore() {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution cache for a\n * given selectorName should be invalidated.\n *\n * @param {string} selectorName Name of selector for which all resolvers should\n * be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.\n */\nexport function invalidateResolutionForStoreSelector( selectorName ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',\n\t\tselectorName,\n\t};\n}\n"],
5
+ "mappings": "AASO,SAAS,gBAAiB,cAAc,MAAO;AACrD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAWO,SAAS,iBAAkB,cAAc,MAAO;AACtD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAYO,SAAS,eAAgB,cAAc,MAAM,OAAQ;AAC3D,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAYO,SAAS,iBAAkB,cAAc,MAAO;AACtD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAYO,SAAS,kBAAmB,cAAc,MAAO;AACvD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAaO,SAAS,gBAAiB,cAAc,MAAM,QAAS;AAC7D,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAUO,SAAS,qBAAsB,cAAc,MAAO;AAC1D,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAQO,SAAS,+BAA+B;AAC9C,SAAO;AAAA,IACN,MAAM;AAAA,EACP;AACD;AAWO,SAAS,qCAAsC,cAAe;AACpE,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;",
6
+ "names": []
7
+ }
@@ -1,2 +1 @@
1
-
2
- //# sourceMappingURL=equivalent-key-map.d.js.map
1
+ //# sourceMappingURL=equivalent-key-map.d.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":[],"sources":["@wordpress/data/src/redux-store/metadata/equivalent-key-map.d.ts"],"sourcesContent":["declare module 'equivalent-key-map' {\n\tclass EquivalentKeyMap< K, V > extends Map< K, V > {}\n\texport = EquivalentKeyMap;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,125 +1,100 @@
1
- /**
2
- * External dependencies
3
- */
4
- import EquivalentKeyMap from 'equivalent-key-map';
5
- /**
6
- * Internal dependencies
7
- */
8
- import { selectorArgsToStateKey, onSubKey } from './utils';
9
- /**
10
- * Reducer function returning next state for selector resolution of
11
- * subkeys, object form:
12
- *
13
- * selectorName -> EquivalentKeyMap<Array,boolean>
14
- */
15
- const subKeysIsResolved = onSubKey('selectorName')((state = new EquivalentKeyMap(), action) => {
1
+ import EquivalentKeyMap from "equivalent-key-map";
2
+ import { selectorArgsToStateKey, onSubKey } from "./utils";
3
+ const subKeysIsResolved = onSubKey("selectorName")((state = new EquivalentKeyMap(), action) => {
16
4
  switch (action.type) {
17
- case 'START_RESOLUTION':
18
- {
19
- const nextState = new EquivalentKeyMap(state);
20
- nextState.set(selectorArgsToStateKey(action.args), {
21
- status: 'resolving'
5
+ case "START_RESOLUTION": {
6
+ const nextState = new EquivalentKeyMap(state);
7
+ nextState.set(selectorArgsToStateKey(action.args), {
8
+ status: "resolving"
9
+ });
10
+ return nextState;
11
+ }
12
+ case "FINISH_RESOLUTION": {
13
+ const nextState = new EquivalentKeyMap(state);
14
+ nextState.set(selectorArgsToStateKey(action.args), {
15
+ status: "finished"
16
+ });
17
+ return nextState;
18
+ }
19
+ case "FAIL_RESOLUTION": {
20
+ const nextState = new EquivalentKeyMap(state);
21
+ nextState.set(selectorArgsToStateKey(action.args), {
22
+ status: "error",
23
+ error: action.error
24
+ });
25
+ return nextState;
26
+ }
27
+ case "START_RESOLUTIONS": {
28
+ const nextState = new EquivalentKeyMap(state);
29
+ for (const resolutionArgs of action.args) {
30
+ nextState.set(selectorArgsToStateKey(resolutionArgs), {
31
+ status: "resolving"
22
32
  });
23
- return nextState;
24
33
  }
25
- case 'FINISH_RESOLUTION':
26
- {
27
- const nextState = new EquivalentKeyMap(state);
28
- nextState.set(selectorArgsToStateKey(action.args), {
29
- status: 'finished'
34
+ return nextState;
35
+ }
36
+ case "FINISH_RESOLUTIONS": {
37
+ const nextState = new EquivalentKeyMap(state);
38
+ for (const resolutionArgs of action.args) {
39
+ nextState.set(selectorArgsToStateKey(resolutionArgs), {
40
+ status: "finished"
30
41
  });
31
- return nextState;
32
42
  }
33
- case 'FAIL_RESOLUTION':
34
- {
35
- const nextState = new EquivalentKeyMap(state);
36
- nextState.set(selectorArgsToStateKey(action.args), {
37
- status: 'error',
38
- error: action.error
39
- });
40
- return nextState;
41
- }
42
- case 'START_RESOLUTIONS':
43
- {
44
- const nextState = new EquivalentKeyMap(state);
45
- for (const resolutionArgs of action.args) {
46
- nextState.set(selectorArgsToStateKey(resolutionArgs), {
47
- status: 'resolving'
48
- });
43
+ return nextState;
44
+ }
45
+ case "FAIL_RESOLUTIONS": {
46
+ const nextState = new EquivalentKeyMap(state);
47
+ action.args.forEach((resolutionArgs, idx) => {
48
+ const resolutionState = {
49
+ status: "error",
50
+ error: void 0
51
+ };
52
+ const error = action.errors[idx];
53
+ if (error) {
54
+ resolutionState.error = error;
49
55
  }
50
- return nextState;
51
- }
52
- case 'FINISH_RESOLUTIONS':
53
- {
54
- const nextState = new EquivalentKeyMap(state);
55
- for (const resolutionArgs of action.args) {
56
- nextState.set(selectorArgsToStateKey(resolutionArgs), {
57
- status: 'finished'
58
- });
59
- }
60
- return nextState;
61
- }
62
- case 'FAIL_RESOLUTIONS':
63
- {
64
- const nextState = new EquivalentKeyMap(state);
65
- action.args.forEach((resolutionArgs, idx) => {
66
- const resolutionState = {
67
- status: 'error',
68
- error: undefined
69
- };
70
- const error = action.errors[idx];
71
- if (error) {
72
- resolutionState.error = error;
73
- }
74
- nextState.set(selectorArgsToStateKey(resolutionArgs), resolutionState);
75
- });
76
- return nextState;
77
- }
78
- case 'INVALIDATE_RESOLUTION':
79
- {
80
- const nextState = new EquivalentKeyMap(state);
81
- nextState.delete(selectorArgsToStateKey(action.args));
82
- return nextState;
83
- }
56
+ nextState.set(
57
+ selectorArgsToStateKey(resolutionArgs),
58
+ resolutionState
59
+ );
60
+ });
61
+ return nextState;
62
+ }
63
+ case "INVALIDATE_RESOLUTION": {
64
+ const nextState = new EquivalentKeyMap(state);
65
+ nextState.delete(selectorArgsToStateKey(action.args));
66
+ return nextState;
67
+ }
84
68
  }
85
69
  return state;
86
70
  });
87
-
88
- /**
89
- * Reducer function returning next state for selector resolution, object form:
90
- *
91
- * selectorName -> EquivalentKeyMap<Array, boolean>
92
- *
93
- * @param state Current state.
94
- * @param action Dispatched action.
95
- *
96
- * @return Next state.
97
- */
98
71
  const isResolved = (state = {}, action) => {
99
72
  switch (action.type) {
100
- case 'INVALIDATE_RESOLUTION_FOR_STORE':
73
+ case "INVALIDATE_RESOLUTION_FOR_STORE":
101
74
  return {};
102
- case 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR':
103
- {
104
- if (action.selectorName in state) {
105
- const {
106
- [action.selectorName]: removedSelector,
107
- ...restState
108
- } = state;
109
- return restState;
110
- }
111
- return state;
75
+ case "INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR": {
76
+ if (action.selectorName in state) {
77
+ const {
78
+ [action.selectorName]: removedSelector,
79
+ ...restState
80
+ } = state;
81
+ return restState;
112
82
  }
113
- case 'START_RESOLUTION':
114
- case 'FINISH_RESOLUTION':
115
- case 'FAIL_RESOLUTION':
116
- case 'START_RESOLUTIONS':
117
- case 'FINISH_RESOLUTIONS':
118
- case 'FAIL_RESOLUTIONS':
119
- case 'INVALIDATE_RESOLUTION':
83
+ return state;
84
+ }
85
+ case "START_RESOLUTION":
86
+ case "FINISH_RESOLUTION":
87
+ case "FAIL_RESOLUTION":
88
+ case "START_RESOLUTIONS":
89
+ case "FINISH_RESOLUTIONS":
90
+ case "FAIL_RESOLUTIONS":
91
+ case "INVALIDATE_RESOLUTION":
120
92
  return subKeysIsResolved(state, action);
121
93
  }
122
94
  return state;
123
95
  };
124
- export default isResolved;
125
- //# sourceMappingURL=reducer.js.map
96
+ var reducer_default = isResolved;
97
+ export {
98
+ reducer_default as default
99
+ };
100
+ //# sourceMappingURL=reducer.js.map