@wordpress/core-data 6.15.0 → 6.17.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 (240) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/build/actions.js +70 -135
  4. package/build/actions.js.map +1 -1
  5. package/build/batch/create-batch.js +0 -22
  6. package/build/batch/create-batch.js.map +1 -1
  7. package/build/batch/default-processor.js +3 -15
  8. package/build/batch/default-processor.js.map +1 -1
  9. package/build/batch/index.js +0 -3
  10. package/build/batch/index.js.map +1 -1
  11. package/build/entities.js +109 -36
  12. package/build/entities.js.map +1 -1
  13. package/build/entity-provider.js +34 -53
  14. package/build/entity-provider.js.map +1 -1
  15. package/build/entity-types/attachment.js.map +1 -1
  16. package/build/entity-types/base-entity-records.js +0 -3
  17. package/build/entity-types/base-entity-records.js.map +1 -1
  18. package/build/entity-types/comment.js.map +1 -1
  19. package/build/entity-types/helpers.js.map +1 -1
  20. package/build/entity-types/index.js.map +1 -1
  21. package/build/entity-types/menu-location.js.map +1 -1
  22. package/build/entity-types/nav-menu-item.js.map +1 -1
  23. package/build/entity-types/nav-menu.js.map +1 -1
  24. package/build/entity-types/page.js.map +1 -1
  25. package/build/entity-types/plugin.js.map +1 -1
  26. package/build/entity-types/post.js.map +1 -1
  27. package/build/entity-types/settings.js.map +1 -1
  28. package/build/entity-types/sidebar.js.map +1 -1
  29. package/build/entity-types/taxonomy.js.map +1 -1
  30. package/build/entity-types/theme.js.map +1 -1
  31. package/build/entity-types/type.js.map +1 -1
  32. package/build/entity-types/user.js.map +1 -1
  33. package/build/entity-types/widget-type.js.map +1 -1
  34. package/build/entity-types/widget.js.map +1 -1
  35. package/build/entity-types/wp-template-part.js.map +1 -1
  36. package/build/entity-types/wp-template.js.map +1 -1
  37. package/build/fetch/__experimental-fetch-link-suggestions.js +14 -20
  38. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  39. package/build/fetch/__experimental-fetch-url-data.js +4 -13
  40. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  41. package/build/fetch/index.js +0 -3
  42. package/build/fetch/index.js.map +1 -1
  43. package/build/hooks/constants.js +4 -5
  44. package/build/hooks/constants.js.map +1 -1
  45. package/build/hooks/index.js +0 -5
  46. package/build/hooks/index.js.map +1 -1
  47. package/build/hooks/memoize.js +0 -3
  48. package/build/hooks/memoize.js.map +1 -1
  49. package/build/hooks/use-entity-record.js +0 -9
  50. package/build/hooks/use-entity-record.js.map +1 -1
  51. package/build/hooks/use-entity-records.js +2 -9
  52. package/build/hooks/use-entity-records.js.map +1 -1
  53. package/build/hooks/use-query-select.js +1 -13
  54. package/build/hooks/use-query-select.js.map +1 -1
  55. package/build/hooks/use-resource-permissions.js +0 -15
  56. package/build/hooks/use-resource-permissions.js.map +1 -1
  57. package/build/index.js +9 -41
  58. package/build/index.js.map +1 -1
  59. package/build/locks/actions.js +1 -6
  60. package/build/locks/actions.js.map +1 -1
  61. package/build/locks/engine.js +1 -9
  62. package/build/locks/engine.js.map +1 -1
  63. package/build/locks/reducer.js +8 -9
  64. package/build/locks/reducer.js.map +1 -1
  65. package/build/locks/selectors.js +8 -11
  66. package/build/locks/selectors.js.map +1 -1
  67. package/build/locks/utils.js +4 -19
  68. package/build/locks/utils.js.map +1 -1
  69. package/build/name.js +0 -1
  70. package/build/name.js.map +1 -1
  71. package/build/private-apis.js +1 -2
  72. package/build/private-apis.js.map +1 -1
  73. package/build/private-selectors.js +2 -5
  74. package/build/private-selectors.js.map +1 -1
  75. package/build/queried-data/actions.js +4 -6
  76. package/build/queried-data/actions.js.map +1 -1
  77. package/build/queried-data/get-query-parts.js +11 -24
  78. package/build/queried-data/get-query-parts.js.map +1 -1
  79. package/build/queried-data/index.js +0 -6
  80. package/build/queried-data/index.js.map +1 -1
  81. package/build/queried-data/reducer.js +33 -51
  82. package/build/queried-data/reducer.js.map +1 -1
  83. package/build/queried-data/selectors.js +4 -25
  84. package/build/queried-data/selectors.js.map +1 -1
  85. package/build/reducer.js +76 -128
  86. package/build/reducer.js.map +1 -1
  87. package/build/resolvers.js +91 -133
  88. package/build/resolvers.js.map +1 -1
  89. package/build/selectors.js +51 -145
  90. package/build/selectors.js.map +1 -1
  91. package/build/sync.js +19 -0
  92. package/build/sync.js.map +1 -0
  93. package/build/types.js.map +1 -1
  94. package/build/utils/conservative-map-item.js +3 -10
  95. package/build/utils/conservative-map-item.js.map +1 -1
  96. package/build/utils/forward-resolver.js +0 -2
  97. package/build/utils/forward-resolver.js.map +1 -1
  98. package/build/utils/get-normalized-comma-separable.js +0 -3
  99. package/build/utils/get-normalized-comma-separable.js.map +1 -1
  100. package/build/utils/if-matching-action.js +0 -3
  101. package/build/utils/if-matching-action.js.map +1 -1
  102. package/build/utils/index.js +0 -10
  103. package/build/utils/index.js.map +1 -1
  104. package/build/utils/is-raw-attribute.js +0 -1
  105. package/build/utils/is-raw-attribute.js.map +1 -1
  106. package/build/utils/on-sub-key.js +5 -9
  107. package/build/utils/on-sub-key.js.map +1 -1
  108. package/build/utils/replace-action.js +0 -2
  109. package/build/utils/replace-action.js.map +1 -1
  110. package/build/utils/set-nested-value.js +0 -4
  111. package/build/utils/set-nested-value.js.map +1 -1
  112. package/build/utils/with-weak-map-cache.js +3 -6
  113. package/build/utils/with-weak-map-cache.js.map +1 -1
  114. package/build-module/actions.js +73 -96
  115. package/build-module/actions.js.map +1 -1
  116. package/build-module/batch/create-batch.js +1 -20
  117. package/build-module/batch/create-batch.js.map +1 -1
  118. package/build-module/batch/default-processor.js +4 -13
  119. package/build-module/batch/default-processor.js.map +1 -1
  120. package/build-module/batch/index.js.map +1 -1
  121. package/build-module/entities.js +109 -25
  122. package/build-module/entities.js.map +1 -1
  123. package/build-module/entity-provider.js +35 -45
  124. package/build-module/entity-provider.js.map +1 -1
  125. package/build-module/entity-types/attachment.js.map +1 -1
  126. package/build-module/entity-types/base-entity-records.js +0 -2
  127. package/build-module/entity-types/base-entity-records.js.map +1 -1
  128. package/build-module/entity-types/comment.js.map +1 -1
  129. package/build-module/entity-types/helpers.js.map +1 -1
  130. package/build-module/entity-types/index.js.map +1 -1
  131. package/build-module/entity-types/menu-location.js.map +1 -1
  132. package/build-module/entity-types/nav-menu-item.js.map +1 -1
  133. package/build-module/entity-types/nav-menu.js.map +1 -1
  134. package/build-module/entity-types/page.js.map +1 -1
  135. package/build-module/entity-types/plugin.js.map +1 -1
  136. package/build-module/entity-types/post.js.map +1 -1
  137. package/build-module/entity-types/settings.js.map +1 -1
  138. package/build-module/entity-types/sidebar.js.map +1 -1
  139. package/build-module/entity-types/taxonomy.js.map +1 -1
  140. package/build-module/entity-types/theme.js.map +1 -1
  141. package/build-module/entity-types/type.js.map +1 -1
  142. package/build-module/entity-types/user.js.map +1 -1
  143. package/build-module/entity-types/widget-type.js.map +1 -1
  144. package/build-module/entity-types/widget.js.map +1 -1
  145. package/build-module/entity-types/wp-template-part.js.map +1 -1
  146. package/build-module/entity-types/wp-template.js.map +1 -1
  147. package/build-module/fetch/__experimental-fetch-link-suggestions.js +15 -15
  148. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  149. package/build-module/fetch/__experimental-fetch-url-data.js +5 -10
  150. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  151. package/build-module/fetch/index.js.map +1 -1
  152. package/build-module/hooks/constants.js +3 -4
  153. package/build-module/hooks/constants.js.map +1 -1
  154. package/build-module/hooks/index.js.map +1 -1
  155. package/build-module/hooks/memoize.js +2 -1
  156. package/build-module/hooks/memoize.js.map +1 -1
  157. package/build-module/hooks/use-entity-record.js +1 -3
  158. package/build-module/hooks/use-entity-record.js.map +1 -1
  159. package/build-module/hooks/use-entity-records.js +2 -3
  160. package/build-module/hooks/use-entity-records.js.map +1 -1
  161. package/build-module/hooks/use-query-select.js +1 -9
  162. package/build-module/hooks/use-query-select.js.map +1 -1
  163. package/build-module/hooks/use-resource-permissions.js +1 -10
  164. package/build-module/hooks/use-resource-permissions.js.map +1 -1
  165. package/build-module/index.js +11 -19
  166. package/build-module/index.js.map +1 -1
  167. package/build-module/locks/actions.js +0 -3
  168. package/build-module/locks/actions.js.map +1 -1
  169. package/build-module/locks/engine.js +0 -5
  170. package/build-module/locks/engine.js.map +1 -1
  171. package/build-module/locks/reducer.js +7 -7
  172. package/build-module/locks/reducer.js.map +1 -1
  173. package/build-module/locks/selectors.js +7 -8
  174. package/build-module/locks/selectors.js.map +1 -1
  175. package/build-module/locks/utils.js +4 -14
  176. package/build-module/locks/utils.js.map +1 -1
  177. package/build-module/name.js.map +1 -1
  178. package/build-module/private-apis.js.map +1 -1
  179. package/build-module/private-selectors.js +2 -2
  180. package/build-module/private-selectors.js.map +1 -1
  181. package/build-module/queried-data/actions.js +4 -3
  182. package/build-module/queried-data/actions.js.map +1 -1
  183. package/build-module/queried-data/get-query-parts.js +13 -21
  184. package/build-module/queried-data/get-query-parts.js.map +1 -1
  185. package/build-module/queried-data/index.js.map +1 -1
  186. package/build-module/queried-data/reducer.js +33 -42
  187. package/build-module/queried-data/reducer.js.map +1 -1
  188. package/build-module/queried-data/selectors.js +6 -21
  189. package/build-module/queried-data/selectors.js.map +1 -1
  190. package/build-module/reducer.js +79 -104
  191. package/build-module/reducer.js.map +1 -1
  192. package/build-module/resolvers.js +94 -96
  193. package/build-module/resolvers.js.map +1 -1
  194. package/build-module/selectors.js +56 -92
  195. package/build-module/selectors.js.map +1 -1
  196. package/build-module/sync.js +12 -0
  197. package/build-module/sync.js.map +1 -0
  198. package/build-module/types.js.map +1 -1
  199. package/build-module/utils/conservative-map-item.js +4 -8
  200. package/build-module/utils/conservative-map-item.js.map +1 -1
  201. package/build-module/utils/forward-resolver.js +0 -1
  202. package/build-module/utils/forward-resolver.js.map +1 -1
  203. package/build-module/utils/get-normalized-comma-separable.js +0 -2
  204. package/build-module/utils/get-normalized-comma-separable.js.map +1 -1
  205. package/build-module/utils/if-matching-action.js +0 -2
  206. package/build-module/utils/if-matching-action.js.map +1 -1
  207. package/build-module/utils/index.js.map +1 -1
  208. package/build-module/utils/is-raw-attribute.js.map +1 -1
  209. package/build-module/utils/on-sub-key.js +5 -7
  210. package/build-module/utils/on-sub-key.js.map +1 -1
  211. package/build-module/utils/replace-action.js +0 -1
  212. package/build-module/utils/replace-action.js.map +1 -1
  213. package/build-module/utils/set-nested-value.js +0 -3
  214. package/build-module/utils/set-nested-value.js.map +1 -1
  215. package/build-module/utils/with-weak-map-cache.js +3 -5
  216. package/build-module/utils/with-weak-map-cache.js.map +1 -1
  217. package/build-types/actions.d.ts.map +1 -1
  218. package/build-types/entities.d.ts +53 -0
  219. package/build-types/entities.d.ts.map +1 -1
  220. package/build-types/entity-provider.d.ts +1 -1
  221. package/build-types/entity-provider.d.ts.map +1 -1
  222. package/build-types/hooks/memoize.d.ts +1 -1
  223. package/build-types/hooks/memoize.d.ts.map +1 -1
  224. package/build-types/index.d.ts +4 -4
  225. package/build-types/index.d.ts.map +1 -1
  226. package/build-types/resolvers.d.ts.map +1 -1
  227. package/build-types/selectors.d.ts +1 -1
  228. package/build-types/selectors.d.ts.map +1 -1
  229. package/build-types/sync.d.ts +2 -0
  230. package/build-types/sync.d.ts.map +1 -0
  231. package/package.json +17 -15
  232. package/src/actions.js +30 -17
  233. package/src/entities.js +91 -0
  234. package/src/entity-provider.js +11 -2
  235. package/src/resolvers.js +89 -41
  236. package/src/selectors.ts +1 -1
  237. package/src/sync.js +18 -0
  238. package/src/test/entity-provider.js +272 -0
  239. package/tsconfig.json +1 -0
  240. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/private-selectors.ts"],"names":["getUndoEdits","state","undo","list","length","offset","getRedoEdits","getNavigationFallbackId","navigationFallbackId"],"mappings":";;;;;;;;;AAAA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAT,CAAuBC,KAAvB,EAA8D;AACpE,SAAOA,KAAK,CAACC,IAAN,CAAWC,IAAX,CAAiBF,KAAK,CAACC,IAAN,CAAWC,IAAX,CAAgBC,MAAhB,GAAyB,CAAzB,GAA6BH,KAAK,CAACC,IAAN,CAAWG,MAAzD,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,YAAT,CAAuBL,KAAvB,EAA8D;AACpE,SAAOA,KAAK,CAACC,IAAN,CAAWC,IAAX,CAAiBF,KAAK,CAACC,IAAN,CAAWC,IAAX,CAAgBC,MAAhB,GAAyBH,KAAK,CAACC,IAAN,CAAWG,MAArD,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,uBAAT,CACNN,KADM,EAEwB;AAC9B,SAAOA,KAAK,CAACO,oBAAb;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport type { State, UndoEdit } from './selectors';\n\ntype Optional< T > = T | undefined;\ntype EntityRecordKey = string | number;\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The edit.\n */\nexport function getUndoEdits( state: State ): Optional< UndoEdit[] > {\n\treturn state.undo.list[ state.undo.list.length - 1 + state.undo.offset ];\n}\n\n/**\n * Returns the next edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The edit.\n */\nexport function getRedoEdits( state: State ): Optional< UndoEdit[] > {\n\treturn state.undo.list[ state.undo.list.length + state.undo.offset ];\n}\n\n/**\n * Retrieve the fallback Navigation.\n *\n * @param state Data state.\n * @return The ID for the fallback Navigation post.\n */\nexport function getNavigationFallbackId(\n\tstate: State\n): EntityRecordKey | undefined {\n\treturn state.navigationFallbackId;\n}\n"]}
