@wordpress/core-data 4.0.1 → 4.0.5

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 (116) hide show
  1. package/README.md +13 -7
  2. package/build/actions.js +178 -122
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/default-processor.js +58 -27
  5. package/build/batch/default-processor.js.map +1 -1
  6. package/build/entities.js +70 -23
  7. package/build/entities.js.map +1 -1
  8. package/build/fetch/__experimental-fetch-url-data.js +1 -1
  9. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  10. package/build/index.js +9 -17
  11. package/build/index.js.map +1 -1
  12. package/build/locks/actions.js +17 -77
  13. package/build/locks/actions.js.map +1 -1
  14. package/build/locks/engine.js +77 -0
  15. package/build/locks/engine.js.map +1 -0
  16. package/build/locks/reducer.js +1 -5
  17. package/build/locks/reducer.js.map +1 -1
  18. package/build/locks/selectors.js +6 -6
  19. package/build/locks/selectors.js.map +1 -1
  20. package/build/queried-data/get-query-parts.js +9 -4
  21. package/build/queried-data/get-query-parts.js.map +1 -1
  22. package/build/queried-data/selectors.js +3 -9
  23. package/build/queried-data/selectors.js.map +1 -1
  24. package/build/reducer.js +17 -22
  25. package/build/reducer.js.map +1 -1
  26. package/build/resolvers.js +151 -97
  27. package/build/resolvers.js.map +1 -1
  28. package/build/selectors.js +79 -14
  29. package/build/selectors.js.map +1 -1
  30. package/build/utils/forward-resolver.js +23 -0
  31. package/build/utils/forward-resolver.js.map +1 -0
  32. package/build/utils/index.js +11 -3
  33. package/build/utils/index.js.map +1 -1
  34. package/build/utils/is-raw-attribute.js +19 -0
  35. package/build/utils/is-raw-attribute.js.map +1 -0
  36. package/build-module/actions.js +155 -112
  37. package/build-module/actions.js.map +1 -1
  38. package/build-module/batch/default-processor.js +57 -27
  39. package/build-module/batch/default-processor.js.map +1 -1
  40. package/build-module/entities.js +65 -19
  41. package/build-module/entities.js.map +1 -1
  42. package/build-module/fetch/__experimental-fetch-url-data.js +1 -1
  43. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  44. package/build-module/index.js +10 -14
  45. package/build-module/index.js.map +1 -1
  46. package/build-module/locks/actions.js +14 -68
  47. package/build-module/locks/actions.js.map +1 -1
  48. package/build-module/locks/engine.js +66 -0
  49. package/build-module/locks/engine.js.map +1 -0
  50. package/build-module/locks/reducer.js +1 -2
  51. package/build-module/locks/reducer.js.map +1 -1
  52. package/build-module/locks/selectors.js +4 -4
  53. package/build-module/locks/selectors.js.map +1 -1
  54. package/build-module/queried-data/get-query-parts.js +9 -4
  55. package/build-module/queried-data/get-query-parts.js.map +1 -1
  56. package/build-module/queried-data/selectors.js +3 -9
  57. package/build-module/queried-data/selectors.js.map +1 -1
  58. package/build-module/reducer.js +15 -19
  59. package/build-module/reducer.js.map +1 -1
  60. package/build-module/resolvers.js +123 -81
  61. package/build-module/resolvers.js.map +1 -1
  62. package/build-module/selectors.js +74 -13
  63. package/build-module/selectors.js.map +1 -1
  64. package/build-module/utils/forward-resolver.js +15 -0
  65. package/build-module/utils/forward-resolver.js.map +1 -0
  66. package/build-module/utils/index.js +2 -1
  67. package/build-module/utils/index.js.map +1 -1
  68. package/build-module/utils/is-raw-attribute.js +12 -0
  69. package/build-module/utils/is-raw-attribute.js.map +1 -0
  70. package/package.json +10 -11
  71. package/src/actions.js +163 -194
  72. package/src/batch/default-processor.js +57 -26
  73. package/src/batch/test/default-processor.js +53 -26
  74. package/src/entities.js +47 -19
  75. package/src/fetch/__experimental-fetch-url-data.js +1 -1
  76. package/src/index.js +7 -10
  77. package/src/locks/actions.js +10 -61
  78. package/src/locks/engine.js +43 -0
  79. package/src/locks/reducer.js +1 -3
  80. package/src/locks/selectors.js +4 -4
  81. package/src/locks/test/engine.js +135 -0
  82. package/src/locks/test/reducer.js +1 -1
  83. package/src/locks/test/selectors.js +105 -124
  84. package/src/queried-data/get-query-parts.js +11 -6
  85. package/src/queried-data/selectors.js +2 -9
  86. package/src/queried-data/test/get-query-parts.js +1 -1
  87. package/src/queried-data/test/selectors.js +1 -0
  88. package/src/reducer.js +14 -19
  89. package/src/resolvers.js +132 -120
  90. package/src/selectors.js +156 -44
  91. package/src/test/actions.js +330 -170
  92. package/src/test/entities.js +40 -26
  93. package/src/test/resolvers.js +270 -223
  94. package/src/test/selectors.js +127 -1
  95. package/src/utils/forward-resolver.js +14 -0
  96. package/src/utils/index.js +2 -1
  97. package/src/utils/is-raw-attribute.js +11 -0
  98. package/src/utils/test/is-raw-attribute.js +22 -0
  99. package/build/controls.js +0 -44
  100. package/build/controls.js.map +0 -1
  101. package/build/locks/index.js +0 -47
  102. package/build/locks/index.js.map +0 -1
  103. package/build/utils/if-not-resolved.js +0 -46
  104. package/build/utils/if-not-resolved.js.map +0 -1
  105. package/build-module/controls.js +0 -31
  106. package/build-module/controls.js.map +0 -1
  107. package/build-module/locks/index.js +0 -4
  108. package/build-module/locks/index.js.map +0 -1
  109. package/build-module/utils/if-not-resolved.js +0 -36
  110. package/build-module/utils/if-not-resolved.js.map +0 -1
  111. package/src/controls.js +0 -31
  112. package/src/locks/index.js +0 -3
  113. package/src/locks/test/actions.js +0 -307
  114. package/src/test/integration.js +0 -264
  115. package/src/utils/if-not-resolved.js +0 -40
  116. package/src/utils/test/if-not-resolved.js +0 -75
package/build/index.js CHANGED
@@ -21,8 +21,6 @@ exports.store = void 0;
21
21
 
22
22
  var _data = require("@wordpress/data");
23
23
 
24
- var _dataControls = require("@wordpress/data-controls");
25
-
26
24
  var _reducer = _interopRequireDefault(require("./reducer"));
27
25
 
28
26
  var selectors = _interopRequireWildcard(require("./selectors"));
@@ -31,11 +29,7 @@ var actions = _interopRequireWildcard(require("./actions"));
31
29
 
32
30
  var resolvers = _interopRequireWildcard(require("./resolvers"));
33
31
 
34
- var locksSelectors = _interopRequireWildcard(require("./locks/selectors"));
35
-
36
- var locksActions = _interopRequireWildcard(require("./locks/actions"));
37
-
38
- var _controls = _interopRequireDefault(require("./controls"));
32
+ var _actions2 = _interopRequireDefault(require("./locks/actions"));
39
33
 
40
34
  var _entities = require("./entities");
41
35
 
@@ -123,23 +117,20 @@ const entityActions = _entities.defaultEntities.reduce((result, entity) => {
123
117
  return result;
124
118
  }, {});
