@wordpress/data 9.8.0 → 9.10.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/CHANGELOG.md +17 -4
  2. package/README.md +101 -2
  3. package/build/components/async-mode-provider/context.js +2 -3
  4. package/build/components/async-mode-provider/context.js.map +1 -1
  5. package/build/components/async-mode-provider/index.js +0 -5
  6. package/build/components/async-mode-provider/index.js.map +1 -1
  7. package/build/components/async-mode-provider/use-async-mode.js +1 -3
  8. package/build/components/async-mode-provider/use-async-mode.js.map +1 -1
  9. package/build/components/registry-provider/context.js +3 -6
  10. package/build/components/registry-provider/context.js.map +1 -1
  11. package/build/components/registry-provider/index.js +0 -5
  12. package/build/components/registry-provider/index.js.map +1 -1
  13. package/build/components/registry-provider/use-registry.js +0 -3
  14. package/build/components/registry-provider/use-registry.js.map +1 -1
  15. package/build/components/use-dispatch/index.js +0 -3
  16. package/build/components/use-dispatch/index.js.map +1 -1
  17. package/build/components/use-dispatch/use-dispatch-with-map.js +0 -7
  18. package/build/components/use-dispatch/use-dispatch-with-map.js.map +1 -1
  19. package/build/components/use-dispatch/use-dispatch.js +0 -5
  20. package/build/components/use-dispatch/use-dispatch.js.map +1 -1
  21. package/build/components/use-select/index.js +35 -53
  22. package/build/components/use-select/index.js.map +1 -1
  23. package/build/components/with-dispatch/index.js +2 -7
  24. package/build/components/with-dispatch/index.js.map +1 -1
  25. package/build/components/with-registry/index.js +2 -5
  26. package/build/components/with-registry/index.js.map +1 -1
  27. package/build/components/with-select/index.js +2 -8
  28. package/build/components/with-select/index.js.map +1 -1
  29. package/build/controls.js +4 -10
  30. package/build/controls.js.map +1 -1
  31. package/build/default-registry.js +0 -3
  32. package/build/default-registry.js.map +1 -1
  33. package/build/dispatch.js +0 -3
  34. package/build/dispatch.js.map +1 -1
  35. package/build/factory.js +2 -5
  36. package/build/factory.js.map +1 -1
  37. package/build/index.js +7 -28
  38. package/build/index.js.map +1 -1
  39. package/build/lock-unlock.js +1 -2
  40. package/build/lock-unlock.js.map +1 -1
  41. package/build/plugins/index.js +0 -2
  42. package/build/plugins/index.js.map +1 -1
  43. package/build/plugins/persistence/index.js +13 -37
  44. package/build/plugins/persistence/index.js.map +1 -1
  45. package/build/plugins/persistence/storage/default.js +1 -5
  46. package/build/plugins/persistence/storage/default.js.map +1 -1
  47. package/build/plugins/persistence/storage/object.js +0 -5
  48. package/build/plugins/persistence/storage/object.js.map +1 -1
  49. package/build/promise-middleware.js +0 -5
  50. package/build/promise-middleware.js.map +1 -1
  51. package/build/redux-store/index.js +36 -117
  52. package/build/redux-store/index.js.map +1 -1
  53. package/build/redux-store/metadata/actions.js +8 -17
  54. package/build/redux-store/metadata/actions.js.map +1 -1
  55. package/build/redux-store/metadata/equivalent-key-map.d.js.map +1 -1
  56. package/build/redux-store/metadata/reducer.js +1 -23
  57. package/build/redux-store/metadata/reducer.js.map +1 -1
  58. package/build/redux-store/metadata/selectors.js +8 -22
  59. package/build/redux-store/metadata/selectors.js.map +1 -1
  60. package/build/redux-store/metadata/utils.js +6 -14
  61. package/build/redux-store/metadata/utils.js.map +1 -1
  62. package/build/redux-store/thunk-middleware.js +0 -2
  63. package/build/redux-store/thunk-middleware.js.map +1 -1
  64. package/build/registry.js +29 -73
  65. package/build/registry.js.map +1 -1
  66. package/build/resolvers-cache-middleware.js +2 -8
  67. package/build/resolvers-cache-middleware.js.map +1 -1
  68. package/build/select.js +0 -3
  69. package/build/select.js.map +1 -1
  70. package/build/store/index.js +0 -7
  71. package/build/store/index.js.map +1 -1
  72. package/build/types.js.map +1 -1
  73. package/build/utils/emitter.js +2 -11
  74. package/build/utils/emitter.js.map +1 -1
  75. package/build-module/components/async-mode-provider/context.js +1 -1
  76. package/build-module/components/async-mode-provider/context.js.map +1 -1
  77. package/build-module/components/async-mode-provider/index.js.map +1 -1
  78. package/build-module/components/async-mode-provider/use-async-mode.js +1 -1
  79. package/build-module/components/async-mode-provider/use-async-mode.js.map +1 -1
  80. package/build-module/components/registry-provider/context.js +3 -3
  81. package/build-module/components/registry-provider/context.js.map +1 -1
  82. package/build-module/components/registry-provider/index.js.map +1 -1
  83. package/build-module/components/registry-provider/use-registry.js +2 -2
  84. package/build-module/components/registry-provider/use-registry.js.map +1 -1
  85. package/build-module/components/use-dispatch/index.js.map +1 -1
  86. package/build-module/components/use-dispatch/use-dispatch-with-map.js +2 -4
  87. package/build-module/components/use-dispatch/use-dispatch-with-map.js.map +1 -1
  88. package/build-module/components/use-dispatch/use-dispatch.js +1 -3
  89. package/build-module/components/use-dispatch/use-dispatch.js.map +1 -1
  90. package/build-module/components/use-select/index.js +35 -46
  91. package/build-module/components/use-select/index.js.map +1 -1
  92. package/build-module/components/with-dispatch/index.js +4 -6
  93. package/build-module/components/with-dispatch/index.js.map +1 -1
  94. package/build-module/components/with-registry/index.js +4 -4
  95. package/build-module/components/with-registry/index.js.map +1 -1
  96. package/build-module/components/with-select/index.js +4 -6
  97. package/build-module/components/with-select/index.js.map +1 -1
  98. package/build-module/controls.js +4 -8
  99. package/build-module/controls.js.map +1 -1
  100. package/build-module/default-registry.js.map +1 -1
  101. package/build-module/dispatch.js +2 -1
  102. package/build-module/dispatch.js.map +1 -1
  103. package/build-module/factory.js +2 -3
  104. package/build-module/factory.js.map +1 -1
  105. package/build-module/index.js +11 -10
  106. package/build-module/index.js.map +1 -1
  107. package/build-module/lock-unlock.js.map +1 -1
  108. package/build-module/plugins/index.js.map +1 -1
  109. package/build-module/plugins/persistence/index.js +15 -30
  110. package/build-module/plugins/persistence/index.js.map +1 -1
  111. package/build-module/plugins/persistence/storage/default.js +0 -2
  112. package/build-module/plugins/persistence/storage/default.js.map +1 -1
  113. package/build-module/plugins/persistence/storage/object.js +0 -5
  114. package/build-module/plugins/persistence/storage/object.js.map +1 -1
  115. package/build-module/promise-middleware.js +1 -3
  116. package/build-module/promise-middleware.js.map +1 -1
  117. package/build-module/redux-store/index.js +38 -101
  118. package/build-module/redux-store/index.js.map +1 -1
  119. package/build-module/redux-store/metadata/actions.js +8 -8
  120. package/build-module/redux-store/metadata/actions.js.map +1 -1
  121. package/build-module/redux-store/metadata/equivalent-key-map.d.js.map +1 -1
  122. package/build-module/redux-store/metadata/reducer.js +1 -21
  123. package/build-module/redux-store/metadata/reducer.js.map +1 -1
  124. package/build-module/redux-store/metadata/selectors.js +9 -13
  125. package/build-module/redux-store/metadata/selectors.js.map +1 -1
  126. package/build-module/redux-store/metadata/utils.js +6 -11
  127. package/build-module/redux-store/metadata/utils.js.map +1 -1
  128. package/build-module/redux-store/thunk-middleware.js +0 -1
  129. package/build-module/redux-store/thunk-middleware.js.map +1 -1
  130. package/build-module/registry.js +30 -67
  131. package/build-module/registry.js.map +1 -1
  132. package/build-module/resolvers-cache-middleware.js +3 -6
  133. package/build-module/resolvers-cache-middleware.js.map +1 -1
  134. package/build-module/select.js +2 -1
  135. package/build-module/select.js.map +1 -1
  136. package/build-module/store/index.js +0 -7
  137. package/build-module/store/index.js.map +1 -1
  138. package/build-module/types.js.map +1 -1
  139. package/build-module/utils/emitter.js +2 -10
  140. package/build-module/utils/emitter.js.map +1 -1
  141. package/build-types/components/use-select/index.d.ts.map +1 -1
  142. package/build-types/dispatch.d.ts +2 -2
  143. package/build-types/dispatch.d.ts.map +1 -1
  144. package/build-types/index.d.ts +1 -1
  145. package/build-types/index.d.ts.map +1 -1
  146. package/build-types/plugins/persistence/index.d.ts.map +1 -1
  147. package/build-types/private-apis.d.ts +3 -0
  148. package/build-types/private-apis.d.ts.map +1 -0
  149. package/build-types/store/index.d.ts +1 -1
  150. package/build-types/types.d.ts +9 -3
  151. package/build-types/types.d.ts.map +1 -1
  152. package/package.json +9 -9
  153. package/src/components/use-select/index.js +14 -0
  154. package/src/dispatch.ts +6 -9
  155. package/src/plugins/persistence/index.js +0 -1
  156. package/src/types.ts +38 -5
  157. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/redux-store/metadata/selectors.js"],"names":["getResolutionState","state","selectorName","args","map","get","getIsResolving","resolutionState","status","hasStartedResolution","undefined","hasFinishedResolution","hasResolutionFailed","getResolutionError","error","isResolving","getCachedResolvers","hasResolvingSelectors","Object","values","some","selectorState","Array","from","_map","resolution"],"mappings":";;;;;;;;;;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;;AACA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,kBAAT,CAA6BC,KAA7B,EAAoCC,YAApC,EAAkDC,IAAlD,EAAyD;AAC/D,QAAMC,GAAG,GAAGH,KAAK,CAAEC,YAAF,CAAjB;;AACA,MAAK,CAAEE,GAAP,EAAa;AACZ;AACA;;AAED,SAAOA,GAAG,CAACC,GAAJ,CAAS,mCAAwBF,IAAxB,CAAT,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,cAAT,CAAyBL,KAAzB,EAAgCC,YAAhC,EAA8CC,IAA9C,EAAqD;AAC3D,QAAMI,eAAe,GAAGP,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAA1C;AAEA,SAAOI,eAAe,IAAIA,eAAe,CAACC,MAAhB,KAA2B,WAArD;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,oBAAT,CAA+BR,KAA/B,EAAsCC,YAAtC,EAAoDC,IAApD,EAA2D;AACjE,SAAOH,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAAlB,KAAoDO,SAA3D;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,qBAAT,CAAgCV,KAAhC,EAAuCC,YAAvC,EAAqDC,IAArD,EAA4D;AAClE,QAAMK,MAAM,GAAGR,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAAlB,EAAiDK,MAAhE;AACA,SAAOA,MAAM,KAAK,UAAX,IAAyBA,MAAM,KAAK,OAA3C;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASI,mBAAT,CAA8BX,KAA9B,EAAqCC,YAArC,EAAmDC,IAAnD,EAA0D;AAChE,SAAOH,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAAlB,EAAiDK,MAAjD,KAA4D,OAAnE;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASK,kBAAT,CAA6BZ,KAA7B,EAAoCC,YAApC,EAAkDC,IAAlD,EAAyD;AAC/D,QAAMI,eAAe,GAAGP,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAA1C;AACA,SAAOI,eAAe,EAAEC,MAAjB,KAA4B,OAA5B,GAAsCD,eAAe,CAACO,KAAtD,GAA8D,IAArE;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,WAAT,CAAsBd,KAAtB,EAA6BC,YAA7B,EAA2CC,IAA3C,EAAkD;AACxD,SACCH,kBAAkB,CAAEC,KAAF,EAASC,YAAT,EAAuBC,IAAvB,CAAlB,EAAiDK,MAAjD,KAA4D,WAD7D;AAGA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASQ,kBAAT,CAA6Bf,KAA7B,EAAqC;AAC3C,SAAOA,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASgB,qBAAT,CAAgChB,KAAhC,EAAwC;AAC9C,SAAOiB,MAAM,CAACC,MAAP,CAAelB,KAAf,EAAuBmB,IAAvB,CAA+BC,aAAF;AACnC;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,CAACC,IAAN,CAAYF,aAAa,CAACG,IAAd,CAAmBL,MAAnB,EAAZ,EAA0CC,IAA1C,CACGK,UAAF,IAAkBA,UAAU,CAAE,CAAF,CAAV,EAAiBjB,MAAjB,KAA4B,WAD/C,CARM,CAAP;AAYA","sourcesContent":["/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey } from './utils';\n\n/** @typedef {Record<string, import('./reducer').State>} State */\n/** @typedef {import('./reducer').StateValue} StateValue */\n/** @typedef {import('./reducer').Status} Status */\n\n/**\n * Returns the raw resolution state value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {StateValue|undefined} isResolving value.\n */\nexport function getResolutionState( state, selectorName, args ) {\n\tconst map = state[ selectorName ];\n\tif ( ! map ) {\n\t\treturn;\n\t}\n\n\treturn map.get( selectorArgsToStateKey( args ) );\n}\n\n/**\n * Returns the raw `isResolving` value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean | undefined} isResolving value.\n */\nexport function getIsResolving( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\n\treturn resolutionState && resolutionState.status === 'resolving';\n}\n\n/**\n * Returns true if resolution has already been triggered for a given\n * selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has been triggered.\n */\nexport function hasStartedResolution( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args ) !== undefined;\n}\n\n/**\n * Returns true if resolution has completed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has completed.\n */\nexport function hasFinishedResolution( state, selectorName, args ) {\n\tconst status = getResolutionState( state, selectorName, args )?.status;\n\treturn status === 'finished' || status === 'error';\n}\n\n/**\n * Returns true if resolution has failed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Has resolution failed\n */\nexport function hasResolutionFailed( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args )?.status === 'error';\n}\n\n/**\n * Returns the resolution error for a given selector name, and arguments set.\n * Note it may be of an Error type, but may also be null, undefined, or anything else\n * that can be `throw`-n.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {Error|unknown} Last resolution error\n */\nexport function getResolutionError( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\treturn resolutionState?.status === 'error' ? resolutionState.error : null;\n}\n\n/**\n * Returns true if resolution has been triggered but has not yet completed for\n * a given selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution is in progress.\n */\nexport function isResolving( state, selectorName, args ) {\n\treturn (\n\t\tgetResolutionState( state, selectorName, args )?.status === 'resolving'\n\t);\n}\n\n/**\n * Returns the list of the cached resolvers.\n *\n * @param {State} state Data state.\n *\n * @return {State} Resolvers mapped by args and selectorName.\n */\nexport function getCachedResolvers( state ) {\n\treturn state;\n}\n\n/**\n * Whether the store has any currently resolving selectors.\n *\n * @param {State} state Data state.\n *\n * @return {boolean} True if one or more selectors are resolving, false otherwise.\n */\nexport function hasResolvingSelectors( state ) {\n\treturn Object.values( state ).some( ( selectorState ) =>\n\t\t/**\n\t\t * This uses the internal `_map` property of `EquivalentKeyMap` for\n\t\t * optimization purposes, since the `EquivalentKeyMap` implementation\n\t\t * does not support a `.values()` implementation.\n\t\t *\n\t\t * @see https://github.com/aduth/equivalent-key-map\n\t\t */\n\t\tArray.from( selectorState._map.values() ).some(\n\t\t\t( resolution ) => resolution[ 1 ]?.status === 'resolving'\n\t\t)\n\t);\n}\n"]}