1
+ {"version":3,"names":["getUndoEdits","state","undo","list","length","offset","getRedoEdits","getNavigationFallbackId","navigationFallbackId"],"sources":["@wordpress/core-data/src/private-selectors.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { State, UndoEdit } from './selectors';\n\ntype Optional< T > = T | undefined;\ntype EntityRecordKey = string | number;\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The edit.\n */\nexport function getUndoEdits( state: State ): Optional< UndoEdit[] > {\n\treturn state.undo.list[ state.undo.list.length - 1 + state.undo.offset ];\n}\n\n/**\n * Returns the next edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The edit.\n */\nexport function getRedoEdits( state: State ): Optional< UndoEdit[] > {\n\treturn state.undo.list[ state.undo.list.length + state.undo.offset ];\n}\n\n/**\n * Retrieve the fallback Navigation.\n *\n * @param state Data state.\n * @return The ID for the fallback Navigation post.\n */\nexport function getNavigationFallbackId(\n\tstate: State\n): EntityRecordKey | undefined {\n\treturn state.navigationFallbackId;\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAAEC,KAAY,EAA2B;EACpE,OAAOA,KAAK,CAACC,IAAI,CAACC,IAAI,CAAEF,KAAK,CAACC,IAAI,CAACC,IAAI,CAACC,MAAM,GAAG,CAAC,GAAGH,KAAK,CAACC,IAAI,CAACG,MAAM,CAAE;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAAEL,KAAY,EAA2B;EACpE,OAAOA,KAAK,CAACC,IAAI,CAACC,IAAI,CAAEF,KAAK,CAACC,IAAI,CAACC,IAAI,CAACC,MAAM,GAAGH,KAAK,CAACC,IAAI,CAACG,MAAM,CAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,uBAAuBA,CACtCN,KAAY,EACkB;EAC9B,OAAOA,KAAK,CAACO,oBAAoB;AAClC"}
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.receiveItems = receiveItems;
7
7
  exports.receiveQueriedItems = receiveQueriedItems;
8
8
  exports.removeItems = removeItems;
9
-
10
9
  /**
11
10
  * Returns an action object used in signalling that items have been received.
12
11
  *
@@ -22,6 +21,7 @@ function receiveItems(items, edits) {
22
21
  persistedEdits: edits
23
22
  };
24
23
  }
24
+
25
25
  /**
26
26
  * Returns an action object used in signalling that entity records have been
27
27
  * deleted and they need to be removed from entities state.
@@ -32,8 +32,6 @@ function receiveItems(items, edits) {
32
32
  * @param {boolean} invalidateCache Controls whether we want to invalidate the cache.
33
33
  * @return {Object} Action object.
34
34
  */
35
-
36
-
37
35
  function removeItems(kind, name, records, invalidateCache = false) {
38
36
  return {
39
37
  type: 'REMOVE_ITEMS',
@@ -43,6 +41,7 @@ function removeItems(kind, name, records, invalidateCache = false) {
43
41
  invalidateCache
44
42
  };
45
43
  }
44
+
46
45
  /**
47
46
  * Returns an action object used in signalling that queried data has been
48
47
  * received.
@@ -53,10 +52,9 @@ function removeItems(kind, name, records, invalidateCache = false) {
53
52
  *
54
53
  * @return {Object} Action object.
55
54
  */
56
-
57
-
58
55
  function receiveQueriedItems(items, query = {}, edits) {
59
- return { ...receiveItems(items, edits),
56
+ return {
57
+ ...receiveItems(items, edits),
60
58
  query
61
59
  };
62
60
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/actions.js"],"names":["receiveItems","items","edits","type","Array","isArray","persistedEdits","removeItems","kind","name","records","invalidateCache","itemIds","receiveQueriedItems","query"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAT,CAAuBC,KAAvB,EAA8BC,KAA9B,EAAsC;AAC5C,SAAO;AACNC,IAAAA,IAAI,EAAE,eADA;AAENF,IAAAA,KAAK,EAAEG,KAAK,CAACC,OAAN,CAAeJ,KAAf,IAAyBA,KAAzB,GAAiC,CAAEA,KAAF,CAFlC;AAGNK,IAAAA,cAAc,EAAEJ;AAHV,GAAP;AAKA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASK,WAAT,CAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,OAAlC,EAA2CC,eAAe,GAAG,KAA7D,EAAqE;AAC3E,SAAO;AACNR,IAAAA,IAAI,EAAE,cADA;AAENS,IAAAA,OAAO,EAAER,KAAK,CAACC,OAAN,CAAeK,OAAf,IAA2BA,OAA3B,GAAqC,CAAEA,OAAF,CAFxC;AAGNF,IAAAA,IAHM;AAINC,IAAAA,IAJM;AAKNE,IAAAA;AALM,GAAP;AAOA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,mBAAT,CAA8BZ,KAA9B,EAAqCa,KAAK,GAAG,EAA7C,EAAiDZ,KAAjD,EAAyD;AAC/D,SAAO,EACN,GAAGF,YAAY,CAAEC,KAAF,EAASC,KAAT,CADT;AAENY,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * Returns an action object used in signalling that items have been received.\n *\n * @param {Array} items Items received.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveItems( items, edits ) {\n\treturn {\n\t\ttype: 'RECEIVE_ITEMS',\n\t\titems: Array.isArray( items ) ? items : [ items ],\n\t\tpersistedEdits: edits,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been\n * deleted and they need to be removed from entities state.\n *\n * @param {string} kind Kind of the removed entities.\n * @param {string} name Name of the removed entities.\n * @param {Array|number|string} records Record IDs of the removed entities.\n * @param {boolean} invalidateCache Controls whether we want to invalidate the cache.\n * @return {Object} Action object.\n */\nexport function removeItems( kind, name, records, invalidateCache = false ) {\n\treturn {\n\t\ttype: 'REMOVE_ITEMS',\n\t\titemIds: Array.isArray( records ) ? records : [ records ],\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that queried data has been\n * received.\n *\n * @param {Array} items Queried items received.\n * @param {?Object} query Optional query object.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveQueriedItems( items, query = {}, edits ) {\n\treturn {\n\t\t...receiveItems( items, edits ),\n\t\tquery,\n\t};\n}\n"]}
1
+ {"version":3,"names":["receiveItems","items","edits","type","Array","isArray","persistedEdits","removeItems","kind","name","records","invalidateCache","itemIds","receiveQueriedItems","query"],"sources":["@wordpress/core-data/src/queried-data/actions.js"],"sourcesContent":["/**\n * Returns an action object used in signalling that items have been received.\n *\n * @param {Array} items Items received.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveItems( items, edits ) {\n\treturn {\n\t\ttype: 'RECEIVE_ITEMS',\n\t\titems: Array.isArray( items ) ? items : [ items ],\n\t\tpersistedEdits: edits,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been\n * deleted and they need to be removed from entities state.\n *\n * @param {string} kind Kind of the removed entities.\n * @param {string} name Name of the removed entities.\n * @param {Array|number|string} records Record IDs of the removed entities.\n * @param {boolean} invalidateCache Controls whether we want to invalidate the cache.\n * @return {Object} Action object.\n */\nexport function removeItems( kind, name, records, invalidateCache = false ) {\n\treturn {\n\t\ttype: 'REMOVE_ITEMS',\n\t\titemIds: Array.isArray( records ) ? records : [ records ],\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that queried data has been\n * received.\n *\n * @param {Array} items Queried items received.\n * @param {?Object} query Optional query object.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveQueriedItems( items, query = {}, edits ) {\n\treturn {\n\t\t...receiveItems( items, edits ),\n\t\tquery,\n\t};\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAAEC,KAAK,EAAEC,KAAK,EAAG;EAC5C,OAAO;IACNC,IAAI,EAAE,eAAe;IACrBF,KAAK,EAAEG,KAAK,CAACC,OAAO,CAAEJ,KAAM,CAAC,GAAGA,KAAK,GAAG,CAAEA,KAAK,CAAE;IACjDK,cAAc,EAAEJ;EACjB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,WAAWA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,eAAe,GAAG,KAAK,EAAG;EAC3E,OAAO;IACNR,IAAI,EAAE,cAAc;IACpBS,OAAO,EAAER,KAAK,CAACC,OAAO,CAAEK,OAAQ,CAAC,GAAGA,OAAO,GAAG,CAAEA,OAAO,CAAE;IACzDF,IAAI;IACJC,IAAI;IACJE;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CAAEZ,KAAK,EAAEa,KAAK,GAAG,CAAC,CAAC,EAAEZ,KAAK,EAAG;EAC/D,OAAO;IACN,GAAGF,YAAY,CAAEC,KAAK,EAAEC,KAAM,CAAC;IAC/BY;EACD,CAAC;AACF"}
@@ -5,11 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  exports.getQueryParts = getQueryParts;
8
-
9
8
  var _url = require("@wordpress/url");
10
-
11
9
  var _utils = require("../utils");
12
-
13
10
  /**
14
11
  * WordPress dependencies
15
12
  */
@@ -54,27 +51,23 @@ function getQueryParts(query) {
54
51
  fields: null,
55
52
  include: null,
56
53
  context: 'default'
57
- }; // Ensure stable key by sorting keys. Also more efficient for iterating.
54
+ };
58
55
 
56
+ // Ensure stable key by sorting keys. Also more efficient for iterating.
59
57
  const keys = Object.keys(query).sort();
60
-
61
58
  for (let i = 0; i < keys.length; i++) {
62
59
  const key = keys[i];
63
60
  let value = query[key];
64
-
65
61
  switch (key) {
66
62
  case 'page':
67
63
  parts[key] = Number(value);
68
64
  break;
69
-
70
65
  case 'per_page':
71
66
  parts.perPage = Number(value);
72
67
  break;
73
-
74
68
  case 'context':
75
69
  parts.context = value;
76
70
  break;
77
-
78
71
  default:
79
72
  // While in theory, we could exclude "_fields" from the stableKey
80
73
  // because two request with different fields have the same results
@@ -83,42 +76,36 @@ function getQueryParts(query) {
83
76
  // Example: Asking for titles in posts without title support.
84
77
  if (key === '_fields') {
85
78
  var _getNormalizedCommaSe;
86
-
87
- parts.fields = (_getNormalizedCommaSe = (0, _utils.getNormalizedCommaSeparable)(value)) !== null && _getNormalizedCommaSe !== void 0 ? _getNormalizedCommaSe : []; // Make sure to normalize value for `stableKey`
88
-
79
+ parts.fields = (_getNormalizedCommaSe = (0, _utils.getNormalizedCommaSeparable)(value)) !== null && _getNormalizedCommaSe !== void 0 ? _getNormalizedCommaSe : [];
80
+ // Make sure to normalize value for `stableKey`
89
81
  value = parts.fields.join();
90
- } // Two requests with different include values cannot have same results.
91
-
82
+ }
92
83
 
84
+ // Two requests with different include values cannot have same results.
93
85
  if (key === 'include') {
94
86
  var _getNormalizedCommaSe2;
95
-
96
87
  if (typeof value === 'number') {
97
88
  value = value.toString();
98
89
  }
99
-
100
- parts.include = ((_getNormalizedCommaSe2 = (0, _utils.getNormalizedCommaSeparable)(value)) !== null && _getNormalizedCommaSe2 !== void 0 ? _getNormalizedCommaSe2 : []).map(Number); // Normalize value for `stableKey`.
101
-
90
+ parts.include = ((_getNormalizedCommaSe2 = (0, _utils.getNormalizedCommaSeparable)(value)) !== null && _getNormalizedCommaSe2 !== void 0 ? _getNormalizedCommaSe2 : []).map(Number);
91
+ // Normalize value for `stableKey`.
102
92
  value = parts.include.join();
103
- } // While it could be any deterministic string, for simplicity's
93
+ }
94
+
95
+ // While it could be any deterministic string, for simplicity's
104
96
  // sake mimic querystring encoding for stable key.
105
97
  //
106
98
  // TODO: For consistency with PHP implementation, addQueryArgs
107
99
  // should accept a key value pair, which may optimize its
108
100
  // implementation for our use here, vs. iterating an object
109
101
  // with only a single key.
110
-
111
-
112
102
  parts.stableKey += (parts.stableKey ? '&' : '') + (0, _url.addQueryArgs)('', {
113
103
  [key]: value
114
104
  }).slice(1);
115
105
  }
116
106
  }
117
-
118
107
  return parts;
119
108
  }
