@wordpress/core-data 4.4.0 → 4.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -526,9 +526,21 @@ const getBlockPatterns = () => async _ref16 => {
526
526
  let {
527
527
  dispatch
528
528
  } = _ref16;
529
- const patterns = await (0, _apiFetch.default)({
530
- path: '/__experimental/block-patterns/patterns'
529
+ const restPatterns = await (0, _apiFetch.default)({
530
+ path: '/wp/v2/block-patterns/patterns'
531
531
  });
532
+ const patterns = (0, _lodash.map)(restPatterns, pattern => (0, _lodash.mapKeys)(pattern, (value, key) => {
533
+ switch (key) {
534
+ case 'block_types':
535
+ return 'blockTypes';
536
+
537
+ case 'viewport_width':
538
+ return 'viewportWidth';
539
+
540
+ default:
541
+ return key;
542
+ }
543
+ }));
532
544
  dispatch({
533
545
  type: 'RECEIVE_BLOCK_PATTERNS',
534
546
  patterns
@@ -542,7 +554,7 @@ const getBlockPatternCategories = () => async _ref17 => {
542
554
  dispatch
543
555
  } = _ref17;
544
556
  const categories = await (0, _apiFetch.default)({
545
- path: '/__experimental/block-patterns/categories'
557
+ path: '/wp/v2/block-patterns/categories'
546
558
  });
547
559
  dispatch({
548
560
  type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES',
@@ -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","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","get","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getBlockPatterns","patterns","getBlockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n\nexport const getBlockPatterns = () => async ( { dispatch } ) => {\n\tconst patterns = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/patterns',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n};\n\nexport const getBlockPatternCategories = () => async ( { dispatch } ) => {\n\tconst categories = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/categories',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n};\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","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","get","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getBlockPatterns","restPatterns","patterns","pattern","value","getBlockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq, map, mapKeys } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n\nexport const getBlockPatterns = () => async ( { dispatch } ) => {\n\tconst restPatterns = await apiFetch( {\n\t\tpath: '/wp/v2/block-patterns/patterns',\n\t} );\n\tconst patterns = map( restPatterns, ( pattern ) =>\n\t\tmapKeys( pattern, ( value, key ) => {\n\t\t\tswitch ( key ) {\n\t\t\t\tcase 'block_types':\n\t\t\t\t\treturn 'blockTypes';\n\t\t\t\tcase 'viewport_width':\n\t\t\t\t\treturn 'viewportWidth';\n\t\t\t\tdefault:\n\t\t\t\t\treturn key;\n\t\t\t}\n\t\t} )\n\t);\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n};\n\nexport const getBlockPatternCategories = () => async ( { dispatch } ) => {\n\tconst categories = await apiFetch( {\n\t\tpath: '/wp/v2/block-patterns/categories',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find, includes, get, compact, uniq } from 'lodash';
4
+ import { find, includes, get, compact, uniq, map, mapKeys } from 'lodash';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
@@ -468,9 +468,21 @@ export const getBlockPatterns = () => async _ref16 => {
468
468
  let {
469
469
  dispatch
470
470
  } = _ref16;
471
- const patterns = await apiFetch({
472
- path: '/__experimental/block-patterns/patterns'
471
+ const restPatterns = await apiFetch({
472
+ path: '/wp/v2/block-patterns/patterns'
473
473
  });
474
+ const patterns = map(restPatterns, pattern => mapKeys(pattern, (value, key) => {
475
+ switch (key) {
476
+ case 'block_types':
477
+ return 'blockTypes';
478
+
479
+ case 'viewport_width':
480
+ return 'viewportWidth';
481
+
482
+ default:
483
+ return key;
484
+ }
485
+ }));
474
486
  dispatch({
475
487
  type: 'RECEIVE_BLOCK_PATTERNS',
476
488
  patterns
@@ -481,7 +493,7 @@ export const getBlockPatternCategories = () => async _ref17 => {
481
493
  dispatch
482
494
  } = _ref17;
483
495
  const categories = await apiFetch({
484
- path: '/__experimental/block-patterns/categories'
496
+ path: '/wp/v2/block-patterns/categories'
485
497
  });
486
498
  dispatch({
487
499
  type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES',
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["find","includes","get","compact","uniq","addQueryArgs","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getBlockPatterns","patterns","getBlockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n\nexport const getBlockPatterns = () => async ( { dispatch } ) => {\n\tconst patterns = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/patterns',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n};\n\nexport const getBlockPatternCategories = () => async ( { dispatch } ) => {\n\tconst categories = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/categories',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["find","includes","get","compact","uniq","map","mapKeys","addQueryArgs","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getBlockPatterns","restPatterns","patterns","pattern","value","getBlockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq, map, mapKeys } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n\nexport const getBlockPatterns = () => async ( { dispatch } ) => {\n\tconst restPatterns = await apiFetch( {\n\t\tpath: '/wp/v2/block-patterns/patterns',\n\t} );\n\tconst patterns = map( restPatterns, ( pattern ) =>\n\t\tmapKeys( pattern, ( value, key ) => {\n\t\t\tswitch ( key ) {\n\t\t\t\tcase 'block_types':\n\t\t\t\t\treturn 'blockTypes';\n\t\t\t\tcase 'viewport_width':\n\t\t\t\t\treturn 'viewportWidth';\n\t\t\t\tdefault:\n\t\t\t\t\treturn key;\n\t\t\t}\n\t\t} )\n\t);\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n};\n\nexport const getBlockPatternCategories = () => async ( { dispatch } ) => {\n\tconst categories = await apiFetch( {\n\t\tpath: '/wp/v2/block-patterns/categories',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/core-data",
3
- "version": "4.4.0",
3
+ "version": "4.4.3",
4
4
  "description": "Access to and manipulation of core WordPress entities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -30,15 +30,15 @@
30
30
  ],
31
31
  "dependencies": {
32
32
  "@babel/runtime": "^7.16.0",
33
- "@wordpress/api-fetch": "^6.3.0",
34
- "@wordpress/blocks": "^11.5.0",
35
- "@wordpress/data": "^6.6.0",
36
- "@wordpress/deprecated": "^3.6.0",
37
- "@wordpress/element": "^4.4.0",
38
- "@wordpress/html-entities": "^3.6.0",
39
- "@wordpress/i18n": "^4.6.0",
40
- "@wordpress/is-shallow-equal": "^4.6.0",
41
- "@wordpress/url": "^3.7.0",
33
+ "@wordpress/api-fetch": "^6.3.1",
34
+ "@wordpress/blocks": "^11.5.3",
35
+ "@wordpress/data": "^6.6.1",
36
+ "@wordpress/deprecated": "^3.6.1",
37
+ "@wordpress/element": "^4.4.1",
38
+ "@wordpress/html-entities": "^3.6.1",
39
+ "@wordpress/i18n": "^4.6.1",
40
+ "@wordpress/is-shallow-equal": "^4.6.1",
41
+ "@wordpress/url": "^3.7.1",
42
42
  "equivalent-key-map": "^0.2.2",
43
43
  "lodash": "^4.17.21",
44
44
  "memize": "^1.1.0",
@@ -51,5 +51,5 @@
51
51
  "publishConfig": {
52
52
  "access": "public"
53
53
  },
54
- "gitHead": "11eb1241e63c9240018323551c6753f8a5fa96f9"
54
+ "gitHead": "37e930b93fbba88fa024a91eb527a90f855c97f3"
55
55
  }
package/src/resolvers.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find, includes, get, compact, uniq } from 'lodash';
4
+ import { find, includes, get, compact, uniq, map, mapKeys } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -455,15 +455,27 @@ export const __experimentalGetCurrentThemeGlobalStylesVariations = () => async (
455
455
  };
456
456
 
457
457
  export const getBlockPatterns = () => async ( { dispatch } ) => {
458
- const patterns = await apiFetch( {
459
- path: '/__experimental/block-patterns/patterns',
458
+ const restPatterns = await apiFetch( {
459
+ path: '/wp/v2/block-patterns/patterns',
460
460
  } );
461
+ const patterns = map( restPatterns, ( pattern ) =>
462
+ mapKeys( pattern, ( value, key ) => {
463
+ switch ( key ) {
464
+ case 'block_types':
465
+ return 'blockTypes';
466
+ case 'viewport_width':
467
+ return 'viewportWidth';
468
+ default:
469
+ return key;
470
+ }
471
+ } )
472
+ );
461
473
  dispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );
462
474
  };
463
475
 
464
476
  export const getBlockPatternCategories = () => async ( { dispatch } ) => {
465
477
  const categories = await apiFetch( {
466
- path: '/__experimental/block-patterns/categories',
478
+ path: '/wp/v2/block-patterns/categories',
467
479
  } );
468
480
  dispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );
469
481
  };