@wordpress/core-data 4.0.1-next.253d9b6e21.0 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +11 -3
  2. package/build/actions.js +124 -117
  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 +24 -18
  7. package/build/entities.js.map +1 -1
  8. package/build/index.js +9 -17
  9. package/build/index.js.map +1 -1
  10. package/build/locks/actions.js +17 -77
  11. package/build/locks/actions.js.map +1 -1
  12. package/build/locks/engine.js +77 -0
  13. package/build/locks/engine.js.map +1 -0
  14. package/build/locks/reducer.js +1 -5
  15. package/build/locks/reducer.js.map +1 -1
  16. package/build/locks/selectors.js +6 -6
  17. package/build/locks/selectors.js.map +1 -1
  18. package/build/queried-data/get-query-parts.js +9 -4
  19. package/build/queried-data/get-query-parts.js.map +1 -1
  20. package/build/queried-data/selectors.js +3 -9
  21. package/build/queried-data/selectors.js.map +1 -1
  22. package/build/reducer.js +1 -4
  23. package/build/reducer.js.map +1 -1
  24. package/build/resolvers.js +120 -91
  25. package/build/resolvers.js.map +1 -1
  26. package/build/selectors.js +31 -11
  27. package/build/selectors.js.map +1 -1
  28. package/build/utils/if-not-resolved.js +6 -21
  29. package/build/utils/if-not-resolved.js.map +1 -1
  30. package/build/utils/index.js +8 -0
  31. package/build/utils/index.js.map +1 -1
  32. package/build/utils/is-raw-attribute.js +19 -0
  33. package/build/utils/is-raw-attribute.js.map +1 -0
  34. package/build-module/actions.js +106 -107
  35. package/build-module/actions.js.map +1 -1
  36. package/build-module/batch/default-processor.js +57 -27
  37. package/build-module/batch/default-processor.js.map +1 -1
  38. package/build-module/entities.js +19 -14
  39. package/build-module/entities.js.map +1 -1
  40. package/build-module/index.js +10 -14
  41. package/build-module/index.js.map +1 -1
  42. package/build-module/locks/actions.js +14 -68
  43. package/build-module/locks/actions.js.map +1 -1
  44. package/build-module/locks/engine.js +66 -0
  45. package/build-module/locks/engine.js.map +1 -0
  46. package/build-module/locks/reducer.js +1 -2
  47. package/build-module/locks/reducer.js.map +1 -1
  48. package/build-module/locks/selectors.js +4 -4
  49. package/build-module/locks/selectors.js.map +1 -1
  50. package/build-module/queried-data/get-query-parts.js +9 -4
  51. package/build-module/queried-data/get-query-parts.js.map +1 -1
  52. package/build-module/queried-data/selectors.js +3 -9
  53. package/build-module/queried-data/selectors.js.map +1 -1
  54. package/build-module/reducer.js +1 -3
  55. package/build-module/reducer.js.map +1 -1
  56. package/build-module/resolvers.js +94 -74
  57. package/build-module/resolvers.js.map +1 -1
  58. package/build-module/selectors.js +30 -10
  59. package/build-module/selectors.js.map +1 -1
  60. package/build-module/utils/if-not-resolved.js +6 -19
  61. package/build-module/utils/if-not-resolved.js.map +1 -1
  62. package/build-module/utils/index.js +1 -0
  63. package/build-module/utils/index.js.map +1 -1
  64. package/build-module/utils/is-raw-attribute.js +12 -0
  65. package/build-module/utils/is-raw-attribute.js.map +1 -0
  66. package/package.json +11 -12
  67. package/src/actions.js +112 -189
  68. package/src/batch/default-processor.js +57 -26
  69. package/src/batch/test/default-processor.js +53 -26
  70. package/src/entities.js +15 -16
  71. package/src/index.js +7 -10
  72. package/src/locks/actions.js +10 -61
  73. package/src/locks/engine.js +43 -0
  74. package/src/locks/reducer.js +1 -3
  75. package/src/locks/selectors.js +4 -4
  76. package/src/locks/test/engine.js +135 -0
  77. package/src/locks/test/reducer.js +1 -1
  78. package/src/locks/test/selectors.js +105 -124
  79. package/src/queried-data/get-query-parts.js +11 -6
  80. package/src/queried-data/selectors.js +2 -9
  81. package/src/queried-data/test/get-query-parts.js +1 -1
  82. package/src/queried-data/test/selectors.js +1 -0
  83. package/src/reducer.js +0 -2
  84. package/src/resolvers.js +86 -106
  85. package/src/selectors.js +113 -40
  86. package/src/test/actions.js +243 -172
  87. package/src/test/entities.js +40 -26
  88. package/src/test/resolvers.js +270 -223
  89. package/src/test/selectors.js +71 -0
  90. package/src/utils/if-not-resolved.js +8 -26
  91. package/src/utils/index.js +1 -0
  92. package/src/utils/is-raw-attribute.js +11 -0
  93. package/src/utils/test/if-not-resolved.js +28 -27
  94. package/src/utils/test/is-raw-attribute.js +22 -0
  95. package/build/controls.js +0 -44
  96. package/build/controls.js.map +0 -1
  97. package/build/locks/index.js +0 -47
  98. package/build/locks/index.js.map +0 -1
  99. package/build-module/controls.js +0 -31
  100. package/build-module/controls.js.map +0 -1
  101. package/build-module/locks/index.js +0 -4
  102. package/build-module/locks/index.js.map +0 -1
  103. package/src/controls.js +0 -31
  104. package/src/locks/index.js +0 -3
  105. package/src/locks/test/actions.js +0 -307
  106. package/src/test/integration.js +0 -264