120
-
121
109
  var _default = (0, _utils.withWeakMapCache)(getQueryParts);
122
-
123
110
  exports.default = _default;
124
111
  //# sourceMappingURL=get-query-parts.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/get-query-parts.js"],"names":["getQueryParts","query","parts","stableKey","page","perPage","fields","include","context","keys","Object","sort","i","length","key","value","Number","join","toString","map","slice"],"mappings":";;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAT,CAAwBC,KAAxB,EAAgC;AACtC;AACD;AACA;AACC,QAAMC,KAAK,GAAG;AACbC,IAAAA,SAAS,EAAE,EADE;AAEbC,IAAAA,IAAI,EAAE,CAFO;AAGbC,IAAAA,OAAO,EAAE,EAHI;AAIbC,IAAAA,MAAM,EAAE,IAJK;AAKbC,IAAAA,OAAO,EAAE,IALI;AAMbC,IAAAA,OAAO,EAAE;AANI,GAAd,CAJsC,CAatC;;AACA,QAAMC,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAaR,KAAb,EAAqBU,IAArB,EAAb;;AAEA,OAAM,IAAIC,CAAC,GAAG,CAAd,EAAiBA,CAAC,GAAGH,IAAI,CAACI,MAA1B,EAAkCD,CAAC,EAAnC,EAAwC;AACvC,UAAME,GAAG,GAAGL,IAAI,CAAEG,CAAF,CAAhB;AACA,QAAIG,KAAK,GAAGd,KAAK,CAAEa,GAAF,CAAjB;;AAEA,YAASA,GAAT;AACC,WAAK,MAAL;AACCZ,QAAAA,KAAK,CAAEY,GAAF,CAAL,GAAeE,MAAM,CAAED,KAAF,CAArB;AACA;;AAED,WAAK,UAAL;AACCb,QAAAA,KAAK,CAACG,OAAN,GAAgBW,MAAM,CAAED,KAAF,CAAtB;AACA;;AAED,WAAK,SAAL;AACCb,QAAAA,KAAK,CAACM,OAAN,GAAgBO,KAAhB;AACA;;AAED;AACC;AACA;AACA;AACA;AACA;AACA,YAAKD,GAAG,KAAK,SAAb,EAAyB;AAAA;;AACxBZ,UAAAA,KAAK,CAACI,MAAN,4BAAe,wCAA6BS,KAA7B,CAAf,yEAAuD,EAAvD,CADwB,CAExB;;AACAA,UAAAA,KAAK,GAAGb,KAAK,CAACI,MAAN,CAAaW,IAAb,EAAR;AACA,SAVF,CAYC;;;AACA,YAAKH,GAAG,KAAK,SAAb,EAAyB;AAAA;;AACxB,cAAK,OAAOC,KAAP,KAAiB,QAAtB,EAAiC;AAChCA,YAAAA,KAAK,GAAGA,KAAK,CAACG,QAAN,EAAR;AACA;;AACDhB,UAAAA,KAAK,CAACK,OAAN,GAAgB,2BACf,wCAA6BQ,KAA7B,CADe,2EACyB,EADzB,EAEdI,GAFc,CAETH,MAFS,CAAhB,CAJwB,CAOxB;;AACAD,UAAAA,KAAK,GAAGb,KAAK,CAACK,OAAN,CAAcU,IAAd,EAAR;AACA,SAtBF,CAwBC;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAf,QAAAA,KAAK,CAACC,SAAN,IACC,CAAED,KAAK,CAACC,SAAN,GAAkB,GAAlB,GAAwB,EAA1B,IACA,uBAAc,EAAd,EAAkB;AAAE,WAAEW,GAAF,GAASC;AAAX,SAAlB,EAAuCK,KAAvC,CAA8C,CAA9C,CAFD;AA5CF;AAgDA;;AAED,SAAOlB,KAAP;AACA;;eAEc,6BAAkBF,aAAlB,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { withWeakMapCache, getNormalizedCommaSeparable } from '../utils';\n\n/**\n * An object of properties describing a specific query.\n *\n * @typedef {Object} WPQueriedDataQueryParts\n *\n * @property {number} page The query page (1-based index, default 1).\n * @property {number} perPage Items per page for query (default 10).\n * @property {string} stableKey An encoded stable string of all non-\n * pagination, non-fields query parameters.\n * @property {?(string[])} fields Target subset of fields to derive from\n * item objects.\n * @property {?(number[])} include Specific item IDs to include.\n * @property {string} context Scope under which the request is made;\n * determines returned fields in response.\n */\n\n/**\n * Given a query object, returns an object of parts, including pagination\n * details (`page` and `perPage`, or default values). All other properties are\n * encoded into a stable (idempotent) `stableKey` value.\n *\n * @param {Object} query Optional query object.\n *\n * @return {WPQueriedDataQueryParts} Query parts.\n */\nexport function getQueryParts( query ) {\n\t/**\n\t * @type {WPQueriedDataQueryParts}\n\t */\n\tconst parts = {\n\t\tstableKey: '',\n\t\tpage: 1,\n\t\tperPage: 10,\n\t\tfields: null,\n\t\tinclude: null,\n\t\tcontext: 'default',\n\t};\n\n\t// Ensure stable key by sorting keys. Also more efficient for iterating.\n\tconst keys = Object.keys( query ).sort();\n\n\tfor ( let i = 0; i < keys.length; i++ ) {\n\t\tconst key = keys[ i ];\n\t\tlet value = query[ key ];\n\n\t\tswitch ( key ) {\n\t\t\tcase 'page':\n\t\t\t\tparts[ key ] = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'per_page':\n\t\t\t\tparts.perPage = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'context':\n\t\t\t\tparts.context = value;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// While in theory, we could exclude \"_fields\" from the stableKey\n\t\t\t\t// because two request with different fields have the same results\n\t\t\t\t// We're not able to ensure that because the server can decide to omit\n\t\t\t\t// fields from the response even if we explicitly asked for it.\n\t\t\t\t// Example: Asking for titles in posts without title support.\n\t\t\t\tif ( key === '_fields' ) {\n\t\t\t\t\tparts.fields = getNormalizedCommaSeparable( value ) ?? [];\n\t\t\t\t\t// Make sure to normalize value for `stableKey`\n\t\t\t\t\tvalue = parts.fields.join();\n\t\t\t\t}\n\n\t\t\t\t// Two requests with different include values cannot have same results.\n\t\t\t\tif ( key === 'include' ) {\n\t\t\t\t\tif ( typeof value === 'number' ) {\n\t\t\t\t\t\tvalue = value.toString();\n\t\t\t\t\t}\n\t\t\t\t\tparts.include = (\n\t\t\t\t\t\tgetNormalizedCommaSeparable( value ) ?? []\n\t\t\t\t\t).map( Number );\n\t\t\t\t\t// Normalize value for `stableKey`.\n\t\t\t\t\tvalue = parts.include.join();\n\t\t\t\t}\n\n\t\t\t\t// While it could be any deterministic string, for simplicity's\n\t\t\t\t// sake mimic querystring encoding for stable key.\n\t\t\t\t//\n\t\t\t\t// TODO: For consistency with PHP implementation, addQueryArgs\n\t\t\t\t// should accept a key value pair, which may optimize its\n\t\t\t\t// implementation for our use here, vs. iterating an object\n\t\t\t\t// with only a single key.\n\t\t\t\tparts.stableKey +=\n\t\t\t\t\t( parts.stableKey ? '&' : '' ) +\n\t\t\t\t\taddQueryArgs( '', { [ key ]: value } ).slice( 1 );\n\t\t}\n\t}\n\n\treturn parts;\n}\n\nexport default withWeakMapCache( getQueryParts );\n"]}