1
+ {"version":3,"names":["_utils","require","getResolutionState","state","selectorName","args","map","get","selectorArgsToStateKey","getIsResolving","resolutionState","status","hasStartedResolution","undefined","hasFinishedResolution","hasResolutionFailed","getResolutionError","error","isResolving","getCachedResolvers","hasResolvingSelectors","Object","values","some","selectorState","Array","from","_map","resolution"],"sources":["@wordpress/data/src/redux-store/metadata/selectors.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey } from './utils';\n\n/** @typedef {Record<string, import('./reducer').State>} State */\n/** @typedef {import('./reducer').StateValue} StateValue */\n/** @typedef {import('./reducer').Status} Status */\n\n/**\n * Returns the raw resolution state value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {StateValue|undefined} isResolving value.\n */\nexport function getResolutionState( state, selectorName, args ) {\n\tconst map = state[ selectorName ];\n\tif ( ! map ) {\n\t\treturn;\n\t}\n\n\treturn map.get( selectorArgsToStateKey( args ) );\n}\n\n/**\n * Returns the raw `isResolving` value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean | undefined} isResolving value.\n */\nexport function getIsResolving( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\n\treturn resolutionState && resolutionState.status === 'resolving';\n}\n\n/**\n * Returns true if resolution has already been triggered for a given\n * selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has been triggered.\n */\nexport function hasStartedResolution( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args ) !== undefined;\n}\n\n/**\n * Returns true if resolution has completed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has completed.\n */\nexport function hasFinishedResolution( state, selectorName, args ) {\n\tconst status = getResolutionState( state, selectorName, args )?.status;\n\treturn status === 'finished' || status === 'error';\n}\n\n/**\n * Returns true if resolution has failed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Has resolution failed\n */\nexport function hasResolutionFailed( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args )?.status === 'error';\n}\n\n/**\n * Returns the resolution error for a given selector name, and arguments set.\n * Note it may be of an Error type, but may also be null, undefined, or anything else\n * that can be `throw`-n.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {Error|unknown} Last resolution error\n */\nexport function getResolutionError( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\treturn resolutionState?.status === 'error' ? resolutionState.error : null;\n}\n\n/**\n * Returns true if resolution has been triggered but has not yet completed for\n * a given selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution is in progress.\n */\nexport function isResolving( state, selectorName, args ) {\n\treturn (\n\t\tgetResolutionState( state, selectorName, args )?.status === 'resolving'\n\t);\n}\n\n/**\n * Returns the list of the cached resolvers.\n *\n * @param {State} state Data state.\n *\n * @return {State} Resolvers mapped by args and selectorName.\n */\nexport function getCachedResolvers( state ) {\n\treturn state;\n}\n\n/**\n * Whether the store has any currently resolving selectors.\n *\n * @param {State} state Data state.\n *\n * @return {boolean} True if one or more selectors are resolving, false otherwise.\n */\nexport function hasResolvingSelectors( state ) {\n\treturn Object.values( state ).some( ( selectorState ) =>\n\t\t/**\n\t\t * This uses the internal `_map` property of `EquivalentKeyMap` for\n\t\t * optimization purposes, since the `EquivalentKeyMap` implementation\n\t\t * does not support a `.values()` implementation.\n\t\t *\n\t\t * @see https://github.com/aduth/equivalent-key-map\n\t\t */\n\t\tArray.from( selectorState._map.values() ).some(\n\t\t\t( resolution ) => resolution[ 1 ]?.status === 'resolving'\n\t\t)\n\t);\n}\n"],"mappings":"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"}
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.onSubKey = void 0;
7
7
  exports.selectorArgsToStateKey = selectorArgsToStateKey;
