@wordpress/core-data 7.5.0 → 7.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -2
  3. package/build/actions.js +39 -16
  4. package/build/actions.js.map +1 -1
  5. package/build/entity-types/wp-template.js.map +1 -1
  6. package/build/footnotes/index.js +5 -1
  7. package/build/footnotes/index.js.map +1 -1
  8. package/build/hooks/use-entity-prop.js +4 -4
  9. package/build/hooks/use-entity-prop.js.map +1 -1
  10. package/build/reducer.js +5 -0
  11. package/build/reducer.js.map +1 -1
  12. package/build/resolvers.js +54 -20
  13. package/build/resolvers.js.map +1 -1
  14. package/build/utils/index.js +2 -2
  15. package/build/utils/index.js.map +1 -1
  16. package/build/utils/user-permissions.js +5 -7
  17. package/build/utils/user-permissions.js.map +1 -1
  18. package/build-module/actions.js +38 -16
  19. package/build-module/actions.js.map +1 -1
  20. package/build-module/entity-types/wp-template.js.map +1 -1
  21. package/build-module/footnotes/index.js +5 -1
  22. package/build-module/footnotes/index.js.map +1 -1
  23. package/build-module/hooks/use-entity-prop.js +4 -4
  24. package/build-module/hooks/use-entity-prop.js.map +1 -1
  25. package/build-module/reducer.js +5 -0
  26. package/build-module/reducer.js.map +1 -1
  27. package/build-module/resolvers.js +55 -21
  28. package/build-module/resolvers.js.map +1 -1
  29. package/build-module/utils/index.js +1 -1
  30. package/build-module/utils/index.js.map +1 -1
  31. package/build-module/utils/user-permissions.js +4 -6
  32. package/build-module/utils/user-permissions.js.map +1 -1
  33. package/build-types/actions.d.ts +20 -2
  34. package/build-types/actions.d.ts.map +1 -1
  35. package/build-types/entity-types/wp-template.d.ts +4 -0
  36. package/build-types/entity-types/wp-template.d.ts.map +1 -1
  37. package/build-types/footnotes/index.d.ts.map +1 -1
  38. package/build-types/hooks/use-entity-prop.d.ts +5 -5
  39. package/build-types/hooks/use-entity-prop.d.ts.map +1 -1
  40. package/build-types/index.d.ts +5 -2
  41. package/build-types/index.d.ts.map +1 -1
  42. package/build-types/reducer.d.ts.map +1 -1
  43. package/build-types/resolvers.d.ts +1 -1
  44. package/build-types/resolvers.d.ts.map +1 -1
  45. package/build-types/utils/index.d.ts +1 -1
  46. package/build-types/utils/user-permissions.d.ts +1 -1
  47. package/build-types/utils/user-permissions.d.ts.map +1 -1
  48. package/package.json +18 -18
  49. package/src/actions.js +38 -16
  50. package/src/entity-types/wp-template.ts +4 -0
  51. package/src/footnotes/index.js +9 -4
  52. package/src/hooks/test/use-entity-records.js +2 -2
  53. package/src/hooks/use-entity-prop.js +4 -4
  54. package/src/reducer.js +5 -0
  55. package/src/resolvers.js +79 -24
  56. package/src/test/resolvers.js +4 -3
  57. package/src/utils/index.js +1 -1
  58. package/src/utils/user-permissions.js +4 -6
  59. package/tsconfig.tsbuildinfo +1 -1
@@ -15,7 +15,7 @@ import apiFetch from '@wordpress/api-fetch';
15
15
  */
16
16
  import { STORE_NAME } from './name';
17
17
  import { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';
18
- import { forwardResolver, getNormalizedCommaSeparable, getUserPermissionCacheKey, getUserPermissionsFromResponse, ALLOWED_RESOURCE_ACTIONS } from './utils';
18
+ import { forwardResolver, getNormalizedCommaSeparable, getUserPermissionCacheKey, getUserPermissionsFromAllowHeader, ALLOWED_RESOURCE_ACTIONS } from './utils';
19
19
  import { getSyncProvider } from './sync';
20
20
  import { fetchBlockPatterns } from './fetch';
21
21
 
@@ -137,22 +137,25 @@ export const getEntityRecord = (kind, name, key = '', query) => async ({
137
137
  parse: false
138
138
  });
139
139
  const record = await response.json();
140
- const permissions = getUserPermissionsFromResponse(response);
140
+ const permissions = getUserPermissionsFromAllowHeader(response.headers?.get('allow'));
141
+ const canUserResolutionsArgs = [];
142
+ const receiveUserPermissionArgs = {};
143
+ for (const action of ALLOWED_RESOURCE_ACTIONS) {
144
+ receiveUserPermissionArgs[getUserPermissionCacheKey(action, {
145
+ kind,
146
+ name,
147
+ id: key
148
+ })] = permissions[action];
149
+ canUserResolutionsArgs.push([action, {
150
+ kind,
151
+ name,
152
+ id: key
153
+ }]);
154
+ }
141
155
  registry.batch(() => {
142
156
  dispatch.receiveEntityRecords(kind, name, record, query);
143
- for (const action of ALLOWED_RESOURCE_ACTIONS) {
144
- const permissionKey = getUserPermissionCacheKey(action, {
145
- kind,
146
- name,
147
- id: key
148
- });
149
- dispatch.receiveUserPermission(permissionKey, permissions[action]);
150
- dispatch.finishResolution('canUser', [action, {
151
- kind,
152
- name,
153
- id: key
154
- }]);
155
- }
157
+ dispatch.receiveUserPermissions(receiveUserPermissionArgs);
158
+ dispatch.finishResolutions('canUser', canUserResolutionsArgs);
156
159
  });
157
160
  }