1
+ {"version":3,"names":["_url","require","_utils","getQueryParts","query","parts","stableKey","page","perPage","fields","include","context","keys","Object","sort","i","length","key","value","Number","_getNormalizedCommaSe","getNormalizedCommaSeparable","join","_getNormalizedCommaSe2","toString","map","addQueryArgs","slice","_default","withWeakMapCache","exports","default"],"sources":["@wordpress/core-data/src/queried-data/get-query-parts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { withWeakMapCache, getNormalizedCommaSeparable } from '../utils';\n\n/**\n * An object of properties describing a specific query.\n *\n * @typedef {Object} WPQueriedDataQueryParts\n *\n * @property {number} page The query page (1-based index, default 1).\n * @property {number} perPage Items per page for query (default 10).\n * @property {string} stableKey An encoded stable string of all non-\n * pagination, non-fields query parameters.\n * @property {?(string[])} fields Target subset of fields to derive from\n * item objects.\n * @property {?(number[])} include Specific item IDs to include.\n * @property {string} context Scope under which the request is made;\n * determines returned fields in response.\n */\n\n/**\n * Given a query object, returns an object of parts, including pagination\n * details (`page` and `perPage`, or default values). All other properties are\n * encoded into a stable (idempotent) `stableKey` value.\n *\n * @param {Object} query Optional query object.\n *\n * @return {WPQueriedDataQueryParts} Query parts.\n */\nexport function getQueryParts( query ) {\n\t/**\n\t * @type {WPQueriedDataQueryParts}\n\t */\n\tconst parts = {\n\t\tstableKey: '',\n\t\tpage: 1,\n\t\tperPage: 10,\n\t\tfields: null,\n\t\tinclude: null,\n\t\tcontext: 'default',\n\t};\n\n\t// Ensure stable key by sorting keys. Also more efficient for iterating.\n\tconst keys = Object.keys( query ).sort();\n\n\tfor ( let i = 0; i < keys.length; i++ ) {\n\t\tconst key = keys[ i ];\n\t\tlet value = query[ key ];\n\n\t\tswitch ( key ) {\n\t\t\tcase 'page':\n\t\t\t\tparts[ key ] = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'per_page':\n\t\t\t\tparts.perPage = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'context':\n\t\t\t\tparts.context = value;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// While in theory, we could exclude \"_fields\" from the stableKey\n\t\t\t\t// because two request with different fields have the same results\n\t\t\t\t// We're not able to ensure that because the server can decide to omit\n\t\t\t\t// fields from the response even if we explicitly asked for it.\n\t\t\t\t// Example: Asking for titles in posts without title support.\n\t\t\t\tif ( key === '_fields' ) {\n\t\t\t\t\tparts.fields = getNormalizedCommaSeparable( value ) ?? [];\n\t\t\t\t\t// Make sure to normalize value for `stableKey`\n\t\t\t\t\tvalue = parts.fields.join();\n\t\t\t\t}\n\n\t\t\t\t// Two requests with different include values cannot have same results.\n\t\t\t\tif ( key === 'include' ) {\n\t\t\t\t\tif ( typeof value === 'number' ) {\n\t\t\t\t\t\tvalue = value.toString();\n\t\t\t\t\t}\n\t\t\t\t\tparts.include = (\n\t\t\t\t\t\tgetNormalizedCommaSeparable( value ) ?? []\n\t\t\t\t\t).map( Number );\n\t\t\t\t\t// Normalize value for `stableKey`.\n\t\t\t\t\tvalue = parts.include.join();\n\t\t\t\t}\n\n\t\t\t\t// While it could be any deterministic string, for simplicity's\n\t\t\t\t// sake mimic querystring encoding for stable key.\n\t\t\t\t//\n\t\t\t\t// TODO: For consistency with PHP implementation, addQueryArgs\n\t\t\t\t// should accept a key value pair, which may optimize its\n\t\t\t\t// implementation for our use here, vs. iterating an object\n\t\t\t\t// with only a single key.\n\t\t\t\tparts.stableKey +=\n\t\t\t\t\t( parts.stableKey ? '&' : '' ) +\n\t\t\t\t\taddQueryArgs( '', { [ key ]: value } ).slice( 1 );\n\t\t}\n\t}\n\n\treturn parts;\n}\n\nexport default withWeakMapCache( getQueryParts );\n"],"mappings":";;;;;;;AAGA,IAAAA,IAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAAEC,KAAK,EAAG;EACtC;AACD;AACA;EACC,MAAMC,KAAK,GAAG;IACbC,SAAS,EAAE,EAAE;IACbC,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE,EAAE;IACXC,MAAM,EAAE,IAAI;IACZC,OAAO,EAAE,IAAI;IACbC,OAAO,EAAE;EACV,CAAC;;EAED;EACA,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAAER,KAAM,CAAC,CAACU,IAAI,CAAC,CAAC;EAExC,KAAM,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,EAAED,CAAC,EAAE,EAAG;IACvC,MAAME,GAAG,GAAGL,IAAI,CAAEG,CAAC,CAAE;IACrB,IAAIG,KAAK,GAAGd,KAAK,CAAEa,GAAG,CAAE;IAExB,QAASA,GAAG;MACX,KAAK,MAAM;QACVZ,KAAK,CAAEY,GAAG,CAAE,GAAGE,MAAM,CAAED,KAAM,CAAC;QAC9B;MAED,KAAK,UAAU;QACdb,KAAK,CAACG,OAAO,GAAGW,MAAM,CAAED,KAAM,CAAC;QAC/B;MAED,KAAK,SAAS;QACbb,KAAK,CAACM,OAAO,GAAGO,KAAK;QACrB;MAED;QACC;QACA;QACA;QACA;QACA;QACA,IAAKD,GAAG,KAAK,SAAS,EAAG;UAAA,IAAAG,qBAAA;UACxBf,KAAK,CAACI,MAAM,IAAAW,qBAAA,GAAG,IAAAC,kCAA2B,EAAEH,KAAM,CAAC,cAAAE,qBAAA,cAAAA,qBAAA,GAAI,EAAE;UACzD;UACAF,KAAK,GAAGb,KAAK,CAACI,MAAM,CAACa,IAAI,CAAC,CAAC;QAC5B;;QAEA;QACA,IAAKL,GAAG,KAAK,SAAS,EAAG;UAAA,IAAAM,sBAAA;UACxB,IAAK,OAAOL,KAAK,KAAK,QAAQ,EAAG;YAChCA,KAAK,GAAGA,KAAK,CAACM,QAAQ,CAAC,CAAC;UACzB;UACAnB,KAAK,CAACK,OAAO,GAAG,EAAAa,sBAAA,GACf,IAAAF,kCAA2B,EAAEH,KAAM,CAAC,cAAAK,sBAAA,cAAAA,sBAAA,GAAI,EAAE,EACzCE,GAAG,CAAEN,MAAO,CAAC;UACf;UACAD,KAAK,GAAGb,KAAK,CAACK,OAAO,CAACY,IAAI,CAAC,CAAC;QAC7B;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACAjB,KAAK,CAACC,SAAS,IACd,CAAED,KAAK,CAACC,SAAS,GAAG,GAAG,GAAG,EAAE,IAC5B,IAAAoB,iBAAY,EAAE,EAAE,EAAE;UAAE,CAAET,GAAG,GAAIC;QAAM,CAAE,CAAC,CAACS,KAAK,CAAE,CAAE,CAAC;IACpD;EACD;EAEA,OAAOtB,KAAK;AACb;AAAC,IAAAuB,QAAA,GAEc,IAAAC,uBAAgB,EAAE1B,aAAc,CAAC;AAAA2B,OAAA,CAAAC,OAAA,GAAAH,QAAA"}
@@ -1,7 +1,6 @@
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
  });
