@wordpress/core-data 4.0.1 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +13 -7
  2. package/build/actions.js +178 -122
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/default-processor.js +58 -27
  5. package/build/batch/default-processor.js.map +1 -1
  6. package/build/entities.js +70 -23
  7. package/build/entities.js.map +1 -1
  8. package/build/fetch/__experimental-fetch-url-data.js +1 -1
  9. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  10. package/build/index.js +9 -17
  11. package/build/index.js.map +1 -1
  12. package/build/locks/actions.js +17 -77
  13. package/build/locks/actions.js.map +1 -1
  14. package/build/locks/engine.js +77 -0
  15. package/build/locks/engine.js.map +1 -0
  16. package/build/locks/reducer.js +1 -5
  17. package/build/locks/reducer.js.map +1 -1
  18. package/build/locks/selectors.js +6 -6
  19. package/build/locks/selectors.js.map +1 -1
  20. package/build/queried-data/get-query-parts.js +9 -4
  21. package/build/queried-data/get-query-parts.js.map +1 -1
  22. package/build/queried-data/selectors.js +3 -9
  23. package/build/queried-data/selectors.js.map +1 -1
  24. package/build/reducer.js +17 -22
  25. package/build/reducer.js.map +1 -1
  26. package/build/resolvers.js +151 -97
  27. package/build/resolvers.js.map +1 -1
  28. package/build/selectors.js +79 -14
  29. package/build/selectors.js.map +1 -1
  30. package/build/utils/forward-resolver.js +23 -0
  31. package/build/utils/forward-resolver.js.map +1 -0
  32. package/build/utils/index.js +11 -3
  33. package/build/utils/index.js.map +1 -1
  34. package/build/utils/is-raw-attribute.js +19 -0
  35. package/build/utils/is-raw-attribute.js.map +1 -0
  36. package/build-module/actions.js +155 -112
  37. package/build-module/actions.js.map +1 -1
  38. package/build-module/batch/default-processor.js +57 -27
  39. package/build-module/batch/default-processor.js.map +1 -1
  40. package/build-module/entities.js +65 -19
  41. package/build-module/entities.js.map +1 -1
  42. package/build-module/fetch/__experimental-fetch-url-data.js +1 -1
  43. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  44. package/build-module/index.js +10 -14
  45. package/build-module/index.js.map +1 -1
  46. package/build-module/locks/actions.js +14 -68
  47. package/build-module/locks/actions.js.map +1 -1
  48. package/build-module/locks/engine.js +66 -0
  49. package/build-module/locks/engine.js.map +1 -0
  50. package/build-module/locks/reducer.js +1 -2
  51. package/build-module/locks/reducer.js.map +1 -1
  52. package/build-module/locks/selectors.js +4 -4
  53. package/build-module/locks/selectors.js.map +1 -1
  54. package/build-module/queried-data/get-query-parts.js +9 -4
  55. package/build-module/queried-data/get-query-parts.js.map +1 -1
  56. package/build-module/queried-data/selectors.js +3 -9
  57. package/build-module/queried-data/selectors.js.map +1 -1
  58. package/build-module/reducer.js +15 -19
  59. package/build-module/reducer.js.map +1 -1
  60. package/build-module/resolvers.js +123 -81
  61. package/build-module/resolvers.js.map +1 -1
  62. package/build-module/selectors.js +74 -13
  63. package/build-module/selectors.js.map +1 -1
  64. package/build-module/utils/forward-resolver.js +15 -0
  65. package/build-module/utils/forward-resolver.js.map +1 -0
  66. package/build-module/utils/index.js +2 -1
  67. package/build-module/utils/index.js.map +1 -1
  68. package/build-module/utils/is-raw-attribute.js +12 -0
  69. package/build-module/utils/is-raw-attribute.js.map +1 -0
  70. package/package.json +10 -11
  71. package/src/actions.js +163 -194
  72. package/src/batch/default-processor.js +57 -26
  73. package/src/batch/test/default-processor.js +53 -26
  74. package/src/entities.js +47 -19
  75. package/src/fetch/__experimental-fetch-url-data.js +1 -1
  76. package/src/index.js +7 -10
  77. package/src/locks/actions.js +10 -61
  78. package/src/locks/engine.js +43 -0
  79. package/src/locks/reducer.js +1 -3
  80. package/src/locks/selectors.js +4 -4
  81. package/src/locks/test/engine.js +135 -0
  82. package/src/locks/test/reducer.js +1 -1
  83. package/src/locks/test/selectors.js +105 -124
  84. package/src/queried-data/get-query-parts.js +11 -6
  85. package/src/queried-data/selectors.js +2 -9
  86. package/src/queried-data/test/get-query-parts.js +1 -1
  87. package/src/queried-data/test/selectors.js +1 -0
  88. package/src/reducer.js +14 -19
  89. package/src/resolvers.js +132 -120
  90. package/src/selectors.js +156 -44
  91. package/src/test/actions.js +330 -170
  92. package/src/test/entities.js +40 -26
  93. package/src/test/resolvers.js +270 -223
  94. package/src/test/selectors.js +127 -1
  95. package/src/utils/forward-resolver.js +14 -0
  96. package/src/utils/index.js +2 -1
  97. package/src/utils/is-raw-attribute.js +11 -0
  98. package/src/utils/test/is-raw-attribute.js +22 -0
  99. package/build/controls.js +0 -44
  100. package/build/controls.js.map +0 -1
  101. package/build/locks/index.js +0 -47
  102. package/build/locks/index.js.map +0 -1
  103. package/build/utils/if-not-resolved.js +0 -46
  104. package/build/utils/if-not-resolved.js.map +0 -1
  105. package/build-module/controls.js +0 -31
  106. package/build-module/controls.js.map +0 -1
  107. package/build-module/locks/index.js +0 -4
  108. package/build-module/locks/index.js.map +0 -1
  109. package/build-module/utils/if-not-resolved.js +0 -36
  110. package/build-module/utils/if-not-resolved.js.map +0 -1
  111. package/src/controls.js +0 -31
  112. package/src/locks/index.js +0 -3
  113. package/src/locks/test/actions.js +0 -307
  114. package/src/test/integration.js +0 -264
  115. package/src/utils/if-not-resolved.js +0 -40
  116. package/src/utils/test/if-not-resolved.js +0 -75
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/actions.js"],"names":["castArray","get","isEqual","find","v4","uuid","controls","apiFetch","__unstableAwaitPromise","addQueryArgs","receiveItems","removeItems","receiveQueriedItems","getKindEntities","DEFAULT_ENTITY_KEY","__unstableAcquireStoreLock","__unstableReleaseStoreLock","createBatch","getDispatch","STORE_NAME","receiveUserQuery","queryID","users","type","receiveCurrentUser","currentUser","addEntities","entities","receiveEntityRecords","kind","name","records","query","invalidateCache","edits","map","record","status","title","action","receiveCurrentTheme","currentTheme","receiveThemeSupports","themeSupports","receiveEmbedPreview","url","preview","deleteEntityRecord","recordId","__unstableFetch","entity","error","deletedRecord","lock","exclusive","path","baseURL","options","method","_error","editEntityRecord","select","Error","transientEdits","mergedEdits","editedRecord","edit","Object","keys","reduce","acc","key","recordValue","editedRecordValue","value","undefined","meta","undo","undoIgnore","undoEdit","isUndo","redo","redoEdit","isRedo","__unstableCreateUndoLevel","saveEntityRecord","isAutosave","entityIdKey","entries","evaluatedValue","updatedRecord","persistedRecord","currentUserId","id","autosavePost","data","includes","newRecord","receiveAutosaves","__unstablePrePersist","__experimentalBatch","requests","batch","dispatch","api","add","saveEditedEntityRecord","resultPromises","request","results","Promise","all","run","__experimentalSaveSpecifiedEntityEdits","itemsToSave","editsToSave","some","item","receiveUploadPermissions","hasUploadPermissions","isAllowed","receiveUserPermission","postId","autosaves"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, get, isEqual, find } from 'lodash';\nimport { v4 as uuid } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { controls } from '@wordpress/data';\nimport { apiFetch, __unstableAwaitPromise } from '@wordpress/data-controls';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { receiveItems, removeItems, receiveQueriedItems } from './queried-data';\nimport { getKindEntities, DEFAULT_ENTITY_KEY } from './entities';\nimport {\n\t__unstableAcquireStoreLock,\n\t__unstableReleaseStoreLock,\n} from './locks';\nimport { createBatch } from './batch';\nimport { getDispatch } from './controls';\nimport { STORE_NAME } from './name';\n\n/**\n * Returns an action object used in signalling that authors have been received.\n *\n * @param {string} queryID Query ID.\n * @param {Array|Object} users Users received.\n *\n * @return {Object} Action object.\n */\nexport function receiveUserQuery( queryID, users ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_QUERY',\n\t\tusers: castArray( users ),\n\t\tqueryID,\n\t};\n}\n\n/**\n * Returns an action used in signalling that the current user has been received.\n *\n * @param {Object} currentUser Current user object.\n *\n * @return {Object} Action object.\n */\nexport function receiveCurrentUser( currentUser ) {\n\treturn {\n\t\ttype: 'RECEIVE_CURRENT_USER',\n\t\tcurrentUser,\n\t};\n}\n\n/**\n * Returns an action object used in adding new entities.\n *\n * @param {Array} entities Entities received.\n *\n * @return {Object} Action object.\n */\nexport function addEntities( entities ) {\n\treturn {\n\t\ttype: 'ADD_ENTITIES',\n\t\tentities,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been received.\n *\n * @param {string} kind Kind of the received entity.\n * @param {string} name Name of the received entity.\n * @param {Array|Object} records Records received.\n * @param {?Object} query Query Object.\n * @param {?boolean} invalidateCache Should invalidate query caches.\n * @param {?Object} edits Edits to reset.\n * @return {Object} Action object.\n */\nexport function receiveEntityRecords(\n\tkind,\n\tname,\n\trecords,\n\tquery,\n\tinvalidateCache = false,\n\tedits\n) {\n\t// Auto drafts should not have titles, but some plugins rely on them so we can't filter this\n\t// on the server.\n\tif ( kind === 'postType' ) {\n\t\trecords = castArray( records ).map( ( record ) =>\n\t\t\trecord.status === 'auto-draft' ? { ...record, title: '' } : record\n\t\t);\n\t}\n\tlet action;\n\tif ( query ) {\n\t\taction = receiveQueriedItems( records, query, edits );\n\t} else {\n\t\taction = receiveItems( records, edits );\n\t}\n\n\treturn {\n\t\t...action,\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the current theme has been received.\n *\n * @param {Object} currentTheme The current theme.\n *\n * @return {Object} Action object.\n */\nexport function receiveCurrentTheme( currentTheme ) {\n\treturn {\n\t\ttype: 'RECEIVE_CURRENT_THEME',\n\t\tcurrentTheme,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the index has been received.\n *\n * @param {Object} themeSupports Theme support for the current theme.\n *\n * @return {Object} Action object.\n */\nexport function receiveThemeSupports( themeSupports ) {\n\treturn {\n\t\ttype: 'RECEIVE_THEME_SUPPORTS',\n\t\tthemeSupports,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the preview data for\n * a given URl has been received.\n *\n * @param {string} url URL to preview the embed for.\n * @param {*} preview Preview data.\n *\n * @return {Object} Action object.\n */\nexport function receiveEmbedPreview( url, preview ) {\n\treturn {\n\t\ttype: 'RECEIVE_EMBED_PREVIEW',\n\t\turl,\n\t\tpreview,\n\t};\n}\n\n/**\n * Action triggered to delete an entity record.\n *\n * @param {string} kind Kind of the deleted entity.\n * @param {string} name Name of the deleted entity.\n * @param {string} recordId Record ID of the deleted entity.\n * @param {?Object} query Special query parameters for the\n * DELETE API call.\n * @param {Object} [options] Delete options.\n * @param {Function} [options.__unstableFetch] Internal use only. Function to\n * call instead of `apiFetch()`.\n * Must return a control descriptor.\n */\nexport function* deleteEntityRecord(\n\tkind,\n\tname,\n\trecordId,\n\tquery,\n\t{ __unstableFetch = null } = {}\n) {\n\tconst entities = yield getKindEntities( kind );\n\tconst entity = find( entities, { kind, name } );\n\tlet error;\n\tlet deletedRecord = false;\n\tif ( ! entity ) {\n\t\treturn;\n\t}\n\n\tconst lock = yield* __unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'data', kind, name, recordId ],\n\t\t{ exclusive: true }\n\t);\n\ttry {\n\t\tyield {\n\t\t\ttype: 'DELETE_ENTITY_RECORD_START',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t};\n\n\t\ttry {\n\t\t\tlet path = `${ entity.baseURL }/${ recordId }`;\n\n\t\t\tif ( query ) {\n\t\t\t\tpath = addQueryArgs( path, query );\n\t\t\t}\n\n\t\t\tconst options = {\n\t\t\t\tpath,\n\t\t\t\tmethod: 'DELETE',\n\t\t\t};\n\t\t\tif ( __unstableFetch ) {\n\t\t\t\tdeletedRecord = yield __unstableAwaitPromise(\n\t\t\t\t\t__unstableFetch( options )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdeletedRecord = yield apiFetch( options );\n\t\t\t}\n\n\t\t\tyield removeItems( kind, name, recordId, true );\n\t\t} catch ( _error ) {\n\t\t\terror = _error;\n\t\t}\n\n\t\tyield {\n\t\t\ttype: 'DELETE_ENTITY_RECORD_FINISH',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\terror,\n\t\t};\n\n\t\treturn deletedRecord;\n\t} finally {\n\t\tyield* __unstableReleaseStoreLock( lock );\n\t}\n}\n\n/**\n * Returns an action object that triggers an\n * edit to an entity record.\n *\n * @param {string} kind Kind of the edited entity record.\n * @param {string} name Name of the edited entity record.\n * @param {number} recordId Record ID of the edited entity record.\n * @param {Object} edits The edits.\n * @param {Object} options Options for the edit.\n * @param {boolean} options.undoIgnore Whether to ignore the edit in undo history or not.\n *\n * @return {Object} Action object.\n */\nexport function* editEntityRecord( kind, name, recordId, edits, options = {} ) {\n\tconst entity = yield controls.select( STORE_NAME, 'getEntity', kind, name );\n\tif ( ! entity ) {\n\t\tthrow new Error(\n\t\t\t`The entity being edited (${ kind }, ${ name }) does not have a loaded config.`\n\t\t);\n\t}\n\tconst { transientEdits = {}, mergedEdits = {} } = entity;\n\tconst record = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'getRawEntityRecord',\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst editedRecord = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'getEditedEntityRecord',\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\n\tconst edit = {\n\t\tkind,\n\t\tname,\n\t\trecordId,\n\t\t// Clear edits when they are equal to their persisted counterparts\n\t\t// so that the property is not considered dirty.\n\t\tedits: Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\tconst recordValue = record[ key ];\n\t\t\tconst editedRecordValue = editedRecord[ key ];\n\t\t\tconst value = mergedEdits[ key ]\n\t\t\t\t? { ...editedRecordValue, ...edits[ key ] }\n\t\t\t\t: edits[ key ];\n\t\t\tacc[ key ] = isEqual( recordValue, value ) ? undefined : value;\n\t\t\treturn acc;\n\t\t}, {} ),\n\t\ttransientEdits,\n\t};\n\treturn {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...edit,\n\t\tmeta: {\n\t\t\tundo: ! options.undoIgnore && {\n\t\t\t\t...edit,\n\t\t\t\t// Send the current values for things like the first undo stack entry.\n\t\t\t\tedits: Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\t\t\tacc[ key ] = editedRecord[ key ];\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} ),\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * Action triggered to undo the last edit to\n * an entity record, if any.\n */\nexport function* undo() {\n\tconst undoEdit = yield controls.select( STORE_NAME, 'getUndoEdit' );\n\tif ( ! undoEdit ) {\n\t\treturn;\n\t}\n\tyield {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...undoEdit,\n\t\tmeta: {\n\t\t\tisUndo: true,\n\t\t},\n\t};\n}\n\n/**\n * Action triggered to redo the last undoed\n * edit to an entity record, if any.\n */\nexport function* redo() {\n\tconst redoEdit = yield controls.select( STORE_NAME, 'getRedoEdit' );\n\tif ( ! redoEdit ) {\n\t\treturn;\n\t}\n\tyield {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...redoEdit,\n\t\tmeta: {\n\t\t\tisRedo: true,\n\t\t},\n\t};\n}\n\n/**\n * Forces the creation of a new undo level.\n *\n * @return {Object} Action object.\n */\nexport function __unstableCreateUndoLevel() {\n\treturn { type: 'CREATE_UNDO_LEVEL' };\n}\n\n/**\n * Action triggered to save an entity record.\n *\n * @param {string} kind Kind of the received entity.\n * @param {string} name Name of the received entity.\n * @param {Object} record Record to be saved.\n * @param {Object} options Saving options.\n * @param {boolean} [options.isAutosave=false] Whether this is an autosave.\n * @param {Function} [options.__unstableFetch] Internal use only. Function to\n * call instead of `apiFetch()`.\n * Must return a control\n * descriptor.\n */\nexport function* saveEntityRecord(\n\tkind,\n\tname,\n\trecord,\n\t{ isAutosave = false, __unstableFetch = null } = {}\n) {\n\tconst entities = yield getKindEntities( kind );\n\tconst entity = find( entities, { kind, name } );\n\tif ( ! entity ) {\n\t\treturn;\n\t}\n\tconst entityIdKey = entity.key || DEFAULT_ENTITY_KEY;\n\tconst recordId = record[ entityIdKey ];\n\n\tconst lock = yield* __unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'data', kind, name, recordId || uuid() ],\n\t\t{ exclusive: true }\n\t);\n\ttry {\n\t\t// Evaluate optimized edits.\n\t\t// (Function edits that should be evaluated on save to avoid expensive computations on every edit.)\n\t\tfor ( const [ key, value ] of Object.entries( record ) ) {\n\t\t\tif ( typeof value === 'function' ) {\n\t\t\t\tconst evaluatedValue = value(\n\t\t\t\t\tyield controls.select(\n\t\t\t\t\t\tSTORE_NAME,\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\trecordId\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tyield editEntityRecord(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\t{\n\t\t\t\t\t\t[ key ]: evaluatedValue,\n\t\t\t\t\t},\n\t\t\t\t\t{ undoIgnore: true }\n\t\t\t\t);\n\t\t\t\trecord[ key ] = evaluatedValue;\n\t\t\t}\n\t\t}\n\n\t\tyield {\n\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\tisAutosave,\n\t\t};\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\ttry {\n\t\t\tconst path = `${ entity.baseURL }${\n\t\t\t\trecordId ? '/' + recordId : ''\n\t\t\t}`;\n\t\t\tconst persistedRecord = yield controls.select(\n\t\t\t\tSTORE_NAME,\n\t\t\t\t'getRawEntityRecord',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId\n\t\t\t);\n\n\t\t\tif ( isAutosave ) {\n\t\t\t\t// Most of this autosave logic is very specific to posts.\n\t\t\t\t// This is fine for now as it is the only supported autosave,\n\t\t\t\t// but ideally this should all be handled in the back end,\n\t\t\t\t// so the client just sends and receives objects.\n\t\t\t\tconst currentUser = yield controls.select(\n\t\t\t\t\tSTORE_NAME,\n\t\t\t\t\t'getCurrentUser'\n\t\t\t\t);\n\t\t\t\tconst currentUserId = currentUser ? currentUser.id : undefined;\n\t\t\t\tconst autosavePost = yield controls.select(\n\t\t\t\t\tSTORE_NAME,\n\t\t\t\t\t'getAutosave',\n\t\t\t\t\tpersistedRecord.type,\n\t\t\t\t\tpersistedRecord.id,\n\t\t\t\t\tcurrentUserId\n\t\t\t\t);\n\t\t\t\t// Autosaves need all expected fields to be present.\n\t\t\t\t// So we fallback to the previous autosave and then\n\t\t\t\t// to the actual persisted entity if the edits don't\n\t\t\t\t// have a value.\n\t\t\t\tlet data = { ...persistedRecord, ...autosavePost, ...record };\n\t\t\t\tdata = Object.keys( data ).reduce(\n\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t[ 'title', 'excerpt', 'content' ].includes( key )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Edits should be the \"raw\" attribute values.\n\t\t\t\t\t\t\tacc[ key ] = get( data[ key ], 'raw', data[ key ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus:\n\t\t\t\t\t\t\tdata.status === 'auto-draft'\n\t\t\t\t\t\t\t\t? 'draft'\n\t\t\t\t\t\t\t\t: data.status,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tconst options = {\n\t\t\t\t\tpath: `${ path }/autosaves`,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata,\n\t\t\t\t};\n\t\t\t\tif ( __unstableFetch ) {\n\t\t\t\t\tupdatedRecord = yield __unstableAwaitPromise(\n\t\t\t\t\t\t__unstableFetch( options )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tupdatedRecord = yield apiFetch( options );\n\t\t\t\t}\n\t\t\t\t// An autosave may be processed by the server as a regular save\n\t\t\t\t// when its update is requested by the author and the post had\n\t\t\t\t// draft or auto-draft status.\n\t\t\t\tif ( persistedRecord.id === updatedRecord.id ) {\n\t\t\t\t\tlet newRecord = {\n\t\t\t\t\t\t...persistedRecord,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t...updatedRecord,\n\t\t\t\t\t};\n\t\t\t\t\tnewRecord = Object.keys( newRecord ).reduce(\n\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t// These properties are persisted in autosaves.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t[ 'title', 'excerpt', 'content' ].includes(\n\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Edits should be the \"raw\" attribute values.\n\t\t\t\t\t\t\t\tacc[ key ] = get(\n\t\t\t\t\t\t\t\t\tnewRecord[ key ],\n\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\tnewRecord[ key ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if ( key === 'status' ) {\n\t\t\t\t\t\t\t\t// Status is only persisted in autosaves when going from\n\t\t\t\t\t\t\t\t// \"auto-draft\" to \"draft\".\n\t\t\t\t\t\t\t\tacc[ key ] =\n\t\t\t\t\t\t\t\t\tpersistedRecord.status === 'auto-draft' &&\n\t\t\t\t\t\t\t\t\tnewRecord.status === 'draft'\n\t\t\t\t\t\t\t\t\t\t? newRecord.status\n\t\t\t\t\t\t\t\t\t\t: persistedRecord.status;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// These properties are not persisted in autosaves.\n\t\t\t\t\t\t\t\tacc[ key ] = get(\n\t\t\t\t\t\t\t\t\tpersistedRecord[ key ],\n\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\tpersistedRecord[ key ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\t\t\t\t\tyield receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnewRecord,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tyield receiveAutosaves( persistedRecord.id, updatedRecord );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet edits = record;\n\t\t\t\tif ( entity.__unstablePrePersist ) {\n\t\t\t\t\tedits = {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t\t...entity.__unstablePrePersist(\n\t\t\t\t\t\t\tpersistedRecord,\n\t\t\t\t\t\t\tedits\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: recordId ? 'PUT' : 'POST',\n\t\t\t\t\tdata: edits,\n\t\t\t\t};\n\t\t\t\tif ( __unstableFetch ) {\n\t\t\t\t\tupdatedRecord = yield __unstableAwaitPromise(\n\t\t\t\t\t\t__unstableFetch( options )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tupdatedRecord = yield apiFetch( options );\n\t\t\t\t}\n\t\t\t\tyield receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tupdatedRecord,\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t\tedits\n\t\t\t\t);\n\t\t\t}\n\t\t} catch ( _error ) {\n\t\t\terror = _error;\n\t\t}\n\t\tyield {\n\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\terror,\n\t\t\tisAutosave,\n\t\t};\n\n\t\treturn updatedRecord;\n\t} finally {\n\t\tyield* __unstableReleaseStoreLock( lock );\n\t}\n}\n\n/**\n * Runs multiple core-data actions at the same time using one API request.\n *\n * Example:\n *\n * ```\n * const [ savedRecord, updatedRecord, deletedRecord ] =\n * await dispatch( 'core' ).__experimentalBatch( [\n * ( { saveEntityRecord } ) => saveEntityRecord( 'root', 'widget', widget ),\n * ( { saveEditedEntityRecord } ) => saveEntityRecord( 'root', 'widget', 123 ),\n * ( { deleteEntityRecord } ) => deleteEntityRecord( 'root', 'widget', 123, null ),\n * ] );\n * ```\n *\n * @param {Array} requests Array of functions which are invoked simultaneously.\n * Each function is passed an object containing\n * `saveEntityRecord`, `saveEditedEntityRecord`, and\n * `deleteEntityRecord`.\n *\n * @return {Promise} A promise that resolves to an array containing the return\n * values of each function given in `requests`.\n */\nexport function* __experimentalBatch( requests ) {\n\tconst batch = createBatch();\n\tconst dispatch = yield getDispatch();\n\tconst api = {\n\t\tsaveEntityRecord( kind, name, record, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch( STORE_NAME ).saveEntityRecord( kind, name, record, {\n\t\t\t\t\t...options,\n\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tsaveEditedEntityRecord( kind, name, recordId, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch( STORE_NAME ).saveEditedEntityRecord(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\t{\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\tdeleteEntityRecord( kind, name, recordId, query, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch( STORE_NAME ).deleteEntityRecord(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\tquery,\n\t\t\t\t\t{\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t};\n\tconst resultPromises = requests.map( ( request ) => request( api ) );\n\tconst [ , ...results ] = yield __unstableAwaitPromise(\n\t\tPromise.all( [ batch.run(), ...resultPromises ] )\n\t);\n\treturn results;\n}\n\n/**\n * Action triggered to save an entity record's edits.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {Object} recordId ID of the record.\n * @param {Object} options Saving options.\n */\nexport function* saveEditedEntityRecord( kind, name, recordId, options ) {\n\tif (\n\t\t! ( yield controls.select(\n\t\t\tSTORE_NAME,\n\t\t\t'hasEditsForEntityRecord',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId\n\t\t) )\n\t) {\n\t\treturn;\n\t}\n\tconst edits = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'getEntityRecordNonTransientEdits',\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst record = { id: recordId, ...edits };\n\treturn yield* saveEntityRecord( kind, name, record, options );\n}\n\n/**\n * Action triggered to save only specified properties for the entity.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {Object} recordId ID of the record.\n * @param {Array} itemsToSave List of entity properties to save.\n * @param {Object} options Saving options.\n */\nexport function* __experimentalSaveSpecifiedEntityEdits(\n\tkind,\n\tname,\n\trecordId,\n\titemsToSave,\n\toptions\n) {\n\tif (\n\t\t! ( yield controls.select(\n\t\t\tSTORE_NAME,\n\t\t\t'hasEditsForEntityRecord',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId\n\t\t) )\n\t) {\n\t\treturn;\n\t}\n\tconst edits = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'getEntityRecordNonTransientEdits',\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst editsToSave = {};\n\tfor ( const edit in edits ) {\n\t\tif ( itemsToSave.some( ( item ) => item === edit ) ) {\n\t\t\teditsToSave[ edit ] = edits[ edit ];\n\t\t}\n\t}\n\treturn yield* saveEntityRecord( kind, name, editsToSave, options );\n}\n\n/**\n * Returns an action object used in signalling that Upload permissions have been received.\n *\n * @param {boolean} hasUploadPermissions Does the user have permission to upload files?\n *\n * @return {Object} Action object.\n */\nexport function receiveUploadPermissions( hasUploadPermissions ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_PERMISSION',\n\t\tkey: 'create/media',\n\t\tisAllowed: hasUploadPermissions,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the current user has\n * permission to perform an action on a REST resource.\n *\n * @param {string} key A key that represents the action and REST resource.\n * @param {boolean} isAllowed Whether or not the user can perform the action.\n *\n * @return {Object} Action object.\n */\nexport function receiveUserPermission( key, isAllowed ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_PERMISSION',\n\t\tkey,\n\t\tisAllowed,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the autosaves for a\n * post have been received.\n *\n * @param {number} postId The id of the post that is parent to the autosave.\n * @param {Array|Object} autosaves An array of autosaves or singular autosave object.\n *\n * @return {Object} Action object.\n */\nexport function receiveAutosaves( postId, autosaves ) {\n\treturn {\n\t\ttype: 'RECEIVE_AUTOSAVES',\n\t\tpostId,\n\t\tautosaves: castArray( autosaves ),\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/actions.js"],"names":["castArray","isEqual","find","v4","uuid","apiFetch","addQueryArgs","deprecated","receiveItems","removeItems","receiveQueriedItems","getKindEntities","DEFAULT_ENTITY_KEY","createBatch","STORE_NAME","receiveUserQuery","queryID","users","type","receiveCurrentUser","currentUser","addEntities","entities","receiveEntityRecords","kind","name","records","query","invalidateCache","edits","map","record","status","title","action","receiveCurrentTheme","currentTheme","__experimentalReceiveCurrentGlobalStylesId","currentGlobalStylesId","id","__experimentalReceiveThemeBaseGlobalStyles","stylesheet","globalStyles","receiveThemeSupports","since","receiveEmbedPreview","url","preview","deleteEntityRecord","recordId","__unstableFetch","dispatch","entity","error","deletedRecord","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","path","baseURL","method","_error","__unstableReleaseStoreLock","editEntityRecord","options","select","getEntity","Error","transientEdits","mergedEdits","getRawEntityRecord","editedRecord","getEditedEntityRecord","edit","Object","keys","reduce","acc","key","recordValue","editedRecordValue","value","undefined","meta","undo","undoIgnore","undoEdit","getUndoEdit","isUndo","redo","redoEdit","getRedoEdit","isRedo","__unstableCreateUndoLevel","saveEntityRecord","isAutosave","resolveSelect","entityIdKey","entries","evaluatedValue","updatedRecord","persistedRecord","getCurrentUser","currentUserId","autosavePost","getAutosave","data","includes","newRecord","receiveAutosaves","__unstablePrePersist","__experimentalBatch","requests","batch","api","add","saveEditedEntityRecord","resultPromises","request","results","Promise","all","run","hasEditsForEntityRecord","getEntityRecordNonTransientEdits","__experimentalSaveSpecifiedEntityEdits","itemsToSave","editsToSave","some","item","receiveUploadPermissions","hasUploadPermissions","isAllowed","receiveUserPermission","postId","autosaves"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, isEqual, find } from 'lodash';\nimport { v4 as uuid } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { receiveItems, removeItems, receiveQueriedItems } from './queried-data';\nimport { getKindEntities, DEFAULT_ENTITY_KEY } from './entities';\nimport { createBatch } from './batch';\nimport { STORE_NAME } from './name';\n\n/**\n * Returns an action object used in signalling that authors have been received.\n *\n * @param {string} queryID Query ID.\n * @param {Array|Object} users Users received.\n *\n * @return {Object} Action object.\n */\nexport function receiveUserQuery( queryID, users ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_QUERY',\n\t\tusers: castArray( users ),\n\t\tqueryID,\n\t};\n}\n\n/**\n * Returns an action used in signalling that the current user has been received.\n *\n * @param {Object} currentUser Current user object.\n *\n * @return {Object} Action object.\n */\nexport function receiveCurrentUser( currentUser ) {\n\treturn {\n\t\ttype: 'RECEIVE_CURRENT_USER',\n\t\tcurrentUser,\n\t};\n}\n\n/**\n * Returns an action object used in adding new entities.\n *\n * @param {Array} entities Entities received.\n *\n * @return {Object} Action object.\n */\nexport function addEntities( entities ) {\n\treturn {\n\t\ttype: 'ADD_ENTITIES',\n\t\tentities,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been received.\n *\n * @param {string} kind Kind of the received entity.\n * @param {string} name Name of the received entity.\n * @param {Array|Object} records Records received.\n * @param {?Object} query Query Object.\n * @param {?boolean} invalidateCache Should invalidate query caches.\n * @param {?Object} edits Edits to reset.\n * @return {Object} Action object.\n */\nexport function receiveEntityRecords(\n\tkind,\n\tname,\n\trecords,\n\tquery,\n\tinvalidateCache = false,\n\tedits\n) {\n\t// Auto drafts should not have titles, but some plugins rely on them so we can't filter this\n\t// on the server.\n\tif ( kind === 'postType' ) {\n\t\trecords = castArray( records ).map( ( record ) =>\n\t\t\trecord.status === 'auto-draft' ? { ...record, title: '' } : record\n\t\t);\n\t}\n\tlet action;\n\tif ( query ) {\n\t\taction = receiveQueriedItems( records, query, edits );\n\t} else {\n\t\taction = receiveItems( records, edits );\n\t}\n\n\treturn {\n\t\t...action,\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the current theme has been received.\n *\n * @param {Object} currentTheme The current theme.\n *\n * @return {Object} Action object.\n */\nexport function receiveCurrentTheme( currentTheme ) {\n\treturn {\n\t\ttype: 'RECEIVE_CURRENT_THEME',\n\t\tcurrentTheme,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the current global styles id has been received.\n *\n * @param {string} currentGlobalStylesId The current global styles id.\n *\n * @return {Object} Action object.\n */\nexport function __experimentalReceiveCurrentGlobalStylesId(\n\tcurrentGlobalStylesId\n) {\n\treturn {\n\t\ttype: 'RECEIVE_CURRENT_GLOBAL_STYLES_ID',\n\t\tid: currentGlobalStylesId,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the theme base global styles have been received\n *\n * @param {string} stylesheet The theme's identifier\n * @param {Object} globalStyles The global styles object.\n *\n * @return {Object} Action object.\n */\nexport function __experimentalReceiveThemeBaseGlobalStyles(\n\tstylesheet,\n\tglobalStyles\n) {\n\treturn {\n\t\ttype: 'RECEIVE_THEME_GLOBAL_STYLES',\n\t\tstylesheet,\n\t\tglobalStyles,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the index has been received.\n *\n * @deprecated since WP 5.9, this is not useful anymore, use the selector direclty.\n *\n * @return {Object} Action object.\n */\nexport function receiveThemeSupports() {\n\tdeprecated( \"wp.data.dispatch( 'core' ).receiveThemeSupports\", {\n\t\tsince: '5.9',\n\t} );\n\n\treturn {\n\t\ttype: 'DO_NOTHING',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the preview data for\n * a given URl has been received.\n *\n * @param {string} url URL to preview the embed for.\n * @param {*} preview Preview data.\n *\n * @return {Object} Action object.\n */\nexport function receiveEmbedPreview( url, preview ) {\n\treturn {\n\t\ttype: 'RECEIVE_EMBED_PREVIEW',\n\t\turl,\n\t\tpreview,\n\t};\n}\n\n/**\n * Action triggered to delete an entity record.\n *\n * @param {string} kind Kind of the deleted entity.\n * @param {string} name Name of the deleted entity.\n * @param {string} recordId Record ID of the deleted entity.\n * @param {?Object} query Special query parameters for the\n * DELETE API call.\n * @param {Object} [options] Delete options.\n * @param {Function} [options.__unstableFetch] Internal use only. Function to\n * call instead of `apiFetch()`.\n * Must return a promise.\n */\nexport const deleteEntityRecord = (\n\tkind,\n\tname,\n\trecordId,\n\tquery,\n\t{ __unstableFetch = apiFetch } = {}\n) => async ( { dispatch } ) => {\n\tconst entities = await dispatch( getKindEntities( kind ) );\n\tconst entity = find( entities, { kind, name } );\n\tlet error;\n\tlet deletedRecord = false;\n\tif ( ! entity || entity?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'data', kind, name, recordId ],\n\t\t{ exclusive: true }\n\t);\n\n\ttry {\n\t\tdispatch( {\n\t\t\ttype: 'DELETE_ENTITY_RECORD_START',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t} );\n\n\t\ttry {\n\t\t\tlet path = `${ entity.baseURL }/${ recordId }`;\n\n\t\t\tif ( query ) {\n\t\t\t\tpath = addQueryArgs( path, query );\n\t\t\t}\n\n\t\t\tdeletedRecord = await __unstableFetch( {\n\t\t\t\tpath,\n\t\t\t\tmethod: 'DELETE',\n\t\t\t} );\n\n\t\t\tawait dispatch( removeItems( kind, name, recordId, true ) );\n\t\t} catch ( _error ) {\n\t\t\terror = _error;\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: 'DELETE_ENTITY_RECORD_FINISH',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\terror,\n\t\t} );\n\n\t\treturn deletedRecord;\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\n\n/**\n * Returns an action object that triggers an\n * edit to an entity record.\n *\n * @param {string} kind Kind of the edited entity record.\n * @param {string} name Name of the edited entity record.\n * @param {number} recordId Record ID of the edited entity record.\n * @param {Object} edits The edits.\n * @param {Object} options Options for the edit.\n * @param {boolean} options.undoIgnore Whether to ignore the edit in undo history or not.\n *\n * @return {Object} Action object.\n */\nexport const editEntityRecord = (\n\tkind,\n\tname,\n\trecordId,\n\tedits,\n\toptions = {}\n) => ( { select, dispatch } ) => {\n\tconst entity = select.getEntity( kind, name );\n\tif ( ! entity ) {\n\t\tthrow new Error(\n\t\t\t`The entity being edited (${ kind }, ${ name }) does not have a loaded config.`\n\t\t);\n\t}\n\tconst { transientEdits = {}, mergedEdits = {} } = entity;\n\tconst record = select.getRawEntityRecord( kind, name, recordId );\n\tconst editedRecord = select.getEditedEntityRecord( kind, name, recordId );\n\n\tconst edit = {\n\t\tkind,\n\t\tname,\n\t\trecordId,\n\t\t// Clear edits when they are equal to their persisted counterparts\n\t\t// so that the property is not considered dirty.\n\t\tedits: Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\tconst recordValue = record[ key ];\n\t\t\tconst editedRecordValue = editedRecord[ key ];\n\t\t\tconst value = mergedEdits[ key ]\n\t\t\t\t? { ...editedRecordValue, ...edits[ key ] }\n\t\t\t\t: edits[ key ];\n\t\t\tacc[ key ] = isEqual( recordValue, value ) ? undefined : value;\n\t\t\treturn acc;\n\t\t}, {} ),\n\t\ttransientEdits,\n\t};\n\tdispatch( {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...edit,\n\t\tmeta: {\n\t\t\tundo: ! options.undoIgnore && {\n\t\t\t\t...edit,\n\t\t\t\t// Send the current values for things like the first undo stack entry.\n\t\t\t\tedits: Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\t\t\tacc[ key ] = editedRecord[ key ];\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} ),\n\t\t\t},\n\t\t},\n\t} );\n};\n\n/**\n * Action triggered to undo the last edit to\n * an entity record, if any.\n *\n * @return {undefined}\n */\nexport const undo = () => ( { select, dispatch } ) => {\n\tconst undoEdit = select.getUndoEdit();\n\tif ( ! undoEdit ) {\n\t\treturn;\n\t}\n\tdispatch( {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...undoEdit,\n\t\tmeta: { isUndo: true },\n\t} );\n};\n\n/**\n * Action triggered to redo the last undoed\n * edit to an entity record, if any.\n *\n * @return {undefined}\n */\nexport const redo = () => ( { select, dispatch } ) => {\n\tconst redoEdit = select.getRedoEdit();\n\tif ( ! redoEdit ) {\n\t\treturn;\n\t}\n\tdispatch( {\n\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t...redoEdit,\n\t\tmeta: { isRedo: true },\n\t} );\n};\n\n/**\n * Forces the creation of a new undo level.\n *\n * @return {Object} Action object.\n */\nexport function __unstableCreateUndoLevel() {\n\treturn { type: 'CREATE_UNDO_LEVEL' };\n}\n\n/**\n * Action triggered to save an entity record.\n *\n * @param {string} kind Kind of the received entity.\n * @param {string} name Name of the received entity.\n * @param {Object} record Record to be saved.\n * @param {Object} options Saving options.\n * @param {boolean} [options.isAutosave=false] Whether this is an autosave.\n * @param {Function} [options.__unstableFetch] Internal use only. Function to\n * call instead of `apiFetch()`.\n * Must return a promise.\n */\nexport const saveEntityRecord = (\n\tkind,\n\tname,\n\trecord,\n\t{ isAutosave = false, __unstableFetch = apiFetch } = {}\n) => async ( { select, resolveSelect, dispatch } ) => {\n\tconst entities = await dispatch( getKindEntities( kind ) );\n\tconst entity = find( entities, { kind, name } );\n\tif ( ! entity || entity?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\tconst entityIdKey = entity.key || DEFAULT_ENTITY_KEY;\n\tconst recordId = record[ entityIdKey ];\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'data', kind, name, recordId || uuid() ],\n\t\t{ exclusive: true }\n\t);\n\n\ttry {\n\t\t// Evaluate optimized edits.\n\t\t// (Function edits that should be evaluated on save to avoid expensive computations on every edit.)\n\t\tfor ( const [ key, value ] of Object.entries( record ) ) {\n\t\t\tif ( typeof value === 'function' ) {\n\t\t\t\tconst evaluatedValue = value(\n\t\t\t\t\tselect.getEditedEntityRecord( kind, name, recordId )\n\t\t\t\t);\n\t\t\t\tdispatch.editEntityRecord(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\t{\n\t\t\t\t\t\t[ key ]: evaluatedValue,\n\t\t\t\t\t},\n\t\t\t\t\t{ undoIgnore: true }\n\t\t\t\t);\n\t\t\t\trecord[ key ] = evaluatedValue;\n\t\t\t}\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\tisAutosave,\n\t\t} );\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\ttry {\n\t\t\tconst path = `${ entity.baseURL }${\n\t\t\t\trecordId ? '/' + recordId : ''\n\t\t\t}`;\n\t\t\tconst persistedRecord = select.getRawEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId\n\t\t\t);\n\n\t\t\tif ( isAutosave ) {\n\t\t\t\t// Most of this autosave logic is very specific to posts.\n\t\t\t\t// This is fine for now as it is the only supported autosave,\n\t\t\t\t// but ideally this should all be handled in the back end,\n\t\t\t\t// so the client just sends and receives objects.\n\t\t\t\tconst currentUser = select.getCurrentUser();\n\t\t\t\tconst currentUserId = currentUser ? currentUser.id : undefined;\n\t\t\t\tconst autosavePost = resolveSelect.getAutosave(\n\t\t\t\t\tpersistedRecord.type,\n\t\t\t\t\tpersistedRecord.id,\n\t\t\t\t\tcurrentUserId\n\t\t\t\t);\n\t\t\t\t// Autosaves need all expected fields to be present.\n\t\t\t\t// So we fallback to the previous autosave and then\n\t\t\t\t// to the actual persisted entity if the edits don't\n\t\t\t\t// have a value.\n\t\t\t\tlet data = { ...persistedRecord, ...autosavePost, ...record };\n\t\t\t\tdata = Object.keys( data ).reduce(\n\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t[ 'title', 'excerpt', 'content' ].includes( key )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tacc[ key ] = data[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus:\n\t\t\t\t\t\t\tdata.status === 'auto-draft'\n\t\t\t\t\t\t\t\t? 'draft'\n\t\t\t\t\t\t\t\t: data.status,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tupdatedRecord = await __unstableFetch( {\n\t\t\t\t\tpath: `${ path }/autosaves`,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata,\n\t\t\t\t} );\n\n\t\t\t\t// An autosave may be processed by the server as a regular save\n\t\t\t\t// when its update is requested by the author and the post had\n\t\t\t\t// draft or auto-draft status.\n\t\t\t\tif ( persistedRecord.id === updatedRecord.id ) {\n\t\t\t\t\tlet newRecord = {\n\t\t\t\t\t\t...persistedRecord,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t...updatedRecord,\n\t\t\t\t\t};\n\t\t\t\t\tnewRecord = Object.keys( newRecord ).reduce(\n\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t// These properties are persisted in autosaves.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t[ 'title', 'excerpt', 'content' ].includes(\n\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tacc[ key ] = newRecord[ key ];\n\t\t\t\t\t\t\t} else if ( key === 'status' ) {\n\t\t\t\t\t\t\t\t// Status is only persisted in autosaves when going from\n\t\t\t\t\t\t\t\t// \"auto-draft\" to \"draft\".\n\t\t\t\t\t\t\t\tacc[ key ] =\n\t\t\t\t\t\t\t\t\tpersistedRecord.status === 'auto-draft' &&\n\t\t\t\t\t\t\t\t\tnewRecord.status === 'draft'\n\t\t\t\t\t\t\t\t\t\t? newRecord.status\n\t\t\t\t\t\t\t\t\t\t: persistedRecord.status;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// These properties are not persisted in autosaves.\n\t\t\t\t\t\t\t\tacc[ key ] = persistedRecord[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnewRecord,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tdispatch.receiveAutosaves(\n\t\t\t\t\t\tpersistedRecord.id,\n\t\t\t\t\t\tupdatedRecord\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet edits = record;\n\t\t\t\tif ( entity.__unstablePrePersist ) {\n\t\t\t\t\tedits = {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t\t...entity.__unstablePrePersist(\n\t\t\t\t\t\t\tpersistedRecord,\n\t\t\t\t\t\t\tedits\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tupdatedRecord = await __unstableFetch( {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: recordId ? 'PUT' : 'POST',\n\t\t\t\t\tdata: edits,\n\t\t\t\t} );\n\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tupdatedRecord,\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t\tedits\n\t\t\t\t);\n\t\t\t}\n\t\t} catch ( _error ) {\n\t\t\terror = _error;\n\t\t}\n\t\tdispatch( {\n\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordId,\n\t\t\terror,\n\t\t\tisAutosave,\n\t\t} );\n\n\t\treturn updatedRecord;\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\n\n/**\n * Runs multiple core-data actions at the same time using one API request.\n *\n * Example:\n *\n * ```\n * const [ savedRecord, updatedRecord, deletedRecord ] =\n * await dispatch( 'core' ).__experimentalBatch( [\n * ( { saveEntityRecord } ) => saveEntityRecord( 'root', 'widget', widget ),\n * ( { saveEditedEntityRecord } ) => saveEntityRecord( 'root', 'widget', 123 ),\n * ( { deleteEntityRecord } ) => deleteEntityRecord( 'root', 'widget', 123, null ),\n * ] );\n * ```\n *\n * @param {Array} requests Array of functions which are invoked simultaneously.\n * Each function is passed an object containing\n * `saveEntityRecord`, `saveEditedEntityRecord`, and\n * `deleteEntityRecord`.\n *\n * @return {Promise} A promise that resolves to an array containing the return\n * values of each function given in `requests`.\n */\nexport const __experimentalBatch = ( requests ) => async ( { dispatch } ) => {\n\tconst batch = createBatch();\n\tconst api = {\n\t\tsaveEntityRecord( kind, name, record, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch.saveEntityRecord( kind, name, record, {\n\t\t\t\t\t...options,\n\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tsaveEditedEntityRecord( kind, name, recordId, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch.saveEditedEntityRecord( kind, name, recordId, {\n\t\t\t\t\t...options,\n\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdeleteEntityRecord( kind, name, recordId, query, options ) {\n\t\t\treturn batch.add( ( add ) =>\n\t\t\t\tdispatch.deleteEntityRecord( kind, name, recordId, query, {\n\t\t\t\t\t...options,\n\t\t\t\t\t__unstableFetch: add,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t};\n\tconst resultPromises = requests.map( ( request ) => request( api ) );\n\tconst [ , ...results ] = await Promise.all( [\n\t\tbatch.run(),\n\t\t...resultPromises,\n\t] );\n\treturn results;\n};\n\n/**\n * Action triggered to save an entity record's edits.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {Object} recordId ID of the record.\n * @param {Object} options Saving options.\n */\nexport const saveEditedEntityRecord = (\n\tkind,\n\tname,\n\trecordId,\n\toptions\n) => async ( { select, dispatch } ) => {\n\tif ( ! select.hasEditsForEntityRecord( kind, name, recordId ) ) {\n\t\treturn;\n\t}\n\tconst entities = await dispatch( getKindEntities( kind ) );\n\tconst entity = find( entities, { kind, name } );\n\tif ( ! entity ) {\n\t\treturn;\n\t}\n\tconst entityIdKey = entity.key || DEFAULT_ENTITY_KEY;\n\n\tconst edits = select.getEntityRecordNonTransientEdits(\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst record = { [ entityIdKey ]: recordId, ...edits };\n\treturn await dispatch.saveEntityRecord( kind, name, record, options );\n};\n\n/**\n * Action triggered to save only specified properties for the entity.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {Object} recordId ID of the record.\n * @param {Array} itemsToSave List of entity properties to save.\n * @param {Object} options Saving options.\n */\nexport const __experimentalSaveSpecifiedEntityEdits = (\n\tkind,\n\tname,\n\trecordId,\n\titemsToSave,\n\toptions\n) => async ( { select, dispatch } ) => {\n\tif ( ! select.hasEditsForEntityRecord( kind, name, recordId ) ) {\n\t\treturn;\n\t}\n\tconst edits = select.getEntityRecordNonTransientEdits(\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst editsToSave = {};\n\tfor ( const edit in edits ) {\n\t\tif ( itemsToSave.some( ( item ) => item === edit ) ) {\n\t\t\teditsToSave[ edit ] = edits[ edit ];\n\t\t}\n\t}\n\treturn await dispatch.saveEntityRecord( kind, name, editsToSave, options );\n};\n\n/**\n * Returns an action object used in signalling that Upload permissions have been received.\n *\n * @param {boolean} hasUploadPermissions Does the user have permission to upload files?\n *\n * @return {Object} Action object.\n */\nexport function receiveUploadPermissions( hasUploadPermissions ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_PERMISSION',\n\t\tkey: 'create/media',\n\t\tisAllowed: hasUploadPermissions,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the current user has\n * permission to perform an action on a REST resource.\n *\n * @param {string} key A key that represents the action and REST resource.\n * @param {boolean} isAllowed Whether or not the user can perform the action.\n *\n * @return {Object} Action object.\n */\nexport function receiveUserPermission( key, isAllowed ) {\n\treturn {\n\t\ttype: 'RECEIVE_USER_PERMISSION',\n\t\tkey,\n\t\tisAllowed,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the autosaves for a\n * post have been received.\n *\n * @param {number} postId The id of the post that is parent to the autosave.\n * @param {Array|Object} autosaves An array of autosaves or singular autosave object.\n *\n * @return {Object} Action object.\n */\nexport function receiveAutosaves( postId, autosaves ) {\n\treturn {\n\t\ttype: 'RECEIVE_AUTOSAVES',\n\t\tpostId,\n\t\tautosaves: castArray( autosaves ),\n\t};\n}\n"]}
@@ -1,9 +1,22 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { chunk } from 'lodash';
1
5
  /**
2
6
  * WordPress dependencies
3
7
  */
8
+
4
9
  import apiFetch from '@wordpress/api-fetch';
5
10
  /**
6
- * Default batch processor. Sends its input requests to /v1/batch.
11
+ * Maximum number of requests to place in a single batch request. Obtained by
12
+ * sending a preflight OPTIONS request to /batch/v1/.
13
+ *
14
+ * @type {number?}
15
+ */
16
+
17
+ let maxItems = null;
18
+ /**
19
+ * Default batch processor. Sends its input requests to /batch/v1.
7
20
  *
8
21
  * @param {Array} requests List of API requests to perform at once.
9
22
  *
@@ -13,37 +26,54 @@ import apiFetch from '@wordpress/api-fetch';
13
26
  */
14
27
 
15
28
  export default async function defaultProcessor(requests) {
16
- const batchResponse = await apiFetch({
17
- path: '/batch/v1',
18
- method: 'POST',
19
- data: {
20
- validation: 'require-all-validate',
21
- requests: requests.map(request => ({
22
- path: request.path,
23
- body: request.data,
24
- // Rename 'data' to 'body'.
25
- method: request.method,
26
- headers: request.headers
27
- }))
28
- }
29
- });
30
-
31
- if (batchResponse.failed) {
32
- return batchResponse.responses.map(response => ({
33
- error: response === null || response === void 0 ? void 0 : response.body
34
- }));
29
+ if (maxItems === null) {
30
+ const preflightResponse = await apiFetch({
31
+ path: '/batch/v1',
32
+ method: 'OPTIONS'
33
+ });
34
+ maxItems = preflightResponse.endpoints[0].args.requests.maxItems;
35
35
  }
36
36
 
37
- return batchResponse.responses.map(response => {
38
- const result = {};
37
+ const results = [];
39
38
 
40
- if (response.status >= 200 && response.status < 300) {
41
- result.output = response.body;
39
+ for (const batchRequests of chunk(requests, maxItems)) {
40
+ const batchResponse = await apiFetch({
41
+ path: '/batch/v1',
42
+ method: 'POST',
43
+ data: {
44
+ validation: 'require-all-validate',
45
+ requests: batchRequests.map(request => ({
46
+ path: request.path,
47
+ body: request.data,
48
+ // Rename 'data' to 'body'.
49
+ method: request.method,
50
+ headers: request.headers
51
+ }))
52
+ }
53
+ });
54
+ let batchResults;
55
+
56
+ if (batchResponse.failed) {
57
+ batchResults = batchResponse.responses.map(response => ({
58
+ error: response === null || response === void 0 ? void 0 : response.body
59
+ }));
42
60
  } else {
43
- result.error = response.body;
61
+ batchResults = batchResponse.responses.map(response => {
62
+ const result = {};
63
+
64
+ if (response.status >= 200 && response.status < 300) {
65
+ result.output = response.body;
66
+ } else {
67
+ result.error = response.body;
68
+ }
69
+
70
+ return result;
71
+ });
44
72
  }
45
73
 
46
- return result;
47
- });
74
+ results.push(...batchResults);
75
+ }
76
+
77
+ return results;
48
78
  }
49
79
  //# sourceMappingURL=default-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/batch/default-processor.js"],"names":["apiFetch","defaultProcessor","requests","batchResponse","path","method","data","validation","map","request","body","headers","failed","responses","response","error","result","status","output"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,eAAeC,gBAAf,CAAiCC,QAAjC,EAA4C;AAC1D,QAAMC,aAAa,GAAG,MAAMH,QAAQ,CAAE;AACrCI,IAAAA,IAAI,EAAE,WAD+B;AAErCC,IAAAA,MAAM,EAAE,MAF6B;AAGrCC,IAAAA,IAAI,EAAE;AACLC,MAAAA,UAAU,EAAE,sBADP;AAELL,MAAAA,QAAQ,EAAEA,QAAQ,CAACM,GAAT,CAAgBC,OAAF,KAAiB;AACxCL,QAAAA,IAAI,EAAEK,OAAO,CAACL,IAD0B;AAExCM,QAAAA,IAAI,EAAED,OAAO,CAACH,IAF0B;AAEpB;AACpBD,QAAAA,MAAM,EAAEI,OAAO,CAACJ,MAHwB;AAIxCM,QAAAA,OAAO,EAAEF,OAAO,CAACE;AAJuB,OAAjB,CAAd;AAFL;AAH+B,GAAF,CAApC;;AAcA,MAAKR,aAAa,CAACS,MAAnB,EAA4B;AAC3B,WAAOT,aAAa,CAACU,SAAd,CAAwBL,GAAxB,CAA+BM,QAAF,KAAkB;AACrDC,MAAAA,KAAK,EAAED,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAEJ;AADoC,KAAlB,CAA7B,CAAP;AAGA;;AAED,SAAOP,aAAa,CAACU,SAAd,CAAwBL,GAAxB,CAA+BM,QAAF,IAAgB;AACnD,UAAME,MAAM,GAAG,EAAf;;AACA,QAAKF,QAAQ,CAACG,MAAT,IAAmB,GAAnB,IAA0BH,QAAQ,CAACG,MAAT,GAAkB,GAAjD,EAAuD;AACtDD,MAAAA,MAAM,CAACE,MAAP,GAAgBJ,QAAQ,CAACJ,IAAzB;AACA,KAFD,MAEO;AACNM,MAAAA,MAAM,CAACD,KAAP,GAAeD,QAAQ,CAACJ,IAAxB;AACA;;AACD,WAAOM,MAAP;AACA,GARM,CAAP;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Default batch processor. Sends its input requests to /v1/batch.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was succesful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tconst batchResponse = await apiFetch( {\n\t\tpath: '/batch/v1',\n\t\tmethod: 'POST',\n\t\tdata: {\n\t\t\tvalidation: 'require-all-validate',\n\t\t\trequests: requests.map( ( request ) => ( {\n\t\t\t\tpath: request.path,\n\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\tmethod: request.method,\n\t\t\t\theaders: request.headers,\n\t\t\t} ) ),\n\t\t},\n\t} );\n\n\tif ( batchResponse.failed ) {\n\t\treturn batchResponse.responses.map( ( response ) => ( {\n\t\t\terror: response?.body,\n\t\t} ) );\n\t}\n\n\treturn batchResponse.responses.map( ( response ) => {\n\t\tconst result = {};\n\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\tresult.output = response.body;\n\t\t} else {\n\t\t\tresult.error = response.body;\n\t\t}\n\t\treturn result;\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/batch/default-processor.js"],"names":["chunk","apiFetch","maxItems","defaultProcessor","requests","preflightResponse","path","method","endpoints","args","results","batchRequests","batchResponse","data","validation","map","request","body","headers","batchResults","failed","responses","response","error","result","status","output","push"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,OAAOC,QAAP,MAAqB,sBAArB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,IAAf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,eAAeC,gBAAf,CAAiCC,QAAjC,EAA4C;AAC1D,MAAKF,QAAQ,KAAK,IAAlB,EAAyB;AACxB,UAAMG,iBAAiB,GAAG,MAAMJ,QAAQ,CAAE;AACzCK,MAAAA,IAAI,EAAE,WADmC;AAEzCC,MAAAA,MAAM,EAAE;AAFiC,KAAF,CAAxC;AAIAL,IAAAA,QAAQ,GAAGG,iBAAiB,CAACG,SAAlB,CAA6B,CAA7B,EAAiCC,IAAjC,CAAsCL,QAAtC,CAA+CF,QAA1D;AACA;;AAED,QAAMQ,OAAO,GAAG,EAAhB;;AAEA,OAAM,MAAMC,aAAZ,IAA6BX,KAAK,CAAEI,QAAF,EAAYF,QAAZ,CAAlC,EAA2D;AAC1D,UAAMU,aAAa,GAAG,MAAMX,QAAQ,CAAE;AACrCK,MAAAA,IAAI,EAAE,WAD+B;AAErCC,MAAAA,MAAM,EAAE,MAF6B;AAGrCM,MAAAA,IAAI,EAAE;AACLC,QAAAA,UAAU,EAAE,sBADP;AAELV,QAAAA,QAAQ,EAAEO,aAAa,CAACI,GAAd,CAAqBC,OAAF,KAAiB;AAC7CV,UAAAA,IAAI,EAAEU,OAAO,CAACV,IAD+B;AAE7CW,UAAAA,IAAI,EAAED,OAAO,CAACH,IAF+B;AAEzB;AACpBN,UAAAA,MAAM,EAAES,OAAO,CAACT,MAH6B;AAI7CW,UAAAA,OAAO,EAAEF,OAAO,CAACE;AAJ4B,SAAjB,CAAnB;AAFL;AAH+B,KAAF,CAApC;AAcA,QAAIC,YAAJ;;AAEA,QAAKP,aAAa,CAACQ,MAAnB,EAA4B;AAC3BD,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,KAAkB;AAC7DC,QAAAA,KAAK,EAAED,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAEL;AAD4C,OAAlB,CAA7B,CAAf;AAGA,KAJD,MAIO;AACNE,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,IAAgB;AAC3D,cAAME,MAAM,GAAG,EAAf;;AACA,YAAKF,QAAQ,CAACG,MAAT,IAAmB,GAAnB,IAA0BH,QAAQ,CAACG,MAAT,GAAkB,GAAjD,EAAuD;AACtDD,UAAAA,MAAM,CAACE,MAAP,GAAgBJ,QAAQ,CAACL,IAAzB;AACA,SAFD,MAEO;AACNO,UAAAA,MAAM,CAACD,KAAP,GAAeD,QAAQ,CAACL,IAAxB;AACA;;AACD,eAAOO,MAAP;AACA,OARc,CAAf;AASA;;AAEDd,IAAAA,OAAO,CAACiB,IAAR,CAAc,GAAGR,YAAjB;AACA;;AAED,SAAOT,OAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { chunk } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Maximum number of requests to place in a single batch request. Obtained by\n * sending a preflight OPTIONS request to /batch/v1/.\n *\n * @type {number?}\n */\nlet maxItems = null;\n\n/**\n * Default batch processor. Sends its input requests to /batch/v1.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was succesful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tif ( maxItems === null ) {\n\t\tconst preflightResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'OPTIONS',\n\t\t} );\n\t\tmaxItems = preflightResponse.endpoints[ 0 ].args.requests.maxItems;\n\t}\n\n\tconst results = [];\n\n\tfor ( const batchRequests of chunk( requests, maxItems ) ) {\n\t\tconst batchResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tvalidation: 'require-all-validate',\n\t\t\t\trequests: batchRequests.map( ( request ) => ( {\n\t\t\t\t\tpath: request.path,\n\t\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\t\tmethod: request.method,\n\t\t\t\t\theaders: request.headers,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t} );\n\n\t\tlet batchResults;\n\n\t\tif ( batchResponse.failed ) {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => ( {\n\t\t\t\terror: response?.body,\n\t\t\t} ) );\n\t\t} else {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => {\n\t\t\t\tconst result = {};\n\t\t\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\t\t\tresult.output = response.body;\n\t\t\t\t} else {\n\t\t\t\t\tresult.error = response.body;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}\n\n\t\tresults.push( ...batchResults );\n\t}\n\n\treturn results;\n}\n"]}
@@ -6,21 +6,20 @@ import { upperFirst, camelCase, map, find, get, startCase } from 'lodash';
6
6
  * WordPress dependencies
7
7
  */
8
8
 
9
- import { controls } from '@wordpress/data';
10
- import { apiFetch } from '@wordpress/data-controls';
9
+ import apiFetch from '@wordpress/api-fetch';
11
10
  import { __ } from '@wordpress/i18n';
12
11
  /**
13
12
  * Internal dependencies
14
13
  */
15
14
 
16
15
  import { addEntities } from './actions';
17
- import { STORE_NAME } from './name';
18
16
  export const DEFAULT_ENTITY_KEY = 'id';
17
+ const POST_RAW_ATTRIBUTES = ['title', 'excerpt', 'content'];
19
18
  export const defaultEntities = [{
20
19
  label: __('Base'),
21
20
  name: '__unstableBase',
22
21
  kind: 'root',
23
- baseURL: ''
22
+ baseURL: '/'
24
23
  }, {
25
24
  label: __('Site'),
26
25
  name: 'site',
@@ -37,7 +36,8 @@ export const defaultEntities = [{
37
36
  baseURL: '/wp/v2/types',
38
37
  baseURLParams: {
39
38
  context: 'edit'
40
- }
39
+ },
40
+ rawAttributes: POST_RAW_ATTRIBUTES
41
41
  }, {
42
42
  name: 'media',
43
43
  kind: 'root',
@@ -122,7 +122,8 @@ export const defaultEntities = [{
122
122
  context: 'edit'
123
123
  },
124
124
  plural: 'menuItems',
125
- label: __('Menu Item')
125
+ label: __('Menu Item'),
126
+ rawAttributes: ['title', 'content']
126
127
  }, {
127
128
  name: 'menuLocation',
128
129
  kind: 'root',
@@ -133,6 +134,41 @@ export const defaultEntities = [{
133
134
  plural: 'menuLocations',
134
135
  label: __('Menu Location'),
135
136
  key: 'name'
137
+ }, {
138
+ name: 'navigationArea',
139
+ kind: 'root',
140
+ baseURL: '/__experimental/block-navigation-areas',
141
+ baseURLParams: {
142
+ context: 'edit'
143
+ },
144
+ plural: 'navigationAreas',
145
+ label: __('Navigation Area'),
146
+ key: 'name',
147
+ getTitle: record => record === null || record === void 0 ? void 0 : record.description
148
+ }, {
149
+ label: __('Global Styles'),
150
+ name: 'globalStyles',
151
+ kind: 'root',
152
+ baseURL: '/wp/v2/global-styles',
153
+ baseURLParams: {
154
+ context: 'edit'
155
+ },
156
+ plural: 'globalStylesVariations',
157
+ // should be different than name
158
+ getTitle: record => {
159
+ var _record$title;
160
+
161
+ return (record === null || record === void 0 ? void 0 : (_record$title = record.title) === null || _record$title === void 0 ? void 0 : _record$title.rendered) || (record === null || record === void 0 ? void 0 : record.title);
162
+ }
163
+ }, {
164
+ label: __('Themes'),
165
+ name: 'theme',
166
+ kind: 'root',
167
+ baseURL: '/wp/v2/themes',
168
+ baseURLParams: {
169
+ context: 'edit'
170
+ },
171
+ key: 'stylesheet'
136
172
  }];
137
173
  export const kinds = [{
138
174
  name: 'postType',
@@ -172,15 +208,18 @@ export const prePersistPostType = (persistedRecord, edits) => {
172
208
  * @return {Promise} Entities promise
173
209
  */
174
210
 
175
- function* loadPostTypeEntities() {
176
- const postTypes = yield apiFetch({
211
+ async function loadPostTypeEntities() {
212
+ const postTypes = await apiFetch({
177
213
  path: '/wp/v2/types?context=edit'
178
214
  });
179
215
  return map(postTypes, (postType, name) => {
216
+ var _postType$rest_namesp;
217
+
180
218
  const isTemplate = ['wp_template', 'wp_template_part'].includes(name);
219
+ const namespace = (_postType$rest_namesp = postType === null || postType === void 0 ? void 0 : postType.rest_namespace) !== null && _postType$rest_namesp !== void 0 ? _postType$rest_namesp : 'wp/v2';
181
220
  return {
182
221
  kind: 'postType',
183
- baseURL: '/wp/v2/' + postType.rest_base,
222
+ baseURL: `/${namespace}/${postType.rest_base}`,
184
223
  baseURLParams: {
185
224
  context: 'edit'
186
225
  },
@@ -193,10 +232,11 @@ function* loadPostTypeEntities() {
193
232
  mergedEdits: {
194
233
  meta: true
195
234
  },
235
+ rawAttributes: POST_RAW_ATTRIBUTES,
196
236
  getTitle: record => {
197
- var _record$title;
237
+ var _record$title2;
198
238
 
199
- return (record === null || record === void 0 ? void 0 : (_record$title = record.title) === null || _record$title === void 0 ? void 0 : _record$title.rendered) || (record === null || record === void 0 ? void 0 : record.title) || (isTemplate ? startCase(record.slug) : String(record.id));
239
+ return (record === null || record === void 0 ? void 0 : (_record$title2 = record.title) === null || _record$title2 === void 0 ? void 0 : _record$title2.rendered) || (record === null || record === void 0 ? void 0 : record.title) || (isTemplate ? startCase(record.slug) : String(record.id));
200
240
  },
201
241
  __unstablePrePersist: isTemplate ? undefined : prePersistPostType,
202
242
  __unstable_rest_base: postType.rest_base
@@ -210,14 +250,17 @@ function* loadPostTypeEntities() {
210
250
  */
211
251
 
212
252
 
213
- function* loadTaxonomyEntities() {
214
- const taxonomies = yield apiFetch({
253
+ async function loadTaxonomyEntities() {
254
+ const taxonomies = await apiFetch({
215
255
  path: '/wp/v2/taxonomies?context=edit'
216
256
  });
217
257
  return map(taxonomies, (taxonomy, name) => {
258
+ var _taxonomy$rest_namesp;
259
+
260
+ const namespace = (_taxonomy$rest_namesp = taxonomy === null || taxonomy === void 0 ? void 0 : taxonomy.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
218
261
  return {
219
262
  kind: 'taxonomy',
220
- baseURL: '/wp/v2/' + taxonomy.rest_base,
263
+ baseURL: `/${namespace}/${taxonomy.rest_base}`,
221
264
  baseURLParams: {
222
265
  context: 'edit'
223
266
  },
@@ -256,8 +299,11 @@ export const getMethodName = (kind, name, prefix = 'get', usePlural = false) =>
256
299
  * @return {Array} Entities
257
300
  */
258
301
 
259
- export function* getKindEntities(kind) {
260
- let entities = yield controls.select(STORE_NAME, 'getEntitiesByKind', kind);
302
+ export const getKindEntities = kind => async ({
303
+ select,
304
+ dispatch
305
+ }) => {
306
+ let entities = select.getEntitiesByKind(kind);
261
307
 
262
308
  if (entities && entities.length !== 0) {
263
309
  return entities;
@@ -271,8 +317,8 @@ export function* getKindEntities(kind) {
271
317
  return [];
272
318
  }
273
319
 
274
- entities = yield kindConfig.loadEntities();
275
- yield addEntities(entities);
320
+ entities = await kindConfig.loadEntities();
321
+ dispatch(addEntities(entities));
276
322
  return entities;
277
- }
323
+ };
278
324
  //# sourceMappingURL=entities.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/entities.js"],"names":["upperFirst","camelCase","map","find","get","startCase","controls","apiFetch","__","addEntities","STORE_NAME","DEFAULT_ENTITY_KEY","defaultEntities","label","name","kind","baseURL","getTitle","record","key","baseURLParams","context","plural","transientEdits","blocks","kinds","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","title","postTypes","path","postType","isTemplate","includes","rest_base","labels","singular_name","selection","mergedEdits","meta","rendered","slug","String","id","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","getMethodName","prefix","usePlural","entity","kindPrefix","nameSuffix","suffix","getKindEntities","entities","select","length","kindConfig"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { upperFirst, camelCase, map, find, get, startCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { controls } from '@wordpress/data';\nimport { apiFetch } from '@wordpress/data-controls';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport { STORE_NAME } from './name';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nexport const defaultEntities = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tname: '__unstableBase',\n\t\tkind: 'root',\n\t\tbaseURL: '',\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn get( record, [ 'title' ], __( 'Site Title' ) );\n\t\t},\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n];\n\nexport const kinds = [\n\t{ name: 'postType', loadEntities: loadPostTypeEntities },\n\t{ name: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nfunction* loadPostTypeEntities() {\n\tconst postTypes = yield apiFetch( { path: '/wp/v2/types?context=edit' } );\n\treturn map( postTypes, ( postType, name ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: '/wp/v2/' + postType.rest_base,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.labels.singular_name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate ? startCase( record.slug ) : String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nfunction* loadTaxonomyEntities() {\n\tconst taxonomies = yield apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=edit',\n\t} );\n\treturn map( taxonomies, ( taxonomy, name ) => {\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: '/wp/v2/' + taxonomy.rest_base,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.labels.singular_name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entity = find( defaultEntities, { kind, name } );\n\tconst kindPrefix = kind === 'root' ? '' : upperFirst( camelCase( kind ) );\n\tconst nameSuffix =\n\t\tupperFirst( camelCase( name ) ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && entity.plural\n\t\t\t? upperFirst( camelCase( entity.plural ) )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {Array} Entities\n */\nexport function* getKindEntities( kind ) {\n\tlet entities = yield controls.select(\n\t\tSTORE_NAME,\n\t\t'getEntitiesByKind',\n\t\tkind\n\t);\n\tif ( entities && entities.length !== 0 ) {\n\t\treturn entities;\n\t}\n\n\tconst kindConfig = find( kinds, { name: kind } );\n\tif ( ! kindConfig ) {\n\t\treturn [];\n\t}\n\n\tentities = yield kindConfig.loadEntities();\n\tyield addEntities( entities );\n\n\treturn entities;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/entities.js"],"names":["upperFirst","camelCase","map","find","get","startCase","apiFetch","__","addEntities","DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","defaultEntities","label","name","kind","baseURL","getTitle","record","key","baseURLParams","context","rawAttributes","plural","transientEdits","blocks","description","title","rendered","kinds","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","path","postType","isTemplate","includes","namespace","rest_namespace","rest_base","labels","singular_name","selection","mergedEdits","meta","slug","String","id","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","getMethodName","prefix","usePlural","entity","kindPrefix","nameSuffix","suffix","getKindEntities","select","dispatch","entities","getEntitiesByKind","length","kindConfig"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { upperFirst, camelCase, map, find, get, startCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nexport const defaultEntities = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tname: '__unstableBase',\n\t\tkind: 'root',\n\t\tbaseURL: '/',\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn get( record, [ 'title' ], __( 'Site Title' ) );\n\t\t},\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title', 'content' ],\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n\t{\n\t\tname: 'navigationArea',\n\t\tkind: 'root',\n\t\tbaseURL: '/__experimental/block-navigation-areas',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'navigationAreas',\n\t\tlabel: __( 'Navigation Area' ),\n\t\tkey: 'name',\n\t\tgetTitle: ( record ) => record?.description,\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // should be different than name\n\t\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'stylesheet',\n\t},\n];\n\nexport const kinds = [\n\t{ name: 'postType', loadEntities: loadPostTypeEntities },\n\t{ name: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = await apiFetch( { path: '/wp/v2/types?context=edit' } );\n\treturn map( postTypes, ( postType, name ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.labels.singular_name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate ? startCase( record.slug ) : String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=edit',\n\t} );\n\treturn map( taxonomies, ( taxonomy, name ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.labels.singular_name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entity = find( defaultEntities, { kind, name } );\n\tconst kindPrefix = kind === 'root' ? '' : upperFirst( camelCase( kind ) );\n\tconst nameSuffix =\n\t\tupperFirst( camelCase( name ) ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && entity.plural\n\t\t\t? upperFirst( camelCase( entity.plural ) )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {Array} Entities\n */\nexport const getKindEntities = ( kind ) => async ( { select, dispatch } ) => {\n\tlet entities = select.getEntitiesByKind( kind );\n\tif ( entities && entities.length !== 0 ) {\n\t\treturn entities;\n\t}\n\n\tconst kindConfig = find( kinds, { name: kind } );\n\tif ( ! kindConfig ) {\n\t\treturn [];\n\t}\n\n\tentities = await kindConfig.loadEntities();\n\tdispatch( addEntities( entities ) );\n\n\treturn entities;\n};\n"]}
@@ -39,7 +39,7 @@ const CACHE = new Map();
39
39
  */
40
40
 
41
41
  const fetchUrlData = async (url, options = {}) => {
42
- const endpoint = '/__experimental/url-details';
42
+ const endpoint = '/wp-block-editor/v1/url-details';
43
43
  const args = {
44
44
  url: prependHTTP(url)
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/fetch/__experimental-fetch-url-data.js"],"names":["apiFetch","addQueryArgs","prependHTTP","isURL","getProtocol","isValidProtocol","CACHE","Map","fetchUrlData","url","options","endpoint","args","Promise","reject","protocol","startsWith","test","has","get","path","then","res","set"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SACCC,YADD,EAECC,WAFD,EAGCC,KAHD,EAICC,WAJD,EAKCC,eALD,QAMO,gBANP;AAQA;AACA;AACA;AACA;AACA;;AACA,MAAMC,KAAK,GAAG,IAAIC,GAAJ,EAAd;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,OAAQC,GAAR,EAAaC,OAAO,GAAG,EAAvB,KAA+B;AACnD,QAAMC,QAAQ,GAAG,6BAAjB;AAEA,QAAMC,IAAI,GAAG;AACZH,IAAAA,GAAG,EAAEP,WAAW,CAAEO,GAAF;AADJ,GAAb;;AAIA,MAAK,CAAEN,KAAK,CAAEM,GAAF,CAAZ,EAAsB;AACrB,WAAOI,OAAO,CAACC,MAAR,CAAiB,GAAGL,GAAK,sBAAzB,CAAP;AACA,GATkD,CAWnD;AACA;;;AACA,QAAMM,QAAQ,GAAGX,WAAW,CAAEK,GAAF,CAA5B;;AAEA,MACC,CAAEJ,eAAe,CAAEU,QAAF,CAAjB,IACA,CAAEA,QAAQ,CAACC,UAAT,CAAqB,MAArB,CADF,IAEA,CAAE,uBAAuBC,IAAvB,CAA6BR,GAA7B,CAHH,EAIE;AACD,WAAOI,OAAO,CAACC,MAAR,CACL,GAAGL,GAAK,4DADH,CAAP;AAGA;;AAED,MAAKH,KAAK,CAACY,GAAN,CAAWT,GAAX,CAAL,EAAwB;AACvB,WAAOH,KAAK,CAACa,GAAN,CAAWV,GAAX,CAAP;AACA;;AAED,SAAOT,QAAQ,CAAE;AAChBoB,IAAAA,IAAI,EAAEnB,YAAY,CAAEU,QAAF,EAAYC,IAAZ,CADF;AAEhB,OAAGF;AAFa,GAAF,CAAR,CAGHW,IAHG,CAGKC,GAAF,IAAW;AACpBhB,IAAAA,KAAK,CAACiB,GAAN,CAAWd,GAAX,EAAgBa,GAAhB;AACA,WAAOA,GAAP;AACA,GANM,CAAP;AAOA,CApCD;;AAsCA,eAAed,YAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport {\n\taddQueryArgs,\n\tprependHTTP,\n\tisURL,\n\tgetProtocol,\n\tisValidProtocol,\n} from '@wordpress/url';\n\n/**\n * A simple in-memory cache for requests.\n * This avoids repeat HTTP requests which may be beneficial\n * for those wishing to preserve low-bandwidth.\n */\nconst CACHE = new Map();\n\n/**\n * @typedef WPRemoteUrlData\n *\n * @property {string} title contents of the remote URL's `<title>` tag.\n */\n\n/**\n * Fetches data about a remote URL.\n * eg: <title> tag, favicon...etc.\n *\n * @async\n * @param {string} url the URL to request details from.\n * @param {Object?} options any options to pass to the underlying fetch.\n * @example\n * ```js\n * import { __experimentalFetchUrlData as fetchUrlData } from '@wordpress/core-data';\n *\n * //...\n *\n * export function initialize( id, settings ) {\n *\n * settings.__experimentalFetchUrlData = (\n * url\n * ) => fetchUrlData( url );\n * ```\n * @return {Promise< WPRemoteUrlData[] >} Remote URL data.\n */\nconst fetchUrlData = async ( url, options = {} ) => {\n\tconst endpoint = '/__experimental/url-details';\n\n\tconst args = {\n\t\turl: prependHTTP( url ),\n\t};\n\n\tif ( ! isURL( url ) ) {\n\t\treturn Promise.reject( `${ url } is not a valid URL.` );\n\t}\n\n\t// Test for \"http\" based URL as it is possible for valid\n\t// yet unusable URLs such as `tel:123456` to be passed.\n\tconst protocol = getProtocol( url );\n\n\tif (\n\t\t! isValidProtocol( protocol ) ||\n\t\t! protocol.startsWith( 'http' ) ||\n\t\t! /^https?:\\/\\/[^\\/\\s]/i.test( url )\n\t) {\n\t\treturn Promise.reject(\n\t\t\t`${ url } does not have a valid protocol. URLs must be \"http\" based`\n\t\t);\n\t}\n\n\tif ( CACHE.has( url ) ) {\n\t\treturn CACHE.get( url );\n\t}\n\n\treturn apiFetch( {\n\t\tpath: addQueryArgs( endpoint, args ),\n\t\t...options,\n\t} ).then( ( res ) => {\n\t\tCACHE.set( url, res );\n\t\treturn res;\n\t} );\n};\n\nexport default fetchUrlData;\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/fetch/__experimental-fetch-url-data.js"],"names":["apiFetch","addQueryArgs","prependHTTP","isURL","getProtocol","isValidProtocol","CACHE","Map","fetchUrlData","url","options","endpoint","args","Promise","reject","protocol","startsWith","test","has","get","path","then","res","set"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SACCC,YADD,EAECC,WAFD,EAGCC,KAHD,EAICC,WAJD,EAKCC,eALD,QAMO,gBANP;AAQA;AACA;AACA;AACA;AACA;;AACA,MAAMC,KAAK,GAAG,IAAIC,GAAJ,EAAd;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,OAAQC,GAAR,EAAaC,OAAO,GAAG,EAAvB,KAA+B;AACnD,QAAMC,QAAQ,GAAG,iCAAjB;AAEA,QAAMC,IAAI,GAAG;AACZH,IAAAA,GAAG,EAAEP,WAAW,CAAEO,GAAF;AADJ,GAAb;;AAIA,MAAK,CAAEN,KAAK,CAAEM,GAAF,CAAZ,EAAsB;AACrB,WAAOI,OAAO,CAACC,MAAR,CAAiB,GAAGL,GAAK,sBAAzB,CAAP;AACA,GATkD,CAWnD;AACA;;;AACA,QAAMM,QAAQ,GAAGX,WAAW,CAAEK,GAAF,CAA5B;;AAEA,MACC,CAAEJ,eAAe,CAAEU,QAAF,CAAjB,IACA,CAAEA,QAAQ,CAACC,UAAT,CAAqB,MAArB,CADF,IAEA,CAAE,uBAAuBC,IAAvB,CAA6BR,GAA7B,CAHH,EAIE;AACD,WAAOI,OAAO,CAACC,MAAR,CACL,GAAGL,GAAK,4DADH,CAAP;AAGA;;AAED,MAAKH,KAAK,CAACY,GAAN,CAAWT,GAAX,CAAL,EAAwB;AACvB,WAAOH,KAAK,CAACa,GAAN,CAAWV,GAAX,CAAP;AACA;;AAED,SAAOT,QAAQ,CAAE;AAChBoB,IAAAA,IAAI,EAAEnB,YAAY,CAAEU,QAAF,EAAYC,IAAZ,CADF;AAEhB,OAAGF;AAFa,GAAF,CAAR,CAGHW,IAHG,CAGKC,GAAF,IAAW;AACpBhB,IAAAA,KAAK,CAACiB,GAAN,CAAWd,GAAX,EAAgBa,GAAhB;AACA,WAAOA,GAAP;AACA,GANM,CAAP;AAOA,CApCD;;AAsCA,eAAed,YAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport {\n\taddQueryArgs,\n\tprependHTTP,\n\tisURL,\n\tgetProtocol,\n\tisValidProtocol,\n} from '@wordpress/url';\n\n/**\n * A simple in-memory cache for requests.\n * This avoids repeat HTTP requests which may be beneficial\n * for those wishing to preserve low-bandwidth.\n */\nconst CACHE = new Map();\n\n/**\n * @typedef WPRemoteUrlData\n *\n * @property {string} title contents of the remote URL's `<title>` tag.\n */\n\n/**\n * Fetches data about a remote URL.\n * eg: <title> tag, favicon...etc.\n *\n * @async\n * @param {string} url the URL to request details from.\n * @param {Object?} options any options to pass to the underlying fetch.\n * @example\n * ```js\n * import { __experimentalFetchUrlData as fetchUrlData } from '@wordpress/core-data';\n *\n * //...\n *\n * export function initialize( id, settings ) {\n *\n * settings.__experimentalFetchUrlData = (\n * url\n * ) => fetchUrlData( url );\n * ```\n * @return {Promise< WPRemoteUrlData[] >} Remote URL data.\n */\nconst fetchUrlData = async ( url, options = {} ) => {\n\tconst endpoint = '/wp-block-editor/v1/url-details';\n\n\tconst args = {\n\t\turl: prependHTTP( url ),\n\t};\n\n\tif ( ! isURL( url ) ) {\n\t\treturn Promise.reject( `${ url } is not a valid URL.` );\n\t}\n\n\t// Test for \"http\" based URL as it is possible for valid\n\t// yet unusable URLs such as `tel:123456` to be passed.\n\tconst protocol = getProtocol( url );\n\n\tif (\n\t\t! isValidProtocol( protocol ) ||\n\t\t! protocol.startsWith( 'http' ) ||\n\t\t! /^https?:\\/\\/[^\\/\\s]/i.test( url )\n\t) {\n\t\treturn Promise.reject(\n\t\t\t`${ url } does not have a valid protocol. URLs must be \"http\" based`\n\t\t);\n\t}\n\n\tif ( CACHE.has( url ) ) {\n\t\treturn CACHE.get( url );\n\t}\n\n\treturn apiFetch( {\n\t\tpath: addQueryArgs( endpoint, args ),\n\t\t...options,\n\t} ).then( ( res ) => {\n\t\tCACHE.set( url, res );\n\t\treturn res;\n\t} );\n};\n\nexport default fetchUrlData;\n"]}