@@ -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","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","receiveThemeSupports","themeSupports","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","id","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';\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 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 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 edits = select.getEntityRecordNonTransientEdits(\n\t\tkind,\n\t\tname,\n\t\trecordId\n\t);\n\tconst record = { id: 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,16 +6,15 @@ 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',
@@ -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',
@@ -172,8 +173,8 @@ export const prePersistPostType = (persistedRecord, edits) => {
172
173
  * @return {Promise} Entities promise
173
174
  */
174
175
 
175
- function* loadPostTypeEntities() {
176
- const postTypes = yield apiFetch({
176
+ async function loadPostTypeEntities() {
177
+ const postTypes = await apiFetch({
177
178
  path: '/wp/v2/types?context=edit'
178
179
  });
179
180
  return map(postTypes, (postType, name) => {
@@ -193,6 +194,7 @@ function* loadPostTypeEntities() {
193
194
  mergedEdits: {
194
195
  meta: true
195
196
  },
197
+ rawAttributes: POST_RAW_ATTRIBUTES,
196
198
  getTitle: record => {
197
199
  var _record$title;
198
200
 
@@ -210,8 +212,8 @@ function* loadPostTypeEntities() {
210
212
  */
211
213
 
212
214
 
213
- function* loadTaxonomyEntities() {
214
- const taxonomies = yield apiFetch({
215
+ async function loadTaxonomyEntities() {
216
+ const taxonomies = await apiFetch({
215
217
  path: '/wp/v2/taxonomies?context=edit'
216
218
  });
217
219
  return map(taxonomies, (taxonomy, name) => {
@@ -256,8 +258,11 @@ export const getMethodName = (kind, name, prefix = 'get', usePlural = false) =>
256
258
  * @return {Array} Entities
257
259
  */
258
260
 
259
- export function* getKindEntities(kind) {
260
- let entities = yield controls.select(STORE_NAME, 'getEntitiesByKind', kind);
261
+ export const getKindEntities = kind => async ({
262
+ select,
263
+ dispatch
264
+ }) => {
265
+ let entities = select.getEntitiesByKind(kind);
261
266
 
262
267
  if (entities && entities.length !== 0) {
263
268
  return entities;
@@ -271,8 +276,8 @@ export function* getKindEntities(kind) {
271
276
  return [];
272
277
  }
273
278
 
274
- entities = yield kindConfig.loadEntities();
275
- yield addEntities(entities);
279
+ entities = await kindConfig.loadEntities();
280
+ dispatch(addEntities(entities));
276
281
  return entities;
277
- }
282
+ };
278
283
  //# 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","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","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];\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\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\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\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 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"]}
@@ -2,7 +2,6 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { createReduxStore, register } from '@wordpress/data';
5
- import { controls } from '@wordpress/data-controls';
6
5
  /**
7
6
  * Internal dependencies
8
7
  */
@@ -11,9 +10,7 @@ import reducer from './reducer';
11
10
  import * as selectors from './selectors';
12
11
  import * as actions from './actions';
13
12
  import * as resolvers from './resolvers';
14
- import * as locksSelectors from './locks/selectors';
15
- import * as locksActions from './locks/actions';
16
- import customControls from './controls';
13
+ import createLocksActions from './locks/actions';
17
14
  import { defaultEntities, getMethodName } from './entities';
18
15
  import { STORE_NAME } from './name'; // The entity selectors/resolvers and actions are shortcuts to their generic equivalents
19
16
  // (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)
@@ -60,23 +57,21 @@ const entityActions = defaultEntities.reduce((result, entity) => {
60
57
 
61
58
  return result;
62
59
  }, {});
63
- const storeConfig = {
60
+
61
+ const storeConfig = () => ({
64
62
  reducer,
65
- controls: { ...customControls,
66
- ...controls
67
- },
68
63
  actions: { ...actions,
69
64
  ...entityActions,
70
- ...locksActions
65
+ ...createLocksActions()
71
66
  },
72
67
  selectors: { ...selectors,
73
- ...entitySelectors,
74
- ...locksSelectors
68
+ ...entitySelectors
75
69
  },
76
70
  resolvers: { ...resolvers,
77
71
  ...entityResolvers
78
- }
79
- };
72
+ },
73
+ __experimentalUseThunks: true
74
+ });
80
75
  /**
81
76
  * Store definition for the code data namespace.
82
77
  *
@@ -85,7 +80,8 @@ const storeConfig = {
85
80
  * @type {Object}
86
81
  */
87
82
 
88
- export const store = createReduxStore(STORE_NAME, storeConfig);
83
+
84
+ export const store = createReduxStore(STORE_NAME, storeConfig());
89
85
  register(store);
90
86
  export { default as EntityProvider } from './entity-provider';
91
87
  export * from './entity-provider';
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["createReduxStore","register","controls","reducer","selectors","actions","resolvers","locksSelectors","locksActions","customControls","defaultEntities","getMethodName","STORE_NAME","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","args","getEntityRecords","entityResolvers","pluralMethodName","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","store","default","EntityProvider"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gBAAT,EAA2BC,QAA3B,QAA2C,iBAA3C;AACA,SAASC,QAAT,QAAyB,0BAAzB;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AACA,OAAO,KAAKC,OAAZ,MAAyB,WAAzB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AACA,OAAO,KAAKC,cAAZ,MAAgC,mBAAhC;AACA,OAAO,KAAKC,YAAZ,MAA8B,iBAA9B;AACA,OAAOC,cAAP,MAA2B,YAA3B;AACA,SAASC,eAAT,EAA0BC,aAA1B,QAA+C,YAA/C;AACA,SAASC,UAAT,QAA2B,QAA3B,C,CAEA;AACA;AACA;AACA;;AAEA,MAAMC,eAAe,GAAGH,eAAe,CAACI,MAAhB,CAAwB,CAAEC,MAAF,EAAUC,MAAV,KAAsB;AACrE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiBF,MAAvB;;AACAD,EAAAA,MAAM,CAAEJ,aAAa,CAAEM,IAAF,EAAQC,IAAR,CAAf,CAAN,GAAwC,CAAEC,KAAF,EAASC,GAAT,EAAcC,KAAd,KACvCjB,SAAS,CAACkB,eAAV,CAA2BH,KAA3B,EAAkCF,IAAlC,EAAwCC,IAAxC,EAA8CE,GAA9C,EAAmDC,KAAnD,CADD;;AAEAN,EAAAA,MAAM,CAAEJ,aAAa,CAAEM,IAAF,EAAQC,IAAR,EAAc,KAAd,EAAqB,IAArB,CAAf,CAAN,GAAqD,CAAEC,KAAF,EAAS,GAAGI,IAAZ,KACpDnB,SAAS,CAACoB,gBAAV,CAA4BL,KAA5B,EAAmCF,IAAnC,EAAyCC,IAAzC,EAA+C,GAAGK,IAAlD,CADD;;AAEA,SAAOR,MAAP;AACA,CAPuB,EAOrB,EAPqB,CAAxB;AASA,MAAMU,eAAe,GAAGf,eAAe,CAACI,MAAhB,CAAwB,CAAEC,MAAF,EAAUC,MAAV,KAAsB;AACrE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiBF,MAAvB;;AACAD,EAAAA,MAAM,CAAEJ,aAAa,CAAEM,IAAF,EAAQC,IAAR,CAAf,CAAN,GAAwC,CAAEE,GAAF,EAAOC,KAAP,KACvCf,SAAS,CAACgB,eAAV,CAA2BL,IAA3B,EAAiCC,IAAjC,EAAuCE,GAAvC,EAA4CC,KAA5C,CADD;;AAEA,QAAMK,gBAAgB,GAAGf,aAAa,CAAEM,IAAF,EAAQC,IAAR,EAAc,KAAd,EAAqB,IAArB,CAAtC;;AACAH,EAAAA,MAAM,CAAEW,gBAAF,CAAN,GAA6B,CAAE,GAAGH,IAAL,KAC5BjB,SAAS,CAACkB,gBAAV,CAA4BP,IAA5B,EAAkCC,IAAlC,EAAwC,GAAGK,IAA3C,CADD;;AAEAR,EAAAA,MAAM,CAAEW,gBAAF,CAAN,CAA2BC,gBAA3B,GAA8C,CAAEC,MAAF,EAAU,GAAGL,IAAb,KAC7CjB,SAAS,CAACkB,gBAAV,CAA2BG,gBAA3B,CACCC,MADD,EAECX,IAFD,EAGCC,IAHD,EAIC,GAAGK,IAJJ,CADD;;AAOA,SAAOR,MAAP;AACA,CAfuB,EAerB,EAfqB,CAAxB;AAiBA,MAAMc,aAAa,GAAGnB,eAAe,CAACI,MAAhB,CAAwB,CAAEC,MAAF,EAAUC,MAAV,KAAsB;AACnE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiBF,MAAvB;;AACAD,EAAAA,MAAM,CAAEJ,aAAa,CAAEM,IAAF,EAAQC,IAAR,EAAc,MAAd,CAAf,CAAN,GAAkDE,GAAF,IAC/Cf,OAAO,CAACyB,gBAAR,CAA0Bb,IAA1B,EAAgCC,IAAhC,EAAsCE,GAAtC,CADD;;AAEAL,EAAAA,MAAM,CAAEJ,aAAa,CAAEM,IAAF,EAAQC,IAAR,EAAc,QAAd,CAAf,CAAN,GAAkD,CAAEE,GAAF,EAAOC,KAAP,KACjDhB,OAAO,CAAC0B,kBAAR,CAA4Bd,IAA5B,EAAkCC,IAAlC,EAAwCE,GAAxC,EAA6CC,KAA7C,CADD;;AAEA,SAAON,MAAP;AACA,CAPqB,EAOnB,EAPmB,CAAtB;AASA,MAAMiB,WAAW,GAAG;AACnB7B,EAAAA,OADmB;AAEnBD,EAAAA,QAAQ,EAAE,EAAE,GAAGO,cAAL;AAAqB,OAAGP;AAAxB,GAFS;AAGnBG,EAAAA,OAAO,EAAE,EAAE,GAAGA,OAAL;AAAc,OAAGwB,aAAjB;AAAgC,OAAGrB;AAAnC,GAHU;AAInBJ,EAAAA,SAAS,EAAE,EAAE,GAAGA,SAAL;AAAgB,OAAGS,eAAnB;AAAoC,OAAGN;AAAvC,GAJQ;AAKnBD,EAAAA,SAAS,EAAE,EAAE,GAAGA,SAAL;AAAgB,OAAGmB;AAAnB;AALQ,CAApB;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMQ,KAAK,GAAGjC,gBAAgB,CAAEY,UAAF,EAAcoB,WAAd,CAA9B;AAEP/B,QAAQ,CAAEgC,KAAF,CAAR;AAEA,SAASC,OAAO,IAAIC,cAApB,QAA0C,mBAA1C;AACA,cAAc,mBAAd;AACA,cAAc,SAAd","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\nimport { controls } from '@wordpress/data-controls';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport * as locksSelectors from './locks/selectors';\nimport * as locksActions from './locks/actions';\nimport customControls from './controls';\nimport { defaultEntities, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)\n// Instead of getEntityRecord, the consumer could use more user-frieldly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, ...args ) =>\n\t\tselectors.getEntityRecords( state, kind, name, ...args );\n\treturn result;\n}, {} );\n\nconst entityResolvers = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action, ...args ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate(\n\t\t\taction,\n\t\t\tkind,\n\t\t\tname,\n\t\t\t...args\n\t\t);\n\treturn result;\n}, {} );\n\nconst entityActions = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = {\n\treducer,\n\tcontrols: { ...customControls, ...controls },\n\tactions: { ...actions, ...entityActions, ...locksActions },\n\tselectors: { ...selectors, ...entitySelectors, ...locksSelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n};\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './fetch';\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["createReduxStore","register","reducer","selectors","actions","resolvers","createLocksActions","defaultEntities","getMethodName","STORE_NAME","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","args","getEntityRecords","entityResolvers","pluralMethodName","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","__experimentalUseThunks","store","default","EntityProvider"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { defaultEntities, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)\n// Instead of getEntityRecord, the consumer could use more user-frieldly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, ...args ) =>\n\t\tselectors.getEntityRecords( state, kind, name, ...args );\n\treturn result;\n}, {} );\n\nconst entityResolvers = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action, ...args ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate(\n\t\t\taction,\n\t\t\tkind,\n\t\t\tname,\n\t\t\t...args\n\t\t);\n\treturn result;\n}, {} );\n\nconst entityActions = defaultEntities.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n\t__experimentalUseThunks: true,\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './fetch';\n"]}