158
161
  } finally {
@@ -219,6 +222,10 @@ export const getEntityRecords = (kind, name, query = {}) => async ({
219
222
  records = Object.values(await apiFetch({
220
223
  path
221
224
  }));
225
+ meta = {
226
+ totalItems: records.length,
227
+ totalPages: 1
228
+ };
222
229
  }
223
230
 
224
231
  // If we request fields but the result doesn't contain the fields,
@@ -237,13 +244,36 @@ export const getEntityRecords = (kind, name, query = {}) => async ({
237
244
  registry.batch(() => {
238
245
  dispatch.receiveEntityRecords(kind, name, records, query, false, undefined, meta);
239
246
 
240
- // When requesting all fields, the list of results can be used to
241
- // resolve the `getEntityRecord` selector in addition to `getEntityRecords`.
247
+ // When requesting all fields, the list of results can be used to resolve
248
+ // the `getEntityRecord` and `canUser` selectors in addition to `getEntityRecords`.
242
249
  // See https://github.com/WordPress/gutenberg/pull/26575
250
+ // See https://github.com/WordPress/gutenberg/pull/64504
243
251
  if (!query?._fields && !query.context) {
244
252
  const key = entityConfig.key || DEFAULT_ENTITY_KEY;
245
253
  const resolutionsArgs = records.filter(record => record?.[key]).map(record => [kind, name, record[key]]);
254
+ const targetHints = records.filter(record => record?.[key]).map(record => ({
255
+ id: record[key],
256
+ permissions: getUserPermissionsFromAllowHeader(record?._links?.self?.[0].targetHints.allow)
257
+ }));
258
+ const canUserResolutionsArgs = [];
259
+ const receiveUserPermissionArgs = {};
260
+ for (const targetHint of targetHints) {
261
+ for (const action of ALLOWED_RESOURCE_ACTIONS) {
262
+ canUserResolutionsArgs.push([action, {
263
+ kind,
264
+ name,
265
+ id: targetHint.id
266
+ }]);
267
+ receiveUserPermissionArgs[getUserPermissionCacheKey(action, {
268
+ kind,
269
+ name,
270
+ id: targetHint.id
271
+ })] = targetHint.permissions[action];
272
+ }
273
+ }
274
+ dispatch.receiveUserPermissions(receiveUserPermissionArgs);
246
275
  dispatch.finishResolutions('getEntityRecord', resolutionsArgs);
276
+ dispatch.finishResolutions('canUser', canUserResolutionsArgs);
247
277
  }
248
278
  dispatch.__unstableReleaseStoreLock(lock);
249
279
  });
@@ -351,7 +381,11 @@ export const canUser = (requestedAction, resource, id) => async ({
351
381
  // 5xx). The previously determined isAllowed value will remain in the store.
352
382
  return;
353
383
  }
354
- const permissions = getUserPermissionsFromResponse(response);
384
+
385
+ // Optional chaining operator is used here because the API requests don't
386
+ // return the expected result in the React native version. Instead, API requests
387
+ // only return the result, without including response properties like the headers.
388
+ const permissions = getUserPermissionsFromAllowHeader(response.headers?.get('allow'));
355
389
  registry.batch(() => {
356
390
  for (const action of ALLOWED_RESOURCE_ACTIONS) {
357
391
  const key = getUserPermissionCacheKey(action, resource, id);
@@ -369,9 +403,9 @@ export const canUser = (requestedAction, resource, id) => async ({
369
403
  * Checks whether the current user can perform the given action on the given
370
404
  * REST resource.
371
405
  *
372
- * @param {string} kind Entity kind.
373
- * @param {string} name Entity name.
374
- * @param {string} recordId Record's id.
406
+ * @param {string} kind Entity kind.
407
+ * @param {string} name Entity name.
408
+ * @param {number|string} recordId Record's id.
375
409
  */
376
410
  export const canUserEditEntityRecord = (kind, name, recordId) => async ({
377
411
  dispatch
@@ -1 +1 @@
1
- {"version":3,"names":["camelCase","addQueryArgs","decodeEntities","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getUserPermissionCacheKey","getUserPermissionsFromResponse","ALLOWED_RESOURCE_ACTIONS","getSyncProvider","fetchBlockPatterns","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","registry","configs","entityConfig","find","config","lock","__unstableAcquireStoreLock","exclusive","window","__experimentalEnableSync","syncConfig","globalThis","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","response","parse","json","permissions","batch","action","permissionKey","id","receiveUserPermission","finishResolution","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","Object","values","totalItems","parseInt","headers","get","totalPages","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","finishResolutions","e","shouldInvalidate","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","includes","Error","resourcePath","hasStartedResolution","relatedAction","isAlreadyResolving","method","canUserEditEntityRecord","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","matches","match","Number","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","entries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","patterns","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","slug","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","revisionKey","getRevisionsUrl","isPaginated","receiveRevisions","startResolutions","getRevision"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\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 {\n\tforwardResolver,\n\tgetNormalizedCommaSeparable,\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromResponse,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './utils';\nimport { getSyncProvider } from './sync';\nimport { fetchBlockPatterns } from './fetch';\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, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\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 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\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\tconst record = await response.json();\n\t\t\t\tconst permissions = getUserPermissionsFromResponse( response );\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\n\t\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\t\tconst permissionKey = getUserPermissionCacheKey(\n\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t{ kind, name, id: key }\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t\t\t\tpermissionKey,\n\t\t\t\t\t\t\tpermissions[ action ]\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch.finishResolution( 'canUser', [\n\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t{ kind, name, id: key },\n\t\t\t\t\t\t] );\n\t\t\t\t\t}\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\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, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\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 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, meta;\n\t\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t\t),\n\t\t\t\t\ttotalPages: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-TotalPages' )\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t\t}\n\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 \"fulfilled\".\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\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tundefined,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t\t} );\n\t\t} catch ( e ) {\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 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|Object} resource Entity resource to check. Accepts entity object `{ kind: 'root', name: 'media', id: 1 }`\n * or REST base as a string - `media`.\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\tif ( ! ALLOWED_RESOURCE_ACTIONS.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\tlet resourcePath = null;\n\t\tif ( typeof resource === 'object' ) {\n\t\t\tif ( ! resource.kind || ! resource.name ) {\n\t\t\t\tthrow new Error( 'The entity resource object is not valid.' );\n\t\t\t}\n\n\t\t\tconst configs = await dispatch(\n\t\t\t\tgetOrLoadEntitiesConfig( resource.kind, resource.name )\n\t\t\t);\n\t\t\tconst entityConfig = configs.find(\n\t\t\t\t( config ) =>\n\t\t\t\t\tconfig.name === resource.name &&\n\t\t\t\t\tconfig.kind === resource.kind\n\t\t\t);\n\t\t\tif ( ! entityConfig ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresourcePath =\n\t\t\t\tentityConfig.baseURL + ( resource.id ? '/' + resource.id : '' );\n\t\t} else {\n\t\t\tresourcePath = `/wp/v2/${ resource }` + ( id ? '/' + id : '' );\n\t\t}\n\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of ALLOWED_RESOURCE_ACTIONS ) {\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: 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\tconst permissions = getUserPermissionsFromResponse( response );\n\t\tregistry.batch( () => {\n\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\tconst key = getUserPermissionCacheKey( action, resource, id );\n\n\t\t\t\tdispatch.receiveUserPermission( key, permissions[ action ] );\n\n\t\t\t\t// Mark related action resolutions as finished.\n\t\t\t\tif ( action !== requestedAction ) {\n\t\t\t\t\tdispatch.finishResolution( 'canUser', [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tresource,\n\t\t\t\t\t\tid,\n\t\t\t\t\t] );\n\t\t\t\t}\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\tawait dispatch( canUser( 'update', { kind, name, id: 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\treturn;\n\t\t}\n\n\t\t// Regex matches the ID at the end of a URL or immediately before\n\t\t// the query string.\n\t\tconst matches = globalStylesURL.match( /\\/(\\d+)(?:\\?|$)/ );\n\t\tconst id = matches ? Number( matches[ 1 ] ) : null;\n\n\t\tif ( id ) {\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId( id );\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 patterns = await fetchBlockPatterns();\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 getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t\tcontext: 'view',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: decodeEntities( userCategory.name ),\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\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\nexport const getDefaultTemplateId =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst template = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', query ),\n\t\t} );\n\t\t// Endpoint may return an empty object if no template is found.\n\t\tif ( template?.id ) {\n\t\t\tdispatch.receiveDefaultTemplateId( query, template.id );\n\t\t}\n\t};\n\n/**\n * Requests an entity's revisions from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\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 getRevisions =\n\t( kind, name, recordKey, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\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: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet records, response;\n\t\tconst meta = {};\n\t\tconst isPaginated =\n\t\t\tentityConfig.supportsPagination && query.per_page !== -1;\n\t\ttry {\n\t\t\tresponse = await apiFetch( { path, parse: ! isPaginated } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( response ) {\n\t\t\tif ( isPaginated ) {\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta.totalItems = parseInt(\n\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\trecords = Object.values( response );\n\t\t\t}\n\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 \"fulfilled\".\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.receiveRevisions(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordKey,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\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 ) => [\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\trecordKey,\n\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t] );\n\n\t\t\t\tdispatch.startResolutions( 'getRevision', resolutionsArgs );\n\t\t\t\tdispatch.finishResolutions( 'getRevision', resolutionsArgs );\n\t\t\t}\n\t\t}\n\t};\n\n// Invalidate cache when a new revision is created.\ngetRevisions.shouldInvalidate = ( action, kind, name, recordKey ) =>\n\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\tname === action.name &&\n\tkind === action.kind &&\n\t! action.error &&\n\trecordKey === action.recordId;\n\n/**\n * Requests a specific Entity revision from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {number|string} revisionKey The revision'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 getRevision =\n\t( kind, name, recordKey, revisionKey, query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\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: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey, revisionKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet record;\n\t\ttry {\n\t\t\trecord = await apiFetch( { path } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveRevisions( kind, name, recordKey, record, query );\n\t\t}\n\t};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["camelCase","addQueryArgs","decodeEntities","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getUserPermissionCacheKey","getUserPermissionsFromAllowHeader","ALLOWED_RESOURCE_ACTIONS","getSyncProvider","fetchBlockPatterns","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","registry","configs","entityConfig","find","config","lock","__unstableAcquireStoreLock","exclusive","window","__experimentalEnableSync","syncConfig","globalThis","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","response","parse","json","permissions","headers","get","canUserResolutionsArgs","receiveUserPermissionArgs","action","id","push","batch","receiveUserPermissions","finishResolutions","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","Object","values","totalItems","parseInt","totalPages","length","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","targetHints","_links","self","allow","targetHint","e","shouldInvalidate","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","includes","Error","resourcePath","hasStartedResolution","relatedAction","isAlreadyResolving","method","receiveUserPermission","finishResolution","canUserEditEntityRecord","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","__experimentalGetCurrentGlobalStylesId","globalStylesURL","href","matches","match","Number","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","entries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","patterns","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","slug","getNavigationFallbackId","fallback","_embed","_embedded","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","revisionKey","getRevisionsUrl","isPaginated","receiveRevisions","startResolutions","getRevision"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\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 {\n\tforwardResolver,\n\tgetNormalizedCommaSeparable,\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromAllowHeader,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './utils';\nimport { getSyncProvider } from './sync';\nimport { fetchBlockPatterns } from './fetch';\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, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\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 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\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\tconst record = await response.json();\n\t\t\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\t\t\tresponse.headers?.get( 'allow' )\n\t\t\t\t);\n\n\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tid: key,\n\t\t\t\t\t\t} )\n\t\t\t\t\t] = permissions[ action ];\n\n\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\t{ kind, name, id: key },\n\t\t\t\t\t] );\n\t\t\t\t}\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\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\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, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\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 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, meta;\n\t\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t\t),\n\t\t\t\t\ttotalPages: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-TotalPages' )\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: records.length,\n\t\t\t\t\ttotalPages: 1,\n\t\t\t\t};\n\t\t\t}\n\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 \"fulfilled\".\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\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tundefined,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to resolve\n\t\t\t\t// the `getEntityRecord` and `canUser` selectors in addition to `getEntityRecords`.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/64504\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\t\tconst targetHints = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => ( {\n\t\t\t\t\t\t\tid: record[ key ],\n\t\t\t\t\t\t\tpermissions: getUserPermissionsFromAllowHeader(\n\t\t\t\t\t\t\t\trecord?._links?.self?.[ 0 ].targetHints.allow\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} ) );\n\n\t\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\t\tfor ( const targetHint of targetHints ) {\n\t\t\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t{ kind, name, id: targetHint.id },\n\t\t\t\t\t\t\t] );\n\n\t\t\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\tid: targetHint.id,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t] = targetHint.permissions[ action ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t\t} );\n\t\t} catch ( e ) {\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 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|Object} resource Entity resource to check. Accepts entity object `{ kind: 'root', name: 'media', id: 1 }`\n * or REST base as a string - `media`.\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\tif ( ! ALLOWED_RESOURCE_ACTIONS.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\tlet resourcePath = null;\n\t\tif ( typeof resource === 'object' ) {\n\t\t\tif ( ! resource.kind || ! resource.name ) {\n\t\t\t\tthrow new Error( 'The entity resource object is not valid.' );\n\t\t\t}\n\n\t\t\tconst configs = await dispatch(\n\t\t\t\tgetOrLoadEntitiesConfig( resource.kind, resource.name )\n\t\t\t);\n\t\t\tconst entityConfig = configs.find(\n\t\t\t\t( config ) =>\n\t\t\t\t\tconfig.name === resource.name &&\n\t\t\t\t\tconfig.kind === resource.kind\n\t\t\t);\n\t\t\tif ( ! entityConfig ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresourcePath =\n\t\t\t\tentityConfig.baseURL + ( resource.id ? '/' + resource.id : '' );\n\t\t} else {\n\t\t\tresourcePath = `/wp/v2/${ resource }` + ( id ? '/' + id : '' );\n\t\t}\n\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of ALLOWED_RESOURCE_ACTIONS ) {\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: 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 React native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\tresponse.headers?.get( 'allow' )\n\t\t);\n\t\tregistry.batch( () => {\n\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\tconst key = getUserPermissionCacheKey( action, resource, id );\n\n\t\t\t\tdispatch.receiveUserPermission( key, permissions[ action ] );\n\n\t\t\t\t// Mark related action resolutions as finished.\n\t\t\t\tif ( action !== requestedAction ) {\n\t\t\t\t\tdispatch.finishResolution( 'canUser', [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tresource,\n\t\t\t\t\t\tid,\n\t\t\t\t\t] );\n\t\t\t\t}\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 {number|string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tawait dispatch( canUser( 'update', { kind, name, id: 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\treturn;\n\t\t}\n\n\t\t// Regex matches the ID at the end of a URL or immediately before\n\t\t// the query string.\n\t\tconst matches = globalStylesURL.match( /\\/(\\d+)(?:\\?|$)/ );\n\t\tconst id = matches ? Number( matches[ 1 ] ) : null;\n\n\t\tif ( id ) {\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId( id );\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 patterns = await fetchBlockPatterns();\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 getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t\tcontext: 'view',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: decodeEntities( userCategory.name ),\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\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\nexport const getDefaultTemplateId =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst template = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', query ),\n\t\t} );\n\t\t// Endpoint may return an empty object if no template is found.\n\t\tif ( template?.id ) {\n\t\t\tdispatch.receiveDefaultTemplateId( query, template.id );\n\t\t}\n\t};\n\n/**\n * Requests an entity's revisions from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\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 getRevisions =\n\t( kind, name, recordKey, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\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: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet records, response;\n\t\tconst meta = {};\n\t\tconst isPaginated =\n\t\t\tentityConfig.supportsPagination && query.per_page !== -1;\n\t\ttry {\n\t\t\tresponse = await apiFetch( { path, parse: ! isPaginated } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( response ) {\n\t\t\tif ( isPaginated ) {\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta.totalItems = parseInt(\n\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\trecords = Object.values( response );\n\t\t\t}\n\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 \"fulfilled\".\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.receiveRevisions(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordKey,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\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 ) => [\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\trecordKey,\n\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t] );\n\n\t\t\t\tdispatch.startResolutions( 'getRevision', resolutionsArgs );\n\t\t\t\tdispatch.finishResolutions( 'getRevision', resolutionsArgs );\n\t\t\t}\n\t\t}\n\t};\n\n// Invalidate cache when a new revision is created.\ngetRevisions.shouldInvalidate = ( action, kind, name, recordKey ) =>\n\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\tname === action.name &&\n\tkind === action.kind &&\n\t! action.error &&\n\trecordKey === action.recordId;\n\n/**\n * Requests a specific Entity revision from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {number|string} revisionKey The revision'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 getRevision =\n\t( kind, name, recordKey, revisionKey, query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\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: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey, revisionKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet record;\n\t\ttry {\n\t\t\trecord = await apiFetch( { path } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveRevisions( kind, name, recordKey, record, query );\n\t\t}\n\t};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,aAAa;;AAEvC;AACA;AACA;AACA,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,OAAOC,QAAQ,MAAM,sBAAsB;;AAE3C;AACA;AACA;AACA,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAASC,uBAAuB,EAAEC,kBAAkB,QAAQ,YAAY;AACxE,SACCC,eAAe,EACfC,2BAA2B,EAC3BC,yBAAyB,EACzBC,iCAAiC,EACjCC,wBAAwB,QAClB,SAAS;AAChB,SAASC,eAAe,QAAQ,QAAQ;AACxC,SAASC,kBAAkB,QAAQ,SAAS;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GACpBC,KAAK,IACP,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMC,IAAI,GAAGhB,YAAY,CACxB,wCAAwC,EACxCc,KACD,CAAC;EACD,MAAMG,KAAK,GAAG,MAAMf,QAAQ,CAAE;IAAEc;EAAK,CAAE,CAAC;EACxCD,QAAQ,CAACG,gBAAgB,CAAEF,IAAI,EAAEC,KAAM,CAAC;AACzC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAME,cAAc,GAC1BA,CAAA,KACA,OAAQ;EAAEJ;AAAS,CAAC,KAAM;EACzB,MAAMK,WAAW,GAAG,MAAMlB,QAAQ,CAAE;IAAEc,IAAI,EAAE;EAAkB,CAAE,CAAC;EACjED,QAAQ,CAACM,kBAAkB,CAAED,WAAY,CAAC;AAC3C,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,eAAe,GAC3BA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,GAAG,EAAE,EAAEX,KAAK,KAC7B,OAAQ;EAAEY,MAAM;EAAEX,QAAQ;EAAEY;AAAS,CAAC,KAAM;EAC3C,MAAMC,OAAO,GAAG,MAAMb,QAAQ,CAAEX,uBAAuB,CAAEmB,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMK,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACP,IAAI,KAAKA,IAAI,IAAIO,MAAM,CAACR,IAAI,KAAKA,IACvD,CAAC;EACD,IAAK,CAAEM,YAAY,EAAG;IACrB;EACD;EAEA,MAAMG,IAAI,GAAG,MAAMjB,QAAQ,CAACkB,0BAA0B,CACrD9B,UAAU,EACV,CAAE,UAAU,EAAE,SAAS,EAAEoB,IAAI,EAAEC,IAAI,EAAEC,GAAG,CAAE,EAC1C;IAAES,SAAS,EAAE;EAAM,CACpB,CAAC;EAED,IAAI;IACH;IACA;IACA,IACCC,MAAM,CAACC,wBAAwB,IAC/BP,YAAY,CAACQ,UAAU,IACvB,CAAEvB,KAAK,EACN;MACD,IAAKwB,UAAU,CAACC,mBAAmB,EAAG;QACrC,MAAMC,QAAQ,GAAGX,YAAY,CAACY,eAAe,CAAEhB,GAAI,CAAC;;QAEpD;QACA,MAAMd,eAAe,CAAC,CAAC,CAAC+B,SAAS,CAChCb,YAAY,CAACc,cAAc,EAC3BH,QAAQ,EACNI,MAAM,IAAM;UACb7B,QAAQ,CAAC8B,oBAAoB,CAC5BtB,IAAI,EACJC,IAAI,EACJoB,MAAM,EACN9B,KACD,CAAC;QACF,CACD,CAAC;;QAED;QACA,MAAMH,eAAe,CAAC,CAAC,CAAC+B,SAAS,CAChCb,YAAY,CAACc,cAAc,GAAG,QAAQ,EACtCH,QAAQ,EACNI,MAAM,IAAM;UACb7B,QAAQ,CAAE;YACT+B,IAAI,EAAE,oBAAoB;YAC1BvB,IAAI;YACJC,IAAI;YACJuB,QAAQ,EAAEtB,GAAG;YACbuB,KAAK,EAAEJ,MAAM;YACbK,IAAI,EAAE;cACLC,IAAI,EAAEC;YACP;UACD,CAAE,CAAC;QACJ,CACD,CAAC;MACF;IACD,CAAC,MAAM;MACN,IAAKrC,KAAK,KAAKqC,SAAS,IAAIrC,KAAK,CAACsC,OAAO,EAAG;QAC3C;QACA;QACA;QACAtC,KAAK,GAAG;UACP,GAAGA,KAAK;UACRsC,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK9C,2BAA2B,CAC/BO,KAAK,CAACsC,OACP,CAAC,IAAI,EAAE,CAAE,EACTvB,YAAY,CAACJ,GAAG,IAAIpB,kBAAkB,CACrC,CAAC,CACH,CAACiD,IAAI,CAAC;QACR,CAAC;MACF;;MAEA;MACA;MACA;MACA;MACA;;MAEA;MACA,MAAMtC,IAAI,GAAGhB,YAAY,CACxB6B,YAAY,CAAC0B,OAAO,IAAK9B,GAAG,GAAG,GAAG,GAAGA,GAAG,GAAG,EAAE,CAAE,EAC/C;QACC,GAAGI,YAAY,CAAC2B,aAAa;QAC7B,GAAG1C;MACJ,CACD,CAAC;MAED,IAAKA,KAAK,KAAKqC,SAAS,EAAG;QAC1BrC,KAAK,GAAG;UAAE,GAAGA,KAAK;UAAE2C,OAAO,EAAE,CAAEhC,GAAG;QAAG,CAAC;;QAEtC;QACA;QACA;QACA,MAAMiC,UAAU,GAAGhC,MAAM,CAACiC,gBAAgB,CACzCpC,IAAI,EACJC,IAAI,EACJV,KACD,CAAC;QACD,IAAK4C,UAAU,EAAG;UACjB;QACD;MACD;MAEA,MAAME,QAAQ,GAAG,MAAM1D,QAAQ,CAAE;QAAEc,IAAI;QAAE6C,KAAK,EAAE;MAAM,CAAE,CAAC;MACzD,MAAMjB,MAAM,GAAG,MAAMgB,QAAQ,CAACE,IAAI,CAAC,CAAC;MACpC,MAAMC,WAAW,GAAGtD,iCAAiC,CACpDmD,QAAQ,CAACI,OAAO,EAAEC,GAAG,CAAE,OAAQ,CAChC,CAAC;MAED,MAAMC,sBAAsB,GAAG,EAAE;MACjC,MAAMC,yBAAyB,GAAG,CAAC,CAAC;MACpC,KAAM,MAAMC,MAAM,IAAI1D,wBAAwB,EAAG;QAChDyD,yBAAyB,CACxB3D,yBAAyB,CAAE4D,MAAM,EAAE;UAClC7C,IAAI;UACJC,IAAI;UACJ6C,EAAE,EAAE5C;QACL,CAAE,CAAC,CACH,GAAGsC,WAAW,CAAEK,MAAM,CAAE;QAEzBF,sBAAsB,CAACI,IAAI,CAAE,CAC5BF,MAAM,EACN;UAAE7C,IAAI;UAAEC,IAAI;UAAE6C,EAAE,EAAE5C;QAAI,CAAC,CACtB,CAAC;MACJ;MAEAE,QAAQ,CAAC4C,KAAK,CAAE,MAAM;QACrBxD,QAAQ,CAAC8B,oBAAoB,CAAEtB,IAAI,EAAEC,IAAI,EAAEoB,MAAM,EAAE9B,KAAM,CAAC;QAC1DC,QAAQ,CAACyD,sBAAsB,CAC9BL,yBACD,CAAC;QACDpD,QAAQ,CAAC0D,iBAAiB,CACzB,SAAS,EACTP,sBACD,CAAC;MACF,CAAE,CAAC;IACJ;EACD,CAAC,SAAS;IACTnD,QAAQ,CAAC2D,0BAA0B,CAAE1C,IAAK,CAAC;EAC5C;AACD,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAM2C,kBAAkB,GAAGrE,eAAe,CAAE,iBAAkB,CAAC;;AAEtE;AACA;AACA;AACA,OAAO,MAAMsE,qBAAqB,GAAGtE,eAAe,CAAE,iBAAkB,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMuE,gBAAgB,GAC5BA,CAAEtD,IAAI,EAAEC,IAAI,EAAEV,KAAK,GAAG,CAAC,CAAC,KACxB,OAAQ;EAAEC,QAAQ;EAAEY;AAAS,CAAC,KAAM;EACnC,MAAMC,OAAO,GAAG,MAAMb,QAAQ,CAAEX,uBAAuB,CAAEmB,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMK,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACP,IAAI,KAAKA,IAAI,IAAIO,MAAM,CAACR,IAAI,KAAKA,IACvD,CAAC;EACD,IAAK,CAAEM,YAAY,EAAG;IACrB;EACD;EAEA,MAAMG,IAAI,GAAG,MAAMjB,QAAQ,CAACkB,0BAA0B,CACrD9B,UAAU,EACV,CAAE,UAAU,EAAE,SAAS,EAAEoB,IAAI,EAAEC,IAAI,CAAE,EACrC;IAAEU,SAAS,EAAE;EAAM,CACpB,CAAC;EAED,IAAI;IACH,IAAKpB,KAAK,CAACsC,OAAO,EAAG;MACpB;MACA;MACA;MACAtC,KAAK,GAAG;QACP,GAAGA,KAAK;QACRsC,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK9C,2BAA2B,CAAEO,KAAK,CAACsC,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLvB,YAAY,CAACJ,GAAG,IAAIpB,kBAAkB,CACrC,CAAC,CACH,CAACiD,IAAI,CAAC;MACR,CAAC;IACF;IAEA,MAAMtC,IAAI,GAAGhB,YAAY,CAAE6B,YAAY,CAAC0B,OAAO,EAAE;MAChD,GAAG1B,YAAY,CAAC2B,aAAa;MAC7B,GAAG1C;IACJ,CAAE,CAAC;IAEH,IAAIgE,OAAO,EAAE7B,IAAI;IACjB,IAAKpB,YAAY,CAACkD,kBAAkB,IAAIjE,KAAK,CAACkE,QAAQ,KAAK,CAAC,CAAC,EAAG;MAC/D,MAAMpB,QAAQ,GAAG,MAAM1D,QAAQ,CAAE;QAAEc,IAAI;QAAE6C,KAAK,EAAE;MAAM,CAAE,CAAC;MACzDiB,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAMtB,QAAQ,CAACE,IAAI,CAAC,CAAE,CAAC;MAChDb,IAAI,GAAG;QACNkC,UAAU,EAAEC,QAAQ,CACnBxB,QAAQ,CAACI,OAAO,CAACC,GAAG,CAAE,YAAa,CACpC,CAAC;QACDoB,UAAU,EAAED,QAAQ,CACnBxB,QAAQ,CAACI,OAAO,CAACC,GAAG,CAAE,iBAAkB,CACzC;MACD,CAAC;IACF,CAAC,MAAM;MACNa,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAMhF,QAAQ,CAAE;QAAEc;MAAK,CAAE,CAAE,CAAC;MACrDiC,IAAI,GAAG;QACNkC,UAAU,EAAEL,OAAO,CAACQ,MAAM;QAC1BD,UAAU,EAAE;MACb,CAAC;IACF;;IAEA;IACA;IACA;IACA,IAAKvE,KAAK,CAACsC,OAAO,EAAG;MACpB0B,OAAO,GAAGA,OAAO,CAACS,GAAG,CAAI3C,MAAM,IAAM;QACpC9B,KAAK,CAACsC,OAAO,CAACoC,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,KAAK,IAAM;UAChD,IAAK,CAAE9C,MAAM,CAAC+C,cAAc,CAAED,KAAM,CAAC,EAAG;YACvC9C,MAAM,CAAE8C,KAAK,CAAE,GAAGvC,SAAS;UAC5B;QACD,CAAE,CAAC;QAEH,OAAOP,MAAM;MACd,CAAE,CAAC;IACJ;IAEAjB,QAAQ,CAAC4C,KAAK,CAAE,MAAM;MACrBxD,QAAQ,CAAC8B,oBAAoB,CAC5BtB,IAAI,EACJC,IAAI,EACJsD,OAAO,EACPhE,KAAK,EACL,KAAK,EACLqC,SAAS,EACTF,IACD,CAAC;;MAED;MACA;MACA;MACA;MACA,IAAK,CAAEnC,KAAK,EAAEsC,OAAO,IAAI,CAAEtC,KAAK,CAAC8E,OAAO,EAAG;QAC1C,MAAMnE,GAAG,GAAGI,YAAY,CAACJ,GAAG,IAAIpB,kBAAkB;QAClD,MAAMwF,eAAe,GAAGf,OAAO,CAC7BgB,MAAM,CAAIlD,MAAM,IAAMA,MAAM,GAAInB,GAAG,CAAG,CAAC,CACvC8D,GAAG,CAAI3C,MAAM,IAAM,CAAErB,IAAI,EAAEC,IAAI,EAAEoB,MAAM,CAAEnB,GAAG,CAAE,CAAG,CAAC;QAEpD,MAAMsE,WAAW,GAAGjB,OAAO,CACzBgB,MAAM,CAAIlD,MAAM,IAAMA,MAAM,GAAInB,GAAG,CAAG,CAAC,CACvC8D,GAAG,CAAI3C,MAAM,KAAQ;UACrByB,EAAE,EAAEzB,MAAM,CAAEnB,GAAG,CAAE;UACjBsC,WAAW,EAAEtD,iCAAiC,CAC7CmC,MAAM,EAAEoD,MAAM,EAAEC,IAAI,GAAI,CAAC,CAAE,CAACF,WAAW,CAACG,KACzC;QACD,CAAC,CAAG,CAAC;QAEN,MAAMhC,sBAAsB,GAAG,EAAE;QACjC,MAAMC,yBAAyB,GAAG,CAAC,CAAC;QACpC,KAAM,MAAMgC,UAAU,IAAIJ,WAAW,EAAG;UACvC,KAAM,MAAM3B,MAAM,IAAI1D,wBAAwB,EAAG;YAChDwD,sBAAsB,CAACI,IAAI,CAAE,CAC5BF,MAAM,EACN;cAAE7C,IAAI;cAAEC,IAAI;cAAE6C,EAAE,EAAE8B,UAAU,CAAC9B;YAAG,CAAC,CAChC,CAAC;YAEHF,yBAAyB,CACxB3D,yBAAyB,CAAE4D,MAAM,EAAE;cAClC7C,IAAI;cACJC,IAAI;cACJ6C,EAAE,EAAE8B,UAAU,CAAC9B;YAChB,CAAE,CAAC,CACH,GAAG8B,UAAU,CAACpC,WAAW,CAAEK,MAAM,CAAE;UACrC;QACD;QAEArD,QAAQ,CAACyD,sBAAsB,CAC9BL,yBACD,CAAC;QACDpD,QAAQ,CAAC0D,iBAAiB,CACzB,iBAAiB,EACjBoB,eACD,CAAC;QACD9E,QAAQ,CAAC0D,iBAAiB,CACzB,SAAS,EACTP,sBACD,CAAC;MACF;MAEAnD,QAAQ,CAAC2D,0BAA0B,CAAE1C,IAAK,CAAC;IAC5C,CAAE,CAAC;EACJ,CAAC,CAAC,OAAQoE,CAAC,EAAG;IACbrF,QAAQ,CAAC2D,0BAA0B,CAAE1C,IAAK,CAAC;EAC5C;AACD,CAAC;AAEF6C,gBAAgB,CAACwB,gBAAgB,GAAG,CAAEjC,MAAM,EAAE7C,IAAI,EAAEC,IAAI,KAAM;EAC7D,OACC,CAAE4C,MAAM,CAACtB,IAAI,KAAK,eAAe,IAAIsB,MAAM,CAACtB,IAAI,KAAK,cAAc,KACnEsB,MAAM,CAACkC,eAAe,IACtB/E,IAAI,KAAK6C,MAAM,CAAC7C,IAAI,IACpBC,IAAI,KAAK4C,MAAM,CAAC5C,IAAI;AAEtB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM+E,eAAe,GAC3BA,CAAA,KACA,OAAQ;EAAExF,QAAQ;EAAEyF;AAAc,CAAC,KAAM;EACxC,MAAMC,YAAY,GAAG,MAAMD,aAAa,CAAC3B,gBAAgB,CACxD,MAAM,EACN,OAAO,EACP;IAAE6B,MAAM,EAAE;EAAS,CACpB,CAAC;EAED3F,QAAQ,CAAC4F,mBAAmB,CAAEF,YAAY,CAAE,CAAC,CAAG,CAAC;AAClD,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMG,gBAAgB,GAAGtG,eAAe,CAAE,iBAAkB,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMuG,eAAe,GACzBC,GAAG,IACL,OAAQ;EAAE/F;AAAS,CAAC,KAAM;EACzB,IAAI;IACH,MAAMgG,kBAAkB,GAAG,MAAM7G,QAAQ,CAAE;MAC1Cc,IAAI,EAAEhB,YAAY,CAAE,mBAAmB,EAAE;QAAE8G;MAAI,CAAE;IAClD,CAAE,CAAC;IACH/F,QAAQ,CAACiG,mBAAmB,CAAEF,GAAG,EAAEC,kBAAmB,CAAC;EACxD,CAAC,CAAC,OAAQE,KAAK,EAAG;IACjB;IACAlG,QAAQ,CAACiG,mBAAmB,CAAEF,GAAG,EAAE,KAAM,CAAC;EAC3C;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,OAAO,GACnBA,CAAEC,eAAe,EAAEC,QAAQ,EAAE/C,EAAE,KAC/B,OAAQ;EAAEtD,QAAQ;EAAEY;AAAS,CAAC,KAAM;EACnC,IAAK,CAAEjB,wBAAwB,CAAC2G,QAAQ,CAAEF,eAAgB,CAAC,EAAG;IAC7D,MAAM,IAAIG,KAAK,CAAG,IAAIH,eAAiB,0BAA0B,CAAC;EACnE;EAEA,IAAII,YAAY,GAAG,IAAI;EACvB,IAAK,OAAOH,QAAQ,KAAK,QAAQ,EAAG;IACnC,IAAK,CAAEA,QAAQ,CAAC7F,IAAI,IAAI,CAAE6F,QAAQ,CAAC5F,IAAI,EAAG;MACzC,MAAM,IAAI8F,KAAK,CAAE,0CAA2C,CAAC;IAC9D;IAEA,MAAM1F,OAAO,GAAG,MAAMb,QAAQ,CAC7BX,uBAAuB,CAAEgH,QAAQ,CAAC7F,IAAI,EAAE6F,QAAQ,CAAC5F,IAAK,CACvD,CAAC;IACD,MAAMK,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BC,MAAM,IACPA,MAAM,CAACP,IAAI,KAAK4F,QAAQ,CAAC5F,IAAI,IAC7BO,MAAM,CAACR,IAAI,KAAK6F,QAAQ,CAAC7F,IAC3B,CAAC;IACD,IAAK,CAAEM,YAAY,EAAG;MACrB;IACD;IAEA0F,YAAY,GACX1F,YAAY,CAAC0B,OAAO,IAAK6D,QAAQ,CAAC/C,EAAE,GAAG,GAAG,GAAG+C,QAAQ,CAAC/C,EAAE,GAAG,EAAE,CAAE;EACjE,CAAC,MAAM;IACNkD,YAAY,GAAI,UAAUH,QAAU,EAAC,IAAK/C,EAAE,GAAG,GAAG,GAAGA,EAAE,GAAG,EAAE,CAAE;EAC/D;EAEA,MAAM;IAAEmD;EAAqB,CAAC,GAAG7F,QAAQ,CAACD,MAAM,CAAEvB,UAAW,CAAC;;EAE9D;EACA,KAAM,MAAMsH,aAAa,IAAI/G,wBAAwB,EAAG;IACvD,IAAK+G,aAAa,KAAKN,eAAe,EAAG;MACxC;IACD;IACA,MAAMO,kBAAkB,GAAGF,oBAAoB,CAAE,SAAS,EAAE,CAC3DC,aAAa,EACbL,QAAQ,EACR/C,EAAE,CACD,CAAC;IACH,IAAKqD,kBAAkB,EAAG;MACzB;IACD;EACD;EAEA,IAAI9D,QAAQ;EACZ,IAAI;IACHA,QAAQ,GAAG,MAAM1D,QAAQ,CAAE;MAC1Bc,IAAI,EAAEuG,YAAY;MAClBI,MAAM,EAAE,SAAS;MACjB9D,KAAK,EAAE;IACR,CAAE,CAAC;EACJ,CAAC,CAAC,OAAQoD,KAAK,EAAG;IACjB;IACA;IACA;EACD;;EAEA;EACA;EACA;EACA,MAAMlD,WAAW,GAAGtD,iCAAiC,CACpDmD,QAAQ,CAACI,OAAO,EAAEC,GAAG,CAAE,OAAQ,CAChC,CAAC;EACDtC,QAAQ,CAAC4C,KAAK,CAAE,MAAM;IACrB,KAAM,MAAMH,MAAM,IAAI1D,wBAAwB,EAAG;MAChD,MAAMe,GAAG,GAAGjB,yBAAyB,CAAE4D,MAAM,EAAEgD,QAAQ,EAAE/C,EAAG,CAAC;MAE7DtD,QAAQ,CAAC6G,qBAAqB,CAAEnG,GAAG,EAAEsC,WAAW,CAAEK,MAAM,CAAG,CAAC;;MAE5D;MACA,IAAKA,MAAM,KAAK+C,eAAe,EAAG;QACjCpG,QAAQ,CAAC8G,gBAAgB,CAAE,SAAS,EAAE,CACrCzD,MAAM,EACNgD,QAAQ,EACR/C,EAAE,CACD,CAAC;MACJ;IACD;EACD,CAAE,CAAC;AACJ,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMyD,uBAAuB,GACnCA,CAAEvG,IAAI,EAAEC,IAAI,EAAEuB,QAAQ,KACtB,OAAQ;EAAEhC;AAAS,CAAC,KAAM;EACzB,MAAMA,QAAQ,CAAEmG,OAAO,CAAE,QAAQ,EAAE;IAAE3F,IAAI;IAAEC,IAAI;IAAE6C,EAAE,EAAEtB;EAAS,CAAE,CAAE,CAAC;AACpE,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMgF,YAAY,GACxBA,CAAEC,QAAQ,EAAEC,MAAM,KAClB,OAAQ;EAAElH,QAAQ;EAAEyF;AAAc,CAAC,KAAM;EACxC,MAAM;IAAE0B,SAAS,EAAEC,QAAQ;IAAEC,cAAc,EAAEC,aAAa,GAAG;EAAQ,CAAC,GACrE,MAAM7B,aAAa,CAAC8B,WAAW,CAAEN,QAAS,CAAC;EAC5C,MAAMO,SAAS,GAAG,MAAMrI,QAAQ,CAAE;IACjCc,IAAI,EAAG,IAAIqH,aAAe,IAAIF,QAAU,IAAIF,MAAQ;EACrD,CAAE,CAAC;EAEH,IAAKM,SAAS,IAAIA,SAAS,CAACjD,MAAM,EAAG;IACpCvE,QAAQ,CAACyH,gBAAgB,CAAEP,MAAM,EAAEM,SAAU,CAAC;EAC/C;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,WAAW,GACvBA,CAAET,QAAQ,EAAEC,MAAM,KAClB,OAAQ;EAAEzB;AAAc,CAAC,KAAM;EAC9B,MAAMA,aAAa,CAACuB,YAAY,CAAEC,QAAQ,EAAEC,MAAO,CAAC;AACrD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,gCAAgC,GAC1CC,IAAI,IACN,OAAQ;EAAE5H,QAAQ;EAAEyF;AAAc,CAAC,KAAM;EACxC,IAAIoC,QAAQ;EACZ,IAAI;IACH;IACA;IACAA,QAAQ,GAAG,MAAM1I,QAAQ,CAAE;MAC1B4G,GAAG,EAAE9G,YAAY,CAAE2I,IAAI,EAAE;QACxB,mBAAmB,EAAE;MACtB,CAAE;IACH,CAAE,CAAC,CAACE,IAAI,CAAE,CAAE;MAAEC;IAAK,CAAC,KAAMA,IAAK,CAAC;EACjC,CAAC,CAAC,OAAQ1C,CAAC,EAAG;IACb;EAAA;EAGD,IAAK,CAAEwC,QAAQ,EAAG;IACjB;EACD;EAEA,MAAMhG,MAAM,GAAG,MAAM4D,aAAa,CAAClF,eAAe,CACjD,UAAU,EACV,aAAa,EACbsH,QAAQ,CAACvE,EACV,CAAC;EAED,IAAKzB,MAAM,EAAG;IACb7B,QAAQ,CAAC8B,oBAAoB,CAC5B,UAAU,EACV,aAAa,EACb,CAAED,MAAM,CAAE,EACV;MACC,eAAe,EAAE+F;IAClB,CACD,CAAC;EACF;AACD,CAAC;AAEFD,gCAAgC,CAACrC,gBAAgB,GAAKjC,MAAM,IAAM;EACjE,OACC,CAAEA,MAAM,CAACtB,IAAI,KAAK,eAAe,IAAIsB,MAAM,CAACtB,IAAI,KAAK,cAAc,KACnEsB,MAAM,CAACkC,eAAe,IACtBlC,MAAM,CAAC7C,IAAI,KAAK,UAAU,IAC1B6C,MAAM,CAAC5C,IAAI,KAAK,aAAa;AAE/B,CAAC;AAED,OAAO,MAAMuH,sCAAsC,GAClDA,CAAA,KACA,OAAQ;EAAEhI,QAAQ;EAAEyF;AAAc,CAAC,KAAM;EACxC,MAAMC,YAAY,GAAG,MAAMD,aAAa,CAAC3B,gBAAgB,CACxD,MAAM,EACN,OAAO,EACP;IAAE6B,MAAM,EAAE;EAAS,CACpB,CAAC;EACD,MAAMsC,eAAe,GACpBvC,YAAY,GAAI,CAAC,CAAE,EAAET,MAAM,GAAI,uBAAuB,CAAE,GAAI,CAAC,CAAE,EAC5DiD,IAAI;EACR,IAAK,CAAED,eAAe,EAAG;IACxB;EACD;;EAEA;EACA;EACA,MAAME,OAAO,GAAGF,eAAe,CAACG,KAAK,CAAE,iBAAkB,CAAC;EAC1D,MAAM9E,EAAE,GAAG6E,OAAO,GAAGE,MAAM,CAAEF,OAAO,CAAE,CAAC,CAAG,CAAC,GAAG,IAAI;EAElD,IAAK7E,EAAE,EAAG;IACTtD,QAAQ,CAACsI,0CAA0C,CAAEhF,EAAG,CAAC;EAC1D;AACD,CAAC;AAEF,OAAO,MAAMiF,6CAA6C,GACzDA,CAAA,KACA,OAAQ;EAAE9C,aAAa;EAAEzF;AAAS,CAAC,KAAM;EACxC,MAAMwI,YAAY,GAAG,MAAM/C,aAAa,CAACD,eAAe,CAAC,CAAC;EAC1D,MAAMiD,iBAAiB,GAAG,MAAMtJ,QAAQ,CAAE;IACzCc,IAAI,EAAG,+BAA+BuI,YAAY,CAACE,UAAY;EAChE,CAAE,CAAC;EACH1I,QAAQ,CAAC2I,0CAA0C,CAClDH,YAAY,CAACE,UAAU,EACvBD,iBACD,CAAC;AACF,CAAC;AAEF,OAAO,MAAMG,mDAAmD,GAC/DA,CAAA,KACA,OAAQ;EAAEnD,aAAa;EAAEzF;AAAS,CAAC,KAAM;EACxC,MAAMwI,YAAY,GAAG,MAAM/C,aAAa,CAACD,eAAe,CAAC,CAAC;EAC1D,MAAMqD,UAAU,GAAG,MAAM1J,QAAQ,CAAE;IAClCc,IAAI,EAAG,+BAA+BuI,YAAY,CAACE,UAAY;EAChE,CAAE,CAAC;EACH1I,QAAQ,CAAC8I,+CAA+C,CACvDN,YAAY,CAACE,UAAU,EACvBG,UACD,CAAC;AACF,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAME,oCAAoC,GAChDA,CAAA,KACA,OAAQ;EAAEtD,aAAa;EAAEzF;AAAS,CAAC,KAAM;EACxC,MAAMgJ,cAAc,GACnB,MAAMvD,aAAa,CAACuC,sCAAsC,CAAC,CAAC;EAC7D,MAAMnG,MAAM,GAAGmH,cAAc,GAC1B,MAAMvD,aAAa,CAAClF,eAAe,CACnC,MAAM,EACN,cAAc,EACdyI,cACA,CAAC,GACD5G,SAAS;EACZ,MAAM6G,YAAY,GAAGpH,MAAM,EAAEoD,MAAM,GAAI,iBAAiB,CAAE,GAAI,CAAC,CAAE,EAAEiD,IAAI;EAEvE,IAAKe,YAAY,EAAG;IACnB,MAAMC,cAAc,GAAG,MAAM/J,QAAQ,CAAE;MACtC4G,GAAG,EAAEkD;IACN,CAAE,CAAC;IACH,MAAME,SAAS,GAAGD,cAAc,EAAE1E,GAAG,CAAI4E,QAAQ,IAChDlF,MAAM,CAACmF,WAAW,CACjBnF,MAAM,CAACoF,OAAO,CAAEF,QAAS,CAAC,CAAC5E,GAAG,CAAE,CAAE,CAAE9D,GAAG,EAAE6I,KAAK,CAAE,KAAM,CACrDvK,SAAS,CAAE0B,GAAI,CAAC,EAChB6I,KAAK,CACJ,CACH,CACD,CAAC;IACDvJ,QAAQ,CAACwJ,gCAAgC,CACxCR,cAAc,EACdG,SACD,CAAC;EACF;AACD,CAAC;AAEFJ,oCAAoC,CAACzD,gBAAgB,GAAKjC,MAAM,IAAM;EACrE,OACCA,MAAM,CAACtB,IAAI,KAAK,2BAA2B,IAC3CsB,MAAM,CAAC7C,IAAI,KAAK,MAAM,IACtB,CAAE6C,MAAM,CAAC6C,KAAK,IACd7C,MAAM,CAAC5C,IAAI,KAAK,cAAc;AAEhC,CAAC;AAED,OAAO,MAAMgJ,gBAAgB,GAC5BA,CAAA,KACA,OAAQ;EAAEzJ;AAAS,CAAC,KAAM;EACzB,MAAM0J,QAAQ,GAAG,MAAM7J,kBAAkB,CAAC,CAAC;EAC3CG,QAAQ,CAAE;IAAE+B,IAAI,EAAE,wBAAwB;IAAE2H;EAAS,CAAE,CAAC;AACzD,CAAC;AAEF,OAAO,MAAMC,yBAAyB,GACrCA,CAAA,KACA,OAAQ;EAAE3J;AAAS,CAAC,KAAM;EACzB,MAAM4J,UAAU,GAAG,MAAMzK,QAAQ,CAAE;IAClCc,IAAI,EAAE;EACP,CAAE,CAAC;EACHD,QAAQ,CAAE;IAAE+B,IAAI,EAAE,kCAAkC;IAAE6H;EAAW,CAAE,CAAC;AACrE,CAAC;AAEF,OAAO,MAAMC,wBAAwB,GACpCA,CAAA,KACA,OAAQ;EAAE7J,QAAQ;EAAEyF;AAAc,CAAC,KAAM;EACxC,MAAMqE,iBAAiB,GAAG,MAAMrE,aAAa,CAAC3B,gBAAgB,CAC7D,UAAU,EACV,qBAAqB,EACrB;IACCG,QAAQ,EAAE,CAAC,CAAC;IACZ5B,OAAO,EAAE,0BAA0B;IACnCwC,OAAO,EAAE;EACV,CACD,CAAC;EAED,MAAMkF,uBAAuB,GAC5BD,iBAAiB,EAAEtF,GAAG,CAAIwF,YAAY,KAAQ;IAC7C,GAAGA,YAAY;IACfC,KAAK,EAAE/K,cAAc,CAAE8K,YAAY,CAACvJ,IAAK,CAAC;IAC1CA,IAAI,EAAEuJ,YAAY,CAACE;EACpB,CAAC,CAAG,CAAC,IAAI,EAAE;EAEZlK,QAAQ,CAAE;IACT+B,IAAI,EAAE,iCAAiC;IACvC+H,iBAAiB,EAAEC;EACpB,CAAE,CAAC;AACJ,CAAC;AAEF,OAAO,MAAMI,uBAAuB,GACnCA,CAAA,KACA,OAAQ;EAAEnK,QAAQ;EAAEW;AAAO,CAAC,KAAM;EACjC,MAAMyJ,QAAQ,GAAG,MAAMjL,QAAQ,CAAE;IAChCc,IAAI,EAAEhB,YAAY,CAAE,yCAAyC,EAAE;MAC9DoL,MAAM,EAAE;IACT,CAAE;EACH,CAAE,CAAC;EAEH,MAAMxI,MAAM,GAAGuI,QAAQ,EAAEE,SAAS,EAAEpF,IAAI;EAExClF,QAAQ,CAACuK,2BAA2B,CAAEH,QAAQ,EAAE9G,EAAG,CAAC;EAEpD,IAAKzB,MAAM,EAAG;IACb;IACA;IACA;IACA,MAAM2I,4BAA4B,GAAG7J,MAAM,CAACJ,eAAe,CAC1D,UAAU,EACV,eAAe,EACf6J,QAAQ,CAAC9G,EACV,CAAC;IACD,MAAMmH,2BAA2B,GAAG,CAAED,4BAA4B;IAClExK,QAAQ,CAAC8B,oBAAoB,CAC5B,UAAU,EACV,eAAe,EACfD,MAAM,EACNO,SAAS,EACTqI,2BACD,CAAC;;IAED;IACAzK,QAAQ,CAAC8G,gBAAgB,CAAE,iBAAiB,EAAE,CAC7C,UAAU,EACV,eAAe,EACfsD,QAAQ,CAAC9G,EAAE,CACV,CAAC;EACJ;AACD,CAAC;AAEF,OAAO,MAAMoH,oBAAoB,GAC9B3K,KAAK,IACP,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAM6H,QAAQ,GAAG,MAAM1I,QAAQ,CAAE;IAChCc,IAAI,EAAEhB,YAAY,CAAE,yBAAyB,EAAEc,KAAM;EACtD,CAAE,CAAC;EACH;EACA,IAAK8H,QAAQ,EAAEvE,EAAE,EAAG;IACnBtD,QAAQ,CAAC2K,wBAAwB,CAAE5K,KAAK,EAAE8H,QAAQ,CAACvE,EAAG,CAAC;EACxD;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMsH,YAAY,GACxBA,CAAEpK,IAAI,EAAEC,IAAI,EAAEoK,SAAS,EAAE9K,KAAK,GAAG,CAAC,CAAC,KACnC,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMa,OAAO,GAAG,MAAMb,QAAQ,CAAEX,uBAAuB,CAAEmB,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMK,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACP,IAAI,KAAKA,IAAI,IAAIO,MAAM,CAACR,IAAI,KAAKA,IACvD,CAAC;EAED,IAAK,CAAEM,YAAY,EAAG;IACrB;EACD;EAEA,IAAKf,KAAK,CAACsC,OAAO,EAAG;IACpB;IACA;IACA;IACAtC,KAAK,GAAG;MACP,GAAGA,KAAK;MACRsC,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK9C,2BAA2B,CAAEO,KAAK,CAACsC,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLvB,YAAY,CAACgK,WAAW,IAAIxL,kBAAkB,CAC7C,CAAC,CACH,CAACiD,IAAI,CAAC;IACR,CAAC;EACF;EAEA,MAAMtC,IAAI,GAAGhB,YAAY,CACxB6B,YAAY,CAACiK,eAAe,CAAEF,SAAU,CAAC,EACzC9K,KACD,CAAC;EAED,IAAIgE,OAAO,EAAElB,QAAQ;EACrB,MAAMX,IAAI,GAAG,CAAC,CAAC;EACf,MAAM8I,WAAW,GAChBlK,YAAY,CAACkD,kBAAkB,IAAIjE,KAAK,CAACkE,QAAQ,KAAK,CAAC,CAAC;EACzD,IAAI;IACHpB,QAAQ,GAAG,MAAM1D,QAAQ,CAAE;MAAEc,IAAI;MAAE6C,KAAK,EAAE,CAAEkI;IAAY,CAAE,CAAC;EAC5D,CAAC,CAAC,OAAQ9E,KAAK,EAAG;IACjB;IACA;EACD;EAEA,IAAKrD,QAAQ,EAAG;IACf,IAAKmI,WAAW,EAAG;MAClBjH,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAMtB,QAAQ,CAACE,IAAI,CAAC,CAAE,CAAC;MAChDb,IAAI,CAACkC,UAAU,GAAGC,QAAQ,CACzBxB,QAAQ,CAACI,OAAO,CAACC,GAAG,CAAE,YAAa,CACpC,CAAC;IACF,CAAC,MAAM;MACNa,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAEtB,QAAS,CAAC;IACpC;;IAEA;IACA;IACA;IACA,IAAK9C,KAAK,CAACsC,OAAO,EAAG;MACpB0B,OAAO,GAAGA,OAAO,CAACS,GAAG,CAAI3C,MAAM,IAAM;QACpC9B,KAAK,CAACsC,OAAO,CAACoC,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,KAAK,IAAM;UAChD,IAAK,CAAE9C,MAAM,CAAC+C,cAAc,CAAED,KAAM,CAAC,EAAG;YACvC9C,MAAM,CAAE8C,KAAK,CAAE,GAAGvC,SAAS;UAC5B;QACD,CAAE,CAAC;QAEH,OAAOP,MAAM;MACd,CAAE,CAAC;IACJ;IAEA7B,QAAQ,CAACiL,gBAAgB,CACxBzK,IAAI,EACJC,IAAI,EACJoK,SAAS,EACT9G,OAAO,EACPhE,KAAK,EACL,KAAK,EACLmC,IACD,CAAC;;IAED;IACA;IACA,IAAK,CAAEnC,KAAK,EAAEsC,OAAO,IAAI,CAAEtC,KAAK,CAAC8E,OAAO,EAAG;MAC1C,MAAMnE,GAAG,GAAGI,YAAY,CAACJ,GAAG,IAAIpB,kBAAkB;MAClD,MAAMwF,eAAe,GAAGf,OAAO,CAC7BgB,MAAM,CAAIlD,MAAM,IAAMA,MAAM,CAAEnB,GAAG,CAAG,CAAC,CACrC8D,GAAG,CAAI3C,MAAM,IAAM,CACnBrB,IAAI,EACJC,IAAI,EACJoK,SAAS,EACThJ,MAAM,CAAEnB,GAAG,CAAE,CACZ,CAAC;MAEJV,QAAQ,CAACkL,gBAAgB,CAAE,aAAa,EAAEpG,eAAgB,CAAC;MAC3D9E,QAAQ,CAAC0D,iBAAiB,CAAE,aAAa,EAAEoB,eAAgB,CAAC;IAC7D;EACD;AACD,CAAC;;AAEF;AACA8F,YAAY,CAACtF,gBAAgB,GAAG,CAAEjC,MAAM,EAAE7C,IAAI,EAAEC,IAAI,EAAEoK,SAAS,KAC9DxH,MAAM,CAACtB,IAAI,KAAK,2BAA2B,IAC3CtB,IAAI,KAAK4C,MAAM,CAAC5C,IAAI,IACpBD,IAAI,KAAK6C,MAAM,CAAC7C,IAAI,IACpB,CAAE6C,MAAM,CAAC6C,KAAK,IACd2E,SAAS,KAAKxH,MAAM,CAACrB,QAAQ;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMmJ,WAAW,GACvBA,CAAE3K,IAAI,EAAEC,IAAI,EAAEoK,SAAS,EAAEC,WAAW,EAAE/K,KAAK,KAC3C,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMa,OAAO,GAAG,MAAMb,QAAQ,CAAEX,uBAAuB,CAAEmB,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMK,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACP,IAAI,KAAKA,IAAI,IAAIO,MAAM,CAACR,IAAI,KAAKA,IACvD,CAAC;EAED,IAAK,CAAEM,YAAY,EAAG;IACrB;EACD;EAEA,IAAKf,KAAK,KAAKqC,SAAS,IAAIrC,KAAK,CAACsC,OAAO,EAAG;IAC3C;IACA;IACA;IACAtC,KAAK,GAAG;MACP,GAAGA,KAAK;MACRsC,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK9C,2BAA2B,CAAEO,KAAK,CAACsC,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLvB,YAAY,CAACgK,WAAW,IAAIxL,kBAAkB,CAC7C,CAAC,CACH,CAACiD,IAAI,CAAC;IACR,CAAC;EACF;EACA,MAAMtC,IAAI,GAAGhB,YAAY,CACxB6B,YAAY,CAACiK,eAAe,CAAEF,SAAS,EAAEC,WAAY,CAAC,EACtD/K,KACD,CAAC;EAED,IAAI8B,MAAM;EACV,IAAI;IACHA,MAAM,GAAG,MAAM1C,QAAQ,CAAE;MAAEc;IAAK,CAAE,CAAC;EACpC,CAAC,CAAC,OAAQiG,KAAK,EAAG;IACjB;IACA;EACD;EAEA,IAAKrE,MAAM,EAAG;IACb7B,QAAQ,CAACiL,gBAAgB,CAAEzK,IAAI,EAAEC,IAAI,EAAEoK,SAAS,EAAEhJ,MAAM,EAAE9B,KAAM,CAAC;EAClE;AACD,CAAC","ignoreList":[]}
@@ -9,5 +9,5 @@ export { default as isRawAttribute } from './is-raw-attribute';
9
9
  export { default as setNestedValue } from './set-nested-value';
10
10
  export { default as getNestedValue } from './get-nested-value';
11
11
  export { default as isNumericID } from './is-numeric-id';
12
- export { getUserPermissionCacheKey, getUserPermissionsFromResponse, ALLOWED_RESOURCE_ACTIONS } from './user-permissions';
12
+ export { getUserPermissionCacheKey, getUserPermissionsFromAllowHeader, ALLOWED_RESOURCE_ACTIONS } from './user-permissions';
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","conservativeMapItem","getNormalizedCommaSeparable","ifMatchingAction","forwardResolver","onSubKey","replaceAction","withWeakMapCache","isRawAttribute","setNestedValue","getNestedValue","isNumericID","getUserPermissionCacheKey","getUserPermissionsFromResponse","ALLOWED_RESOURCE_ACTIONS"],"sources":["@wordpress/core-data/src/utils/index.js"],"sourcesContent":["export { default as conservativeMapItem } from './conservative-map-item';\nexport { default as getNormalizedCommaSeparable } from './get-normalized-comma-separable';\nexport { default as ifMatchingAction } from './if-matching-action';\nexport { default as forwardResolver } from './forward-resolver';\nexport { default as onSubKey } from './on-sub-key';\nexport { default as replaceAction } from './replace-action';\nexport { default as withWeakMapCache } from './with-weak-map-cache';\nexport { default as isRawAttribute } from './is-raw-attribute';\nexport { default as setNestedValue } from './set-nested-value';\nexport { default as getNestedValue } from './get-nested-value';\nexport { default as isNumericID } from './is-numeric-id';\nexport {\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromResponse,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './user-permissions';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,mBAAmB,QAAQ,yBAAyB;AACxE,SAASD,OAAO,IAAIE,2BAA2B,QAAQ,kCAAkC;AACzF,SAASF,OAAO,IAAIG,gBAAgB,QAAQ,sBAAsB;AAClE,SAASH,OAAO,IAAII,eAAe,QAAQ,oBAAoB;AAC/D,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,cAAc;AAClD,SAASL,OAAO,IAAIM,aAAa,QAAQ,kBAAkB;AAC3D,SAASN,OAAO,IAAIO,gBAAgB,QAAQ,uBAAuB;AACnE,SAASP,OAAO,IAAIQ,cAAc,QAAQ,oBAAoB;AAC9D,SAASR,OAAO,IAAIS,cAAc,QAAQ,oBAAoB;AAC9D,SAAST,OAAO,IAAIU,cAAc,QAAQ,oBAAoB;AAC9D,SAASV,OAAO,IAAIW,WAAW,QAAQ,iBAAiB;AACxD,SACCC,yBAAyB,EACzBC,8BAA8B,EAC9BC,wBAAwB,QAClB,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["default","conservativeMapItem","getNormalizedCommaSeparable","ifMatchingAction","forwardResolver","onSubKey","replaceAction","withWeakMapCache","isRawAttribute","setNestedValue","getNestedValue","isNumericID","getUserPermissionCacheKey","getUserPermissionsFromAllowHeader","ALLOWED_RESOURCE_ACTIONS"],"sources":["@wordpress/core-data/src/utils/index.js"],"sourcesContent":["export { default as conservativeMapItem } from './conservative-map-item';\nexport { default as getNormalizedCommaSeparable } from './get-normalized-comma-separable';\nexport { default as ifMatchingAction } from './if-matching-action';\nexport { default as forwardResolver } from './forward-resolver';\nexport { default as onSubKey } from './on-sub-key';\nexport { default as replaceAction } from './replace-action';\nexport { default as withWeakMapCache } from './with-weak-map-cache';\nexport { default as isRawAttribute } from './is-raw-attribute';\nexport { default as setNestedValue } from './set-nested-value';\nexport { default as getNestedValue } from './get-nested-value';\nexport { default as isNumericID } from './is-numeric-id';\nexport {\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromAllowHeader,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './user-permissions';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,mBAAmB,QAAQ,yBAAyB;AACxE,SAASD,OAAO,IAAIE,2BAA2B,QAAQ,kCAAkC;AACzF,SAASF,OAAO,IAAIG,gBAAgB,QAAQ,sBAAsB;AAClE,SAASH,OAAO,IAAII,eAAe,QAAQ,oBAAoB;AAC/D,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,cAAc;AAClD,SAASL,OAAO,IAAIM,aAAa,QAAQ,kBAAkB;AAC3D,SAASN,OAAO,IAAIO,gBAAgB,QAAQ,uBAAuB;AACnE,SAASP,OAAO,IAAIQ,cAAc,QAAQ,oBAAoB;AAC9D,SAASR,OAAO,IAAIS,cAAc,QAAQ,oBAAoB;AAC9D,SAAST,OAAO,IAAIU,cAAc,QAAQ,oBAAoB;AAC9D,SAASV,OAAO,IAAIW,WAAW,QAAQ,iBAAiB;AACxD,SACCC,yBAAyB,EACzBC,iCAAiC,EACjCC,wBAAwB,QAClB,oBAAoB","ignoreList":[]}
@@ -1,11 +1,9 @@
1
1
  export const ALLOWED_RESOURCE_ACTIONS = ['create', 'read', 'update', 'delete'];
2
- export function getUserPermissionsFromResponse(response) {
2
+ export function getUserPermissionsFromAllowHeader(allowedMethods) {
3
3
  const permissions = {};
4
-
5
- // Optional chaining operator is used here because the API requests don't
6
- // return the expected result in the React native version. Instead, API requests
7
- // only return the result, without including response properties like the headers.
8
- const allowedMethods = response.headers?.get('allow') || '';
4
+ if (!allowedMethods) {
5
+ return permissions;
6
+ }
9
7
  const methods = {
10
8
  create: 'POST',
11
9
  read: 'GET',
@@ -1 +1 @@
1
- {"version":3,"names":["ALLOWED_RESOURCE_ACTIONS","getUserPermissionsFromResponse","response","permissions","allowedMethods","headers","get","methods","create","read","update","delete","actionName","methodName","Object","entries","includes","getUserPermissionCacheKey","action","resource","id","key","kind","name","filter","Boolean","join"],"sources":["@wordpress/core-data/src/utils/user-permissions.js"],"sourcesContent":["export const ALLOWED_RESOURCE_ACTIONS = [\n\t'create',\n\t'read',\n\t'update',\n\t'delete',\n];\n\nexport function getUserPermissionsFromResponse( response ) {\n\tconst permissions = {};\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the React native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowedMethods = response.headers?.get( 'allow' ) || '';\n\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t}\n\n\treturn permissions;\n}\n\nexport function getUserPermissionCacheKey( action, resource, id ) {\n\tconst key = (\n\t\ttypeof resource === 'object'\n\t\t\t? [ action, resource.kind, resource.name, resource.id ]\n\t\t\t: [ action, resource, id ]\n\t)\n\t\t.filter( Boolean )\n\t\t.join( '/' );\n\n\treturn key;\n}\n"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,GAAG,CACvC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,CACR;AAED,OAAO,SAASC,8BAA8BA,CAAEC,QAAQ,EAAG;EAC1D,MAAMC,WAAW,GAAG,CAAC,CAAC;;EAEtB;EACA;EACA;EACA,MAAMC,cAAc,GAAGF,QAAQ,CAACG,OAAO,EAAEC,GAAG,CAAE,OAAQ,CAAC,IAAI,EAAE;EAE7D,MAAMC,OAAO,GAAG;IACfC,MAAM,EAAE,MAAM;IACdC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE,KAAK;IACbC,MAAM,EAAE;EACT,CAAC;EACD,KAAM,MAAM,CAAEC,UAAU,EAAEC,UAAU,CAAE,IAAIC,MAAM,CAACC,OAAO,CAAER,OAAQ,CAAC,EAAG;IACrEJ,WAAW,CAAES,UAAU,CAAE,GAAGR,cAAc,CAACY,QAAQ,CAAEH,UAAW,CAAC;EAClE;EAEA,OAAOV,WAAW;AACnB;AAEA,OAAO,SAASc,yBAAyBA,CAAEC,MAAM,EAAEC,QAAQ,EAAEC,EAAE,EAAG;EACjE,MAAMC,GAAG,GAAG,CACX,OAAOF,QAAQ,KAAK,QAAQ,GACzB,CAAED,MAAM,EAAEC,QAAQ,CAACG,IAAI,EAAEH,QAAQ,CAACI,IAAI,EAAEJ,QAAQ,CAACC,EAAE,CAAE,GACrD,CAAEF,MAAM,EAAEC,QAAQ,EAAEC,EAAE,CAAE,EAE1BI,MAAM,CAAEC,OAAQ,CAAC,CACjBC,IAAI,CAAE,GAAI,CAAC;EAEb,OAAOL,GAAG;AACX","ignoreList":[]}
1
+ {"version":3,"names":["ALLOWED_RESOURCE_ACTIONS","getUserPermissionsFromAllowHeader","allowedMethods","permissions","methods","create","read","update","delete","actionName","methodName","Object","entries","includes","getUserPermissionCacheKey","action","resource","id","key","kind","name","filter","Boolean","join"],"sources":["@wordpress/core-data/src/utils/user-permissions.js"],"sourcesContent":["export const ALLOWED_RESOURCE_ACTIONS = [\n\t'create',\n\t'read',\n\t'update',\n\t'delete',\n];\n\nexport function getUserPermissionsFromAllowHeader( allowedMethods ) {\n\tconst permissions = {};\n\tif ( ! allowedMethods ) {\n\t\treturn permissions;\n\t}\n\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t}\n\n\treturn permissions;\n}\n\nexport function getUserPermissionCacheKey( action, resource, id ) {\n\tconst key = (\n\t\ttypeof resource === 'object'\n\t\t\t? [ action, resource.kind, resource.name, resource.id ]\n\t\t\t: [ action, resource, id ]\n\t)\n\t\t.filter( Boolean )\n\t\t.join( '/' );\n\n\treturn key;\n}\n"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,GAAG,CACvC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,CACR;AAED,OAAO,SAASC,iCAAiCA,CAAEC,cAAc,EAAG;EACnE,MAAMC,WAAW,GAAG,CAAC,CAAC;EACtB,IAAK,CAAED,cAAc,EAAG;IACvB,OAAOC,WAAW;EACnB;EAEA,MAAMC,OAAO,GAAG;IACfC,MAAM,EAAE,MAAM;IACdC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE,KAAK;IACbC,MAAM,EAAE;EACT,CAAC;EACD,KAAM,MAAM,CAAEC,UAAU,EAAEC,UAAU,CAAE,IAAIC,MAAM,CAACC,OAAO,CAAER,OAAQ,CAAC,EAAG;IACrED,WAAW,CAAEM,UAAU,CAAE,GAAGP,cAAc,CAACW,QAAQ,CAAEH,UAAW,CAAC;EAClE;EAEA,OAAOP,WAAW;AACnB;AAEA,OAAO,SAASW,yBAAyBA,CAAEC,MAAM,EAAEC,QAAQ,EAAEC,EAAE,EAAG;EACjE,MAAMC,GAAG,GAAG,CACX,OAAOF,QAAQ,KAAK,QAAQ,GACzB,CAAED,MAAM,EAAEC,QAAQ,CAACG,IAAI,EAAEH,QAAQ,CAACI,IAAI,EAAEJ,QAAQ,CAACC,EAAE,CAAE,GACrD,CAAEF,MAAM,EAAEC,QAAQ,EAAEC,EAAE,CAAE,EAE1BI,MAAM,CAAEC,OAAQ,CAAC,CACjBC,IAAI,CAAE,GAAI,CAAC;EAEb,OAAOL,GAAG;AACX","ignoreList":[]}
@@ -146,6 +146,24 @@ export function receiveUploadPermissions(hasUploadPermissions: boolean): any;
146
146
  * @return {Object} Action object.
147
147
  */
148
148
  export function receiveUserPermission(key: string, isAllowed: boolean): any;
149
+ /**
150
+ * Returns an action object used in signalling that the current user has
151
+ * permission to perform an action on a REST resource. Ignored from
152
+ * documentation as it's internal to the data store.
153
+ *
154
+ * @ignore
155
+ *
156
+ * @param {Object<string, boolean>} permissions An object where keys represent
157
+ * actions and REST resources, and
158
+ * values indicate whether the user
159
+ * is allowed to perform the
160
+ * action.
161
+ *
162
+ * @return {Object} Action object.
163
+ */
164
+ export function receiveUserPermissions(permissions: {
165
+ [x: string]: boolean;
166
+ }): any;
149
167
  /**
150
168
  * Returns an action object used in signalling that the autosaves for a
151
169
  * post have been received.
@@ -176,7 +194,7 @@ export function receiveNavigationFallbackId(fallbackId: integer): any;
176
194
  * @return {Object} Action object.
177
195
  */
178
196
  export function receiveDefaultTemplateId(query: any, templateId: string): any;
179
- export function deleteEntityRecord(kind: string, name: string, recordId: string, query: any | null, { __unstableFetch, throwOnError }?: {
197
+ export function deleteEntityRecord(kind: string, name: string, recordId: number | string, query: any | null, { __unstableFetch, throwOnError }?: {
180
198
  __unstableFetch?: Function | undefined;
181
199
  throwOnError?: boolean | undefined;
182
200
  } | undefined): ({ dispatch }: {
@@ -208,7 +226,7 @@ export function saveEditedEntityRecord(kind: string, name: string, recordId: any
208
226
  select: any;
209
227
  dispatch: any;
210
228
  }) => Promise<any>;
211
- export function __experimentalSaveSpecifiedEntityEdits(kind: string, name: string, recordId: any, itemsToSave: any[], options: any): ({ select, dispatch }: {
229
+ export function __experimentalSaveSpecifiedEntityEdits(kind: string, name: string, recordId: number | string, itemsToSave: any[], options: any): ({ select, dispatch }: {
212
230
  select: any;
213
231
  dispatch: any;
214
232
  }) => Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;GAUG;AACH,0CALW,MAAM,SACN,WAAY,OAUtB;AAED;;;;;;;;;GASG;AACH,0DAKC;AAED;;;;;;GAMG;AACH,kDAKC;AAED;;;;;;;;;;;GAWG;AACH,2CATW,MAAM,QACN,MAAM,WACN,WAAY,SACZ,UAAO,oBACN,OAAO,OAAA,sBACR,UAAO,QACP,UAAO,OAmCjB;AAED;;;;;;;;;GASG;AACH,4DAKC;AAED;;;;;;;;;GASG;AACH,kFAJW,MAAM,OAWhB;AAED;;;;;;;;;;GAUG;AACH,uEALW,MAAM,0BAchB;AAED;;;;;;;;;;GAUG;AACH,4EALW,MAAM,0BAchB;AAED;;;;;;GAMG;AACH,4CAQC;AAED;;;;;;;;;;;;GAYG;AACH,4DALW,MAAM,yBAkBhB;AAED;;;;;;;;;;;GAWG;AACH,yCALW,MAAM,WACN,GAAC,OAUX;AA8kBD;;;;;;;;GAQG;AACH,+DAJW,OAAO,OAWjB;AAED;;;;;;;;;;;GAWG;AACH,2CALW,MAAM,aACN,OAAO,OAUjB;AAED;;;;;;;;;;;GAWG;AACH,yCALW,MAAM,aACN,WAAY,OAUtB;AAED;;;;;;GAMG;AACH,wDAHW,OAAO,OAQjB;AAED;;;;;;;GAOG;AACH,iEAJW,MAAM,OAUhB;AAnpBM,yCAZI,MAAM,QACN,MAAM,YACN,MAAM,SACN,UAAO;;;;;mCA6EhB;AAeK,uCATI,MAAM,QACN,MAAM,YACN,MAAM,GAAC,MAAM,wBAGrB;IAAgC,UAAU;CAE1C,OAwED;AAMK;;;WAWL;AAMK;;;WAWL;AAOK,iDAIL;AAgBK,uCAXI,MAAM,QACN,MAAM,gEAGd;IAA2B,UAAU;IACV,eAAe;IAGf,YAAY;CAEzC;;;;mBA0NC;AAwBK,sDAHK,CAAC,SAAS,KAAQ,iBAAY,CAuCxC;AAUK,6CALI,MAAM,QACN,MAAM,2BAEN,eAAO;;;mBAwBhB;AAWK,6DANI,MAAM,QACN,MAAM;;;mBA0Cf;AAqGK,uCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,WACb,WAAY,SACZ,UAAO,oBACN,OAAO,OAAA,qBACR,UAAO;;oBAyBhB"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;GAUG;AACH,0CALW,MAAM,SACN,WAAY,OAUtB;AAED;;;;;;;;;GASG;AACH,0DAKC;AAED;;;;;;GAMG;AACH,kDAKC;AAED;;;;;;;;;;;GAWG;AACH,2CATW,MAAM,QACN,MAAM,WACN,WAAY,SACZ,UAAO,oBACN,OAAO,OAAA,sBACR,UAAO,QACP,UAAO,OAmCjB;AAED;;;;;;;;;GASG;AACH,4DAKC;AAED;;;;;;;;;GASG;AACH,kFAJW,MAAM,OAWhB;AAED;;;;;;;;;;GAUG;AACH,uEALW,MAAM,0BAchB;AAED;;;;;;;;;;GAUG;AACH,4EALW,MAAM,0BAchB;AAED;;;;;;GAMG;AACH,4CAQC;AAED;;;;;;;;;;;;GAYG;AACH,4DALW,MAAM,yBAkBhB;AAED;;;;;;;;;;;GAWG;AACH,yCALW,MAAM,WACN,GAAC,OAUX;AA8kBD;;;;;;;;GAQG;AACH,+DAJW,OAAO,OAWjB;AAED;;;;;;;;;;;GAWG;AACH,2CALW,MAAM,aACN,OAAO,OAUjB;AAED;;;;;;;;;;;;;;GAcG;AACH,oDARW;QAAO,MAAM,GAAE,OAAO;CAAC,OAajC;AAED;;;;;;;;;;;GAWG;AACH,yCALW,MAAM,aACN,WAAY,OAUtB;AAED;;;;;;GAMG;AACH,wDAHW,OAAO,OAQjB;AAED;;;;;;;GAOG;AACH,iEAJW,MAAM,OAUhB;AAzqBM,yCAZI,MAAM,QACN,MAAM,YACN,MAAM,GAAC,MAAM,SACb,UAAO;;;;;mCA6EhB;AAeK,uCATI,MAAM,QACN,MAAM,YACN,MAAM,GAAC,MAAM,wBAGrB;IAAgC,UAAU;CAE1C,OAwED;AAMK;;;WAWL;AAMK;;;WAWL;AAOK,iDAIL;AAgBK,uCAXI,MAAM,QACN,MAAM,gEAGd;IAA2B,UAAU;IACV,eAAe;IAGf,YAAY;CAEzC;;;;mBA0NC;AAwBK,sDAHK,CAAC,SAAS,KAAQ,iBAAY,CAuCxC;AAUK,6CALI,MAAM,QACN,MAAM,2BAEN,eAAO;;;mBAwBhB;AAWK,6DANI,MAAM,QACN,MAAM,YACN,MAAM,GAAC,MAAM;;;mBAyCtB;AA2HK,uCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,WACb,WAAY,SACZ,UAAO,oBACN,OAAO,OAAA,qBACR,UAAO;;oBAyBhB"}
@@ -61,6 +61,10 @@ declare module './base-entity-records' {
61
61
  * Post ID.
62
62
  */
63
63
  wp_id: number;
64
+ /**
65
+ * Plugin that registered the template.
66
+ */
67
+ plugin?: string;
64
68
  /**
65
69
  * Theme file exists.
66
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wp-template.d.ts","sourceRoot":"","sources":["../../src/entity-types/wp-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,QAAQ,uBAAuB,CAAC;IACtC,UAAiB,iBAAiB,CAAC;QAClC,UAAiB,UAAU,CAAE,CAAC,SAAS,OAAO;YAC7C;;eAEG;YACH,EAAE,EAAE,MAAM,CAAC;YACX;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;YACb;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;YACb;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;;;;;;;eAQG;YACH,OAAO,EAAE,eAAe,CACvB,YAAY,CAAE,CAAC,CAAE,GAAG;gBACnB;;mBAEG;gBACH,aAAa,EAAE,eAAe,CAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAE,CAAC;aACpD,EACD,MAAM,GAAG,MAAM,EACf,CAAC,CACD,CAAC;YACF;;eAEG;YACH,KAAK,EAAE,YAAY,CAAE,MAAM,CAAE,CAAC;YAC9B;;eAEG;YACH,WAAW,EAAE,MAAM,CAAC;YACpB;;eAEG;YACH,MAAM,EAAE,UAAU,CAAC;YACnB;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,cAAc,EAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;YACzC;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;eAEG;YACH,SAAS,EAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;YACpC;;eAEG;YACH,QAAQ,EAAE,eAAe,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAE,CAAC;SACxD;KACD;CACD;AAED,MAAM,MAAM,UAAU,CAAE,CAAC,SAAS,OAAO,GAAG,MAAM,IAAK,UAAU,CAChE,kBAAkB,CAAC,UAAU,CAAE,CAAC,CAAE,CAClC,CAAC"}
1
+ {"version":3,"file":"wp-template.d.ts","sourceRoot":"","sources":["../../src/entity-types/wp-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,QAAQ,uBAAuB,CAAC;IACtC,UAAiB,iBAAiB,CAAC;QAClC,UAAiB,UAAU,CAAE,CAAC,SAAS,OAAO;YAC7C;;eAEG;YACH,EAAE,EAAE,MAAM,CAAC;YACX;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;YACb;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;YACb;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;;;;;;;eAQG;YACH,OAAO,EAAE,eAAe,CACvB,YAAY,CAAE,CAAC,CAAE,GAAG;gBACnB;;mBAEG;gBACH,aAAa,EAAE,eAAe,CAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAE,CAAC;aACpD,EACD,MAAM,GAAG,MAAM,EACf,CAAC,CACD,CAAC;YACF;;eAEG;YACH,KAAK,EAAE,YAAY,CAAE,MAAM,CAAE,CAAC;YAC9B;;eAEG;YACH,WAAW,EAAE,MAAM,CAAC;YACpB;;eAEG;YACH,MAAM,EAAE,UAAU,CAAC;YACnB;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB;;eAEG;YACH,cAAc,EAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;YACzC;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YACf;;eAEG;YACH,SAAS,EAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;YACpC;;eAEG;YACH,QAAQ,EAAE,eAAe,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAE,CAAC;SACxD;KACD;CACD;AAED,MAAM,MAAM,UAAU,CAAE,CAAC,SAAS,OAAO,GAAG,MAAM,IAAK,UAAU,CAChE,kBAAkB,CAAC,UAAU,CAAE,CAAC,CAAE,CAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EA6HC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EAkIC"}
@@ -3,10 +3,10 @@
3
3
  * specified property of the nearest provided
4
4
  * entity of the specified type.
5
5
  *
6
- * @param {string} kind The entity kind.
7
- * @param {string} name The entity name.
8
- * @param {string} prop The property name.
9
- * @param {string} [_id] An entity ID to use instead of the context-provided one.
6
+ * @param {string} kind The entity kind.
7
+ * @param {string} name The entity name.
8
+ * @param {string} prop The property name.
9
+ * @param {number|string} [_id] An entity ID to use instead of the context-provided one.
10
10
  *
11
11
  * @return {[*, Function, *]} An array where the first item is the
12
12
  * property value, the second is the
@@ -15,5 +15,5 @@
15
15
  * information like `raw`, `rendered` and
16
16
  * `protected` props.
17
17
  */
18
- export default function useEntityProp(kind: string, name: string, prop: string, _id?: string | undefined): [any, Function, any];
18
+ export default function useEntityProp(kind: string, name: string, prop: string, _id?: string | number | undefined): [any, Function, any];
19
19
  //# sourceMappingURL=use-entity-prop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-entity-prop.d.ts","sourceRoot":"","sources":["../../src/hooks/use-entity-prop.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;GAgBG;AACH,4CAZW,MAAM,QACN,MAAM,QACN,MAAM,6BAGL,CAAC,GAAC,YAAY,GAAC,CAAC,CAqC3B"}
1
+ {"version":3,"file":"use-entity-prop.d.ts","sourceRoot":"","sources":["../../src/hooks/use-entity-prop.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;GAgBG;AACH,4CAZW,MAAM,QACN,MAAM,QACN,MAAM,sCAGL,CAAC,GAAC,YAAY,GAAC,CAAC,CAqC3B"}
@@ -21,10 +21,13 @@ export const store: import("@wordpress/data/build-types/types").StoreDescriptor<
21
21
  receiveEmbedPreview(url: string, preview: any): any;
22
22
  receiveUploadPermissions(hasUploadPermissions: boolean): any;
23
23
  receiveUserPermission(key: string, isAllowed: boolean): any;
24
+ receiveUserPermissions(permissions: {
25
+ [x: string]: boolean;
26
+ }): any;
24
27
  receiveAutosaves(postId: number, autosaves: any[] | any): any;
25
28
  receiveNavigationFallbackId(fallbackId: integer): any;
26
29
  receiveDefaultTemplateId(query: any, templateId: string): any;
27
- deleteEntityRecord: (kind: string, name: string, recordId: string, query: any | null, { __unstableFetch, throwOnError }?: {
30
+ deleteEntityRecord: (kind: string, name: string, recordId: number | string, query: any | null, { __unstableFetch, throwOnError }?: {
28
31
  __unstableFetch?: Function | undefined;
29
32
  throwOnError?: boolean | undefined;
30
33
  } | undefined) => ({ dispatch }: {
@@ -56,7 +59,7 @@ export const store: import("@wordpress/data/build-types/types").StoreDescriptor<
56
59
  select: any;
57
60
  dispatch: any;
58
61
  }) => Promise<any>;
59
- __experimentalSaveSpecifiedEntityEdits: (kind: string, name: string, recordId: any, itemsToSave: any[], options: any) => ({ select, dispatch }: {
62
+ __experimentalSaveSpecifiedEntityEdits: (kind: string, name: string, recordId: number | string, itemsToSave: any[], options: any) => ({ select, dispatch }: {
60
63
  select: any;
61
64
  dispatch: any;
62
65
  }) => Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA0EA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;4CAU60pB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAVjxpB;;;;;;;2BAtExC,aAAa"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA0EA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;4CAUsprB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAV1lrB;;;;;;;2BAtExC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,gEAUC;AAED;;;;;;;GAOG;AACH,gEAuBC;AAED;;;;;;;GAOG;AACH,sEAOC;AAED;;;;;;;GAOG;AACH,qEAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,kDALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAiND;;;;;;;GAOG;AACH,yEAOC;AA+DD;;GAEG;AACH,sKAEC;AAED,uEAQC;AAED;;;;;;;GAOG;AACH,wEAUC;AAED;;;;;;;;GAQG;AACH,0EAUC;AAED;;;;;;;GAOG;AACH,oEAYC;AAED,0EAOC;AAED,mFAOC;AAED,kFAMC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,iDALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,wCALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AA9MM,mEAmDN;;;;;;;;;;;;;;;;;;;;;;;;0BAjca,OAAO,SAAS,EAAE,WAAW"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,gEAUC;AAED;;;;;;;GAOG;AACH,gEAuBC;AAED;;;;;;;GAOG;AACH,sEAOC;AAED;;;;;;;GAOG;AACH,qEAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,kDALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAiND;;;;;;;GAOG;AACH,yEAOC;AA+DD;;GAEG;AACH,sKAEC;AAED,uEAQC;AAED;;;;;;;GAOG;AACH,wEAUC;AAED;;;;;;;;GAQG;AACH,0EAeC;AAED;;;;;;;GAOG;AACH,oEAYC;AAED,0EAOC;AAED,mFAOC;AAED,kFAMC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,iDALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,wCALW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4BAGrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjC;AAnNM,mEAmDN;;;;;;;;;;;;;;;;;;;;;;;;0BAjca,OAAO,SAAS,EAAE,WAAW"}
@@ -39,7 +39,7 @@ export function canUser(requestedAction: string, resource: string | any, id: str
39
39
  dispatch: any;
40
40
  registry: any;
41
41
  }) => Promise<void>;
42
- export function canUserEditEntityRecord(kind: string, name: string, recordId: string): ({ dispatch }: {
42
+ export function canUserEditEntityRecord(kind: string, name: string, recordId: number | string): ({ dispatch }: {
43
43
  dispatch: any;
44
44
  }) => Promise<void>;
45
45
  export function getAutosaves(postType: string, postId: number): ({ dispatch, resolveSelect }: {
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.js"],"names":[],"mappings":"AAiCO,kCAHI,MAAO,SAAS;;oBAYzB;AAKK;;oBAKL;AAYK,sCAPI,MAAM,QACN,MAAM,QACN,MAAM,GAAC,MAAM,sBACb,MAAO,SAAS;;;;oBA4IzB;AAEF;;GAEG;AACH,0CAAuE;AAEvE;;GAEG;AACH,6CAA0E;AAUnE,uCALI,MAAM,QACN,MAAM,UACN,UAAO;;;oBAwGhB;;IAEF,kEAOC;;AAKM;;;oBAUL;AAEF;;GAEG;AACH,wCAAqE;AAO9D,qCAFI,MAAM;;oBAcf;AAYK,yCANI,MAAM,YAEN,MAAM,MAAO,MAEZ,MAAM,OAAA;;;oBAgFhB;AAUK,8CAJI,MAAM,QACN,MAAM,YACN,MAAM;;oBAMf;AAQK,uCAHI,MAAM,UACN,MAAM;;;oBAcf;AAWK,sCAHI,MAAM,UACN,MAAM;;oBAMf;AAOK,uDAFI,MAAM;;;oBAsCf;;IAEF,4CAOC;;AAEM;;;oBAuBL;AAEK;;;oBAWL;AAEK;;;oBAWL;AAKK;;;oBA+BL;;IAEF,gDAOC;;AAEM;;oBAKL;AAEK;;oBAOL;AAEK;;;oBAwBL;AAEK;;;oBAsCL;AAEK;;oBAUL;AAYK,mCAPI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,UACb,MAAO,SAAS;;oBAoGzB;;IAGF,sFAK8B;;AAavB,kCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,eACb,MAAM,GAAC,MAAM,SACb,MAAO,SAAS;;oBA+CzB"}
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.js"],"names":[],"mappings":"AAiCO,kCAHI,MAAO,SAAS;;oBAYzB;AAKK;;oBAKL;AAYK,sCAPI,MAAM,QACN,MAAM,QACN,MAAM,GAAC,MAAM,sBACb,MAAO,SAAS;;;;oBAsJzB;AAEF;;GAEG;AACH,0CAAuE;AAEvE;;GAEG;AACH,6CAA0E;AAUnE,uCALI,MAAM,QACN,MAAM,UACN,UAAO;;;oBAgJhB;;IAEF,kEAOC;;AAKM;;;oBAUL;AAEF;;GAEG;AACH,wCAAqE;AAO9D,qCAFI,MAAM;;oBAcf;AAYK,yCANI,MAAM,YAEN,MAAM,MAAO,MAEZ,MAAM,OAAA;;;oBAqFhB;AAUK,8CAJI,MAAM,QACN,MAAM,YACN,MAAM,GAAC,MAAM;;oBAMtB;AAQK,uCAHI,MAAM,UACN,MAAM;;;oBAcf;AAWK,sCAHI,MAAM,UACN,MAAM;;oBAMf;AAOK,uDAFI,MAAM;;;oBAsCf;;IAEF,4CAOC;;AAEM;;;oBAuBL;AAEK;;;oBAWL;AAEK;;;oBAWL;AAKK;;;oBA+BL;;IAEF,gDAOC;;AAEM;;oBAKL;AAEK;;oBAOL;AAEK;;;oBAwBL;AAEK;;;oBAsCL;AAEK;;oBAUL;AAYK,mCAPI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,UACb,MAAO,SAAS;;oBAoGzB;;IAGF,sFAK8B;;AAavB,kCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,eACb,MAAM,GAAC,MAAM,SACb,MAAO,SAAS;;oBA+CzB"}