125
119
 
126
- const storeConfig = {
120
+ const storeConfig = () => ({
127
121
  reducer: _reducer.default,
128
- controls: { ..._controls.default,
129
- ..._dataControls.controls
130
- },
131
122
  actions: { ...actions,
132
123
  ...entityActions,
133
- ...locksActions
124
+ ...(0, _actions2.default)()
134
125
  },
135
126
  selectors: { ...selectors,
136
- ...entitySelectors,
137
- ...locksSelectors
127
+ ...entitySelectors
138
128
  },
139
129
  resolvers: { ...resolvers,
140
130
  ...entityResolvers
141
- }
142
- };
131
+ },
132
+ __experimentalUseThunks: true
133
+ });
143
134
  /**
144
135
  * Store definition for the code data namespace.
145
136
  *
@@ -148,7 +139,8 @@ const storeConfig = {
148
139
  * @type {Object}
149
140
  */
150
141
 
151
- const store = (0, _data.createReduxStore)(_name.STORE_NAME, storeConfig);
142
+
143
+ const store = (0, _data.createReduxStore)(_name.STORE_NAME, storeConfig());
152
144
  exports.store = store;
153
145
  (0, _data.register)(store);
154
146
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["entitySelectors","defaultEntities","reduce","result","entity","kind","name","state","key","query","selectors","getEntityRecord","args","getEntityRecords","entityResolvers","resolvers","pluralMethodName","shouldInvalidate","action","entityActions","actions","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","controls","customControls","locksActions","locksSelectors","store","STORE_NAME"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\nimport { controls } from '@wordpress/data-controls';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport * as locksSelectors from './locks/selectors';\nimport * as locksActions from './locks/actions';\nimport customControls from './controls';\nimport { defaultEntities, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)\n// Instead of getEntityRecord, the consumer could use more user-frieldly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, ...args ) =>\n\t\tselectors.getEntityRecords( state, kind, name, ...args );\n\treturn result;\n}, {} );\n\nconst entityResolvers = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action, ...args ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate(\n\t\t\taction,\n\t\t\tkind,\n\t\t\tname,\n\t\t\t...args\n\t\t);\n\treturn result;\n}, {} );\n\nconst entityActions = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = {\n\treducer,\n\tcontrols: { ...customControls, ...controls },\n\tactions: { ...actions, ...entityActions, ...locksActions },\n\tselectors: { ...selectors, ...entitySelectors, ...locksSelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n};\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './fetch';\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["entitySelectors","defaultEntities","reduce","result","entity","kind","name","state","key","query","selectors","getEntityRecord","args","getEntityRecords","entityResolvers","resolvers","pluralMethodName","shouldInvalidate","action","entityActions","actions","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","__experimentalUseThunks","store","STORE_NAME"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { defaultEntities, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)\n// Instead of getEntityRecord, the consumer could use more user-frieldly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, ...args ) =>\n\t\tselectors.getEntityRecords( state, kind, name, ...args );\n\treturn result;\n}, {} );\n\nconst entityResolvers = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action, ...args ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate(\n\t\t\taction,\n\t\t\tkind,\n\t\t\tname,\n\t\t\t...args\n\t\t);\n\treturn result;\n}, {} );\n\nconst entityActions = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n\t__experimentalUseThunks: true,\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './fetch';\n"]}
@@ -1,93 +1,33 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.__unstableAcquireStoreLock = __unstableAcquireStoreLock;
7
- exports.__unstableEnqueueLockRequest = __unstableEnqueueLockRequest;
8
- exports.__unstableReleaseStoreLock = __unstableReleaseStoreLock;
9
- exports.__unstableProcessPendingLockRequests = __unstableProcessPendingLockRequests;
10
-
11
- var _dataControls = require("@wordpress/data-controls");
12
-
13
- var _data = require("@wordpress/data");
8
+ exports.default = createLocksActions;
14
9
 
15
- var _name = require("../name");
16
-
17
- /**
18
- * WordPress dependencies
19
- */
10
+ var _engine = _interopRequireDefault(require("./engine"));
20
11
 
21
12
  /**
22
13
  * Internal dependencies
23
14
  */
24
- function* __unstableAcquireStoreLock(store, path, {
25
- exclusive
26
- }) {
27
- const promise = yield* __unstableEnqueueLockRequest(store, path, {
28
- exclusive
29
- });
30
- yield* __unstableProcessPendingLockRequests();
31
- return yield (0, _dataControls.__unstableAwaitPromise)(promise);
32
- }
15
+ function createLocksActions() {
16
+ const locks = (0, _engine.default)();
33
17
 
34
- function* __unstableEnqueueLockRequest(store, path, {
35
- exclusive
36
- }) {
37
- let notifyAcquired;
38
- const promise = new Promise(resolve => {
39
- notifyAcquired = resolve;
40
- });
41
- yield {
42
- type: 'ENQUEUE_LOCK_REQUEST',
43
- request: {
44
- store,
45
- path,
46
- exclusive,
47
- notifyAcquired
48
- }
49
- };
50
- return promise;
51
- }
18
+ function __unstableAcquireStoreLock(store, path, {
19
+ exclusive
20
+ }) {
21
+ return () => locks.acquire(store, path, exclusive);
22
+ }
52
23
 
53
- function* __unstableReleaseStoreLock(lock) {
54
- yield {
55
- type: 'RELEASE_LOCK',
56
- lock
57
- };
58
- yield* __unstableProcessPendingLockRequests();
59
- }
24
+ function __unstableReleaseStoreLock(lock) {
25
+ return () => locks.release(lock);
26
+ }
60
27
 
61
- function* __unstableProcessPendingLockRequests() {
62
- yield {
63
- type: 'PROCESS_PENDING_LOCK_REQUESTS'
28
+ return {
29
+ __unstableAcquireStoreLock,
30
+ __unstableReleaseStoreLock
64
31
  };
65
- const lockRequests = yield _data.controls.select(_name.STORE_NAME, '__unstableGetPendingLockRequests');
66
-
67
- for (const request of lockRequests) {
68
- const {
69
- store,
70
- path,
71
- exclusive,
72
- notifyAcquired
73
- } = request;
74
- const isAvailable = yield _data.controls.select(_name.STORE_NAME, '__unstableIsLockAvailable', store, path, {
75
- exclusive
76
- });
77
-
78
- if (isAvailable) {
79
- const lock = {
80
- store,
81
- path,
82
- exclusive
83
- };
84
- yield {
85
- type: 'GRANT_LOCK_REQUEST',
86
- lock,
87
- request
88
- };
89
- notifyAcquired(lock);
90
- }
91
- }
92
32
  }
93
33
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/locks/actions.js"],"names":["__unstableAcquireStoreLock","store","path","exclusive","promise","__unstableEnqueueLockRequest","__unstableProcessPendingLockRequests","notifyAcquired","Promise","resolve","type","request","__unstableReleaseStoreLock","lock","lockRequests","controls","select","STORE_NAME","isAvailable"],"mappings":";;;;;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGO,UAAUA,0BAAV,CAAsCC,KAAtC,EAA6CC,IAA7C,EAAmD;AAAEC,EAAAA;AAAF,CAAnD,EAAmE;AACzE,QAAMC,OAAO,GAAG,OAAOC,4BAA4B,CAAEJ,KAAF,EAASC,IAAT,EAAe;AACjEC,IAAAA;AADiE,GAAf,CAAnD;AAGA,SAAOG,oCAAoC,EAA3C;AACA,SAAO,MAAM,0CAAwBF,OAAxB,CAAb;AACA;;AAEM,UAAUC,4BAAV,CAAwCJ,KAAxC,EAA+CC,IAA/C,EAAqD;AAAEC,EAAAA;AAAF,CAArD,EAAqE;AAC3E,MAAII,cAAJ;AACA,QAAMH,OAAO,GAAG,IAAII,OAAJ,CAAeC,OAAF,IAAe;AAC3CF,IAAAA,cAAc,GAAGE,OAAjB;AACA,GAFe,CAAhB;AAGA,QAAM;AACLC,IAAAA,IAAI,EAAE,sBADD;AAELC,IAAAA,OAAO,EAAE;AAAEV,MAAAA,KAAF;AAASC,MAAAA,IAAT;AAAeC,MAAAA,SAAf;AAA0BI,MAAAA;AAA1B;AAFJ,GAAN;AAIA,SAAOH,OAAP;AACA;;AAEM,UAAUQ,0BAAV,CAAsCC,IAAtC,EAA6C;AACnD,QAAM;AACLH,IAAAA,IAAI,EAAE,cADD;AAELG,IAAAA;AAFK,GAAN;AAIA,SAAOP,oCAAoC,EAA3C;AACA;;AAEM,UAAUA,oCAAV,GAAiD;AACvD,QAAM;AACLI,IAAAA,IAAI,EAAE;AADD,GAAN;AAGA,QAAMI,YAAY,GAAG,MAAMC,eAASC,MAAT,CAC1BC,gBAD0B,EAE1B,kCAF0B,CAA3B;;AAIA,OAAM,MAAMN,OAAZ,IAAuBG,YAAvB,EAAsC;AACrC,UAAM;AAAEb,MAAAA,KAAF;AAASC,MAAAA,IAAT;AAAeC,MAAAA,SAAf;AAA0BI,MAAAA;AAA1B,QAA6CI,OAAnD;AACA,UAAMO,WAAW,GAAG,MAAMH,eAASC,MAAT,CACzBC,gBADyB,EAEzB,2BAFyB,EAGzBhB,KAHyB,EAIzBC,IAJyB,EAKzB;AACCC,MAAAA;AADD,KALyB,CAA1B;;AASA,QAAKe,WAAL,EAAmB;AAClB,YAAML,IAAI,GAAG;AAAEZ,QAAAA,KAAF;AAASC,QAAAA,IAAT;AAAeC,QAAAA;AAAf,OAAb;AACA,YAAM;AACLO,QAAAA,IAAI,EAAE,oBADD;AAELG,QAAAA,IAFK;AAGLF,QAAAA;AAHK,OAAN;AAKAJ,MAAAA,cAAc,CAAEM,IAAF,CAAd;AACA;AACD;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableAwaitPromise } from '@wordpress/data-controls';\nimport { controls } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../name';\n\nexport function* __unstableAcquireStoreLock( store, path, { exclusive } ) {\n\tconst promise = yield* __unstableEnqueueLockRequest( store, path, {\n\t\texclusive,\n\t} );\n\tyield* __unstableProcessPendingLockRequests();\n\treturn yield __unstableAwaitPromise( promise );\n}\n\nexport function* __unstableEnqueueLockRequest( store, path, { exclusive } ) {\n\tlet notifyAcquired;\n\tconst promise = new Promise( ( resolve ) => {\n\t\tnotifyAcquired = resolve;\n\t} );\n\tyield {\n\t\ttype: 'ENQUEUE_LOCK_REQUEST',\n\t\trequest: { store, path, exclusive, notifyAcquired },\n\t};\n\treturn promise;\n}\n\nexport function* __unstableReleaseStoreLock( lock ) {\n\tyield {\n\t\ttype: 'RELEASE_LOCK',\n\t\tlock,\n\t};\n\tyield* __unstableProcessPendingLockRequests();\n}\n\nexport function* __unstableProcessPendingLockRequests() {\n\tyield {\n\t\ttype: 'PROCESS_PENDING_LOCK_REQUESTS',\n\t};\n\tconst lockRequests = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'__unstableGetPendingLockRequests'\n\t);\n\tfor ( const request of lockRequests ) {\n\t\tconst { store, path, exclusive, notifyAcquired } = request;\n\t\tconst isAvailable = yield controls.select(\n\t\t\tSTORE_NAME,\n\t\t\t'__unstableIsLockAvailable',\n\t\t\tstore,\n\t\t\tpath,\n\t\t\t{\n\t\t\t\texclusive,\n\t\t\t}\n\t\t);\n\t\tif ( isAvailable ) {\n\t\t\tconst lock = { store, path, exclusive };\n\t\t\tyield {\n\t\t\t\ttype: 'GRANT_LOCK_REQUEST',\n\t\t\t\tlock,\n\t\t\t\trequest,\n\t\t\t};\n\t\t\tnotifyAcquired( lock );\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/locks/actions.js"],"names":["createLocksActions","locks","__unstableAcquireStoreLock","store","path","exclusive","acquire","__unstableReleaseStoreLock","lock","release"],"mappings":";;;;;;;;;AAGA;;AAHA;AACA;AACA;AAGe,SAASA,kBAAT,GAA8B;AAC5C,QAAMC,KAAK,GAAG,sBAAd;;AAEA,WAASC,0BAAT,CAAqCC,KAArC,EAA4CC,IAA5C,EAAkD;AAAEC,IAAAA;AAAF,GAAlD,EAAkE;AACjE,WAAO,MAAMJ,KAAK,CAACK,OAAN,CAAeH,KAAf,EAAsBC,IAAtB,EAA4BC,SAA5B,CAAb;AACA;;AAED,WAASE,0BAAT,CAAqCC,IAArC,EAA4C;AAC3C,WAAO,MAAMP,KAAK,CAACQ,OAAN,CAAeD,IAAf,CAAb;AACA;;AAED,SAAO;AAAEN,IAAAA,0BAAF;AAA8BK,IAAAA;AAA9B,GAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport createLocks from './engine';\n\nexport default function createLocksActions() {\n\tconst locks = createLocks();\n\n\tfunction __unstableAcquireStoreLock( store, path, { exclusive } ) {\n\t\treturn () => locks.acquire( store, path, exclusive );\n\t}\n\n\tfunction __unstableReleaseStoreLock( lock ) {\n\t\treturn () => locks.release( lock );\n\t}\n\n\treturn { __unstableAcquireStoreLock, __unstableReleaseStoreLock };\n}\n"]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = createLocks;
9
+
10
+ var _reducer = _interopRequireDefault(require("./reducer"));
11
+
12
+ var _selectors = require("./selectors");
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ function createLocks() {
18
+ let state = (0, _reducer.default)(undefined, {
19
+ type: '@@INIT'
20
+ });
21
+
22
+ function processPendingLockRequests() {
23
+ for (const request of (0, _selectors.getPendingLockRequests)(state)) {
24
+ const {
25
+ store,
26
+ path,
27
+ exclusive,
28
+ notifyAcquired
29
+ } = request;
30
+
31
+ if ((0, _selectors.isLockAvailable)(state, store, path, {
32
+ exclusive
33
+ })) {
34
+ const lock = {
35
+ store,
36
+ path,
37
+ exclusive
38
+ };
39
+ state = (0, _reducer.default)(state, {
40
+ type: 'GRANT_LOCK_REQUEST',
41
+ lock,
42
+ request
43
+ });
44
+ notifyAcquired(lock);
45
+ }
46
+ }
47
+ }
48
+
49
+ function acquire(store, path, exclusive) {
50
+ return new Promise(resolve => {
51
+ state = (0, _reducer.default)(state, {
52
+ type: 'ENQUEUE_LOCK_REQUEST',
53
+ request: {
54
+ store,
55
+ path,
56
+ exclusive,
57
+ notifyAcquired: resolve
58
+ }
59
+ });
60
+ processPendingLockRequests();
61
+ });
62
+ }
63
+
64
+ function release(lock) {
65
+ state = (0, _reducer.default)(state, {
66
+ type: 'RELEASE_LOCK',
67
+ lock
68
+ });
69
+ processPendingLockRequests();
70
+ }
71
+
72
+ return {
73
+ acquire,
74
+ release
75
+ };
76
+ }
77
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/core-data/src/locks/engine.js"],"names":["createLocks","state","undefined","type","processPendingLockRequests","request","store","path","exclusive","notifyAcquired","lock","acquire","Promise","resolve","release"],"mappings":";;;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIe,SAASA,WAAT,GAAuB;AACrC,MAAIC,KAAK,GAAG,sBAASC,SAAT,EAAoB;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAApB,CAAZ;;AAEA,WAASC,0BAAT,GAAsC;AACrC,SAAM,MAAMC,OAAZ,IAAuB,uCAAwBJ,KAAxB,CAAvB,EAAyD;AACxD,YAAM;AAAEK,QAAAA,KAAF;AAASC,QAAAA,IAAT;AAAeC,QAAAA,SAAf;AAA0BC,QAAAA;AAA1B,UAA6CJ,OAAnD;;AACA,UAAK,gCAAiBJ,KAAjB,EAAwBK,KAAxB,EAA+BC,IAA/B,EAAqC;AAAEC,QAAAA;AAAF,OAArC,CAAL,EAA4D;AAC3D,cAAME,IAAI,GAAG;AAAEJ,UAAAA,KAAF;AAASC,UAAAA,IAAT;AAAeC,UAAAA;AAAf,SAAb;AACAP,QAAAA,KAAK,GAAG,sBAASA,KAAT,EAAgB;AACvBE,UAAAA,IAAI,EAAE,oBADiB;AAEvBO,UAAAA,IAFuB;AAGvBL,UAAAA;AAHuB,SAAhB,CAAR;AAKAI,QAAAA,cAAc,CAAEC,IAAF,CAAd;AACA;AACD;AACD;;AAED,WAASC,OAAT,CAAkBL,KAAlB,EAAyBC,IAAzB,EAA+BC,SAA/B,EAA2C;AAC1C,WAAO,IAAII,OAAJ,CAAeC,OAAF,IAAe;AAClCZ,MAAAA,KAAK,GAAG,sBAASA,KAAT,EAAgB;AACvBE,QAAAA,IAAI,EAAE,sBADiB;AAEvBE,QAAAA,OAAO,EAAE;AAAEC,UAAAA,KAAF;AAASC,UAAAA,IAAT;AAAeC,UAAAA,SAAf;AAA0BC,UAAAA,cAAc,EAAEI;AAA1C;AAFc,OAAhB,CAAR;AAIAT,MAAAA,0BAA0B;AAC1B,KANM,CAAP;AAOA;;AACD,WAASU,OAAT,CAAkBJ,IAAlB,EAAyB;AACxBT,IAAAA,KAAK,GAAG,sBAASA,KAAT,EAAgB;AACvBE,MAAAA,IAAI,EAAE,cADiB;AAEvBO,MAAAA;AAFuB,KAAhB,CAAR;AAIAN,IAAAA,0BAA0B;AAC1B;;AAED,SAAO;AAAEO,IAAAA,OAAF;AAAWG,IAAAA;AAAX,GAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport { isLockAvailable, getPendingLockRequests } from './selectors';\n\nexport default function createLocks() {\n\tlet state = reducer( undefined, { type: '@@INIT' } );\n\n\tfunction processPendingLockRequests() {\n\t\tfor ( const request of getPendingLockRequests( state ) ) {\n\t\t\tconst { store, path, exclusive, notifyAcquired } = request;\n\t\t\tif ( isLockAvailable( state, store, path, { exclusive } ) ) {\n\t\t\t\tconst lock = { store, path, exclusive };\n\t\t\t\tstate = reducer( state, {\n\t\t\t\t\ttype: 'GRANT_LOCK_REQUEST',\n\t\t\t\t\tlock,\n\t\t\t\t\trequest,\n\t\t\t\t} );\n\t\t\t\tnotifyAcquired( lock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction acquire( store, path, exclusive ) {\n\t\treturn new Promise( ( resolve ) => {\n\t\t\tstate = reducer( state, {\n\t\t\t\ttype: 'ENQUEUE_LOCK_REQUEST',\n\t\t\t\trequest: { store, path, exclusive, notifyAcquired: resolve },\n\t\t\t} );\n\t\t\tprocessPendingLockRequests();\n\t\t} );\n\t}\n\tfunction release( lock ) {\n\t\tstate = reducer( state, {\n\t\t\ttype: 'RELEASE_LOCK',\n\t\t\tlock,\n\t\t} );\n\t\tprocessPendingLockRequests();\n\t}\n\n\treturn { acquire, release };\n}\n"]}
@@ -3,8 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.locks = locks;
7
- exports.default = void 0;
6
+ exports.default = locks;
8
7
 
9
8
  var _utils = require("./utils");
10
9
 
@@ -76,7 +75,4 @@ function locks(state = DEFAULT_STATE, action) {
76
75
 
77
76
  return state;
78
77
  }
79
-
80
- var _default = locks;
81
- exports.default = _default;
82
78
  //# sourceMappingURL=reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/locks/reducer.js"],"names":["DEFAULT_STATE","requests","tree","locks","children","state","action","type","request","lock","store","path","storePath","newTree","node","filter","r","l"],"mappings":";;;;;;;;AAGA;;AAHA;AACA;AACA;AAGA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,EADW;AAErBC,EAAAA,IAAI,EAAE;AACLC,IAAAA,KAAK,EAAE,EADF;AAELC,IAAAA,QAAQ,EAAE;AAFL;AAFe,CAAtB;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASD,KAAT,CAAgBE,KAAK,GAAGL,aAAxB,EAAuCM,MAAvC,EAAgD;AACtD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,sBAAL;AAA6B;AAC5B,cAAM;AAAEC,UAAAA;AAAF,YAAcF,MAApB;AACA,eAAO,EACN,GAAGD,KADG;AAENJ,UAAAA,QAAQ,EAAE,CAAEO,OAAF,EAAW,GAAGH,KAAK,CAACJ,QAApB;AAFJ,SAAP;AAIA;;AACD,SAAK,oBAAL;AAA2B;AAC1B,cAAM;AAAEQ,UAAAA,IAAF;AAAQD,UAAAA;AAAR,YAAoBF,MAA1B;AACA,cAAM;AAAEI,UAAAA,KAAF;AAASC,UAAAA;AAAT,YAAkBH,OAAxB;AACA,cAAMI,SAAS,GAAG,CAAEF,KAAF,EAAS,GAAGC,IAAZ,CAAlB;AAEA,cAAME,OAAO,GAAG,kCAAuBR,KAAK,CAACH,IAA7B,EAAmCU,SAAnC,CAAhB;AACA,cAAME,IAAI,GAAG,oBAASD,OAAT,EAAkBD,SAAlB,CAAb;AACAE,QAAAA,IAAI,CAACX,KAAL,GAAa,CAAE,GAAGW,IAAI,CAACX,KAAV,EAAiBM,IAAjB,CAAb;AAEA,eAAO,EACN,GAAGJ,KADG;AAENJ,UAAAA,QAAQ,EAAEI,KAAK,CAACJ,QAAN,CAAec,MAAf,CAAyBC,CAAF,IAASA,CAAC,KAAKR,OAAtC,CAFJ;AAGNN,UAAAA,IAAI,EAAEW;AAHA,SAAP;AAKA;;AACD,SAAK,cAAL;AAAqB;AACpB,cAAM;AAAEJ,UAAAA;AAAF,YAAWH,MAAjB;AACA,cAAMM,SAAS,GAAG,CAAEH,IAAI,CAACC,KAAP,EAAc,GAAGD,IAAI,CAACE,IAAtB,CAAlB;AAEA,cAAME,OAAO,GAAG,kCAAuBR,KAAK,CAACH,IAA7B,EAAmCU,SAAnC,CAAhB;AACA,cAAME,IAAI,GAAG,oBAASD,OAAT,EAAkBD,SAAlB,CAAb;AACAE,QAAAA,IAAI,CAACX,KAAL,GAAaW,IAAI,CAACX,KAAL,CAAWY,MAAX,CAAqBE,CAAF,IAASA,CAAC,KAAKR,IAAlC,CAAb;AAEA,eAAO,EACN,GAAGJ,KADG;AAENH,UAAAA,IAAI,EAAEW;AAFA,SAAP;AAIA;AAnCF;;AAsCA,SAAOR,KAAP;AACA;;eAEcF,K","sourcesContent":["/**\n * Internal dependencies\n */\nimport { getNode, deepCopyLocksTreePath } from './utils';\n\nconst DEFAULT_STATE = {\n\trequests: [],\n\ttree: {\n\t\tlocks: [],\n\t\tchildren: {},\n\t},\n};\n\n/**\n * Reducer returning locks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function locks( state = DEFAULT_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ENQUEUE_LOCK_REQUEST': {\n\t\t\tconst { request } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: [ request, ...state.requests ],\n\t\t\t};\n\t\t}\n\t\tcase 'GRANT_LOCK_REQUEST': {\n\t\t\tconst { lock, request } = action;\n\t\t\tconst { store, path } = request;\n\t\t\tconst storePath = [ store, ...path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = [ ...node.locks, lock ];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: state.requests.filter( ( r ) => r !== request ),\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t\tcase 'RELEASE_LOCK': {\n\t\t\tconst { lock } = action;\n\t\t\tconst storePath = [ lock.store, ...lock.path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = node.locks.filter( ( l ) => l !== lock );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\nexport default locks;\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/locks/reducer.js"],"names":["DEFAULT_STATE","requests","tree","locks","children","state","action","type","request","lock","store","path","storePath","newTree","node","filter","r","l"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;AAGA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,EADW;AAErBC,EAAAA,IAAI,EAAE;AACLC,IAAAA,KAAK,EAAE,EADF;AAELC,IAAAA,QAAQ,EAAE;AAFL;AAFe,CAAtB;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASD,KAAT,CAAgBE,KAAK,GAAGL,aAAxB,EAAuCM,MAAvC,EAAgD;AAC9D,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,sBAAL;AAA6B;AAC5B,cAAM;AAAEC,UAAAA;AAAF,YAAcF,MAApB;AACA,eAAO,EACN,GAAGD,KADG;AAENJ,UAAAA,QAAQ,EAAE,CAAEO,OAAF,EAAW,GAAGH,KAAK,CAACJ,QAApB;AAFJ,SAAP;AAIA;;AACD,SAAK,oBAAL;AAA2B;AAC1B,cAAM;AAAEQ,UAAAA,IAAF;AAAQD,UAAAA;AAAR,YAAoBF,MAA1B;AACA,cAAM;AAAEI,UAAAA,KAAF;AAASC,UAAAA;AAAT,YAAkBH,OAAxB;AACA,cAAMI,SAAS,GAAG,CAAEF,KAAF,EAAS,GAAGC,IAAZ,CAAlB;AAEA,cAAME,OAAO,GAAG,kCAAuBR,KAAK,CAACH,IAA7B,EAAmCU,SAAnC,CAAhB;AACA,cAAME,IAAI,GAAG,oBAASD,OAAT,EAAkBD,SAAlB,CAAb;AACAE,QAAAA,IAAI,CAACX,KAAL,GAAa,CAAE,GAAGW,IAAI,CAACX,KAAV,EAAiBM,IAAjB,CAAb;AAEA,eAAO,EACN,GAAGJ,KADG;AAENJ,UAAAA,QAAQ,EAAEI,KAAK,CAACJ,QAAN,CAAec,MAAf,CAAyBC,CAAF,IAASA,CAAC,KAAKR,OAAtC,CAFJ;AAGNN,UAAAA,IAAI,EAAEW;AAHA,SAAP;AAKA;;AACD,SAAK,cAAL;AAAqB;AACpB,cAAM;AAAEJ,UAAAA;AAAF,YAAWH,MAAjB;AACA,cAAMM,SAAS,GAAG,CAAEH,IAAI,CAACC,KAAP,EAAc,GAAGD,IAAI,CAACE,IAAtB,CAAlB;AAEA,cAAME,OAAO,GAAG,kCAAuBR,KAAK,CAACH,IAA7B,EAAmCU,SAAnC,CAAhB;AACA,cAAME,IAAI,GAAG,oBAASD,OAAT,EAAkBD,SAAlB,CAAb;AACAE,QAAAA,IAAI,CAACX,KAAL,GAAaW,IAAI,CAACX,KAAL,CAAWY,MAAX,CAAqBE,CAAF,IAASA,CAAC,KAAKR,IAAlC,CAAb;AAEA,eAAO,EACN,GAAGJ,KADG;AAENH,UAAAA,IAAI,EAAEW;AAFA,SAAP;AAIA;AAnCF;;AAsCA,SAAOR,KAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport { getNode, deepCopyLocksTreePath } from './utils';\n\nconst DEFAULT_STATE = {\n\trequests: [],\n\ttree: {\n\t\tlocks: [],\n\t\tchildren: {},\n\t},\n};\n\n/**\n * Reducer returning locks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport default function locks( state = DEFAULT_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ENQUEUE_LOCK_REQUEST': {\n\t\t\tconst { request } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: [ request, ...state.requests ],\n\t\t\t};\n\t\t}\n\t\tcase 'GRANT_LOCK_REQUEST': {\n\t\t\tconst { lock, request } = action;\n\t\t\tconst { store, path } = request;\n\t\t\tconst storePath = [ store, ...path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = [ ...node.locks, lock ];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: state.requests.filter( ( r ) => r !== request ),\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t\tcase 'RELEASE_LOCK': {\n\t\t\tconst { lock } = action;\n\t\t\tconst storePath = [ lock.store, ...lock.path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = node.locks.filter( ( l ) => l !== lock );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n"]}
@@ -3,23 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.__unstableGetPendingLockRequests = __unstableGetPendingLockRequests;
7
- exports.__unstableIsLockAvailable = __unstableIsLockAvailable;
6
+ exports.getPendingLockRequests = getPendingLockRequests;
7
+ exports.isLockAvailable = isLockAvailable;
8
8
 
9
9
  var _utils = require("./utils");
10
10
 
11
11
  /**
12
12
  * Internal dependencies
13
13
  */
14
- function __unstableGetPendingLockRequests(state) {
15
- return state.locks.requests;
14
+ function getPendingLockRequests(state) {
15
+ return state.requests;
16
16
  }
17
17
 
18
- function __unstableIsLockAvailable(state, store, path, {
18
+ function isLockAvailable(state, store, path, {
19
19
  exclusive
20
20
  }) {
21
21
  const storePath = [store, ...path];
22
- const locks = state.locks.tree; // Validate all parents and the node itself
22
+ const locks = state.tree; // Validate all parents and the node itself
23
23
 
24
24
  for (const node of (0, _utils.iteratePath)(locks, storePath)) {
25
25
  if ((0, _utils.hasConflictingLock)({
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/locks/selectors.js"],"names":["__unstableGetPendingLockRequests","state","locks","requests","__unstableIsLockAvailable","store","path","exclusive","storePath","tree","node","descendant"],"mappings":";;;;;;;;AAGA;;AAHA;AACA;AACA;AAQO,SAASA,gCAAT,CAA2CC,KAA3C,EAAmD;AACzD,SAAOA,KAAK,CAACC,KAAN,CAAYC,QAAnB;AACA;;AAEM,SAASC,yBAAT,CAAoCH,KAApC,EAA2CI,KAA3C,EAAkDC,IAAlD,EAAwD;AAAEC,EAAAA;AAAF,CAAxD,EAAwE;AAC9E,QAAMC,SAAS,GAAG,CAAEH,KAAF,EAAS,GAAGC,IAAZ,CAAlB;AACA,QAAMJ,KAAK,GAAGD,KAAK,CAACC,KAAN,CAAYO,IAA1B,CAF8E,CAI9E;;AACA,OAAM,MAAMC,IAAZ,IAAoB,wBAAaR,KAAb,EAAoBM,SAApB,CAApB,EAAsD;AACrD,QAAK,+BAAoB;AAAED,MAAAA;AAAF,KAApB,EAAmCG,IAAI,CAACR,KAAxC,CAAL,EAAuD;AACtD,aAAO,KAAP;AACA;AACD,GAT6E,CAW9E;AACA;;;AACA,QAAMQ,IAAI,GAAG,oBAASR,KAAT,EAAgBM,SAAhB,CAAb;;AACA,MAAK,CAAEE,IAAP,EAAc;AACb,WAAO,IAAP;AACA,GAhB6E,CAkB9E;;;AACA,OAAM,MAAMC,UAAZ,IAA0B,+BAAoBD,IAApB,CAA1B,EAAuD;AACtD,QAAK,+BAAoB;AAAEH,MAAAA;AAAF,KAApB,EAAmCI,UAAU,CAACT,KAA9C,CAAL,EAA6D;AAC5D,aAAO,KAAP;AACA;AACD;;AAED,SAAO,IAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\titerateDescendants,\n\titeratePath,\n\thasConflictingLock,\n\tgetNode,\n} from './utils';\n\nexport function __unstableGetPendingLockRequests( state ) {\n\treturn state.locks.requests;\n}\n\nexport function __unstableIsLockAvailable( state, store, path, { exclusive } ) {\n\tconst storePath = [ store, ...path ];\n\tconst locks = state.locks.tree;\n\n\t// Validate all parents and the node itself\n\tfor ( const node of iteratePath( locks, storePath ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, node.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// iteratePath terminates early if path is unreachable, let's\n\t// re-fetch the node and check it exists in the tree.\n\tconst node = getNode( locks, storePath );\n\tif ( ! node ) {\n\t\treturn true;\n\t}\n\n\t// Validate all nested nodes\n\tfor ( const descendant of iterateDescendants( node ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, descendant.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/locks/selectors.js"],"names":["getPendingLockRequests","state","requests","isLockAvailable","store","path","exclusive","storePath","locks","tree","node","descendant"],"mappings":";;;;;;;;AAGA;;AAHA;AACA;AACA;AAQO,SAASA,sBAAT,CAAiCC,KAAjC,EAAyC;AAC/C,SAAOA,KAAK,CAACC,QAAb;AACA;;AAEM,SAASC,eAAT,CAA0BF,KAA1B,EAAiCG,KAAjC,EAAwCC,IAAxC,EAA8C;AAAEC,EAAAA;AAAF,CAA9C,EAA8D;AACpE,QAAMC,SAAS,GAAG,CAAEH,KAAF,EAAS,GAAGC,IAAZ,CAAlB;AACA,QAAMG,KAAK,GAAGP,KAAK,CAACQ,IAApB,CAFoE,CAIpE;;AACA,OAAM,MAAMC,IAAZ,IAAoB,wBAAaF,KAAb,EAAoBD,SAApB,CAApB,EAAsD;AACrD,QAAK,+BAAoB;AAAED,MAAAA;AAAF,KAApB,EAAmCI,IAAI,CAACF,KAAxC,CAAL,EAAuD;AACtD,aAAO,KAAP;AACA;AACD,GATmE,CAWpE;AACA;;;AACA,QAAME,IAAI,GAAG,oBAASF,KAAT,EAAgBD,SAAhB,CAAb;;AACA,MAAK,CAAEG,IAAP,EAAc;AACb,WAAO,IAAP;AACA,GAhBmE,CAkBpE;;;AACA,OAAM,MAAMC,UAAZ,IAA0B,+BAAoBD,IAApB,CAA1B,EAAuD;AACtD,QAAK,+BAAoB;AAAEJ,MAAAA;AAAF,KAApB,EAAmCK,UAAU,CAACH,KAA9C,CAAL,EAA6D;AAC5D,aAAO,KAAP;AACA;AACD;;AAED,SAAO,IAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\titerateDescendants,\n\titeratePath,\n\thasConflictingLock,\n\tgetNode,\n} from './utils';\n\nexport function getPendingLockRequests( state ) {\n\treturn state.requests;\n}\n\nexport function isLockAvailable( state, store, path, { exclusive } ) {\n\tconst storePath = [ store, ...path ];\n\tconst locks = state.tree;\n\n\t// Validate all parents and the node itself\n\tfor ( const node of iteratePath( locks, storePath ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, node.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// iteratePath terminates early if path is unreachable, let's\n\t// re-fetch the node and check it exists in the tree.\n\tconst node = getNode( locks, storePath );\n\tif ( ! node ) {\n\t\treturn true;\n\t}\n\n\t// Validate all nested nodes\n\tfor ( const descendant of iterateDescendants( node ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, descendant.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"]}
@@ -30,6 +30,8 @@ var _utils = require("../utils");
30
30
  * @property {?(string[])} fields Target subset of fields to derive from
31
31
  * item objects.
32
32
  * @property {?(number[])} include Specific item IDs to include.
33
+ * @property {string} context Scope under which the request is made;
34
+ * determines returned fields in response.
33
35
  */
34
36
 
35
37
  /**
@@ -69,10 +71,6 @@ function getQueryParts(query) {
69
71
  parts.perPage = Number(value);
70
72
  break;
71
73
 
72
- case 'include':
73
- parts.include = (0, _utils.getNormalizedCommaSeparable)(value).map(Number);
74
- break;
75
-
76
74
  case 'context':
77
75
  parts.context = value;
78
76
  break;
@@ -87,6 +85,13 @@ function getQueryParts(query) {
87
85
  parts.fields = (0, _utils.getNormalizedCommaSeparable)(value); // Make sure to normalize value for `stableKey`
88
86
 
89
87
  value = parts.fields.join();
88
+ } // Two requests with different include values cannot have same results.
89
+
90
+
91
+ if (key === 'include') {
92
+ parts.include = (0, _utils.getNormalizedCommaSeparable)(value).map(Number); // Normalize value for `stableKey`.
93
+
94
+ value = parts.include.join();
90
95
  } // While it could be any deterministic string, for simplicity's
91
96
  // sake mimic querystring encoding for stable key.
92
97
  //
@@ -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","map","join","slice"],"mappings":";;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;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,CAACK,OAAN,GAAgB,wCAA6BQ,KAA7B,EAAqCE,GAArC,CACfD,MADe,CAAhB;AAGA;;AAED,WAAK,SAAL;AACCd,QAAAA,KAAK,CAACM,OAAN,GAAgBO,KAAhB;AACA;;AAED;AACC;AACA;AACA;AACA;AACA;AACA,YAAKD,GAAG,KAAK,SAAb,EAAyB;AACxBZ,UAAAA,KAAK,CAACI,MAAN,GAAe,wCAA6BS,KAA7B,CAAf,CADwB,CAExB;;AACAA,UAAAA,KAAK,GAAGb,KAAK,CAACI,MAAN,CAAaY,IAAb,EAAR;AACA,SAVF,CAYC;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAhB,QAAAA,KAAK,CAACC,SAAN,IACC,CAAED,KAAK,CAACC,SAAN,GAAkB,GAAlB,GAAwB,EAA1B,IACA,uBAAc,EAAd,EAAkB;AAAE,WAAEW,GAAF,GAASC;AAAX,SAAlB,EAAuCI,KAAvC,CAA8C,CAA9C,CAFD;AAtCF;AA0CA;;AAED,SAAOjB,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 */\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 'include':\n\t\t\t\tparts.include = getNormalizedCommaSeparable( value ).map(\n\t\t\t\t\tNumber\n\t\t\t\t);\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 explicitely 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// 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,"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","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;AACxBZ,UAAAA,KAAK,CAACI,MAAN,GAAe,wCAA6BS,KAA7B,CAAf,CADwB,CAExB;;AACAA,UAAAA,KAAK,GAAGb,KAAK,CAACI,MAAN,CAAaW,IAAb,EAAR;AACA,SAVF,CAYC;;;AACA,YAAKH,GAAG,KAAK,SAAb,EAAyB;AACxBZ,UAAAA,KAAK,CAACK,OAAN,GAAgB,wCAA6BQ,KAA7B,EAAqCG,GAArC,CACfF,MADe,CAAhB,CADwB,CAIxB;;AACAD,UAAAA,KAAK,GAAGb,KAAK,CAACK,OAAN,CAAcU,IAAd,EAAR;AACA,SAnBF,CAqBC;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,EAAuCI,KAAvC,CAA8C,CAA9C,CAFD;AAzCF;AA6CA;;AAED,SAAOjB,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 explicitely 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\tparts.include = getNormalizedCommaSeparable( value ).map(\n\t\t\t\t\t\tNumber\n\t\t\t\t\t);\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"]}
@@ -53,14 +53,7 @@ function getQueriedItemsUncached(state, query) {
53
53
  } = (0, _getQueryParts.default)(query);
54
54
  let itemIds;
55
55
 
56
- if (Array.isArray(include) && !stableKey) {
57
- // If the parsed query yields a set of IDs, but otherwise no filtering,
58
- // it's safe to consider targeted item IDs as the include set. This
59
- // doesn't guarantee that those objects have been queried, which is
60
- // accounted for below in the loop `null` return.
61
- itemIds = include; // TODO: Avoid storing the empty stable string in reducer, since it
62
- // can be computed dynamically here always.
63
- } else if ((_state$queries = state.queries) !== null && _state$queries !== void 0 && (_state$queries$contex = _state$queries[context]) !== null && _state$queries$contex !== void 0 && _state$queries$contex[stableKey]) {
56
+ if ((_state$queries = state.queries) !== null && _state$queries !== void 0 && (_state$queries$contex = _state$queries[context]) !== null && _state$queries$contex !== void 0 && _state$queries$contex[stableKey]) {
64
57
  itemIds = state.queries[context][stableKey];
65
58
  }
66
59
 
@@ -79,7 +72,8 @@ function getQueriedItemsUncached(state, query) {
79
72
 
80
73
  if (Array.isArray(include) && !include.includes(itemId)) {
81
74
  continue;
82
- }
75
+ } // Having a target item ID doesn't guarantee that this object has been queried.
76
+
83
77
 
84
78
  if (!((_state$items$context = state.items[context]) !== null && _state$items$context !== void 0 && _state$items$context.hasOwnProperty(itemId))) {
85
79
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","Array","isArray","queries","startOffset","endOffset","length","Math","min","items","i","itemId","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport { get, set } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\n\n/**\n * Cache of state keys to EquivalentKeyMap where the inner map tracks queries\n * to their resulting items set. WeakMap allows garbage collection on expired\n * state references.\n *\n * @type {WeakMap<Object,EquivalentKeyMap>}\n */\nconst queriedItemsCacheByState = new WeakMap();\n\n/**\n * Returns items for a given query, or null if the items are not known.\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nfunction getQueriedItemsUncached( state, query ) {\n\tconst {\n\t\tstableKey,\n\t\tpage,\n\t\tperPage,\n\t\tinclude,\n\t\tfields,\n\t\tcontext,\n\t} = getQueryParts( query );\n\tlet itemIds;\n\n\tif ( Array.isArray( include ) && ! stableKey ) {\n\t\t// If the parsed query yields a set of IDs, but otherwise no filtering,\n\t\t// it's safe to consider targeted item IDs as the include set. This\n\t\t// doesn't guarantee that those objects have been queried, which is\n\t\t// accounted for below in the loop `null` return.\n\t\titemIds = include;\n\t\t// TODO: Avoid storing the empty stable string in reducer, since it\n\t\t// can be computed dynamically here always.\n\t} else if ( state.queries?.[ context ]?.[ stableKey ] ) {\n\t\titemIds = state.queries[ context ][ stableKey ];\n\t}\n\n\tif ( ! itemIds ) {\n\t\treturn null;\n\t}\n\n\tconst startOffset = perPage === -1 ? 0 : ( page - 1 ) * perPage;\n\tconst endOffset =\n\t\tperPage === -1\n\t\t\t? itemIds.length\n\t\t\t: Math.min( startOffset + perPage, itemIds.length );\n\n\tconst items = [];\n\tfor ( let i = startOffset; i < endOffset; i++ ) {\n\t\tconst itemId = itemIds[ i ];\n\t\tif ( Array.isArray( include ) && ! include.includes( itemId ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( ! state.items[ context ]?.hasOwnProperty( itemId ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = state.items[ context ][ itemId ];\n\n\t\tlet filteredItem;\n\t\tif ( Array.isArray( fields ) ) {\n\t\t\tfilteredItem = {};\n\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tconst value = get( item, field );\n\t\t\t\tset( filteredItem, field, value );\n\t\t\t}\n\t\t} else {\n\t\t\t// If expecting a complete item, validate that completeness, or\n\t\t\t// otherwise abort.\n\t\t\tif ( ! state.itemIsComplete[ context ]?.[ itemId ] ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfilteredItem = item;\n\t\t}\n\n\t\titems.push( filteredItem );\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns items for a given query, or null if the items are not known. Caches\n * result both per state (by reference) and per query (by deep equality).\n * The caching approach is intended to be durable to query objects which are\n * deeply but not referentially equal, since otherwise:\n *\n * `getQueriedItems( state, {} ) !== getQueriedItems( state, {} )`\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nexport const getQueriedItems = createSelector( ( state, query = {} ) => {\n\tlet queriedItemsCache = queriedItemsCacheByState.get( state );\n\tif ( queriedItemsCache ) {\n\t\tconst queriedItems = queriedItemsCache.get( query );\n\t\tif ( queriedItems !== undefined ) {\n\t\t\treturn queriedItems;\n\t\t}\n\t} else {\n\t\tqueriedItemsCache = new EquivalentKeyMap();\n\t\tqueriedItemsCacheByState.set( state, queriedItemsCache );\n\t}\n\n\tconst items = getQueriedItemsUncached( state, query );\n\tqueriedItemsCache.set( query, items );\n\treturn items;\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport { get, set } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\n\n/**\n * Cache of state keys to EquivalentKeyMap where the inner map tracks queries\n * to their resulting items set. WeakMap allows garbage collection on expired\n * state references.\n *\n * @type {WeakMap<Object,EquivalentKeyMap>}\n */\nconst queriedItemsCacheByState = new WeakMap();\n\n/**\n * Returns items for a given query, or null if the items are not known.\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nfunction getQueriedItemsUncached( state, query ) {\n\tconst {\n\t\tstableKey,\n\t\tpage,\n\t\tperPage,\n\t\tinclude,\n\t\tfields,\n\t\tcontext,\n\t} = getQueryParts( query );\n\tlet itemIds;\n\n\tif ( state.queries?.[ context ]?.[ stableKey ] ) {\n\t\titemIds = state.queries[ context ][ stableKey ];\n\t}\n\n\tif ( ! itemIds ) {\n\t\treturn null;\n\t}\n\n\tconst startOffset = perPage === -1 ? 0 : ( page - 1 ) * perPage;\n\tconst endOffset =\n\t\tperPage === -1\n\t\t\t? itemIds.length\n\t\t\t: Math.min( startOffset + perPage, itemIds.length );\n\n\tconst items = [];\n\tfor ( let i = startOffset; i < endOffset; i++ ) {\n\t\tconst itemId = itemIds[ i ];\n\t\tif ( Array.isArray( include ) && ! include.includes( itemId ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Having a target item ID doesn't guarantee that this object has been queried.\n\t\tif ( ! state.items[ context ]?.hasOwnProperty( itemId ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = state.items[ context ][ itemId ];\n\n\t\tlet filteredItem;\n\t\tif ( Array.isArray( fields ) ) {\n\t\t\tfilteredItem = {};\n\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tconst value = get( item, field );\n\t\t\t\tset( filteredItem, field, value );\n\t\t\t}\n\t\t} else {\n\t\t\t// If expecting a complete item, validate that completeness, or\n\t\t\t// otherwise abort.\n\t\t\tif ( ! state.itemIsComplete[ context ]?.[ itemId ] ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfilteredItem = item;\n\t\t}\n\n\t\titems.push( filteredItem );\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns items for a given query, or null if the items are not known. Caches\n * result both per state (by reference) and per query (by deep equality).\n * The caching approach is intended to be durable to query objects which are\n * deeply but not referentially equal, since otherwise:\n *\n * `getQueriedItems( state, {} ) !== getQueriedItems( state, {} )`\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nexport const getQueriedItems = createSelector( ( state, query = {} ) => {\n\tlet queriedItemsCache = queriedItemsCacheByState.get( state );\n\tif ( queriedItemsCache ) {\n\t\tconst queriedItems = queriedItemsCache.get( query );\n\t\tif ( queriedItems !== undefined ) {\n\t\t\treturn queriedItems;\n\t\t}\n\t} else {\n\t\tqueriedItemsCache = new EquivalentKeyMap();\n\t\tqueriedItemsCacheByState.set( state, queriedItemsCache );\n\t}\n\n\tconst items = getQueriedItemsUncached( state, query );\n\tqueriedItemsCache.set( query, items );\n\treturn items;\n} );\n"]}
package/build/reducer.js CHANGED
@@ -10,8 +10,8 @@ exports.users = users;
10
10
  exports.currentUser = currentUser;
11
11
  exports.taxonomies = taxonomies;
12
12
  exports.currentTheme = currentTheme;
13
- exports.themes = themes;
14
- exports.themeSupports = themeSupports;
13
+ exports.currentGlobalStylesId = currentGlobalStylesId;
14
+ exports.themeBaseGlobalStyles = themeBaseGlobalStyles;
15
15
  exports.entitiesConfig = entitiesConfig;
16
16
  exports.undo = undo;
17
17
  exports.embedPreviews = embedPreviews;
@@ -31,8 +31,6 @@ var _queriedData = require("./queried-data");
31
31
 
32
32
  var _entities = require("./entities");
33
33
 
34
- var _locks = require("./locks");
35
-
36
34
  /**
37
35
  * External dependencies
38
36
  */
@@ -149,40 +147,38 @@ function currentTheme(state = undefined, action) {
149
147
  return state;
150
148
  }
151
149
  /**
152
- * Reducer managing installed themes.
150
+ * Reducer managing the current global styles id.
153
151
  *
154
- * @param {Object} state Current state.
152
+ * @param {string} state Current state.
155
153
  * @param {Object} action Dispatched action.
156
154
  *
157
- * @return {Object} Updated state.
155
+ * @return {string} Updated state.
158
156
  */
159
157
 
160
158
 
161
- function themes(state = {}, action) {
159
+ function currentGlobalStylesId(state = undefined, action) {
162
160
  switch (action.type) {
163
- case 'RECEIVE_CURRENT_THEME':
164
- return { ...state,
165
- [action.currentTheme.stylesheet]: action.currentTheme
166
- };
161
+ case 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':
162
+ return action.id;
167
163
  }
168
164
 
169
165
  return state;
170
166
  }
171
167
  /**
172
- * Reducer managing theme supports data.
168
+ * Reducer managing the theme base global styles.
173
169
  *
174
- * @param {Object} state Current state.
170
+ * @param {string} state Current state.
175
171
  * @param {Object} action Dispatched action.
176
172
  *
177
- * @return {Object} Updated state.
173
+ * @return {string} Updated state.
178
174
  */
179
175
 
180
176
 
181
- function themeSupports(state = {}, action) {
177
+ function themeBaseGlobalStyles(state = {}, action) {
182
178
  switch (action.type) {
183
- case 'RECEIVE_THEME_SUPPORTS':
179
+ case 'RECEIVE_THEME_GLOBAL_STYLES':
184
180
  return { ...state,
185
- ...action.themeSupports
181
+ [action.stylesheet]: action.globalStyles
186
182
  };
187
183
  }
188
184
 
@@ -547,16 +543,15 @@ var _default = (0, _data.combineReducers)({
547
543
  terms,
548
544
  users,
549
545
  currentTheme,
546
+ currentGlobalStylesId,
550
547
  currentUser,
548
+ themeBaseGlobalStyles,
551
549
  taxonomies,
552
- themes,
553
- themeSupports,
554
550
  entities,
555
551
  undo,
556
552
  embedPreviews,
557
553
  userPermissions,
558
- autosaves,
559
- locks: _locks.reducer
554
+ autosaves
560
555
  });
561
556
 
562
557
  exports.default = _default;