8
-
9
8
  /**
10
9
  * External dependencies
11
10
  */
@@ -21,23 +20,22 @@ const onSubKey = actionProperty => reducer => (state = {}, action) => {
21
20
  // Retrieve subkey from action. Do not track if undefined; useful for cases
22
21
  // where reducer is scoped by action shape.
23
22
  const key = action[actionProperty];
24
-
25
23
  if (key === undefined) {
26
24
  return state;
27
- } // Avoid updating state if unchanged. Note that this also accounts for a
28
- // reducer which returns undefined on a key which is not yet tracked.
29
-
25
+ }
30
26
 
27
+ // Avoid updating state if unchanged. Note that this also accounts for a
28
+ // reducer which returns undefined on a key which is not yet tracked.
31
29
  const nextKeyState = reducer(state[key], action);
32
-
33
30
  if (nextKeyState === state[key]) {
34
31
  return state;
35
32
  }
36
-
37
- return { ...state,
33
+ return {
34
+ ...state,
38
35
  [key]: nextKeyState
39
36
  };
40
37
  };
38
+
41
39
  /**
42
40
  * Normalize selector argument array by defaulting `undefined` value to an empty array
43
41
  * and removing trailing `undefined` values.
@@ -45,22 +43,16 @@ const onSubKey = actionProperty => reducer => (state = {}, action) => {
45
43
  * @param args Selector argument array
46
44
  * @return Normalized state key array
47
45
  */
48
-
49
-
50
46
  exports.onSubKey = onSubKey;
51
-
52
47
  function selectorArgsToStateKey(args) {
53
48
  if (args === undefined || args === null) {
54
49
  return [];
55
50
  }
56
-
57
51
  const len = args.length;
58
52
  let idx = len;
59
-
60
53
  while (idx > 0 && args[idx - 1] === undefined) {
61
54
  idx--;
62
55
  }
63
-
64
56
  return idx === len ? args : args.slice(0, idx);
65
57
  }