@@ -14,9 +13,7 @@ Object.defineProperty(exports, "reducer", {
14
13
  return _reducer.default;
15
14
  }
16
15
  });
17
-
18
16
  var _actions = require("./actions");
19
-
20
17
  Object.keys(_actions).forEach(function (key) {
21
18
  if (key === "default" || key === "__esModule") return;
22
19
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -28,9 +25,7 @@ Object.keys(_actions).forEach(function (key) {
28
25
  }
29
26
  });
30
27
  });
31
-
32
28
  var _selectors = require("./selectors");
33
-
34
29
  Object.keys(_selectors).forEach(function (key) {
35
30
  if (key === "default" || key === "__esModule") return;
36
31
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -42,6 +37,5 @@ Object.keys(_selectors).forEach(function (key) {
42
37
  }
43
38
  });
44
39
  });
45
-
46
40
  var _reducer = _interopRequireDefault(require("./reducer"));
47
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA","sourcesContent":["export * from './actions';\nexport * from './selectors';\nexport { default as reducer } from './reducer';\n"]}
1
+ {"version":3,"names":["_actions","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_selectors","_reducer","_interopRequireDefault"],"sources":["@wordpress/core-data/src/queried-data/index.js"],"sourcesContent":["export * from './actions';\nexport * from './selectors';\nexport { default as reducer } from './reducer';\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,QAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,QAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,QAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,UAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,UAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,UAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,QAAA,GAAAC,sBAAA,CAAAf,OAAA"}
@@ -1,7 +1,6 @@
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
  });
