@wordpress/data 6.1.2 → 6.1.3

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.
@@ -50,22 +50,34 @@ var metadataActions = _interopRequireWildcard(require("./metadata/actions"));
50
50
  /** @typedef {import('../types').WPDataStore} WPDataStore */
51
51
 
52
52
  /** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */
53
+ const trimUndefinedValues = array => {
54
+ const result = [...array];
53
55
 
56
+ for (let i = result.length - 1; i >= 0; i--) {
57
+ if (result[i] === undefined) {
58
+ result.splice(i, 1);
59
+ }
60
+ }
61
+
62
+ return result;
63
+ };
54
64
  /**
55
65
  * Create a cache to track whether resolvers started running or not.
56
66
  *
57
67
  * @return {Object} Resolvers Cache.
58
68
  */
69
+
70
+
59
71
  function createResolversCache() {
60
72
  const cache = {};
61
73
  return {
62
74
  isRunning(selectorName, args) {
63
- return cache[selectorName] && cache[selectorName].get(args);
75
+ return cache[selectorName] && cache[selectorName].get(trimUndefinedValues(args));
64
76
  },
65
77
 
66
78
  clear(selectorName, args) {
67
79
  if (cache[selectorName]) {
68
- cache[selectorName].delete(args);
80
+ cache[selectorName].delete(trimUndefinedValues(args));
69
81
  }
70
82
  },
71
83
 
@@ -74,7 +86,7 @@ function createResolversCache() {
74
86
  cache[selectorName] = new _equivalentKeyMap.default();
75
87
  }
76
88
 
77
- cache[selectorName].set(args, true);
89
+ cache[selectorName].set(trimUndefinedValues(args), true);
78
90
  }
79
91
 
80
92
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["createResolversCache","cache","isRunning","selectorName","args","get","clear","delete","markAsRunning","EquivalentKeyMap","set","createReduxStore","key","options","name","instantiate","registry","reducer","thunkArgs","dispatch","Object","assign","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","actions","mapActions","metadataActions","selectors","mapSelectors","metadataSelectors","state","metadata","isRegistrySelector","root","result","mapResolvers","resolveSelectors","mapResolveSelectors","getState","subscribe","listener","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","promise","__experimentalUseThunks","push","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","initialState","enhancedReducer","metadataReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","length","Array","i","hasResolver","createBoundAction","Promise","resolve","hasFinished","hasFinishedResolution","getResult","apply","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","hasStartedResolution","setTimeout","startResolution","fulfillResolver","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport { flowRight, get, mapValues, omit } from 'lodash';\nimport combineReducers from 'turbo-combine-reducers';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\n\n/**\n * Internal dependencies\n */\nimport { builtinControls } from '../controls';\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\n/** @typedef {import('../types').WPDataRegistry} WPDataRegistry */\n/** @typedef {import('../types').WPDataStore} WPDataStore */\n/** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */\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 cache[ selectorName ] && cache[ selectorName ].get( args );\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( 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( args, true );\n\t\t},\n\t};\n}\n\n/**\n * Creates a data store definition for the provided Redux store options 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 * @param {string} key Unique namespace identifier.\n * @param {WPDataReduxStoreConfig} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {WPDataStore} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\treturn {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\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\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) => ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\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 {WPDataRegistry} 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];\n\n\tif ( options.__experimentalUseThunks ) {\n\t\tmiddlewares.push( createThunkMiddleware( 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} )\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\tflowRight( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction = ( action ) => ( ...args ) => {\n\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t};\n\n\treturn mapValues( actions, createBoundAction );\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\treturn mapValues(\n\t\tomit( selectors, [\n\t\t\t'getIsResolving',\n\t\t\t'hasStartedResolution',\n\t\t\t'hasFinishedResolution',\n\t\t\t'isResolving',\n\t\t\t'getCachedResolvers',\n\t\t] ),\n\t\t( selector, selectorName ) => ( ...args ) =>\n\t\t\tnew Promise( ( resolve ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\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 resolve( 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\tresolve( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} )\n\t);\n}\n\n/**\n * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // copy the enumerable properties of the resolver function\n\t\t\tfulfill: resolver, // add the fulfill method\n\t\t};\n\t} );\n\n\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = get( resolvers, [ selectorName ] );\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["trimUndefinedValues","array","result","i","length","undefined","splice","createResolversCache","cache","isRunning","selectorName","args","get","clear","delete","markAsRunning","EquivalentKeyMap","set","createReduxStore","key","options","name","instantiate","registry","reducer","thunkArgs","dispatch","Object","assign","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","actions","mapActions","metadataActions","selectors","mapSelectors","metadataSelectors","state","metadata","isRegistrySelector","root","mapResolvers","resolveSelectors","mapResolveSelectors","getState","subscribe","listener","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","promise","__experimentalUseThunks","push","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","initialState","enhancedReducer","metadataReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","Array","hasResolver","createBoundAction","Promise","resolve","hasFinished","hasFinishedResolution","getResult","apply","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","hasStartedResolution","setTimeout","startResolution","fulfillResolver","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport { flowRight, get, mapValues, omit } from 'lodash';\nimport combineReducers from 'turbo-combine-reducers';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\n\n/**\n * Internal dependencies\n */\nimport { builtinControls } from '../controls';\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\n/** @typedef {import('../types').WPDataRegistry} WPDataRegistry */\n/** @typedef {import('../types').WPDataStore} WPDataStore */\n/** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */\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 * 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\n/**\n * Creates a data store definition for the provided Redux store options 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 * @param {string} key Unique namespace identifier.\n * @param {WPDataReduxStoreConfig} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {WPDataStore} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\treturn {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\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\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) => ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\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 {WPDataRegistry} 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];\n\n\tif ( options.__experimentalUseThunks ) {\n\t\tmiddlewares.push( createThunkMiddleware( 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} )\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\tflowRight( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction = ( action ) => ( ...args ) => {\n\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t};\n\n\treturn mapValues( actions, createBoundAction );\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\treturn mapValues(\n\t\tomit( selectors, [\n\t\t\t'getIsResolving',\n\t\t\t'hasStartedResolution',\n\t\t\t'hasFinishedResolution',\n\t\t\t'isResolving',\n\t\t\t'getCachedResolvers',\n\t\t] ),\n\t\t( selector, selectorName ) => ( ...args ) =>\n\t\t\tnew Promise( ( resolve ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\n\t\t\t\tconst getResult = () => selector.apply( null, args );\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 resolve( 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\tresolve( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} )\n\t);\n}\n\n/**\n * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // copy the enumerable properties of the resolver function\n\t\t\tfulfill: resolver, // add the fulfill method\n\t\t};\n\t} );\n\n\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = get( resolvers, [ selectorName ] );\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
package/build/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
File without changes
@@ -27,22 +27,34 @@ import * as metadataActions from './metadata/actions';
27
27
 
28
28
  /** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */
29
29
 
30
+ const trimUndefinedValues = array => {
31
+ const result = [...array];
32
+
33
+ for (let i = result.length - 1; i >= 0; i--) {
34
+ if (result[i] === undefined) {
35
+ result.splice(i, 1);
36
+ }
37
+ }
38
+
39
+ return result;
40
+ };
30
41
  /**
31
42
  * Create a cache to track whether resolvers started running or not.
32
43
  *
33
44
  * @return {Object} Resolvers Cache.
34
45
  */
35
46
 
47
+
36
48
  function createResolversCache() {
37
49
  const cache = {};
38
50
  return {
39
51
  isRunning(selectorName, args) {
40
- return cache[selectorName] && cache[selectorName].get(args);
52
+ return cache[selectorName] && cache[selectorName].get(trimUndefinedValues(args));
41
53
  },
42
54
 
43
55
  clear(selectorName, args) {
44
56
  if (cache[selectorName]) {
45
- cache[selectorName].delete(args);
57
+ cache[selectorName].delete(trimUndefinedValues(args));
46
58
  }
47
59
  },
48
60
 
@@ -51,7 +63,7 @@ function createResolversCache() {
51
63
  cache[selectorName] = new EquivalentKeyMap();
52
64
  }
53
65
 
54
- cache[selectorName].set(args, true);
66
+ cache[selectorName].set(trimUndefinedValues(args), true);
55
67
  }
56
68
 
57
69
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["createStore","applyMiddleware","flowRight","get","mapValues","omit","combineReducers","EquivalentKeyMap","createReduxRoutineMiddleware","builtinControls","promise","createResolversCacheMiddleware","createThunkMiddleware","metadataReducer","metadataSelectors","metadataActions","createResolversCache","cache","isRunning","selectorName","args","clear","delete","markAsRunning","set","createReduxStore","key","options","name","instantiate","registry","reducer","thunkArgs","dispatch","Object","assign","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","actions","mapActions","selectors","mapSelectors","state","metadata","isRegistrySelector","root","result","mapResolvers","resolveSelectors","mapResolveSelectors","getState","subscribe","listener","lastState","hasChanged","controls","normalizedControls","control","isRegistryControl","middlewares","__experimentalUseThunks","push","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","initialState","enhancedReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","length","Array","i","hasResolver","createBoundAction","Promise","resolve","hasFinished","hasFinishedResolution","getResult","apply","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","hasStartedResolution","setTimeout","startResolution","fulfillResolver","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport { flowRight, get, mapValues, omit } from 'lodash';\nimport combineReducers from 'turbo-combine-reducers';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\n\n/**\n * Internal dependencies\n */\nimport { builtinControls } from '../controls';\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\n/** @typedef {import('../types').WPDataRegistry} WPDataRegistry */\n/** @typedef {import('../types').WPDataStore} WPDataStore */\n/** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */\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 cache[ selectorName ] && cache[ selectorName ].get( args );\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( 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( args, true );\n\t\t},\n\t};\n}\n\n/**\n * Creates a data store definition for the provided Redux store options 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 * @param {string} key Unique namespace identifier.\n * @param {WPDataReduxStoreConfig} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {WPDataStore} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\treturn {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\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\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) => ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\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 {WPDataRegistry} 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];\n\n\tif ( options.__experimentalUseThunks ) {\n\t\tmiddlewares.push( createThunkMiddleware( 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} )\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\tflowRight( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction = ( action ) => ( ...args ) => {\n\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t};\n\n\treturn mapValues( actions, createBoundAction );\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\treturn mapValues(\n\t\tomit( selectors, [\n\t\t\t'getIsResolving',\n\t\t\t'hasStartedResolution',\n\t\t\t'hasFinishedResolution',\n\t\t\t'isResolving',\n\t\t\t'getCachedResolvers',\n\t\t] ),\n\t\t( selector, selectorName ) => ( ...args ) =>\n\t\t\tnew Promise( ( resolve ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\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 resolve( 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\tresolve( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} )\n\t);\n}\n\n/**\n * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // copy the enumerable properties of the resolver function\n\t\t\tfulfill: resolver, // add the fulfill method\n\t\t};\n\t} );\n\n\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = get( resolvers, [ selectorName ] );\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["createStore","applyMiddleware","flowRight","get","mapValues","omit","combineReducers","EquivalentKeyMap","createReduxRoutineMiddleware","builtinControls","promise","createResolversCacheMiddleware","createThunkMiddleware","metadataReducer","metadataSelectors","metadataActions","trimUndefinedValues","array","result","i","length","undefined","splice","createResolversCache","cache","isRunning","selectorName","args","clear","delete","markAsRunning","set","createReduxStore","key","options","name","instantiate","registry","reducer","thunkArgs","dispatch","Object","assign","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","actions","mapActions","selectors","mapSelectors","state","metadata","isRegistrySelector","root","mapResolvers","resolveSelectors","mapResolveSelectors","getState","subscribe","listener","lastState","hasChanged","controls","normalizedControls","control","isRegistryControl","middlewares","__experimentalUseThunks","push","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","initialState","enhancedReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","Array","hasResolver","createBoundAction","Promise","resolve","hasFinished","hasFinishedResolution","getResult","apply","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","hasStartedResolution","setTimeout","startResolution","fulfillResolver","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport { flowRight, get, mapValues, omit } from 'lodash';\nimport combineReducers from 'turbo-combine-reducers';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\n\n/**\n * Internal dependencies\n */\nimport { builtinControls } from '../controls';\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\n/** @typedef {import('../types').WPDataRegistry} WPDataRegistry */\n/** @typedef {import('../types').WPDataStore} WPDataStore */\n/** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */\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 * 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\n/**\n * Creates a data store definition for the provided Redux store options 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 * @param {string} key Unique namespace identifier.\n * @param {WPDataReduxStoreConfig} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {WPDataStore} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\treturn {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\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\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) => ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\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 {WPDataRegistry} 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];\n\n\tif ( options.__experimentalUseThunks ) {\n\t\tmiddlewares.push( createThunkMiddleware( 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} )\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\tflowRight( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction = ( action ) => ( ...args ) => {\n\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t};\n\n\treturn mapValues( actions, createBoundAction );\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\treturn mapValues(\n\t\tomit( selectors, [\n\t\t\t'getIsResolving',\n\t\t\t'hasStartedResolution',\n\t\t\t'hasFinishedResolution',\n\t\t\t'isResolving',\n\t\t\t'getCachedResolvers',\n\t\t] ),\n\t\t( selector, selectorName ) => ( ...args ) =>\n\t\t\tnew Promise( ( resolve ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\n\t\t\t\tconst getResult = () => selector.apply( null, args );\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 resolve( 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\tresolve( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} )\n\t);\n}\n\n/**\n * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // copy the enumerable properties of the resolver function\n\t\t\tfulfill: resolver, // add the fulfill method\n\t\t};\n\t} );\n\n\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t...args\n\t\t\t\t\t);\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = get( resolvers, [ selectorName ] );\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
File without changes
@@ -0,0 +1,35 @@
1
+ export declare type WPDataFunctionOrGeneratorArray = Array<Function | Generator>;
2
+ export declare type WPDataFunctionArray = Array<Function>;
3
+ export interface WPDataAttachedStore {
4
+ getSelectors: () => WPDataFunctionArray;
5
+ getActions: () => WPDataFunctionArray;
6
+ subscribe: (listener: () => void) => () => void;
7
+ }
8
+ export interface WPDataStore {
9
+ /**
10
+ * Store Name
11
+ */
12
+ name: string;
13
+ /**
14
+ * Store configuration object.
15
+ */
16
+ instantiate: (registry: WPDataRegistry) => WPDataAttachedStore;
17
+ }
18
+ export interface WPDataReduxStoreConfig {
19
+ reducer: (state: any, action: any) => any;
20
+ actions?: WPDataFunctionOrGeneratorArray;
21
+ resolvers?: WPDataFunctionOrGeneratorArray;
22
+ selectors?: WPDataFunctionArray;
23
+ controls?: WPDataFunctionArray;
24
+ }
25
+ export interface WPDataRegistry {
26
+ register: (store: WPDataStore) => void;
27
+ }
28
+ export interface WPDataEmitter {
29
+ emit: () => void;
30
+ subscribe: (listener: () => void) => () => void;
31
+ pause: () => void;
32
+ resume: () => void;
33
+ isPaused: boolean;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,8BAA8B,GAAG,KAAK,CAAE,QAAQ,GAAG,SAAS,CAAE,CAAC;AAC3E,oBAAY,mBAAmB,GAAG,KAAK,CAAE,QAAQ,CAAE,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IACnC,YAAY,EAAE,MAAM,mBAAmB,CAAC;IACxC,UAAU,EAAE,MAAM,mBAAmB,CAAC;IACtC,SAAS,EAAE,CAAE,QAAQ,EAAE,MAAM,IAAI,KAAM,MAAM,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,CAAE,QAAQ,EAAE,cAAc,KAAM,mBAAmB,CAAC;CACjE;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,CAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAM,GAAG,CAAC;IAC5C,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,CAAE,KAAK,EAAE,WAAW,KAAM,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,EAAE,CAAE,QAAQ,EAAE,MAAM,IAAI,KAAM,MAAM,IAAI,CAAC;IAClD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CAClB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/data",
3
- "version": "6.1.2",
3
+ "version": "6.1.3",
4
4
  "description": "Data module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -28,7 +28,7 @@
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
30
  "@babel/runtime": "^7.13.10",
31
- "@wordpress/compose": "^5.0.4",
31
+ "@wordpress/compose": "^5.0.5",
32
32
  "@wordpress/deprecated": "^3.2.2",
33
33
  "@wordpress/element": "^4.0.3",
34
34
  "@wordpress/is-shallow-equal": "^4.2.0",
@@ -47,5 +47,5 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "157f4ae53ab98e574af01f72213ae5a9613159ff"
50
+ "gitHead": "393c2b5533837fd637e998d23f0124c081a10df0"
51
51
  }
@@ -26,6 +26,16 @@ import * as metadataActions from './metadata/actions';
26
26
  /** @typedef {import('../types').WPDataStore} WPDataStore */
27
27
  /** @typedef {import('../types').WPDataReduxStoreConfig} WPDataReduxStoreConfig */
28
28
 
29
+ const trimUndefinedValues = ( array ) => {
30
+ const result = [ ...array ];
31
+ for ( let i = result.length - 1; i >= 0; i-- ) {
32
+ if ( result[ i ] === undefined ) {
33
+ result.splice( i, 1 );
34
+ }
35
+ }
36
+ return result;
37
+ };
38
+
29
39
  /**
30
40
  * Create a cache to track whether resolvers started running or not.
31
41
  *
@@ -35,12 +45,15 @@ function createResolversCache() {
35
45
  const cache = {};
36
46
  return {
37
47
  isRunning( selectorName, args ) {
38
- return cache[ selectorName ] && cache[ selectorName ].get( args );
48
+ return (
49
+ cache[ selectorName ] &&
50
+ cache[ selectorName ].get( trimUndefinedValues( args ) )
51
+ );
39
52
  },
40
53
 
41
54
  clear( selectorName, args ) {
42
55
  if ( cache[ selectorName ] ) {
43
- cache[ selectorName ].delete( args );
56
+ cache[ selectorName ].delete( trimUndefinedValues( args ) );
44
57
  }
45
58
  },
46
59
 
@@ -49,7 +62,7 @@ function createResolversCache() {
49
62
  cache[ selectorName ] = new EquivalentKeyMap();
50
63
  }
51
64
 
52
- cache[ selectorName ].set( args, true );
65
+ cache[ selectorName ].set( trimUndefinedValues( args ), true );
53
66
  },
54
67
  };
55
68
  }
@@ -324,7 +337,6 @@ function mapResolveSelectors( selectors, store ) {
324
337
  const hasFinished = () =>
325
338
  selectors.hasFinishedResolution( selectorName, args );
326
339
  const getResult = () => selector.apply( null, args );
327
-
328
340
  // trigger the selector (to trigger the resolver)
329
341
  const result = getResult();
330
342
  if ( hasFinished() ) {
@@ -376,6 +388,7 @@ function mapResolvers( resolvers, selectors, store, resolversCache ) {
376
388
  const selectorResolver = ( ...args ) => {
377
389
  async function fulfillSelector() {
378
390
  const state = store.getState();
391
+
379
392
  if (
380
393
  resolversCache.isRunning( selectorName, args ) ||
381
394
  ( typeof resolver.isFulfilled === 'function' &&
File without changes
package/tsconfig.json CHANGED
@@ -17,5 +17,6 @@
17
17
  "src/redux-store/metadata/**/*",
18
18
  "src/promise-middleware.js",
19
19
  "src/utils",
20
+ "src/*.ts"
20
21
  ]
21
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.js","./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.d.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},"575681593b7e88e6eb00d5f678393eaa9733e101d02c30a068d3a24a32897460","8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},{"version":"d530250769a14518ebd6edda5b5f94abaaf3b9f612363c0da32082fa6acd0da8","affectsGlobalScope":true},"eb299028527009e3de3f323eb1c1f4fcbe8ad0f4ac51caa08844b654d2e8ea98","a0ece1260105335b3dd81d6e16472ecd6e862b30141e287d5eff75ff889e4600","84afb9594b09b54f793629627078ce4ba723cb95055aa5148f1d0cf5be7f4344","5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24","9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","e5cba7b22ed133413f3734349f4b4c5e85c106ebe6b9ac011ceec3cc39c123ff","2c479b6e0f4fff2a6ca973b6b9f67dd6d0ec075f826bfd478da13360b1d0caf3"],"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,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.js","./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},"575681593b7e88e6eb00d5f678393eaa9733e101d02c30a068d3a24a32897460","8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},{"version":"d530250769a14518ebd6edda5b5f94abaaf3b9f612363c0da32082fa6acd0da8","affectsGlobalScope":true},"eb299028527009e3de3f323eb1c1f4fcbe8ad0f4ac51caa08844b654d2e8ea98","a0ece1260105335b3dd81d6e16472ecd6e862b30141e287d5eff75ff889e4600","84afb9594b09b54f793629627078ce4ba723cb95055aa5148f1d0cf5be7f4344","5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24","9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","e5cba7b22ed133413f3734349f4b4c5e85c106ebe6b9ac011ceec3cc39c123ff","2c479b6e0f4fff2a6ca973b6b9f67dd6d0ec075f826bfd478da13360b1d0caf3"],"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,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"}
package/build/types.d.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=types.d.js.map
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.d.js.map