@wordpress/core-data 6.12.3 → 6.12.4

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.
package/README.md CHANGED
@@ -506,18 +506,6 @@ _Returns_
506
506
 
507
507
  - `any`: The entity record's save error.
508
508
 
509
- ### getNavigationFallbackId
510
-
511
- Retrieve the fallback Navigation.
512
-
513
- _Parameters_
514
-
515
- - _state_ `State`: Data state.
516
-
517
- _Returns_
518
-
519
- - `EntityRecordKey | undefined`: The ID for the fallback Navigation post.
520
-
521
509
  ### getRawEntityRecord
522
510
 
523
511
  Returns the entity's record object by key, with its attributes mapped to their raw values.
package/build/index.js CHANGED
@@ -33,6 +33,10 @@ var _entities = require("./entities");
33
33
 
34
34
  var _name = require("./name");
35
35
 
36
+ var _privateApis = require("./private-apis");
37
+
38
+ var _privateSelectors = require("./private-selectors");
39
+
36
40
  var _entityProvider = _interopRequireWildcard(require("./entity-provider"));
37
41
 
38
42
  Object.keys(_entityProvider).forEach(function (key) {
@@ -169,5 +173,8 @@ const storeConfig = () => ({
169
173
 
170
174
  const store = (0, _data.createReduxStore)(_name.STORE_NAME, storeConfig());
171
175
  exports.store = store;
172
- (0, _data.register)(store);
176
+ (0, _privateApis.unlock)(store).registerPrivateSelectors({
177
+ getNavigationFallbackId: _privateSelectors.getNavigationFallbackId
178
+ });
179
+ (0, _data.register)(store); // Register store after unlocking private selectors to allow resolvers to use them.
173
180
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["entitySelectors","rootEntitiesConfig","reduce","result","entity","kind","name","state","key","query","selectors","getEntityRecord","getEntityRecords","entityResolvers","resolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","actions","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","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 { rootEntitiesConfig, 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, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.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, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.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 ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.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} );\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 */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["entitySelectors","rootEntitiesConfig","reduce","result","entity","kind","name","state","key","query","selectors","getEntityRecord","getEntityRecords","entityResolvers","resolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","actions","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","store","STORE_NAME","registerPrivateSelectors","getNavigationFallbackId"],"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 { rootEntitiesConfig, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './private-apis';\nimport { getNavigationFallbackId } from './private-selectors';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.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, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.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 ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.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} );\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 */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nunlock( store ).registerPrivateSelectors( {\n\tgetNavigationFallbackId,\n} );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"]}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getNavigationFallbackId = getNavigationFallbackId;
6
7
  exports.getRedoEdits = getRedoEdits;
7
8
  exports.getUndoEdits = getUndoEdits;
8
9
 
@@ -34,4 +35,15 @@ function getUndoEdits(state) {
34
35
  function getRedoEdits(state) {
35
36
  return state.undo.list[state.undo.list.length + state.undo.offset];
36
37
  }
38
+ /**
39
+ * Retrieve the fallback Navigation.
40
+ *
41
+ * @param state Data state.
42
+ * @return The ID for the fallback Navigation post.
43
+ */
44
+
45
+
46
+ function getNavigationFallbackId(state) {
47
+ return state.navigationFallbackId;
48
+ }
37
49
  //# sourceMappingURL=private-selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/private-selectors.ts"],"names":["getUndoEdits","state","undo","list","length","offset","getRedoEdits"],"mappings":";;;;;;;;AAAA;AACA;AACA;;AAKA;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","sourcesContent":["/**\n * Internal dependencies\n */\nimport type { State, UndoEdit } from './selectors';\n\ntype Optional< T > = T | undefined;\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"]}
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"]}
@@ -569,7 +569,8 @@ const getBlockPatternCategories = () => async ({
569
569
  exports.getBlockPatternCategories = getBlockPatternCategories;
570
570
 
571
571
  const getNavigationFallbackId = () => async ({
572
- dispatch
572
+ dispatch,
573
+ select
573
574
  }) => {
574
575
  const fallback = await (0, _apiFetch.default)({
575
576
  path: (0, _url.addQueryArgs)('/wp-block-editor/v1/navigation-fallback', {
@@ -580,7 +581,11 @@ const getNavigationFallbackId = () => async ({
580
581
  dispatch.receiveNavigationFallbackId(fallback?.id);
581
582
 
582
583
  if (record) {
583
- const invalidateNavigationQueries = true;
584
+ // If the fallback is already in the store, don't invalidate navigation queries.
585
+ // Otherwise, invalidate the cache for the scenario where there were no Navigation
586
+ // posts in the state and the fallback created one.
587
+ const existingFallbackEntityRecord = select.getEntityRecord('postType', 'wp_navigation', fallback?.id);
588
+ const invalidateNavigationQueries = !existingFallbackEntityRecord;
584
589
  dispatch.receiveEntityRecords('postType', 'wp_navigation', record, undefined, invalidateNavigationQueries); // Resolve to avoid further network requests.
585
590
 
586
591
  dispatch.finishResolution('getEntityRecord', ['postType', 'wp_navigation', fallback?.id]);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","invalidateNavigationQueries","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\tconst invalidateNavigationQueries = true;\n\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\t// If the fallback is already in the store, don't invalidate navigation queries.\n\t\t\t// Otherwise, invalidate the cache for the scenario where there were no Navigation\n\t\t\t// posts in the state and the fallback created one.\n\t\t\tconst existingFallbackEntityRecord = select.getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id\n\t\t\t);\n\t\t\tconst invalidateNavigationQueries = ! existingFallbackEntityRecord;\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"]}
@@ -32,7 +32,6 @@ exports.getEntityRecordEdits = getEntityRecordEdits;
32
32
  exports.getEntityRecords = exports.getEntityRecordNonTransientEdits = void 0;
33
33
  exports.getLastEntityDeleteError = getLastEntityDeleteError;
34
34
  exports.getLastEntitySaveError = getLastEntitySaveError;
35
- exports.getNavigationFallbackId = getNavigationFallbackId;
36
35
  exports.getRawEntityRecord = void 0;
37
36
  exports.getRedoEdit = getRedoEdit;
38
37
  exports.getReferenceByDistinctEdits = void 0;
@@ -1015,17 +1014,6 @@ function getBlockPatterns(state) {
1015
1014
  function getBlockPatternCategories(state) {
1016
1015
  return state.blockPatternCategories;
1017
1016
  }
1018
- /**
1019
- * Retrieve the fallback Navigation.
1020
- *
1021
- * @param state Data state.
1022
- * @return The ID for the fallback Navigation post.
1023
- */
1024
-
1025
-
1026
- function getNavigationFallbackId(state) {
1027
- return state.navigationFallbackId;
1028
- }
1029
1017
  /**
1030
1018
  * Returns the revisions of the current global styles theme.
1031
1019
  *