@@ -9,17 +8,11 @@ exports.default = void 0;
9
8
  exports.getMergedItemIds = getMergedItemIds;
10
9
  exports.itemIsComplete = itemIsComplete;
11
10
  exports.items = items;
12
-
13
11
  var _data = require("@wordpress/data");
14
-
15
12
  var _compose = require("@wordpress/compose");
16
-
17
13
  var _utils = require("../utils");
18
-
19
14
  var _entities = require("../entities");
20
-
21
15
  var _getQueryParts = _interopRequireDefault(require("./get-query-parts"));
22
-
23
16
  /**
24
17
  * WordPress dependencies
25
18
  */
@@ -27,18 +20,18 @@ var _getQueryParts = _interopRequireDefault(require("./get-query-parts"));
27
20
  /**
28
21
  * Internal dependencies
29
22
  */
23
+
30
24
  function getContextFromAction(action) {
31
25
  const {
32
26
  query
33
27
  } = action;
34
-
35
28
  if (!query) {
36
29
  return 'default';
37
30
  }
38
-
39
31
  const queryParts = (0, _getQueryParts.default)(query);
40
32
  return queryParts.context;
41
33
  }
34
+
42
35
  /**
43
36
  * Returns a merged array of item IDs, given details of the received paginated
44
37
  * items. The array is sparse-like with `undefined` entries where holes exist.
@@ -50,32 +43,28 @@ function getContextFromAction(action) {
50
43
  *
51
44
  * @return {number[]} Merged array of item IDs.
52
45
  */
53
-
54
-
55
46
  function getMergedItemIds(itemIds, nextItemIds, page, perPage) {
56
47
  var _itemIds$length;
57
-
58
48
  const receivedAllIds = page === 1 && perPage === -1;
59
-
60
49
  if (receivedAllIds) {
61
50
  return nextItemIds;
62
51
  }
52
+ const nextItemIdsStartIndex = (page - 1) * perPage;
63
53
 
64
- const nextItemIdsStartIndex = (page - 1) * perPage; // If later page has already been received, default to the larger known
54
+ // If later page has already been received, default to the larger known
65
55
  // size of the existing array, else calculate as extending the existing.
56
+ const size = Math.max((_itemIds$length = itemIds?.length) !== null && _itemIds$length !== void 0 ? _itemIds$length : 0, nextItemIdsStartIndex + nextItemIds.length);
66
57
 
67
- const size = Math.max((_itemIds$length = itemIds?.length) !== null && _itemIds$length !== void 0 ? _itemIds$length : 0, nextItemIdsStartIndex + nextItemIds.length); // Preallocate array since size is known.
68
-
58
+ // Preallocate array since size is known.
69
59
  const mergedItemIds = new Array(size);
70
-
71
60
  for (let i = 0; i < size; i++) {
72
61
  // Preserve existing item ID except for subset of range of next items.
73
62
  const isInNextItemsRange = i >= nextItemIdsStartIndex && i < nextItemIdsStartIndex + nextItemIds.length;
74
63
  mergedItemIds[i] = isInNextItemsRange ? nextItemIds[i - nextItemIdsStartIndex] : itemIds?.[i];
75
64
  }
76
-
77
65
  return mergedItemIds;
78
66
  }
67
+
79
68
  /**
80
69
  * Helper function to filter out entities with certain IDs.
81
70
  * Entities are keyed by their ID.
@@ -85,17 +74,15 @@ function getMergedItemIds(itemIds, nextItemIds, page, perPage) {
85
74
  *
86
75
  * @return {Object} Filtered entities.
87
76
  */
88
-
89
-
90
77
  function removeEntitiesById(entities, ids) {
91
78
  return Object.fromEntries(Object.entries(entities).filter(([id]) => !ids.some(itemId => {
92
79
  if (Number.isInteger(itemId)) {
93
80
  return itemId === +id;
94
81
  }
95
-
96
82
  return itemId === id;
97
83
  })));
98
84
  }
85
+
99
86
  /**
100
87
  * Reducer tracking items state, keyed by ID. Items are assumed to be normal,
101
88
  * where identifiers are common across all queries.
@@ -105,16 +92,16 @@ function removeEntitiesById(entities, ids) {
105
92
  *
106
93
  * @return {Object} Next state.
107
94
  */