66
58
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/redux-store/metadata/utils.ts"],"names":["onSubKey","actionProperty","reducer","state","action","key","undefined","nextKeyState","selectorArgsToStateKey","args","len","length","idx","slice"],"mappings":";;;;;;;;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,QAAQ,GAEnBC,cADD,IAICC,OADD,IAGA,CAAEC,KAA+B,GAAG,EAApC,EAAwCC,MAAxC,KAAoD;AACnD;AACA;AACA,QAAMC,GAAG,GAAGD,MAAM,CAAEH,cAAF,CAAlB;;AACA,MAAKI,GAAG,KAAKC,SAAb,EAAyB;AACxB,WAAOH,KAAP;AACA,GANkD,CAQnD;AACA;;;AACA,QAAMI,YAAY,GAAGL,OAAO,CAAEC,KAAK,CAAEE,GAAF,CAAP,EAAgBD,MAAhB,CAA5B;;AACA,MAAKG,YAAY,KAAKJ,KAAK,CAAEE,GAAF,CAA3B,EAAqC;AACpC,WAAOF,KAAP;AACA;;AAED,SAAO,EACN,GAAGA,KADG;AAEN,KAAEE,GAAF,GAASE;AAFH,GAAP;AAIA,CA1BK;AA4BP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASC,sBAAT,CAAiCC,IAAjC,EAAsE;AAC5E,MAAKA,IAAI,KAAKH,SAAT,IAAsBG,IAAI,KAAK,IAApC,EAA2C;AAC1C,WAAO,EAAP;AACA;;AAED,QAAMC,GAAG,GAAGD,IAAI,CAACE,MAAjB;AACA,MAAIC,GAAG,GAAGF,GAAV;;AACA,SAAQE,GAAG,GAAG,CAAN,IAAWH,IAAI,CAAEG,GAAG,GAAG,CAAR,CAAJ,KAAoBN,SAAvC,EAAmD;AAClDM,IAAAA,GAAG;AACH;;AACD,SAAOA,GAAG,KAAKF,GAAR,GAAcD,IAAd,GAAqBA,IAAI,CAACI,KAAL,CAAY,CAAZ,EAAeD,GAAf,CAA5B;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport type { AnyAction, Reducer } from 'redux';\n\n/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param actionProperty Action property by which to key object.\n * @return Higher-order reducer.\n */\nexport const onSubKey =\n\t< TState extends unknown, TAction extends AnyAction >(\n\t\tactionProperty: string\n\t) =>\n\t(\n\t\treducer: Reducer< TState, TAction >\n\t): Reducer< Record< string, TState >, TAction > =>\n\t( state: Record< string, TState > = {}, action ) => {\n\t\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t\t// where reducer is scoped by action shape.\n\t\tconst key = action[ actionProperty ];\n\t\tif ( key === undefined ) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t\t// reducer which returns undefined on a key which is not yet tracked.\n\t\tconst nextKeyState = reducer( state[ key ], action );\n\t\tif ( nextKeyState === state[ key ] ) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ key ]: nextKeyState,\n\t\t};\n\t};\n\n/**\n * Normalize selector argument array by defaulting `undefined` value to an empty array\n * and removing trailing `undefined` values.\n *\n * @param args Selector argument array\n * @return Normalized state key array\n */\nexport function selectorArgsToStateKey( args: unknown[] | null | undefined ) {\n\tif ( args === undefined || args === null ) {\n\t\treturn [];\n\t}\n\n\tconst len = args.length;\n\tlet idx = len;\n\twhile ( idx > 0 && args[ idx - 1 ] === undefined ) {\n\t\tidx--;\n\t}\n\treturn idx === len ? args : args.slice( 0, idx );\n}\n"]}
1
+ {"version":3,"names":["onSubKey","actionProperty","reducer","state","action","key","undefined","nextKeyState","exports","selectorArgsToStateKey","args","len","length","idx","slice"],"sources":["@wordpress/data/src/redux-store/metadata/utils.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { AnyAction, Reducer } from 'redux';\n\n/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param actionProperty Action property by which to key object.\n * @return Higher-order reducer.\n */\nexport const onSubKey =\n\t< TState extends unknown, TAction extends AnyAction >(\n\t\tactionProperty: string\n\t) =>\n\t(\n\t\treducer: Reducer< TState, TAction >\n\t): Reducer< Record< string, TState >, TAction > =>\n\t( state: Record< string, TState > = {}, action ) => {\n\t\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t\t// where reducer is scoped by action shape.\n\t\tconst key = action[ actionProperty ];\n\t\tif ( key === undefined ) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t\t// reducer which returns undefined on a key which is not yet tracked.\n\t\tconst nextKeyState = reducer( state[ key ], action );\n\t\tif ( nextKeyState === state[ key ] ) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ key ]: nextKeyState,\n\t\t};\n\t};\n\n/**\n * Normalize selector argument array by defaulting `undefined` value to an empty array\n * and removing trailing `undefined` values.\n *\n * @param args Selector argument array\n * @return Normalized state key array\n */\nexport function selectorArgsToStateKey( args: unknown[] | null | undefined ) {\n\tif ( args === undefined || args === null ) {\n\t\treturn [];\n\t}\n\n\tconst len = args.length;\n\tlet idx = len;\n\twhile ( idx > 0 && args[ idx - 1 ] === undefined ) {\n\t\tidx--;\n\t}\n\treturn idx === len ? args : args.slice( 0, idx );\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,QAAQ,GAEnBC,cAAsB,IAGtBC,OAAmC,IAEpC,CAAEC,KAA+B,GAAG,CAAC,CAAC,EAAEC,MAAM,KAAM;EACnD;EACA;EACA,MAAMC,GAAG,GAAGD,MAAM,CAAEH,cAAc,CAAE;EACpC,IAAKI,GAAG,KAAKC,SAAS,EAAG;IACxB,OAAOH,KAAK;EACb;;EAEA;EACA;EACA,MAAMI,YAAY,GAAGL,OAAO,CAAEC,KAAK,CAAEE,GAAG,CAAE,EAAED,MAAO,CAAC;EACpD,IAAKG,YAAY,KAAKJ,KAAK,CAAEE,GAAG,CAAE,EAAG;IACpC,OAAOF,KAAK;EACb;EAEA,OAAO;IACN,GAAGA,KAAK;IACR,CAAEE,GAAG,GAAIE;EACV,CAAC;AACF,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AANAC,OAAA,CAAAR,QAAA,GAAAA,QAAA;AAOO,SAASS,sBAAsBA,CAAEC,IAAkC,EAAG;EAC5E,IAAKA,IAAI,KAAKJ,SAAS,IAAII,IAAI,KAAK,IAAI,EAAG;IAC1C,OAAO,EAAE;EACV;EAEA,MAAMC,GAAG,GAAGD,IAAI,CAACE,MAAM;EACvB,IAAIC,GAAG,GAAGF,GAAG;EACb,OAAQE,GAAG,GAAG,CAAC,IAAIH,IAAI,CAAEG,GAAG,GAAG,CAAC,CAAE,KAAKP,SAAS,EAAG;IAClDO,GAAG,EAAE;EACN;EACA,OAAOA,GAAG,KAAKF,GAAG,GAAGD,IAAI,GAAGA,IAAI,CAACI,KAAK,CAAE,CAAC,EAAED,GAAI,CAAC;AACjD"}
@@ -4,13 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = createThunkMiddleware;
7
-
8
7
  function createThunkMiddleware(args) {
9
8
  return () => next => action => {
10
9
  if (typeof action === 'function') {
11
10
  return action(args);
12
11
  }
13
-
14
12
  return next(action);
15
13
  };
16
14
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/redux-store/thunk-middleware.js"],"names":["createThunkMiddleware","args","next","action"],"mappings":";;;;;;;AAAe,SAASA,qBAAT,CAAgCC,IAAhC,EAAuC;AACrD,SAAO,MAAQC,IAAF,IAAcC,MAAF,IAAc;AACtC,QAAK,OAAOA,MAAP,KAAkB,UAAvB,EAAoC;AACnC,aAAOA,MAAM,CAAEF,IAAF,CAAb;AACA;;AAED,WAAOC,IAAI,CAAEC,MAAF,CAAX;AACA,GAND;AAOA","sourcesContent":["export default function createThunkMiddleware( args ) {\n\treturn () => ( next ) => ( action ) => {\n\t\tif ( typeof action === 'function' ) {\n\t\t\treturn action( args );\n\t\t}\n\n\t\treturn next( action );\n\t};\n}\n"]}
1
+ {"version":3,"names":["createThunkMiddleware","args","next","action"],"sources":["@wordpress/data/src/redux-store/thunk-middleware.js"],"sourcesContent":["export default function createThunkMiddleware( args ) {\n\treturn () => ( next ) => ( action ) => {\n\t\tif ( typeof action === 'function' ) {\n\t\t\treturn action( args );\n\t\t}\n\n\t\treturn next( action );\n\t};\n}\n"],"mappings":";;;;;;AAAe,SAASA,qBAAqBA,CAAEC,IAAI,EAAG;EACrD,OAAO,MAAQC,IAAI,IAAQC,MAAM,IAAM;IACtC,IAAK,OAAOA,MAAM,KAAK,UAAU,EAAG;MACnC,OAAOA,MAAM,CAAEF,IAAK,CAAC;IACtB;IAEA,OAAOC,IAAI,CAAEC,MAAO,CAAC;EACtB,CAAC;AACF"}
package/build/registry.js CHANGED
@@ -1,22 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createRegistry = createRegistry;
9
-
10
8
  var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
11
-
12
9
  var _reduxStore = _interopRequireDefault(require("./redux-store"));
13
-
14
10
  var _store = _interopRequireDefault(require("./store"));
15
-
16
11
  var _emitter = require("./utils/emitter");
17
-
18
12
  var _lockUnlock = require("./lock-unlock");
19
-
20
13
  /**
21
14
  * WordPress dependencies
22
15
  */
@@ -52,6 +45,7 @@ var _lockUnlock = require("./lock-unlock");
52
45
  *
53
46
  * @property {Function} registerStore registers store.
54
47
  */
48
+
55
49
  function getStoreName(storeNameOrDescriptor) {
56
50
  return typeof storeNameOrDescriptor === 'string' ? storeNameOrDescriptor : storeNameOrDescriptor.name;
57
51
  }
@@ -64,19 +58,18 @@ function getStoreName(storeNameOrDescriptor) {
64
58
  *
65
59
  * @return {WPDataRegistry} Data registry.
66
60
  */
67
-
68
-
69
61
  function createRegistry(storeConfigs = {}, parent = null) {
70
62
  const stores = {};
71
63
  const emitter = (0, _emitter.createEmitter)();
72
64
  let listeningStores = null;
65
+
73
66
  /**
74
67
  * Global listener called for each store's update.
75
68
  */
76
-
77
69
  function globalListener() {
78
70
  emitter.emit();
79
71
  }
72
+
80
73
  /**
81
74
  * Subscribe to changes to any data, either in all stores in registry, or
82
75
  * in one specific store.
@@ -86,32 +79,29 @@ function createRegistry(storeConfigs = {}, parent = null) {
86
79
  *
87
80
  * @return {Function} Unsubscribe function.
88
81
  */
89
-
90
-
91
82
  const subscribe = (listener, storeNameOrDescriptor) => {
92
83
  // subscribe to all stores
93
84
  if (!storeNameOrDescriptor) {
94
85
  return emitter.subscribe(listener);
95
- } // subscribe to one store
96
-
86
+ }
97
87
 
88
+ // subscribe to one store
98
89
  const storeName = getStoreName(storeNameOrDescriptor);
99
90
  const store = stores[storeName];
100
-
101
91
  if (store) {
102
92
  return store.subscribe(listener);
103
- } // Trying to access a store that hasn't been registered,
93
+ }
94
+
95
+ // Trying to access a store that hasn't been registered,
104
96
  // this is a pattern rarely used but seen in some places.
105
97
  // We fallback to global `subscribe` here for backward-compatibility for now.
106
98
  // See https://github.com/WordPress/gutenberg/pull/27466 for more info.
107
-
108
-
109
99
  if (!parent) {
110
100
  return emitter.subscribe(listener);
111
101
  }
112
-
113
102
  return parent.subscribe(listener, storeNameOrDescriptor);
114
103
  };
104
+
115
105
  /**
116
106
  * Calls a selector given the current state and extra arguments.
117
107
  *
@@ -120,23 +110,17 @@ function createRegistry(storeConfigs = {}, parent = null) {
120
110
  *
121
111
  * @return {*} The selector's returned value.
122
112
  */
123
-
124
-
125
113
  function select(storeNameOrDescriptor) {
126
114
  const storeName = getStoreName(storeNameOrDescriptor);
127
115
  listeningStores?.add(storeName);
128
116
  const store = stores[storeName];
129
-
130
117
  if (store) {
131
118
  return store.getSelectors();
132
119
  }
133
-
134
120
  return parent?.select(storeName);
135
121
  }
136
-
137
122
  function __unstableMarkListeningStores(callback, ref) {
138
123
  listeningStores = new Set();
139
-
140
124
  try {
141
125
  return callback.call(this);
142
126
  } finally {
@@ -144,6 +128,7 @@ function createRegistry(storeConfigs = {}, parent = null) {
144
128
  listeningStores = null;
145
129
  }
146
130
  }
131
+
147
132
  /**
148
133
  * Given a store descriptor, returns an object containing the store's selectors pre-bound to
149
134
  * state so that you only need to supply additional arguments, and modified so that they return
@@ -155,19 +140,16 @@ function createRegistry(storeConfigs = {}, parent = null) {
155
140
  *
156
141
  * @return {Object} Each key of the object matches the name of a selector.
157
142
  */
158
-
159
-
160
143
  function resolveSelect(storeNameOrDescriptor) {
161
144
  const storeName = getStoreName(storeNameOrDescriptor);
162
145
  listeningStores?.add(storeName);
163
146
  const store = stores[storeName];
164
-
165
147
  if (store) {
166
148
  return store.getResolveSelectors();
167
149
  }
168
-
169
150
  return parent && parent.resolveSelect(storeName);
170
151
  }
152
+
171
153
  /**
172
154
  * Given a store descriptor, returns an object containing the store's selectors pre-bound to
173
155
  * state so that you only need to supply additional arguments, and modified so that they throw
@@ -179,19 +161,16 @@ function createRegistry(storeConfigs = {}, parent = null) {
179
161
  *
180
162
  * @return {Object} Object containing the store's suspense-wrapped selectors.
181
163
  */
182
-
183
-
184
164
  function suspendSelect(storeNameOrDescriptor) {
185
165
  const storeName = getStoreName(storeNameOrDescriptor);
186
166
  listeningStores?.add(storeName);
187
167
  const store = stores[storeName];
188
-
189
168
  if (store) {
190
169
  return store.getSuspendSelectors();
191
170
  }
192
-
193
171
  return parent && parent.suspendSelect(storeName);
194
172
  }
173
+
195
174
  /**
196
175
  * Returns the available actions for a part of the state.
197
176
  *
@@ -200,68 +179,56 @@ function createRegistry(storeConfigs = {}, parent = null) {
200
179
  *
201
180
  * @return {*} The action's returned value.
202
181
  */
203
-
204
-
205
182
  function dispatch(storeNameOrDescriptor) {
206
183
  const storeName = getStoreName(storeNameOrDescriptor);
207
184
  const store = stores[storeName];
208
-
209
185
  if (store) {
210
186
  return store.getActions();
211
187
  }
212
-
213
188
  return parent && parent.dispatch(storeName);
214
- } //
189
+ }
190
+
191
+ //
215
192
  // Deprecated
216
193
  // TODO: Remove this after `use()` is removed.
217
-
218
-
219
194
  function withPlugins(attributes) {
220
195
  return Object.fromEntries(Object.entries(attributes).map(([key, attribute]) => {
221
196
  if (typeof attribute !== 'function') {
222
197
  return [key, attribute];
223
198
  }
224
-
225
199
  return [key, function () {
226
200
  return registry[key].apply(null, arguments);
227
201
  }];
228
202
  }));
229
203
  }
204
+
230
205
  /**
231
206
  * Registers a store instance.
232
207
  *
233
208
  * @param {string} name Store registry name.
234
209
  * @param {Function} createStore Function that creates a store object (getSelectors, getActions, subscribe).
235
210
  */
236
-
237
-
238
211
  function registerStoreInstance(name, createStore) {
239
212
  if (stores[name]) {
240
213
  // eslint-disable-next-line no-console
241
214
  console.error('Store "' + name + '" is already registered.');
242
215
  return stores[name];
243
216
  }
244
-
245
217
  const store = createStore();
246
-
247
218
  if (typeof store.getSelectors !== 'function') {
248
219
  throw new TypeError('store.getSelectors must be a function');
249
220
  }
250
-
251
221
  if (typeof store.getActions !== 'function') {
252
222
  throw new TypeError('store.getActions must be a function');
253
223
  }
254
-
255
224
  if (typeof store.subscribe !== 'function') {
256
225
  throw new TypeError('store.subscribe must be a function');
257
- } // The emitter is used to keep track of active listeners when the registry
226
+ }
227
+ // The emitter is used to keep track of active listeners when the registry
258
228
  // get paused, that way, when resumed we should be able to call all these
259
229
  // pending listeners.
260
-
261
-
262
230
  store.emitter = (0, _emitter.createEmitter)();
263
231
  const currentSubscribe = store.subscribe;
264
-
265
232
  store.subscribe = listener => {
266
233
  const unsubscribeFromEmitter = store.emitter.subscribe(listener);
267
234
  const unsubscribeFromStore = currentSubscribe(() => {
@@ -269,7 +236,6 @@ function createRegistry(storeConfigs = {}, parent = null) {
269
236
  store.emitter.emit();
270
237
  return;
271
238
  }
272
-
273
239
  listener();
274
240
  });
275
241
  return () => {
@@ -277,33 +243,31 @@ function createRegistry(storeConfigs = {}, parent = null) {
277
243
  unsubscribeFromEmitter?.();
278
244
  };
279
245
  };
280
-
281
246
  stores[name] = store;
282
- store.subscribe(globalListener); // Copy private actions and selectors from the parent store.
247
+ store.subscribe(globalListener);
283
248
 
249
+ // Copy private actions and selectors from the parent store.
284
250
  if (parent) {
285
251
  try {
286
252
  (0, _lockUnlock.unlock)(store.store).registerPrivateActions((0, _lockUnlock.unlock)(parent).privateActionsOf(name));
287
253
  (0, _lockUnlock.unlock)(store.store).registerPrivateSelectors((0, _lockUnlock.unlock)(parent).privateSelectorsOf(name));
288
- } catch (e) {// unlock() throws if store.store was not locked.
254
+ } catch (e) {
255
+ // unlock() throws if store.store was not locked.
289
256
  // The error indicates there's nothing to do here so let's
290
257
  // ignore it.
291
258
  }
292
259
  }
293
-
294
260
  return store;
295
261
  }
262
+
296
263
  /**
297
264
  * Registers a new store given a store descriptor.
298
265
  *
299
266
  * @param {StoreDescriptor} store Store descriptor.
300
267
  */
301
-
302
-
303
268
  function register(store) {
304
269
  registerStoreInstance(store.name, () => store.instantiate(registry));
305
270
  }
306
-
307
271
  function registerGenericStore(name, store) {
308
272
  (0, _deprecated.default)('wp.data.registerGenericStore', {
309
273
  since: '5.9',
@@ -311,6 +275,7 @@ function createRegistry(storeConfigs = {}, parent = null) {
311
275
  });
312
276
  registerStoreInstance(name, () => store);
313
277
  }
278
+
314
279
  /**
315
280
  * Registers a standard `@wordpress/data` store.
316
281
  *
@@ -319,31 +284,25 @@ function createRegistry(storeConfigs = {}, parent = null) {
319
284
  *
320
285
  * @return {Object} Registered store object.
321
286
  */
322
-
323
-
324
287
  function registerStore(storeName, options) {
325
288
  if (!options.reducer) {
326
289
  throw new TypeError('Must specify store reducer');
327
290
  }
328
-
329
291
  const store = registerStoreInstance(storeName, () => (0, _reduxStore.default)(storeName, options).instantiate(registry));
330
292
  return store.store;
331
293
  }
332
-
333
294
  function batch(callback) {
334
295
  // If we're already batching, just call the callback.
335
296
  if (emitter.isPaused) {
336
297
  callback();
337
298
  return;
338
299
  }
339
-
340
300
  emitter.pause();
341
301
  Object.values(stores).forEach(store => store.emitter.pause());
342
302
  callback();
343
303
  emitter.resume();
344
304
  Object.values(stores).forEach(store => store.emitter.resume());
345
305
  }
346
-
347
306
  let registry = {
348
307
  batch,
349
308
  stores,
@@ -359,31 +318,28 @@ function createRegistry(storeConfigs = {}, parent = null) {
359
318
  registerGenericStore,
360
319
  registerStore,
361
320
  __unstableMarkListeningStores
362
- }; //
321
+ };
322
+
323
+ //
363
324
  // TODO:
364
325
  // This function will be deprecated as soon as it is no longer internally referenced.
365
-
366
326
  function use(plugin, options) {
367
327
  if (!plugin) {
368
328
  return;
369
329
  }
370
-
371
- registry = { ...registry,
330
+ registry = {
331
+ ...registry,
372
332
  ...plugin(registry, options)
373
333
  };
374
334
  return registry;
375
335
  }
376
-
377
336
  registry.register(_store.default);
378
-
379
337
  for (const [name, config] of Object.entries(storeConfigs)) {
380
338
  registry.register((0, _reduxStore.default)(name, config));
381
339
  }
382
-
383
340
  if (parent) {
384
341
  parent.subscribe(globalListener);
385
342
  }
386
-
387
343
  const registryWithPlugins = withPlugins(registry);
388
344
  (0, _lockUnlock.lock)(registryWithPlugins, {
389
345
  privateActionsOf: name => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["getStoreName","storeNameOrDescriptor","name","createRegistry","storeConfigs","parent","stores","emitter","listeningStores","globalListener","emit","subscribe","listener","storeName","store","select","add","getSelectors","__unstableMarkListeningStores","callback","ref","Set","call","current","Array","from","resolveSelect","getResolveSelectors","suspendSelect","getSuspendSelectors","dispatch","getActions","withPlugins","attributes","Object","fromEntries","entries","map","key","attribute","registry","apply","arguments","registerStoreInstance","createStore","console","error","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","registerPrivateActions","privateActionsOf","registerPrivateSelectors","privateSelectorsOf","e","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","batch","pause","values","forEach","resume","namespaces","use","plugin","coreDataStore","config","registryWithPlugins","privateActions","privateSelectors"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAXA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA,SAASA,YAAT,CAAuBC,qBAAvB,EAA+C;AAC9C,SAAO,OAAOA,qBAAP,KAAiC,QAAjC,GACJA,qBADI,GAEJA,qBAAqB,CAACC,IAFzB;AAGA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,cAAT,CAAyBC,YAAY,GAAG,EAAxC,EAA4CC,MAAM,GAAG,IAArD,EAA4D;AAClE,QAAMC,MAAM,GAAG,EAAf;AACA,QAAMC,OAAO,GAAG,6BAAhB;AACA,MAAIC,eAAe,GAAG,IAAtB;AAEA;AACD;AACA;;AACC,WAASC,cAAT,GAA0B;AACzBF,IAAAA,OAAO,CAACG,IAAR;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,QAAMC,SAAS,GAAG,CAAEC,QAAF,EAAYX,qBAAZ,KAAuC;AACxD;AACA,QAAK,CAAEA,qBAAP,EAA+B;AAC9B,aAAOM,OAAO,CAACI,SAAR,CAAmBC,QAAnB,CAAP;AACA,KAJuD,CAMxD;;;AACA,UAAMC,SAAS,GAAGb,YAAY,CAAEC,qBAAF,CAA9B;AACA,UAAMa,KAAK,GAAGR,MAAM,CAAEO,SAAF,CAApB;;AACA,QAAKC,KAAL,EAAa;AACZ,aAAOA,KAAK,CAACH,SAAN,CAAiBC,QAAjB,CAAP;AACA,KAXuD,CAaxD;AACA;AACA;AACA;;;AACA,QAAK,CAAEP,MAAP,EAAgB;AACf,aAAOE,OAAO,CAACI,SAAR,CAAmBC,QAAnB,CAAP;AACA;;AAED,WAAOP,MAAM,CAACM,SAAP,CAAkBC,QAAlB,EAA4BX,qBAA5B,CAAP;AACA,GAtBD;AAwBA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASc,MAAT,CAAiBd,qBAAjB,EAAyC;AACxC,UAAMY,SAAS,GAAGb,YAAY,CAAEC,qBAAF,CAA9B;AACAO,IAAAA,eAAe,EAAEQ,GAAjB,CAAsBH,SAAtB;AACA,UAAMC,KAAK,GAAGR,MAAM,CAAEO,SAAF,CAApB;;AACA,QAAKC,KAAL,EAAa;AACZ,aAAOA,KAAK,CAACG,YAAN,EAAP;AACA;;AAED,WAAOZ,MAAM,EAAEU,MAAR,CAAgBF,SAAhB,CAAP;AACA;;AAED,WAASK,6BAAT,CAAwCC,QAAxC,EAAkDC,GAAlD,EAAwD;AACvDZ,IAAAA,eAAe,GAAG,IAAIa,GAAJ,EAAlB;;AACA,QAAI;AACH,aAAOF,QAAQ,CAACG,IAAT,CAAe,IAAf,CAAP;AACA,KAFD,SAEU;AACTF,MAAAA,GAAG,CAACG,OAAJ,GAAcC,KAAK,CAACC,IAAN,CAAYjB,eAAZ,CAAd;AACAA,MAAAA,eAAe,GAAG,IAAlB;AACA;AACD;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASkB,aAAT,CAAwBzB,qBAAxB,EAAgD;AAC/C,UAAMY,SAAS,GAAGb,YAAY,CAAEC,qBAAF,CAA9B;AACAO,IAAAA,eAAe,EAAEQ,GAAjB,CAAsBH,SAAtB;AACA,UAAMC,KAAK,GAAGR,MAAM,CAAEO,SAAF,CAApB;;AACA,QAAKC,KAAL,EAAa;AACZ,aAAOA,KAAK,CAACa,mBAAN,EAAP;AACA;;AAED,WAAOtB,MAAM,IAAIA,MAAM,CAACqB,aAAP,CAAsBb,SAAtB,CAAjB;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASe,aAAT,CAAwB3B,qBAAxB,EAAgD;AAC/C,UAAMY,SAAS,GAAGb,YAAY,CAAEC,qBAAF,CAA9B;AACAO,IAAAA,eAAe,EAAEQ,GAAjB,CAAsBH,SAAtB;AACA,UAAMC,KAAK,GAAGR,MAAM,CAAEO,SAAF,CAApB;;AACA,QAAKC,KAAL,EAAa;AACZ,aAAOA,KAAK,CAACe,mBAAN,EAAP;AACA;;AAED,WAAOxB,MAAM,IAAIA,MAAM,CAACuB,aAAP,CAAsBf,SAAtB,CAAjB;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASiB,QAAT,CAAmB7B,qBAAnB,EAA2C;AAC1C,UAAMY,SAAS,GAAGb,YAAY,CAAEC,qBAAF,CAA9B;AACA,UAAMa,KAAK,GAAGR,MAAM,CAAEO,SAAF,CAApB;;AACA,QAAKC,KAAL,EAAa;AACZ,aAAOA,KAAK,CAACiB,UAAN,EAAP;AACA;;AAED,WAAO1B,MAAM,IAAIA,MAAM,CAACyB,QAAP,CAAiBjB,SAAjB,CAAjB;AACA,GAtIiE,CAwIlE;AACA;AACA;;;AACA,WAASmB,WAAT,CAAsBC,UAAtB,EAAmC;AAClC,WAAOC,MAAM,CAACC,WAAP,CACND,MAAM,CAACE,OAAP,CAAgBH,UAAhB,EAA6BI,GAA7B,CAAkC,CAAE,CAAEC,GAAF,EAAOC,SAAP,CAAF,KAA0B;AAC3D,UAAK,OAAOA,SAAP,KAAqB,UAA1B,EAAuC;AACtC,eAAO,CAAED,GAAF,EAAOC,SAAP,CAAP;AACA;;AACD,aAAO,CACND,GADM,EAEN,YAAY;AACX,eAAOE,QAAQ,CAAEF,GAAF,CAAR,CAAgBG,KAAhB,CAAuB,IAAvB,EAA6BC,SAA7B,CAAP;AACA,OAJK,CAAP;AAMA,KAVD,CADM,CAAP;AAaA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACC,WAASC,qBAAT,CAAgCzC,IAAhC,EAAsC0C,WAAtC,EAAoD;AACnD,QAAKtC,MAAM,CAAEJ,IAAF,CAAX,EAAsB;AACrB;AACA2C,MAAAA,OAAO,CAACC,KAAR,CAAe,YAAY5C,IAAZ,GAAmB,0BAAlC;AACA,aAAOI,MAAM,CAAEJ,IAAF,CAAb;AACA;;AAED,UAAMY,KAAK,GAAG8B,WAAW,EAAzB;;AAEA,QAAK,OAAO9B,KAAK,CAACG,YAAb,KAA8B,UAAnC,EAAgD;AAC/C,YAAM,IAAI8B,SAAJ,CAAe,uCAAf,CAAN;AACA;;AACD,QAAK,OAAOjC,KAAK,CAACiB,UAAb,KAA4B,UAAjC,EAA8C;AAC7C,YAAM,IAAIgB,SAAJ,CAAe,qCAAf,CAAN;AACA;;AACD,QAAK,OAAOjC,KAAK,CAACH,SAAb,KAA2B,UAAhC,EAA6C;AAC5C,YAAM,IAAIoC,SAAJ,CAAe,oCAAf,CAAN;AACA,KAjBkD,CAkBnD;AACA;AACA;;;AACAjC,IAAAA,KAAK,CAACP,OAAN,GAAgB,6BAAhB;AACA,UAAMyC,gBAAgB,GAAGlC,KAAK,CAACH,SAA/B;;AACAG,IAAAA,KAAK,CAACH,SAAN,GAAoBC,QAAF,IAAgB;AACjC,YAAMqC,sBAAsB,GAAGnC,KAAK,CAACP,OAAN,CAAcI,SAAd,CAAyBC,QAAzB,CAA/B;AACA,YAAMsC,oBAAoB,GAAGF,gBAAgB,CAAE,MAAM;AACpD,YAAKlC,KAAK,CAACP,OAAN,CAAc4C,QAAnB,EAA8B;AAC7BrC,UAAAA,KAAK,CAACP,OAAN,CAAcG,IAAd;AACA;AACA;;AACDE,QAAAA,QAAQ;AACR,OAN4C,CAA7C;AAQA,aAAO,MAAM;AACZsC,QAAAA,oBAAoB;AACpBD,QAAAA,sBAAsB;AACtB,OAHD;AAIA,KAdD;;AAeA3C,IAAAA,MAAM,CAAEJ,IAAF,CAAN,GAAiBY,KAAjB;AACAA,IAAAA,KAAK,CAACH,SAAN,CAAiBF,cAAjB,EAvCmD,CAyCnD;;AACA,QAAKJ,MAAL,EAAc;AACb,UAAI;AACH,gCAAQS,KAAK,CAACA,KAAd,EAAsBsC,sBAAtB,CACC,wBAAQ/C,MAAR,EAAiBgD,gBAAjB,CAAmCnD,IAAnC,CADD;AAGA,gCAAQY,KAAK,CAACA,KAAd,EAAsBwC,wBAAtB,CACC,wBAAQjD,MAAR,EAAiBkD,kBAAjB,CAAqCrD,IAArC,CADD;AAGA,OAPD,CAOE,OAAQsD,CAAR,EAAY,CACb;AACA;AACA;AACA;AACD;;AAED,WAAO1C,KAAP;AACA;AAED;AACD;AACA;AACA;AACA;;;AACC,WAAS2C,QAAT,CAAmB3C,KAAnB,EAA2B;AAC1B6B,IAAAA,qBAAqB,CAAE7B,KAAK,CAACZ,IAAR,EAAc,MAClCY,KAAK,CAAC4C,WAAN,CAAmBlB,QAAnB,CADoB,CAArB;AAGA;;AAED,WAASmB,oBAAT,CAA+BzD,IAA/B,EAAqCY,KAArC,EAA6C;AAC5C,6BAAY,8BAAZ,EAA4C;AAC3C8C,MAAAA,KAAK,EAAE,KADoC;AAE3CC,MAAAA,WAAW,EAAE;AAF8B,KAA5C;AAIAlB,IAAAA,qBAAqB,CAAEzC,IAAF,EAAQ,MAAMY,KAAd,CAArB;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASgD,aAAT,CAAwBjD,SAAxB,EAAmCkD,OAAnC,EAA6C;AAC5C,QAAK,CAAEA,OAAO,CAACC,OAAf,EAAyB;AACxB,YAAM,IAAIjB,SAAJ,CAAe,4BAAf,CAAN;AACA;;AAED,UAAMjC,KAAK,GAAG6B,qBAAqB,CAAE9B,SAAF,EAAa,MAC/C,yBAAkBA,SAAlB,EAA6BkD,OAA7B,EAAuCL,WAAvC,CAAoDlB,QAApD,CADkC,CAAnC;AAIA,WAAO1B,KAAK,CAACA,KAAb;AACA;;AAED,WAASmD,KAAT,CAAgB9C,QAAhB,EAA2B;AAC1B;AACA,QAAKZ,OAAO,CAAC4C,QAAb,EAAwB;AACvBhC,MAAAA,QAAQ;AACR;AACA;;AAEDZ,IAAAA,OAAO,CAAC2D,KAAR;AACAhC,IAAAA,MAAM,CAACiC,MAAP,CAAe7D,MAAf,EAAwB8D,OAAxB,CAAmCtD,KAAF,IAAaA,KAAK,CAACP,OAAN,CAAc2D,KAAd,EAA9C;AACA/C,IAAAA,QAAQ;AACRZ,IAAAA,OAAO,CAAC8D,MAAR;AACAnC,IAAAA,MAAM,CAACiC,MAAP,CAAe7D,MAAf,EAAwB8D,OAAxB,CAAmCtD,KAAF,IAAaA,KAAK,CAACP,OAAN,CAAc8D,MAAd,EAA9C;AACA;;AAED,MAAI7B,QAAQ,GAAG;AACdyB,IAAAA,KADc;AAEd3D,IAAAA,MAFc;AAGdgE,IAAAA,UAAU,EAAEhE,MAHE;AAGM;AACpBK,IAAAA,SAJc;AAKdI,IAAAA,MALc;AAMdW,IAAAA,aANc;AAOdE,IAAAA,aAPc;AAQdE,IAAAA,QARc;AASdyC,IAAAA,GATc;AAUdd,IAAAA,QAVc;AAWdE,IAAAA,oBAXc;AAYdG,IAAAA,aAZc;AAad5C,IAAAA;AAbc,GAAf,CAlRkE,CAkSlE;AACA;AACA;;AACA,WAASqD,GAAT,CAAcC,MAAd,EAAsBT,OAAtB,EAAgC;AAC/B,QAAK,CAAES,MAAP,EAAgB;AACf;AACA;;AAEDhC,IAAAA,QAAQ,GAAG,EACV,GAAGA,QADO;AAEV,SAAGgC,MAAM,CAAEhC,QAAF,EAAYuB,OAAZ;AAFC,KAAX;AAKA,WAAOvB,QAAP;AACA;;AAEDA,EAAAA,QAAQ,CAACiB,QAAT,CAAmBgB,cAAnB;;AAEA,OAAM,MAAM,CAAEvE,IAAF,EAAQwE,MAAR,CAAZ,IAAgCxC,MAAM,CAACE,OAAP,CAAgBhC,YAAhB,CAAhC,EAAiE;AAChEoC,IAAAA,QAAQ,CAACiB,QAAT,CAAmB,yBAAkBvD,IAAlB,EAAwBwE,MAAxB,CAAnB;AACA;;AAED,MAAKrE,MAAL,EAAc;AACbA,IAAAA,MAAM,CAACM,SAAP,CAAkBF,cAAlB;AACA;;AAED,QAAMkE,mBAAmB,GAAG3C,WAAW,CAAEQ,QAAF,CAAvC;AACA,wBAAMmC,mBAAN,EAA2B;AAC1BtB,IAAAA,gBAAgB,EAAInD,IAAF,IAAY;AAC7B,UAAI;AACH,eAAO,wBAAQI,MAAM,CAAEJ,IAAF,CAAN,CAAeY,KAAvB,EAA+B8D,cAAtC;AACA,OAFD,CAEE,OAAQpB,CAAR,EAAY;AACb;AACA;AACA,eAAO,EAAP;AACA;AACD,KATyB;AAU1BD,IAAAA,kBAAkB,EAAIrD,IAAF,IAAY;AAC/B,UAAI;AACH,eAAO,wBAAQI,MAAM,CAAEJ,IAAF,CAAN,CAAeY,KAAvB,EAA+B+D,gBAAtC;AACA,OAFD,CAEE,OAAQrB,CAAR,EAAY;AACb,eAAO,EAAP;AACA;AACD;AAhByB,GAA3B;AAkBA,SAAOmB,mBAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\nimport { lock, unlock } from './lock-unlock';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\nfunction getStoreName( storeNameOrDescriptor ) {\n\treturn typeof storeNameOrDescriptor === 'string'\n\t\t? storeNameOrDescriptor\n\t\t: storeNameOrDescriptor.name;\n}\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tlet listeningStores = null;\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data, either in all stores in registry, or\n\t * in one specific store.\n\t *\n\t * @param {Function} listener Listener function.\n\t * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener, storeNameOrDescriptor ) => {\n\t\t// subscribe to all stores\n\t\tif ( ! storeNameOrDescriptor ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\t// subscribe to one store\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.subscribe( listener );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to global `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\treturn parent.subscribe( listener, storeNameOrDescriptor );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent?.select( storeName );\n\t}\n\n\tfunction __unstableMarkListeningStores( callback, ref ) {\n\t\tlisteningStores = new Set();\n\t\ttry {\n\t\t\treturn callback.call( this );\n\t\t} finally {\n\t\t\tref.current = Array.from( listeningStores );\n\t\t\tlisteningStores = null;\n\t\t}\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they return\n\t * promises that resolve to their eventual values, after any resolvers have ran.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they throw\n\t * promises in case the selector is not resolved yet.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Object containing the store's suspense-wrapped selectors.\n\t */\n\tfunction suspendSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSuspendSelectors();\n\t\t}\n\n\t\treturn parent && parent.suspendSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\tfunction withPlugins( attributes ) {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries( attributes ).map( ( [ key, attribute ] ) => {\n\t\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\t\treturn [ key, attribute ];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tkey,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} )\n\t\t);\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Function} createStore Function that creates a store object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, createStore ) {\n\t\tif ( stores[ name ] ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Store \"' + name + '\" is already registered.' );\n\t\t\treturn stores[ name ];\n\t\t}\n\n\t\tconst store = createStore();\n\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\n\t\t// Copy private actions and selectors from the parent store.\n\t\tif ( parent ) {\n\t\t\ttry {\n\t\t\t\tunlock( store.store ).registerPrivateActions(\n\t\t\t\t\tunlock( parent ).privateActionsOf( name )\n\t\t\t\t);\n\t\t\t\tunlock( store.store ).registerPrivateSelectors(\n\t\t\t\t\tunlock( parent ).privateSelectorsOf( name )\n\t\t\t\t);\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws if store.store was not locked.\n\t\t\t\t// The error indicates there's nothing to do here so let's\n\t\t\t\t// ignore it.\n\t\t\t}\n\t\t}\n\n\t\treturn store;\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, () =>\n\t\t\tstore.instantiate( registry )\n\t\t);\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, () => store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = registerStoreInstance( storeName, () =>\n\t\t\tcreateReduxStore( storeName, options ).instantiate( registry )\n\t\t);\n\n\t\treturn store.store;\n\t}\n\n\tfunction batch( callback ) {\n\t\t// If we're already batching, just call the callback.\n\t\tif ( emitter.isPaused ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\n\t\temitter.pause();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tsuspendSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__unstableMarkListeningStores,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\tconst registryWithPlugins = withPlugins( registry );\n\tlock( registryWithPlugins, {\n\t\tprivateActionsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateActions;\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws an error the store was not locked – this means\n\t\t\t\t// there no private actions are available\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t\tprivateSelectorsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateSelectors;\n\t\t\t} catch ( e ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t} );\n\treturn registryWithPlugins;\n}\n"]}
1
+ {"version":3,"names":["_deprecated","_interopRequireDefault","require","_reduxStore","_store","_emitter","_lockUnlock","getStoreName","storeNameOrDescriptor","name","createRegistry","storeConfigs","parent","stores","emitter","createEmitter","listeningStores","globalListener","emit","subscribe","listener","storeName","store","select","add","getSelectors","__unstableMarkListeningStores","callback","ref","Set","call","current","Array","from","resolveSelect","getResolveSelectors","suspendSelect","getSuspendSelectors","dispatch","getActions","withPlugins","attributes","Object","fromEntries","entries","map","key","attribute","registry","apply","arguments","registerStoreInstance","createStore","console","error","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","unlock","registerPrivateActions","privateActionsOf","registerPrivateSelectors","privateSelectorsOf","e","register","instantiate","registerGenericStore","deprecated","since","alternative","registerStore","options","reducer","createReduxStore","batch","pause","values","forEach","resume","namespaces","use","plugin","coreDataStore","config","registryWithPlugins","lock","privateActions","privateSelectors"],"sources":["@wordpress/data/src/registry.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\nimport { lock, unlock } from './lock-unlock';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\nfunction getStoreName( storeNameOrDescriptor ) {\n\treturn typeof storeNameOrDescriptor === 'string'\n\t\t? storeNameOrDescriptor\n\t\t: storeNameOrDescriptor.name;\n}\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tlet listeningStores = null;\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data, either in all stores in registry, or\n\t * in one specific store.\n\t *\n\t * @param {Function} listener Listener function.\n\t * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener, storeNameOrDescriptor ) => {\n\t\t// subscribe to all stores\n\t\tif ( ! storeNameOrDescriptor ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\t// subscribe to one store\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.subscribe( listener );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to global `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\treturn parent.subscribe( listener, storeNameOrDescriptor );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent?.select( storeName );\n\t}\n\n\tfunction __unstableMarkListeningStores( callback, ref ) {\n\t\tlisteningStores = new Set();\n\t\ttry {\n\t\t\treturn callback.call( this );\n\t\t} finally {\n\t\t\tref.current = Array.from( listeningStores );\n\t\t\tlisteningStores = null;\n\t\t}\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they return\n\t * promises that resolve to their eventual values, after any resolvers have ran.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they throw\n\t * promises in case the selector is not resolved yet.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Object containing the store's suspense-wrapped selectors.\n\t */\n\tfunction suspendSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSuspendSelectors();\n\t\t}\n\n\t\treturn parent && parent.suspendSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\tfunction withPlugins( attributes ) {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries( attributes ).map( ( [ key, attribute ] ) => {\n\t\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\t\treturn [ key, attribute ];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tkey,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} )\n\t\t);\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Function} createStore Function that creates a store object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, createStore ) {\n\t\tif ( stores[ name ] ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Store \"' + name + '\" is already registered.' );\n\t\t\treturn stores[ name ];\n\t\t}\n\n\t\tconst store = createStore();\n\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\n\t\t// Copy private actions and selectors from the parent store.\n\t\tif ( parent ) {\n\t\t\ttry {\n\t\t\t\tunlock( store.store ).registerPrivateActions(\n\t\t\t\t\tunlock( parent ).privateActionsOf( name )\n\t\t\t\t);\n\t\t\t\tunlock( store.store ).registerPrivateSelectors(\n\t\t\t\t\tunlock( parent ).privateSelectorsOf( name )\n\t\t\t\t);\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws if store.store was not locked.\n\t\t\t\t// The error indicates there's nothing to do here so let's\n\t\t\t\t// ignore it.\n\t\t\t}\n\t\t}\n\n\t\treturn store;\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, () =>\n\t\t\tstore.instantiate( registry )\n\t\t);\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, () => store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = registerStoreInstance( storeName, () =>\n\t\t\tcreateReduxStore( storeName, options ).instantiate( registry )\n\t\t);\n\n\t\treturn store.store;\n\t}\n\n\tfunction batch( callback ) {\n\t\t// If we're already batching, just call the callback.\n\t\tif ( emitter.isPaused ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\n\t\temitter.pause();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tsuspendSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__unstableMarkListeningStores,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\tconst registryWithPlugins = withPlugins( registry );\n\tlock( registryWithPlugins, {\n\t\tprivateActionsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateActions;\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws an error the store was not locked – this means\n\t\t\t\t// there no private actions are available\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t\tprivateSelectorsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateSelectors;\n\t\t\t} catch ( e ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t} );\n\treturn registryWithPlugins;\n}\n"],"mappings":"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"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _store = _interopRequireDefault(require("./store"));
11
-
12
9
  /**
13
10
  * Internal dependencies
14
11
  */
@@ -29,26 +26,23 @@ const createResolversCacheMiddleware = (registry, reducerKey) => () => next => a
29
26
  const resolvers = registry.select(_store.default).getCachedResolvers(reducerKey);
30
27
  Object.entries(resolvers).forEach(([selectorName, resolversByArgs]) => {
31
28
  const resolver = registry.stores?.[reducerKey]?.resolvers?.[selectorName];
32
-
33
29
  if (!resolver || !resolver.shouldInvalidate) {
34
30
  return;
35
31
  }
36
-
37
32
  resolversByArgs.forEach((value, args) => {
38
33
  // resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.
39
34
  // If the value is "finished" or "error" it means this resolver has finished its resolution which means we need
40
35
  // to invalidate it, if it's true it means it's inflight and the invalidation is not necessary.
41
36
  if (value?.status !== 'finished' && value?.status !== 'error' || !resolver.shouldInvalidate(action, ...args)) {
42
37
  return;
43
- } // Trigger cache invalidation
44
-
38
+ }
45
39
 
40
+ // Trigger cache invalidation
46
41
  registry.dispatch(_store.default).invalidateResolution(reducerKey, selectorName, args);
47
42
  });
48
43
  });
49
44
  return next(action);
50
45
  };
51
-
52
46
  var _default = createResolversCacheMiddleware;
53
47
  exports.default = _default;
54
48
  //# sourceMappingURL=resolvers-cache-middleware.js.map