108
-
109
-
110
95
  function items(state = {}, action) {
111
96
  switch (action.type) {
112
97
  case 'RECEIVE_ITEMS':
113
98
  {
114
99
  const context = getContextFromAction(action);
115
100
  const key = action.key || _entities.DEFAULT_ENTITY_KEY;
116
- return { ...state,
117
- [context]: { ...state[context],
101
+ return {
102
+ ...state,
103
+ [context]: {
104
+ ...state[context],
118
105
  ...action.items.reduce((accumulator, value) => {
119
106
  const itemId = value[key];
120
107
  accumulator[itemId] = (0, _utils.conservativeMapItem)(state?.[context]?.[itemId], value);
@@ -123,13 +110,12 @@ function items(state = {}, action) {
123
110
  }
124
111
  };
125
112
  }
126
-
127
113
  case 'REMOVE_ITEMS':
128
114
  return Object.fromEntries(Object.entries(state).map(([itemId, contextState]) => [itemId, removeEntitiesById(contextState, action.itemIds)]));
129
115
  }
130
-
131
116
  return state;
132
117
  }
118
+
133
119
  /**
134
120
  * Reducer tracking item completeness, keyed by ID. A complete item is one for
135
121
  * which all fields are known. This is used in supporting `_fields` queries,
@@ -142,8 +128,6 @@ function items(state = {}, action) {
142
128
  *
143
129
  * @return {Object<string,Object<string,boolean>>} Next state.
144
130
  */
145
-
146
-
147
131
  function itemIsComplete(state = {}, action) {
148
132
  switch (action.type) {
149
133
  case 'RECEIVE_ITEMS':
@@ -152,34 +136,37 @@ function itemIsComplete(state = {}, action) {
152
136
  const {
153
137
  query,
154
138
  key = _entities.DEFAULT_ENTITY_KEY
155
- } = action; // An item is considered complete if it is received without an associated
139
+ } = action;
140
+
141
+ // An item is considered complete if it is received without an associated
156
142
  // fields query. Ideally, this would be implemented in such a way where the
157
143
  // complete aggregate of all fields would satisfy completeness. Since the
158
144
  // fields are not consistent across all entities, this would require
159
145
  // introspection on the REST schema for each entity to know which fields
160
146
  // compose a complete item for that entity.
161
-
162
147
  const queryParts = query ? (0, _getQueryParts.default)(query) : {};
163
148
  const isCompleteQuery = !query || !Array.isArray(queryParts.fields);
164
- return { ...state,
165
- [context]: { ...state[context],
149
+ return {
150
+ ...state,
151
+ [context]: {
152
+ ...state[context],
166
153
  ...action.items.reduce((result, item) => {
167
- const itemId = item[key]; // Defer to completeness if already assigned. Technically the
168
- // data may be outdated if receiving items for a field subset.
154
+ const itemId = item[key];
169
155
 
156
+ // Defer to completeness if already assigned. Technically the
157
+ // data may be outdated if receiving items for a field subset.
170
158
  result[itemId] = state?.[context]?.[itemId] || isCompleteQuery;
171
159
  return result;
172
160
  }, {})
173
161
  }
174
162
  };
175
163
  }
176
-
177
164
  case 'REMOVE_ITEMS':
178
165
  return Object.fromEntries(Object.entries(state).map(([itemId, contextState]) => [itemId, removeEntitiesById(contextState, action.itemIds)]));
179
166
  }
180
-
181
167
  return state;
182
168
  }
169
+
183
170
  /**
184
171
  * Reducer tracking queries state, keyed by stable query key. Each reducer
185
172
  * query object includes `itemIds` and `requestingPageByPerPage`.
@@ -189,23 +176,24 @@ function itemIsComplete(state = {}, action) {
189
176
  *
190
177
  * @return {Object} Next state.
191
178
  */
192
-
193
-
194
- const receiveQueries = (0, _compose.compose)([// Limit to matching action type so we don't attempt to replace action on
179
+ const receiveQueries = (0, _compose.compose)([
180
+ // Limit to matching action type so we don't attempt to replace action on
195
181
  // an unhandled action.
196
- (0, _utils.ifMatchingAction)(action => 'query' in action), // Inject query parts into action for use both in `onSubKey` and reducer.
182
+ (0, _utils.ifMatchingAction)(action => 'query' in action),
183
+ // Inject query parts into action for use both in `onSubKey` and reducer.
197
184
  (0, _utils.replaceAction)(action => {
198
185
  // `ifMatchingAction` still passes on initialization, where state is
199
186
  // undefined and a query is not assigned. Avoid attempting to parse
200
187
  // parts. `onSubKey` will omit by lack of `stableKey`.
201
188
  if (action.query) {
202
- return { ...action,
189
+ return {
190
+ ...action,
203
191
  ...(0, _getQueryParts.default)(action.query)
204
192
  };
205
193
  }
206
-
207
194
  return action;
208
- }), (0, _utils.onSubKey)('context'), // Queries shape is shared, but keyed by query `stableKey` part. Original
195
+ }), (0, _utils.onSubKey)('context'),
196
+ // Queries shape is shared, but keyed by query `stableKey` part. Original
209
197
  // reducer tracks only a single query object.
210
198
  (0, _utils.onSubKey)('stableKey')])((state = null, action) => {
211
199
  const {
@@ -214,13 +202,12 @@ const receiveQueries = (0, _compose.compose)([// Limit to matching action type s
214
202
  perPage,
215
203
  key = _entities.DEFAULT_ENTITY_KEY
216
204
  } = action;
217
-
218
205
  if (type !== 'RECEIVE_ITEMS') {
219
206
  return state;
220
207
  }
221
-
222
208
  return getMergedItemIds(state || [], action.items.map(item => item[key]), page, perPage);
223
209
  });
210
+
224
211
  /**
225
212
  * Reducer tracking queries state.
226
213
  *
@@ -229,29 +216,24 @@ const receiveQueries = (0, _compose.compose)([// Limit to matching action type s
229
216
  *
230
217
  * @return {Object} Next state.
231
218
  */
232
-
233
219
  const queries = (state = {}, action) => {
234
220
  switch (action.type) {
235
221
  case 'RECEIVE_ITEMS':
236
222
  return receiveQueries(state, action);
237
-
238
223
  case 'REMOVE_ITEMS':
239
224
  const removedItems = action.itemIds.reduce((result, itemId) => {
240
225
  result[itemId] = true;
241
226
  return result;
242
227
  }, {});
243
228
  return Object.fromEntries(Object.entries(state).map(([queryGroup, contextQueries]) => [queryGroup, Object.fromEntries(Object.entries(contextQueries).map(([query, queryItems]) => [query, queryItems.filter(queryId => !removedItems[queryId])]))]));
244
-
245
229
  default:
246
230
  return state;
247
231
  }
248
232
  };
249
-
250
233
  var _default = (0, _data.combineReducers)({
251
234
  items,
252
235
  itemIsComplete,
253
236
  queries
254
237
  });
255
-
256
238
  exports.default = _default;
257
239
  //# sourceMappingURL=reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/reducer.js"],"names":["getContextFromAction","action","query","queryParts","context","getMergedItemIds","itemIds","nextItemIds","page","perPage","receivedAllIds","nextItemIdsStartIndex","size","Math","max","length","mergedItemIds","Array","i","isInNextItemsRange","removeEntitiesById","entities","ids","Object","fromEntries","entries","filter","id","some","itemId","Number","isInteger","items","state","type","key","DEFAULT_ENTITY_KEY","reduce","accumulator","value","map","contextState","itemIsComplete","isCompleteQuery","isArray","fields","result","item","receiveQueries","queries","removedItems","queryGroup","contextQueries","queryItems","queryId"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tconservativeMapItem,\n\tifMatchingAction,\n\treplaceAction,\n\tonSubKey,\n} from '../utils';\nimport { DEFAULT_ENTITY_KEY } from '../entities';\nimport getQueryParts from './get-query-parts';\n\nfunction getContextFromAction( action ) {\n\tconst { query } = action;\n\tif ( ! query ) {\n\t\treturn 'default';\n\t}\n\n\tconst queryParts = getQueryParts( query );\n\treturn queryParts.context;\n}\n\n/**\n * Returns a merged array of item IDs, given details of the received paginated\n * items. The array is sparse-like with `undefined` entries where holes exist.\n *\n * @param {?Array<number>} itemIds Original item IDs (default empty array).\n * @param {number[]} nextItemIds Item IDs to merge.\n * @param {number} page Page of items merged.\n * @param {number} perPage Number of items per page.\n *\n * @return {number[]} Merged array of item IDs.\n */\nexport function getMergedItemIds( itemIds, nextItemIds, page, perPage ) {\n\tconst receivedAllIds = page === 1 && perPage === -1;\n\tif ( receivedAllIds ) {\n\t\treturn nextItemIds;\n\t}\n\tconst nextItemIdsStartIndex = ( page - 1 ) * perPage;\n\n\t// If later page has already been received, default to the larger known\n\t// size of the existing array, else calculate as extending the existing.\n\tconst size = Math.max(\n\t\titemIds?.length ?? 0,\n\t\tnextItemIdsStartIndex + nextItemIds.length\n\t);\n\n\t// Preallocate array since size is known.\n\tconst mergedItemIds = new Array( size );\n\n\tfor ( let i = 0; i < size; i++ ) {\n\t\t// Preserve existing item ID except for subset of range of next items.\n\t\tconst isInNextItemsRange =\n\t\t\ti >= nextItemIdsStartIndex &&\n\t\t\ti < nextItemIdsStartIndex + nextItemIds.length;\n\n\t\tmergedItemIds[ i ] = isInNextItemsRange\n\t\t\t? nextItemIds[ i - nextItemIdsStartIndex ]\n\t\t\t: itemIds?.[ i ];\n\t}\n\n\treturn mergedItemIds;\n}\n\n/**\n * Helper function to filter out entities with certain IDs.\n * Entities are keyed by their ID.\n *\n * @param {Object} entities Entity objects, keyed by entity ID.\n * @param {Array} ids Entity IDs to filter out.\n *\n * @return {Object} Filtered entities.\n */\nfunction removeEntitiesById( entities, ids ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( entities ).filter(\n\t\t\t( [ id ] ) =>\n\t\t\t\t! ids.some( ( itemId ) => {\n\t\t\t\t\tif ( Number.isInteger( itemId ) ) {\n\t\t\t\t\t\treturn itemId === +id;\n\t\t\t\t\t}\n\t\t\t\t\treturn itemId === id;\n\t\t\t\t} )\n\t\t)\n\t);\n}\n\n/**\n * Reducer tracking items state, keyed by ID. Items are assumed to be normal,\n * where identifiers are common across all queries.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nexport function items( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst key = action.key || DEFAULT_ENTITY_KEY;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( accumulator, value ) => {\n\t\t\t\t\t\tconst itemId = value[ key ];\n\t\t\t\t\t\taccumulator[ itemId ] = conservativeMapItem(\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ],\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking item completeness, keyed by ID. A complete item is one for\n * which all fields are known. This is used in supporting `_fields` queries,\n * where not all properties associated with an entity are necessarily returned.\n * In such cases, completeness is used as an indication of whether it would be\n * safe to use queried data for a non-`_fields`-limited request.\n *\n * @param {Object<string,Object<string,boolean>>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object<string,Object<string,boolean>>} Next state.\n */\nexport function itemIsComplete( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst { query, key = DEFAULT_ENTITY_KEY } = action;\n\n\t\t\t// An item is considered complete if it is received without an associated\n\t\t\t// fields query. Ideally, this would be implemented in such a way where the\n\t\t\t// complete aggregate of all fields would satisfy completeness. Since the\n\t\t\t// fields are not consistent across all entities, this would require\n\t\t\t// introspection on the REST schema for each entity to know which fields\n\t\t\t// compose a complete item for that entity.\n\t\t\tconst queryParts = query ? getQueryParts( query ) : {};\n\t\t\tconst isCompleteQuery =\n\t\t\t\t! query || ! Array.isArray( queryParts.fields );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( result, item ) => {\n\t\t\t\t\t\tconst itemId = item[ key ];\n\n\t\t\t\t\t\t// Defer to completeness if already assigned. Technically the\n\t\t\t\t\t\t// data may be outdated if receiving items for a field subset.\n\t\t\t\t\t\tresult[ itemId ] =\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ] || isCompleteQuery;\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking queries state, keyed by stable query key. Each reducer\n * query object includes `itemIds` and `requestingPageByPerPage`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst receiveQueries = compose( [\n\t// Limit to matching action type so we don't attempt to replace action on\n\t// an unhandled action.\n\tifMatchingAction( ( action ) => 'query' in action ),\n\n\t// Inject query parts into action for use both in `onSubKey` and reducer.\n\treplaceAction( ( action ) => {\n\t\t// `ifMatchingAction` still passes on initialization, where state is\n\t\t// undefined and a query is not assigned. Avoid attempting to parse\n\t\t// parts. `onSubKey` will omit by lack of `stableKey`.\n\t\tif ( action.query ) {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\t...getQueryParts( action.query ),\n\t\t\t};\n\t\t}\n\n\t\treturn action;\n\t} ),\n\n\tonSubKey( 'context' ),\n\n\t// Queries shape is shared, but keyed by query `stableKey` part. Original\n\t// reducer tracks only a single query object.\n\tonSubKey( 'stableKey' ),\n] )( ( state = null, action ) => {\n\tconst { type, page, perPage, key = DEFAULT_ENTITY_KEY } = action;\n\n\tif ( type !== 'RECEIVE_ITEMS' ) {\n\t\treturn state;\n\t}\n\n\treturn getMergedItemIds(\n\t\tstate || [],\n\t\taction.items.map( ( item ) => item[ key ] ),\n\t\tpage,\n\t\tperPage\n\t);\n} );\n\n/**\n * Reducer tracking queries state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst queries = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS':\n\t\t\treturn receiveQueries( state, action );\n\t\tcase 'REMOVE_ITEMS':\n\t\t\tconst removedItems = action.itemIds.reduce( ( result, itemId ) => {\n\t\t\t\tresult[ itemId ] = true;\n\t\t\t\treturn result;\n\t\t\t}, {} );\n\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map(\n\t\t\t\t\t( [ queryGroup, contextQueries ] ) => [\n\t\t\t\t\t\tqueryGroup,\n\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\tObject.entries( contextQueries ).map(\n\t\t\t\t\t\t\t\t( [ query, queryItems ] ) => [\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tqueryItems.filter(\n\t\t\t\t\t\t\t\t\t\t( queryId ) => ! removedItems[ queryId ]\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t]\n\t\t\t\t)\n\t\t\t);\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default combineReducers( {\n\titems,\n\titemIsComplete,\n\tqueries,\n} );\n"]}
1
+ {"version":3,"names":["_data","require","_compose","_utils","_entities","_getQueryParts","_interopRequireDefault","getContextFromAction","action","query","queryParts","getQueryParts","context","getMergedItemIds","itemIds","nextItemIds","page","perPage","_itemIds$length","receivedAllIds","nextItemIdsStartIndex","size","Math","max","length","mergedItemIds","Array","i","isInNextItemsRange","removeEntitiesById","entities","ids","Object","fromEntries","entries","filter","id","some","itemId","Number","isInteger","items","state","type","key","DEFAULT_ENTITY_KEY","reduce","accumulator","value","conservativeMapItem","map","contextState","itemIsComplete","isCompleteQuery","isArray","fields","result","item","receiveQueries","compose","ifMatchingAction","replaceAction","onSubKey","queries","removedItems","queryGroup","contextQueries","queryItems","queryId","_default","combineReducers","exports","default"],"sources":["@wordpress/core-data/src/queried-data/reducer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tconservativeMapItem,\n\tifMatchingAction,\n\treplaceAction,\n\tonSubKey,\n} from '../utils';\nimport { DEFAULT_ENTITY_KEY } from '../entities';\nimport getQueryParts from './get-query-parts';\n\nfunction getContextFromAction( action ) {\n\tconst { query } = action;\n\tif ( ! query ) {\n\t\treturn 'default';\n\t}\n\n\tconst queryParts = getQueryParts( query );\n\treturn queryParts.context;\n}\n\n/**\n * Returns a merged array of item IDs, given details of the received paginated\n * items. The array is sparse-like with `undefined` entries where holes exist.\n *\n * @param {?Array<number>} itemIds Original item IDs (default empty array).\n * @param {number[]} nextItemIds Item IDs to merge.\n * @param {number} page Page of items merged.\n * @param {number} perPage Number of items per page.\n *\n * @return {number[]} Merged array of item IDs.\n */\nexport function getMergedItemIds( itemIds, nextItemIds, page, perPage ) {\n\tconst receivedAllIds = page === 1 && perPage === -1;\n\tif ( receivedAllIds ) {\n\t\treturn nextItemIds;\n\t}\n\tconst nextItemIdsStartIndex = ( page - 1 ) * perPage;\n\n\t// If later page has already been received, default to the larger known\n\t// size of the existing array, else calculate as extending the existing.\n\tconst size = Math.max(\n\t\titemIds?.length ?? 0,\n\t\tnextItemIdsStartIndex + nextItemIds.length\n\t);\n\n\t// Preallocate array since size is known.\n\tconst mergedItemIds = new Array( size );\n\n\tfor ( let i = 0; i < size; i++ ) {\n\t\t// Preserve existing item ID except for subset of range of next items.\n\t\tconst isInNextItemsRange =\n\t\t\ti >= nextItemIdsStartIndex &&\n\t\t\ti < nextItemIdsStartIndex + nextItemIds.length;\n\n\t\tmergedItemIds[ i ] = isInNextItemsRange\n\t\t\t? nextItemIds[ i - nextItemIdsStartIndex ]\n\t\t\t: itemIds?.[ i ];\n\t}\n\n\treturn mergedItemIds;\n}\n\n/**\n * Helper function to filter out entities with certain IDs.\n * Entities are keyed by their ID.\n *\n * @param {Object} entities Entity objects, keyed by entity ID.\n * @param {Array} ids Entity IDs to filter out.\n *\n * @return {Object} Filtered entities.\n */\nfunction removeEntitiesById( entities, ids ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( entities ).filter(\n\t\t\t( [ id ] ) =>\n\t\t\t\t! ids.some( ( itemId ) => {\n\t\t\t\t\tif ( Number.isInteger( itemId ) ) {\n\t\t\t\t\t\treturn itemId === +id;\n\t\t\t\t\t}\n\t\t\t\t\treturn itemId === id;\n\t\t\t\t} )\n\t\t)\n\t);\n}\n\n/**\n * Reducer tracking items state, keyed by ID. Items are assumed to be normal,\n * where identifiers are common across all queries.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nexport function items( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst key = action.key || DEFAULT_ENTITY_KEY;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( accumulator, value ) => {\n\t\t\t\t\t\tconst itemId = value[ key ];\n\t\t\t\t\t\taccumulator[ itemId ] = conservativeMapItem(\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ],\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking item completeness, keyed by ID. A complete item is one for\n * which all fields are known. This is used in supporting `_fields` queries,\n * where not all properties associated with an entity are necessarily returned.\n * In such cases, completeness is used as an indication of whether it would be\n * safe to use queried data for a non-`_fields`-limited request.\n *\n * @param {Object<string,Object<string,boolean>>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object<string,Object<string,boolean>>} Next state.\n */\nexport function itemIsComplete( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst { query, key = DEFAULT_ENTITY_KEY } = action;\n\n\t\t\t// An item is considered complete if it is received without an associated\n\t\t\t// fields query. Ideally, this would be implemented in such a way where the\n\t\t\t// complete aggregate of all fields would satisfy completeness. Since the\n\t\t\t// fields are not consistent across all entities, this would require\n\t\t\t// introspection on the REST schema for each entity to know which fields\n\t\t\t// compose a complete item for that entity.\n\t\t\tconst queryParts = query ? getQueryParts( query ) : {};\n\t\t\tconst isCompleteQuery =\n\t\t\t\t! query || ! Array.isArray( queryParts.fields );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( result, item ) => {\n\t\t\t\t\t\tconst itemId = item[ key ];\n\n\t\t\t\t\t\t// Defer to completeness if already assigned. Technically the\n\t\t\t\t\t\t// data may be outdated if receiving items for a field subset.\n\t\t\t\t\t\tresult[ itemId ] =\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ] || isCompleteQuery;\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking queries state, keyed by stable query key. Each reducer\n * query object includes `itemIds` and `requestingPageByPerPage`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst receiveQueries = compose( [\n\t// Limit to matching action type so we don't attempt to replace action on\n\t// an unhandled action.\n\tifMatchingAction( ( action ) => 'query' in action ),\n\n\t// Inject query parts into action for use both in `onSubKey` and reducer.\n\treplaceAction( ( action ) => {\n\t\t// `ifMatchingAction` still passes on initialization, where state is\n\t\t// undefined and a query is not assigned. Avoid attempting to parse\n\t\t// parts. `onSubKey` will omit by lack of `stableKey`.\n\t\tif ( action.query ) {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\t...getQueryParts( action.query ),\n\t\t\t};\n\t\t}\n\n\t\treturn action;\n\t} ),\n\n\tonSubKey( 'context' ),\n\n\t// Queries shape is shared, but keyed by query `stableKey` part. Original\n\t// reducer tracks only a single query object.\n\tonSubKey( 'stableKey' ),\n] )( ( state = null, action ) => {\n\tconst { type, page, perPage, key = DEFAULT_ENTITY_KEY } = action;\n\n\tif ( type !== 'RECEIVE_ITEMS' ) {\n\t\treturn state;\n\t}\n\n\treturn getMergedItemIds(\n\t\tstate || [],\n\t\taction.items.map( ( item ) => item[ key ] ),\n\t\tpage,\n\t\tperPage\n\t);\n} );\n\n/**\n * Reducer tracking queries state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst queries = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS':\n\t\t\treturn receiveQueries( state, action );\n\t\tcase 'REMOVE_ITEMS':\n\t\t\tconst removedItems = action.itemIds.reduce( ( result, itemId ) => {\n\t\t\t\tresult[ itemId ] = true;\n\t\t\t\treturn result;\n\t\t\t}, {} );\n\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map(\n\t\t\t\t\t( [ queryGroup, contextQueries ] ) => [\n\t\t\t\t\t\tqueryGroup,\n\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\tObject.entries( contextQueries ).map(\n\t\t\t\t\t\t\t\t( [ query, queryItems ] ) => [\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tqueryItems.filter(\n\t\t\t\t\t\t\t\t\t\t( queryId ) => ! removedItems[ queryId ]\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t]\n\t\t\t\t)\n\t\t\t);\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default combineReducers( {\n\titems,\n\titemIsComplete,\n\tqueries,\n} );\n"],"mappings":"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"}