@strapi/admin 4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +14 -0
  3. package/admin/src/components/LocalesProvider/__mocks__/useLocalesProvider.js +7 -0
  4. package/admin/src/content-manager/components/DynamicZone/utils/select.js +1 -1
  5. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +3 -1
  6. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findAllAndReplace.js +10 -3
  7. package/admin/src/content-manager/components/FieldComponent/utils/select.js +2 -1
  8. package/admin/src/content-manager/components/InputUID/endActionStyle.js +4 -13
  9. package/admin/src/content-manager/components/InputUID/index.js +94 -71
  10. package/admin/src/content-manager/components/Inputs/utils/getInputType.js +1 -1
  11. package/admin/src/content-manager/components/Inputs/utils/select.js +1 -1
  12. package/admin/src/content-manager/hooks/useContentTypeLayout/index.js +1 -2
  13. package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +4 -1
  14. package/admin/src/content-manager/pages/CollectionTypeRecursivePath/index.js +1 -2
  15. package/admin/src/content-manager/pages/EditSettingsView/init.js +3 -1
  16. package/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +2 -4
  17. package/admin/src/content-manager/pages/EditView/DeleteLink/utils/select.js +1 -1
  18. package/admin/src/content-manager/pages/EditView/utils/createAttributesLayout.js +2 -1
  19. package/admin/src/content-manager/pages/EditView/utils/getFieldsActionMatchingPermissions.js +2 -1
  20. package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
  21. package/admin/src/content-manager/utils/createDefaultForm.js +2 -2
  22. package/admin/src/content-manager/utils/formatLayoutToApi.js +2 -1
  23. package/admin/src/content-manager/utils/getFieldName.js +1 -1
  24. package/admin/src/content-manager/utils/mergeMetasWithSchema.js +1 -1
  25. package/admin/src/content-manager/utils/paths.js +1 -1
  26. package/admin/src/content-manager/utils/removePasswordFieldsFromData.js +1 -1
  27. package/admin/src/hooks/useConfigurations/__mocks__/index.js +7 -0
  28. package/admin/src/hooks/useRegenerate/index.js +12 -7
  29. package/admin/src/hooks/useSettingsForm/index.js +3 -3
  30. package/admin/src/hooks/useSettingsForm/reducer.js +3 -1
  31. package/admin/src/hooks/useSettingsMenu/reducer.js +1 -1
  32. package/admin/src/pages/AuthPage/components/Register/index.js +46 -38
  33. package/admin/src/pages/AuthPage/reducer.js +1 -1
  34. package/admin/src/pages/SettingsPage/components/Tokens/FormHead/index.js +4 -0
  35. package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +5 -3
  36. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +1 -1
  37. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js +1 -1
  38. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js +6 -8
  39. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/utils/createDefaultConditionsForm.js +1 -1
  40. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/generateCheckboxesActions.js +2 -1
  41. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/getRowLabelCheckboxeState.js +2 -1
  42. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/getRowLabelCheckboxesState.js +1 -1
  43. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/reducer.js +6 -1
  44. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultCTFormFromLayout.js +5 -1
  45. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultPluginsFormFromLayout.js +1 -2
  46. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatContentTypesPermissionToAPI.js +2 -2
  47. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateConditionsToFalse.js +4 -1
  48. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js +1 -1
  49. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/formatActions.js +1 -1
  50. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/createArrayOfValues.js +2 -1
  51. package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +1 -1
  52. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +47 -5
  53. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +27 -5
  54. package/admin/src/pages/SettingsPage/pages/Users/ProtectedEditPage/index.js +2 -2
  55. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/utils/formatData.js +1 -7
  56. package/admin/src/permissions/index.js +1 -1
  57. package/admin/src/translations/en.json +1 -0
  58. package/admin/src/utils/getAttributesToDisplay.js +2 -4
  59. package/admin/src/utils/getExistingActions.js +1 -3
  60. package/admin/src/utils/sortLinks.js +1 -1
  61. package/build/1387.84b454d3.chunk.js +1 -0
  62. package/build/1657.45231968.chunk.js +168 -0
  63. package/build/3081.bcf9a12f.chunk.js +108 -0
  64. package/build/462.8fff7f3b.chunk.js +71 -0
  65. package/build/4628.20631dd1.chunk.js +1 -0
  66. package/build/5542.b8240e3f.chunk.js +70 -0
  67. package/build/5563.905daa13.chunk.js +79 -0
  68. package/build/6404.68405699.chunk.js +100 -0
  69. package/build/7259.b7d00cea.chunk.js +1 -0
  70. package/build/8694.6522968d.chunk.js +247 -0
  71. package/build/9347.058ddb22.chunk.js +1 -0
  72. package/build/Admin-authenticatedApp.31bf88ef.chunk.js +79 -0
  73. package/build/Admin_InternalErrorPage.15c6bf07.chunk.js +1 -0
  74. package/build/Admin_homePage.da2181fe.chunk.js +73 -0
  75. package/build/Admin_marketplace.d99044eb.chunk.js +31 -0
  76. package/build/Admin_pluginsPage.f6b52ee9.chunk.js +6 -0
  77. package/build/Admin_profilePage.9112cffc.chunk.js +15 -0
  78. package/build/Admin_settingsPage.cb63220f.chunk.js +79 -0
  79. package/build/Upload_ConfigureTheView.eaaec495.chunk.js +1 -0
  80. package/build/admin-app.8cde5b22.chunk.js +110 -0
  81. package/build/admin-edit-roles-page.4f1858e9.chunk.js +280 -0
  82. package/build/admin-edit-users.7e14d85f.chunk.js +10 -0
  83. package/build/admin-roles-list.97e198f9.chunk.js +31 -0
  84. package/build/admin-users.d02de059.chunk.js +34 -0
  85. package/build/api-tokens-create-page.97595e12.chunk.js +1 -0
  86. package/build/api-tokens-edit-page.cd36e30e.chunk.js +1 -0
  87. package/build/api-tokens-list-page.6757c7b9.chunk.js +16 -0
  88. package/build/audit-logs-settings-page.ca9a3c46.chunk.js +76 -0
  89. package/build/content-manager.de0ee3e5.chunk.js +1132 -0
  90. package/build/content-type-builder-list-view.9c2c020c.chunk.js +214 -0
  91. package/build/content-type-builder.ec5ac7ab.chunk.js +126 -0
  92. package/build/email-settings-page.1095e1ab.chunk.js +10 -0
  93. package/build/{en-json.01a88a30.chunk.js → en-json.b052667a.chunk.js} +1 -1
  94. package/build/{highlight.js.26ef649f.chunk.js → highlight.js.28a1547e.chunk.js} +2 -2
  95. package/build/i18n-settings-page.7d80aae0.chunk.js +60 -0
  96. package/build/index.html +1 -1
  97. package/build/main.d40f9ca1.js +2280 -0
  98. package/build/{runtime~main.a40b1b57.js → runtime~main.7cdc9956.js} +1 -1
  99. package/build/sso-settings-page.1dd4886e.chunk.js +1 -0
  100. package/build/transfer-tokens-create-page.ec2ca215.chunk.js +1 -0
  101. package/build/transfer-tokens-edit-page.22bf28e5.chunk.js +1 -0
  102. package/build/transfer-tokens-list-page.cf8c77f2.chunk.js +16 -0
  103. package/build/upload-settings.945fdcfa.chunk.js +13 -0
  104. package/build/upload-translation-fr-json.baab9911.chunk.js +1 -0
  105. package/build/{upload-translation-th-json.3847dae0.chunk.js → upload-translation-th-json.98d35574.chunk.js} +1 -1
  106. package/build/upload.a86b1054.chunk.js +33 -0
  107. package/build/users-advanced-settings-page.5b5a9baa.chunk.js +8 -0
  108. package/build/users-email-settings-page.e5506eb4.chunk.js +23 -0
  109. package/build/users-providers-settings-page.e32089c2.chunk.js +28 -0
  110. package/build/users-roles-settings-page.a5c5b0df.chunk.js +30 -0
  111. package/build/webhook-edit-page.213f0075.chunk.js +75 -0
  112. package/build/webhook-list-page.5beb2a5c.chunk.js +71 -0
  113. package/ee/server/bootstrap.js +3 -0
  114. package/ee/server/register.js +3 -2
  115. package/ee/server/services/audit-logs.js +75 -16
  116. package/ee/server/utils/persisted-tables.js +49 -0
  117. package/jest.config.front.js +1 -6
  118. package/package.json +21 -19
  119. package/server/middlewares/data-transfer.js +4 -1
  120. package/server/services/permission/permissions-manager/sanitize.js +2 -0
  121. package/webpack.config.js +1 -1
  122. package/build/2637.679b590b.chunk.js +0 -1
  123. package/build/4049.64715f20.chunk.js +0 -1
  124. package/build/5563.451e91ee.chunk.js +0 -30
  125. package/build/7112.2bf13da3.chunk.js +0 -14
  126. package/build/7259.7744297b.chunk.js +0 -1
  127. package/build/8469.853c822b.chunk.js +0 -1
  128. package/build/8580.b0dcf37c.chunk.js +0 -98
  129. package/build/9816.01ee964f.chunk.js +0 -2
  130. package/build/Admin-authenticatedApp.5aa08bf5.chunk.js +0 -79
  131. package/build/Admin_InternalErrorPage.4ad8b0df.chunk.js +0 -1
  132. package/build/Admin_homePage.1411fb7c.chunk.js +0 -68
  133. package/build/Admin_marketplace.0f6c8ee2.chunk.js +0 -22
  134. package/build/Admin_pluginsPage.15e3b0fd.chunk.js +0 -1
  135. package/build/Admin_profilePage.d2a8f9ab.chunk.js +0 -15
  136. package/build/Admin_settingsPage.489ec4eb.chunk.js +0 -9
  137. package/build/Upload_ConfigureTheView.34dde278.chunk.js +0 -1
  138. package/build/admin-app.4b313104.chunk.js +0 -112
  139. package/build/admin-edit-roles-page.3b196317.chunk.js +0 -216
  140. package/build/admin-edit-users.af3b0f15.chunk.js +0 -10
  141. package/build/admin-roles-list.0ad504a7.chunk.js +0 -2
  142. package/build/admin-users.af8c3123.chunk.js +0 -11
  143. package/build/api-tokens-create-page.2a6e22bd.chunk.js +0 -1
  144. package/build/api-tokens-edit-page.fa38cd63.chunk.js +0 -1
  145. package/build/api-tokens-list-page.93f24348.chunk.js +0 -16
  146. package/build/audit-logs-settings-page.7be97e82.chunk.js +0 -1
  147. package/build/content-manager.f530e141.chunk.js +0 -1139
  148. package/build/content-type-builder-list-view.cf38fe2f.chunk.js +0 -191
  149. package/build/content-type-builder.6ecd201d.chunk.js +0 -126
  150. package/build/email-settings-page.4bdbef9a.chunk.js +0 -3
  151. package/build/i18n-settings-page.2bb5be96.chunk.js +0 -1
  152. package/build/main.43b93ff3.js +0 -3843
  153. package/build/sso-settings-page.5a8588ef.chunk.js +0 -1
  154. package/build/transfer-tokens-create-page.a1f14bb1.chunk.js +0 -1
  155. package/build/transfer-tokens-edit-page.00ee1c74.chunk.js +0 -1
  156. package/build/transfer-tokens-list-page.ce37354b.chunk.js +0 -16
  157. package/build/upload-settings.0200561d.chunk.js +0 -1
  158. package/build/upload-translation-fr-json.84429734.chunk.js +0 -1
  159. package/build/upload.c7da1611.chunk.js +0 -13
  160. package/build/users-advanced-settings-page.c0cae03a.chunk.js +0 -1
  161. package/build/users-email-settings-page.a3c80419.chunk.js +0 -1
  162. package/build/users-providers-settings-page.5f86e45c.chunk.js +0 -1
  163. package/build/users-roles-settings-page.b02986df.chunk.js +0 -30
  164. package/build/webhook-edit-page.a2a2b7bb.chunk.js +0 -23
  165. package/build/webhook-list-page.029957a4.chunk.js +0 -1
@@ -0,0 +1,75 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{47272:function(te,O,t){t.d(O,{Z:function(){return Ie}});var e=t(32735),l=t(43383),T=t(27649),o=t(20108),k=t(53038),Z=t(67927),Y=t(60216),s=t.n(Y),g=t(2438),p=t(66456),N=t(29439),Se=t(82055),y=t(87933),fe=t(41415),Oe=t(17e3),ne=t(72850),se=t(15335),V=t(5803),le=t(10369),$=t(92802),j=t(67879),he=t(28847),w=t(49372),ie=t(8471),Ee=t(8284),ke=t(44426),Q=t(23940),de=t.n(Q);const d=({disabledEvents:n,name:r,events:a,inputValue:i,handleChange:m,handleChangeAll:x})=>{const u=a.filter(b=>!n.includes(b)),f=i.length===u.length,M=i.length>0,v=({target:{name:b}})=>{x({target:{name:b,value:!f}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(Ee.X,{indeterminate:M&&!f,"aria-label":"Select all entries",name:r,onChange:v,value:f},de()(r))),a.map(b=>e.createElement("td",{key:b},e.createElement(ke.C,{disabled:n.includes(b),"aria-label":b,name:b,value:i.includes(b),onValueChange:I=>m({target:{name:b,value:I}})}))))};d.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},d.propTypes={disabledEvents:s().array,events:s().array,inputValue:s().array,handleChange:s().func,handleChangeAll:s().func,name:s().string.isRequired};var D=d,X=n=>n.reduce((r,a)=>{const i=a.split(".")[0];return r[i]||(r[i]=[]),r[i].push(a),r},{});const R=ie.ZP.table`
2
+ td {
3
+ height: ${52/16}rem;
4
+ width: 10%;
5
+ vertical-align: middle;
6
+ text-align: center;
7
+ }
8
+
9
+ tbody tr:nth-child(odd) {
10
+ background: ${({theme:n})=>n.colors.neutral100};
11
+ }
12
+
13
+ tbody tr td:first-child {
14
+ padding-left: ${({theme:n})=>n.spaces[7]};
15
+ }
16
+ `,H={headers:{default:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}],draftAndPublish:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"},{id:"app.utils.publish",defaultMessage:"Publish"},{id:"app.utils.unpublish",defaultMessage:"Unpublish"}]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},ve=({isDraftAndPublish:n})=>{const r=n?H.headers.draftAndPublish:H.headers.default,a=n?H.events.draftAndPublish:H.events.default,{formatMessage:i}=(0,j.Z)(),{values:m,handleChange:x}=(0,$.u6)(),u="events",f=m.events,M=[],v=X(f),b=({target:{name:h,value:A}})=>{let K=new Set(f);A?K.add(h):K.delete(h),x({target:{name:u,value:Array.from(K)}})},I=({target:{name:h,value:A}})=>{let K=new Set(f);A?a[h].forEach(G=>{M.includes(G)||K.add(G)}):a[h].forEach(G=>K.delete(G)),x({target:{name:u,value:Array.from(K)}})};return e.createElement(y.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(he.Q,null,i({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(R,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),r.map(h=>h==="app.utils.publish"||h==="app.utils.unpublish"?e.createElement("td",{key:h.id,title:i({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(w.Z,{variant:"sigma",textColor:"neutral600"},i(h))):e.createElement("td",{key:h.id},e.createElement(w.Z,{variant:"sigma",textColor:"neutral600"},i(h)))))),e.createElement("tbody",null,Object.keys(a).map(h=>e.createElement(D,{disabledEvents:M,key:h,name:h,events:a[h],inputValue:v[h],handleChange:b,handleChangeAll:I})))))};ve.propTypes={isDraftAndPublish:s().bool.isRequired};var ce=ve,Le=t(19406),J=t(7563),Te=t(42623),ue=t(90333),be=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];const ae=({name:n,onChange:r,value:a,...i})=>{const[m,x]=(0,e.useState)(a?[...be,a]:be),u=M=>{r({target:{name:n,value:M}})},f=M=>{x(v=>[...v,M]),r({target:{name:n,value:M}})};return e.createElement(Te.X,{...i,onChange:u,onCreateOption:f,placeholder:"",value:a},m.map(M=>e.createElement(ue.O,{value:M,key:M},M)))};ae.defaultProps={value:void 0},ae.propTypes={name:s().string.isRequired,onChange:s().func.isRequired,value:s().string};var Ce=ae,ye=()=>{const{formatMessage:n}=(0,j.Z)(),{values:r,errors:a}=(0,$.u6)();return e.createElement(y.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(he.Q,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(ne.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement($.F2,{validateOnChange:!1,name:"headers",render:({push:i,remove:m})=>e.createElement(se.r,{gap:4},r.headers?.map((x,u)=>e.createElement(e.Fragment,{key:u},e.createElement(V.P,{col:6},e.createElement($.gN,{as:Ce,name:`headers.${u}.key`,"aria-label":`row ${u+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:a.headers?.[u]?.key&&n({id:a.headers[u]?.key,defaultMessage:a.headers[u]?.key})})),e.createElement(V.P,{col:6},e.createElement(y.k,{alignItems:"flex-end"},e.createElement(ne.x,{style:{flex:1}},e.createElement($.gN,{as:le.o,"aria-label":`row ${u+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${u}.value`,error:a.headers?.[u]?.value&&n({id:a.headers[u]?.value,defaultMessage:a.headers[u]?.value})})),e.createElement(y.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:a.headers?.[u]?.value?0:5},e.createElement(l.fG,{onClick:()=>r.headers.length!==1&&m(u),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:u+1})})))))),e.createElement(V.P,{col:12},e.createElement(J.A,{type:"button",onClick:()=>{i({key:"",value:""})},startIcon:e.createElement(Le.Z,null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},Re=t(27169),Me=t(35331);const q=ie.ZP.svg(({theme:n,color:r})=>`
17
+ width: ${12/16}rem;
18
+ height: ${12/16}rem;
19
+
20
+ path {
21
+ fill: ${n.colors[r]};
22
+ }
23
+ `),W=({isPending:n,statusCode:r})=>{const{formatMessage:a}=(0,j.Z)();return n?e.createElement(y.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Re.Z}),e.createElement(w.Z,null,a({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(y.k,{gap:2,alignItems:"center"},e.createElement(q,{as:p.Z,color:"success700"}),e.createElement(w.Z,null,a({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(y.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Me.Z,color:"danger700"}),e.createElement(w.Z,null,a({id:"Settings.error",defaultMessage:"error"})," ",r)):null};W.propTypes={isPending:s().bool.isRequired,statusCode:s().number},W.defaultProps={statusCode:void 0};const ge=({statusCode:n,message:r})=>{const{formatMessage:a}=(0,j.Z)();return n>=200&&n<300?e.createElement(y.k,{justifyContent:"flex-end"},e.createElement(w.Z,{textColor:"neutral600",ellipsis:!0},a({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(y.k,{justifyContent:"flex-end"},e.createElement(y.k,{maxWidth:(0,l.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(w.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};ge.propTypes={statusCode:s().number,message:s().string},ge.defaultProps={statusCode:void 0,message:void 0};const Pe=({onCancel:n})=>{const{formatMessage:r}=(0,j.Z)();return e.createElement(y.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(y.k,{gap:2,alignItems:"center"},e.createElement(w.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(q,{as:Me.Z,color:"neutral400"}))))};Pe.propTypes={onCancel:s().func.isRequired};const P=({isPending:n,onCancel:r,response:a})=>{const{statusCode:i,message:m}=a,{formatMessage:x}=(0,j.Z)();return e.createElement(ne.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(se.r,{gap:4,style:{alignItems:"center"}},e.createElement(V.P,{col:3},e.createElement(w.Z,null,x({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(V.P,{col:3},e.createElement(W,{isPending:n,statusCode:i})),e.createElement(V.P,{col:6},n?e.createElement(Pe,{onCancel:r}):e.createElement(ge,{statusCode:i,message:m}))))};P.defaultProps={isPending:!1,onCancel(){},response:{}},P.propTypes={isPending:s().bool,onCancel:s().func,response:s().object};var xe=P,F=t(24346);const Ae=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,U=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var z=F.Ry().shape({name:F.Z_(l.I0.string).required(l.I0.required).matches(Ae,l.I0.regex),url:F.Z_(l.I0.string).required(l.I0.required).matches(U,l.I0.regex),headers:F.Vo(n=>{let r=F.IX();if(n.length===1){const{key:a,value:i}=n[0];if(!a&&!i)return r}return r.of(F.Ry().shape({key:F.Z_().required(l.I0.required),value:F.Z_().required(l.I0.required)}))}),events:F.IX()});const me=({handleSubmit:n,data:r,triggerWebhook:a,isCreating:i,isTriggering:m,triggerResponse:x,isDraftAndPublishEvents:u})=>{const{formatMessage:f}=(0,j.Z)(),[M,v]=(0,e.useState)(!1);return e.createElement($.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([b,I])=>({key:b,value:I})):[{key:"",value:""}],events:r?.events||[]},validationSchema:z,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:b,errors:I})=>e.createElement(l.l0,{noValidate:!0},e.createElement(Se.T,{primaryAction:e.createElement(y.k,{gap:2},e.createElement(fe.z,{onClick:()=>{a(),v(!0)},variant:"tertiary",startIcon:e.createElement(g.Z,null),disabled:i||m,size:"L"},f({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(fe.z,{startIcon:e.createElement(p.Z,null),onClick:b,type:"submit",size:"L"},f({id:"global.save",defaultMessage:"Save"}))),title:i?f({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(l.rU,{startIcon:e.createElement(N.Z,null),to:"/settings/webhooks"},f({id:"global.back",defaultMessage:"Back"}))}),e.createElement(Oe.D,null,e.createElement(y.k,{direction:"column",alignItems:"stretch",gap:4},M&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(xe,{isPending:m,response:x,onCancel:()=>v(!1)})),e.createElement(ne.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(y.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(se.r,{gap:6},e.createElement(V.P,{col:6},e.createElement($.gN,{as:le.o,name:"name",error:I.name&&f({id:I.name}),label:f({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(V.P,{col:12},e.createElement($.gN,{as:le.o,name:"url",error:I.url&&f({id:I.url}),label:f({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(ye,null),e.createElement(ce,{isDraftAndPublish:u})))))))};me.propTypes={data:s().object,handleSubmit:s().func.isRequired,triggerWebhook:s().func.isRequired,isCreating:s().bool.isRequired,isDraftAndPublishEvents:s().bool.isRequired,isTriggering:s().bool.isRequired,triggerResponse:s().object},me.defaultProps={data:void 0,triggerResponse:void 0};var L=me;const re=n=>({...n,headers:_(n.headers)}),_=n=>n.reduce((r,a)=>{const{key:i,value:m}=a;return i!==""?{...r,[i]:m}:r},{});var ee=re,Ie=()=>{const{params:{id:n}}=(0,k.$B)("/settings/webhooks/:id"),{replace:r}=(0,k.k6)(),{lockApp:a,unlockApp:i}=(0,l.o1)(),m=(0,l.lm)(),x=(0,o.useQueryClient)(),{isLoading:u,collectionTypes:f}=(0,Z.bP)(),{post:M}=(0,l.kY)(),v=n==="create",b=(0,e.useCallback)(async C=>{const[S,{data:we}]=await(0,l.to)((0,l.WY)(`/admin/webhooks/${C}`,{method:"GET"}));return S?(m({type:"warning",message:{id:"notification.error"}}),null):we},[m]),{isLoading:I,data:h}=(0,o.useQuery)(["get-webhook",n],()=>b(n),{enabled:!v}),{isLoading:A,data:K,isIdle:G,mutate:Ze}=(0,o.useMutation)(()=>M(`/admin/webhooks/${n}/trigger`)),$e=()=>Ze(null,{onError(){m({type:"warning",message:{id:"notification.error"}})}}),Be=(0,o.useMutation)(C=>(0,l.WY)("/admin/webhooks",{method:"POST",body:C})),pe=(0,o.useMutation)(({id:C,body:S})=>(0,l.WY)(`/admin/webhooks/${C}`,{method:"PUT",body:S})),c=async C=>{v?(a(),Be.mutate(ee(C),{onSuccess(S){m({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${S.data.id}`),i()},onError(S){m({type:"warning",message:{id:"notification.error"}}),console.log(S),i()}})):(a(),pe.mutate({id:n,body:ee(C)},{onSuccess(){x.invalidateQueries(["get-webhook",n]),m({type:"success",message:{id:"notification.form.success.fields"}}),i()},onError(S){m({type:"warning",message:{id:"notification.error"}}),console.log(S),i()}}))},E=(0,e.useMemo)(()=>f.some(C=>C.options.draftAndPublish===!0),[f]);return I||u?e.createElement(l.dO,null):e.createElement(T.o,null,e.createElement(l.SL,{name:"Webhooks"}),e.createElement(L,{handleSubmit:c,data:h,triggerWebhook:$e,isCreating:v,isTriggering:A,isTriggerIdle:G,triggerResponse:K?.data.data,isDraftAndPublishEvents:E}))}},33238:function(te,O,t){t.r(O);var e=t(32735),l=t(43383),T=t(83983),o=t(47272);const k=()=>e.createElement(l.O4,{permissions:T.Z.settings.webhooks.create},e.createElement(o.Z,null));O.default=k},59021:function(te,O,t){t.r(O);var e=t(32735),l=t(43383),T=t(83983),o=t(47272);const k=()=>e.createElement(l.O4,{permissions:T.Z.settings.webhooks.update},e.createElement(o.Z,null));O.default=k},42623:function(te,O,t){t.d(O,{h:function(){return Q},X:function(){return de}});var e=t(32735),l=t(35331),T=t(16899),o=t(60216),k=t(90333),Z=t(91225),Y=t(17289),s=t(94486);const g={Close:"Close",CloseSelect:"CloseSelect",First:"First",Last:"Last",Next:"Next",Open:"Open",PageDown:"PageDown",PageUp:"PageUp",Previous:"Previous",Select:"Select",Space:"Space",Type:"Type"},p={Close:"Close",First:"First",Last:"Last",Next:"Next",Open:"Open",Previous:"Previous",Select:"Select",UpLevel:"UpLevel"};function N(d=[],D=null,B=[]){const X=String(D??"").toLowerCase();return X?d.filter(R=>R.props.children.toString().toLowerCase().includes(X)&&B.indexOf(R)<0):d}function Se(d,D){if(!D&&d===s.y.DOWN)return g.Open;if(d===s.y.DOWN)return g.Next;if(d===s.y.UP)return g.Previous;if(d===s.y.HOME)return g.First;if(d===s.y.END)return g.Last;if(d===s.y.ESCAPE)return g.Close;if(d===s.y.ENTER)return g.CloseSelect;if(d===s.y.BACKSPACE||d===s.y.CLEAR||d.length===1)return g.Type}function y(d,D,B){switch(B){case g.First:return 0;case g.Last:return D;case g.Previous:return Math.max(0,d-1);case g.Next:return Math.min(D,d+1);default:return d}}function fe(d){(0,Y.Z)(d,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}).forEach(({el:D,top:B,left:X})=>{D.scrollTop=B,D.scrollLeft=X})}var Oe=t(72850),ne=t(87107),se=t(28847),V=t(67014),le=t(47851),$=t(87933),j=t(74971),he=t(97405),w=t(4101),ie=t(93958),Ee=t(49372),ke=t(3685);const Q=({children:d,clearLabel:D,creatable:B,createMessage:X,disabled:R,error:H,hasMoreItems:ve,hint:ce,id:Le,label:J,labelAction:Te,loading:ue,loadingMessage:We,noOptionsMessage:be,onChange:ae,onClear:Ce,onCreateOption:Ue,onInputChange:ye,onLoadMore:Re,placeholder:Me,required:q,value:W,...ge})=>{const Pe=()=>d.find(c=>c.props?.value.toLowerCase()===W.toLowerCase()).props?.children,[P,xe]=(0,e.useState)(0),[F,Ae]=(0,e.useState)(null),[U,De]=(0,e.useState)(d),[z,me]=(0,e.useState)(!1),[L,re]=(0,e.useState)(""),_=(0,e.useRef)(),ee=(0,e.useRef)(!1),oe=(0,e.useRef)(),Ie=(0,e.useRef)(),n=(0,e.useRef)(),r=(0,e.useRef)(!0),a=(0,j.M)(Le),i=`${a}-label`;if(!J&&!ge["aria-label"])throw new Error('The Combobox component needs a "label" or an "aria-label" props');(0,e.useEffect)(()=>{De(N(d,L))},[L,d]),(0,e.useEffect)(()=>{z&&_.current&&fe(_.current)},[P,z]),(0,e.useLayoutEffect)(()=>{r.current&&(r.current=!1)},[W]);const m=z?`${a}-${P}`:"",x=()=>{ae(null),re("")},u=c=>{ye&&ye(c);const E=oe.current.value;De(N(d,E)),xe(0),Ae(null),L!==E&&re(E),z||A(!0,!1)},f=c=>{const{key:E}=c,C=B&&L?U.length:U.length-1,S=Se(E,z);switch(W&&!L&&E===s.y.BACKSPACE&&x(),S){case g.Next:{if(P===C){v(0);break}v(y(P,C,S));break}case g.Previous:{if(P===0){v(C);break}v(y(P,C,S));break}case g.Last:case g.First:{if(P===C){v(0);break}v(y(P,C,S));break}case g.CloseSelect:c.preventDefault(),h(P);break;case g.Close:c.preventDefault(),A(!1);break;case g.Open:A(!0);break}},M=c=>{if(c.preventDefault(),W&&!ee.current&&re(""),ee.current){ee.current=!1;return}A(!1,!1)},v=c=>{xe(c)},b=c=>{v(c),h(c)},I=()=>{ee.current=!0},h=c=>{const E=U[c];if(re(""),E){ae(E.props.value),A(!1);return}B&&(Ue(L),A(!1))},A=(c,E=!0)=>{me(c),E&&oe.current.focus()},K=e.Children.toArray(U).map((c,E)=>{const C=P===E;return(0,e.cloneElement)(c,{id:`${a}-${E}`,"aria-selected":F===E,"aria-posinset":E+1,"aria-setsize":e.Children.toArray(U).length,ref(S){C&&(_.current=S)},onClick:()=>b(E),onMouseDown:I,isSelected:C})}),G=()=>{oe.current.focus(),Ce&&Ce(),x()},Ze=()=>{oe.current.focus(),A(!0)},$e=()=>{const c=U.findIndex(E=>E.props?.children===L);return L&&c===-1},Be=c=>{c.preventDefault(),A(c,!0)};let pe;return H?pe=`${a}-error`:ce&&(pe=`${a}-hint`),e.createElement(ne.g,{hint:ce,error:H,id:a,required:q},e.createElement(ke.T,{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text"},W),e.createElement($.k,{direction:"column",alignItems:"stretch",gap:J||ce||H?1:0},J&&e.createElement(se.Q,{action:Te},J),e.createElement(Z.d8,{ref:Ie,$disabled:R,hasError:H},e.createElement(Z.fv,{wrap:"wrap"},!L&&W&&e.createElement(Z.K7,{id:`${a}-selected-value`},e.createElement(Ee.Z,null,Pe())),e.createElement(Z.II,{"aria-activedescendant":m,"aria-autocomplete":"list","aria-controls":`${a}-listbox`,"aria-disabled":R,"aria-expanded":z,"aria-haspopup":"listbox","aria-describedby":pe,autoComplete:"off",autoCorrect:"off",id:a,onBlur:R?void 0:M,onClick:R?void 0:Be,onInput:R?void 0:u,onKeyDown:R?void 0:f,placeholder:W?"":Me,readOnly:R,ref:oe,required:q,role:"combobox",spellCheck:"off",type:"text",value:L})),e.createElement($.k,null,(W||L)&&e.createElement(ie.zb,{id:`${a}-clear`,"aria-label":D,disabled:R,paddingLeft:3,as:"button",onClick:G,type:"button"},e.createElement(l.Z,null)),e.createElement(ie.AV,{disabled:R,paddingLeft:3,"aria-hidden":!0,as:"button",onClick:Ze,tabIndex:-1,type:"button"},e.createElement(T.Z,null)))),e.createElement(V.J,null),e.createElement(le.c,null)),z&&e.createElement(w.J2,{id:`${a}-popover`,source:Ie,spacing:4,fullWidth:!0,intersectionId:`${a}-listbox-popover-intersection`,onReachEnd:ve&&!ue?Re:void 0},e.createElement("div",{role:"listbox",ref:n,id:`${a}-listbox`,"aria-labelledby":J?i:void 0},(Boolean(U.length)||B)&&e.createElement(e.Fragment,null,K,$e()&&B&&e.createElement(k.O,{isSelected:P===U.length,ref:c=>{P===U.length&&(_.current=c)},onMouseDown:I,onClick:()=>h(),taindex:0},X(L))),!U.length&&!B&&!ue&&e.createElement(Oe.x,{paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,ref:_},e.createElement(Ee.Z,{textColor:"neutral800"},be(L))),ue&&e.createElement($.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2},e.createElement(he.a,{small:!0},We)))))},de=d=>e.createElement(Q,{...d,creatable:!0});Q.defaultProps={"aria-label":void 0,clearLabel:"clear",creatable:!1,createMessage:d=>`Create "${d}"`,disabled:!1,error:void 0,hasMoreItems:!1,hint:void 0,id:void 0,label:void 0,loading:!1,loadingMessage:"Loading content...",noOptionsMessage:()=>"No results found",onClear:void 0,onCreateOption:void 0,onInputChange:void 0,onLoadMore:void 0,placeholder:"Select or enter a value",value:void 0},de.defaultProps=Q.defaultProps,Q.propTypes={"aria-label":o.string,children:o.oneOfType([o.arrayOf(o.node),o.node]),clearLabel:o.string,creatable:o.bool,createMessage:o.func,disabled:o.bool,error:o.string,hasMoreItems:o.bool,id:o.string,hint:o.oneOfType([o.string,o.node,o.arrayOf(o.node)]),label:o.string,labelAction:o.element,loading:o.bool,loadingMessage:o.string,noOptionsMessage:o.func,onChange:o.func.isRequired,onClear:o.func,onCreateOption:o.func,onInputChange:o.func,onLoadMore:o.func,placeholder:o.string,value:o.string},de.propTypes={...Q.propTypes,onCreateOption:o.func.isRequired}},90333:function(te,O,t){t.d(O,{O:function(){return k}});var e=t(32735),l=t(60216),T=t(91225),o=t(49372);const k=(0,e.forwardRef)(({isSelected:Z,children:Y,...s},g)=>e.createElement(T.Zq,{hasRadius:!0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,role:"option",background:"neutral0",isSelected:Z,ref:g,...s},e.createElement(o.Z,{textColor:Z?"primary600":"neutral800",fontWeight:Z?"bold":null},Y)));k.defaultProps={isSelected:!1},k.propTypes={children:l.oneOfType([l.string,l.number]).isRequired,isSelected:l.bool},k.displayName="ComboboxOption"},91225:function(te,O,t){t.d(O,{II:function(){return s},K7:function(){return Z},Zq:function(){return g},d8:function(){return k},fv:function(){return Y}});var e=t(8471),l=t(72850),T=t(87933),o=t(30350);const k=(0,e.ZP)(T.k)`
24
+ position: relative;
25
+ border: 1px solid ${({theme:p,hasError:N})=>N?p.colors.danger600:p.colors.neutral200};
26
+ padding-right: ${({theme:p})=>p.spaces[3]};
27
+ padding-left: ${({theme:p})=>p.spaces[3]};
28
+ border-radius: ${({theme:p})=>p.borderRadius};
29
+ background: ${({theme:p})=>p.colors.neutral0};
30
+
31
+ ${({theme:p,$disabled:N})=>N?`
32
+ color: ${p.colors.neutral600};
33
+ background: ${p.colors.neutral150};
34
+ `:void 0}
35
+
36
+ ${(0,o.k3)()}
37
+ `,Z=e.ZP.div`
38
+ padding: 1px 2px;
39
+ grid-area: 1 / 1 / 2 / 3;
40
+ `,Y=(0,e.ZP)(T.k)`
41
+ display: grid;
42
+ flex: 1 1 0%;
43
+ position: relative;
44
+ `,s=e.ZP.input`
45
+ display: inline-grid;
46
+ grid-area: 1 / 1 / 2 / 3;
47
+ grid-template-columns: 0px min-content;
48
+ background: transparent;
49
+ min-height: ${40/16}rem;
50
+ border: none;
51
+ flex: 1;
52
+ font-size: ${14/16}rem;
53
+ color: ${({theme:p})=>p.colors.neutral800};
54
+ outline: none;
55
+ &:focus-visible {
56
+ outline: none;
57
+ box-shadow: none;
58
+ outline-offset: 0;
59
+ }
60
+ &[aria-disabled='true'] {
61
+ background: inherit;
62
+ color: inherit;
63
+ cursor: not-allowed;
64
+ }
65
+ `,g=(0,e.ZP)(l.x)`
66
+ width: 100%;
67
+ border: none;
68
+ text-align: left;
69
+ outline-offset: -3px;
70
+ ${({isSelected:p,theme:N})=>p&&`background: ${N.colors.primary100};`}
71
+
72
+ &:hover {
73
+ background: ${({theme:p})=>p.colors.primary100};
74
+ }
75
+ `},29439:function(te,O,t){t.d(O,{Z:function(){return T}});var e=t(74512);const l=o=>(0,e.jsx)("svg",{width:"1rem",height:"1rem",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...o,children:(0,e.jsx)("path",{d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z",fill:"#212134"})}),T=l}}]);
@@ -0,0 +1,71 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{74767:function(U,L,t){t.r(L),t.d(L,{default:function(){return ue}});var e=t(32735),a=t(43383),b=t(83983),h=t(53038),O=t(67879),p=t(94638),C=t(96709),D=t(27649),c=t(82055),f=t(99223),i=t(49372),M=t(41415),x=t(17e3),H=t(72850),_=t(56755),ee=t(73269),te=t(33827),G=t(94547),E=t(19786),N=t(44426),ne=t(3685),le=t(35658),S=t(87933),y=t(60216),V=t(8471);const $=V.ZP.div`
2
+ background: ${({theme:l})=>l.colors.danger500};
3
+ border: none;
4
+ border-radius: 16px;
5
+ position: relative;
6
+ height: ${24/16}rem;
7
+ width: ${40/16}rem;
8
+
9
+ & span {
10
+ font-size: ${({visibleLabels:l})=>l?"1rem":0};
11
+ }
12
+
13
+ &:before {
14
+ content: '';
15
+ background: ${({theme:l})=>l.colors.neutral0};
16
+ width: 1rem;
17
+ height: 1rem;
18
+ border-radius: 50%;
19
+ position: absolute;
20
+ transition: all 0.5s;
21
+ left: ${({theme:l})=>l.spaces[1]};
22
+ top: ${({theme:l})=>l.spaces[1]};
23
+ }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &:before {
27
+ transition: none;
28
+ }
29
+ }
30
+ `,ae=V.ZP.button`
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+
35
+ &[aria-checked='true'] ${$} {
36
+ background: ${({theme:l})=>l.colors.success500};
37
+ }
38
+
39
+ &[aria-checked='true'] ${$}:before {
40
+ transform: translateX(1rem);
41
+ }
42
+ `,W=e.forwardRef(({label:l,onChange:r,onLabel:s,offLabel:d,selected:T,visibleLabels:v,...u},o)=>e.createElement(ae,{ref:o,role:"switch","aria-checked":T,"aria-label":l,onClick:r,visibleLabels:v,type:"button",...u},e.createElement(S.k,null,e.createElement($,null,e.createElement("span",null,s),e.createElement("span",null,d)),v&&e.createElement(H.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:T?"success600":"danger600"},T?s:d))));W.defaultProps={onLabel:"On",offLabel:"Off",visibleLabels:!1},W.propTypes={label:y.string.isRequired,offLabel:y.string,onChange:y.func.isRequired,onLabel:y.string,selected:y.bool.isRequired,visibleLabels:y.bool},W.displayName="Switch";var j=t(50563),oe=t(9695),R=t(19406),F=t(4038),se=t(68625),re=t(54725),ie=t(97889),de=t(3040),ce=t.n(de);const Ee={webhooks:[],webhooksToDelete:[],webhookToDelete:null,loadingWebhooks:!0};var me=(l,r)=>(0,ie.ZP)(l,s=>{switch(r.type){case"GET_DATA_SUCCEEDED":{s.webhooks=r.data,s.loadingWebhooks=!1;break}case"TOGGLE_LOADING":{s.loadingWebhooks=!l.loadingWebhooks;break}case"SET_WEBHOOK_ENABLED":{ce()(s,["webhooks",...r.keys],r.value);break}case"SET_WEBHOOK_TO_DELETE":{s.webhookToDelete=r.id;break}case"SET_WEBHOOKS_TO_DELETE":{r.value?s.webhooksToDelete.push(r.id):s.webhooksToDelete=l.webhooksToDelete.filter(d=>d!==r.id);break}case"SET_ALL_WEBHOOKS_TO_DELETE":{l.webhooksToDelete.length===0?s.webhooksToDelete=l.webhooks.map(d=>d.id):s.webhooksToDelete=[];break}case"WEBHOOKS_DELETED":{s.webhooks=l.webhooks.filter(d=>!l.webhooksToDelete.includes(d.id)),s.webhooksToDelete=[];break}case"WEBHOOK_DELETED":{s.webhooks=l.webhooks.filter((d,T)=>T!==r.index),s.webhookToDelete=null;break}default:return s}}),he=()=>{const{isLoading:l,allowedActions:{canCreate:r,canRead:s,canUpdate:d,canDelete:T}}=(0,a.ss)(b.Z.settings.webhooks),v=(0,a.lm)(),u=(0,e.useRef)(!0),{formatMessage:o}=(0,O.Z)(),[ge,P]=(0,e.useState)(!1),[{webhooks:B,webhooksToDelete:Z,webhookToDelete:K,loadingWebhooks:I},g]=(0,e.useReducer)(me,Ee),{notifyStatus:be}=(0,p.G)();(0,a.go)();const{push:fe}=(0,h.k6)(),{pathname:z}=(0,h.TH)(),A=B.length,k=Z.length,Y=n=>B.findIndex(m=>m.id===n);(0,e.useEffect)(()=>(u.current=!0,()=>{u.current=!1}),[]),(0,e.useEffect)(()=>{s&&Te()},[s]);const Te=async()=>{try{const{data:n}=await(0,a.WY)("/admin/webhooks",{method:"GET"});u.current&&(g({type:"GET_DATA_SUCCEEDED",data:n}),be("webhooks have been loaded"))}catch(n){console.log(n),u.current&&(n.code!==20&&v({type:"warning",message:{id:"notification.error"}}),g({type:"TOGGLE_LOADING"}))}},De=()=>{P(n=>!n)},ve=()=>{K?Le():Oe()},Le=async()=>{try{await(0,a.WY)(`/admin/webhooks/${K}`,{method:"DELETE"}),g({type:"WEBHOOK_DELETED",index:Y(K)})}catch(n){n.code!==20&&v({type:"warning",message:{id:"notification.error"}})}P(!1)},Oe=async()=>{const n={ids:Z};try{await(0,a.WY)("/admin/webhooks/batch-delete",{method:"POST",body:n}),u.current&&g({type:"WEBHOOKS_DELETED"})}catch(m){u.current&&m.code!==20&&v({type:"warning",message:{id:"notification.error"}})}P(!1)},Q=n=>{P(!0),n!=="all"&&g({type:"SET_WEBHOOK_TO_DELETE",id:n})},pe=async(n,m)=>{const X=Y(m),ke=B[X],J=[X,"isEnabled"],q={...ke,isEnabled:n};delete q.id;try{g({type:"SET_WEBHOOK_ENABLED",keys:J,value:n}),await(0,a.WY)(`/admin/webhooks/${m}`,{method:"PUT",body:q})}catch(Me){u.current&&(g({type:"SET_WEBHOOK_ENABLED",keys:J,value:!n}),Me.code!==20&&v({type:"warning",message:{id:"notification.error"}}))}},ye=()=>{g({type:"SET_ALL_WEBHOOKS_TO_DELETE"})},Ce=(n,m)=>{g({type:"SET_WEBHOOKS_TO_DELETE",value:n,id:m})},w=n=>{fe(`${z}/${n}`)};return e.createElement(C.A,null,e.createElement(a.SL,{name:"Webhooks"}),e.createElement(D.o,{"aria-busy":l||I},e.createElement(c.T,{title:o({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:o({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:r&&!I&&e.createElement(a.Qj,{startIcon:e.createElement(R.Z,null),variant:"default",to:`${z}/create`,size:"S"},o({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),k>0&&T&&e.createElement(f.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(i.Z,{variant:"epsilon",textColor:"neutral600"},o({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected"},{webhooksToDeleteLength:k})),e.createElement(M.z,{onClick:()=>Q("all"),startIcon:e.createElement(F.Z,null),size:"L",variant:"danger-light"},o({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(x.D,null,l||I?e.createElement(H.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(a.dO,null)):A>0?e.createElement(_.i,{colCount:5,rowCount:A+1,footer:e.createElement(ee.c,{onClick:()=>r?w("create"):{},icon:e.createElement(R.Z,null)},o({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(te.h,null,e.createElement(G.Tr,null,e.createElement(E.Th,null,e.createElement(N.C,{"aria-label":o({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:k>0&&k<A,value:k===A,onValueChange:ye})),e.createElement(E.Th,{width:"20%"},e.createElement(i.Z,{variant:"sigma",textColor:"neutral600"},o({id:"global.name",defaultMessage:"Name"}))),e.createElement(E.Th,{width:"60%"},e.createElement(i.Z,{variant:"sigma",textColor:"neutral600"},o({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(E.Th,{width:"20%"},e.createElement(i.Z,{variant:"sigma",textColor:"neutral600"},o({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(E.Th,null,e.createElement(ne.T,null,o({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(le.p,null,B.map(n=>e.createElement(G.Tr,{key:n.id,...(0,a.X7)({fn:()=>w(n.id),condition:d})},e.createElement(E.Td,{...a.UW},e.createElement(N.C,{"aria-label":`${o({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:Z?.includes(n.id),onValueChange:m=>Ce(m,n.id),id:"select",name:"select"})),e.createElement(E.Td,null,e.createElement(i.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(E.Td,null,e.createElement(i.Z,{textColor:"neutral800"},n.url)),e.createElement(E.Td,null,e.createElement(S.k,{...a.UW},e.createElement(W,{onLabel:o({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:o({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${o({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:()=>pe(!n.isEnabled,n.id),visibleLabels:!0}))),e.createElement(E.Td,null,e.createElement(S.k,{gap:1,...a.UW},d&&e.createElement(j.h,{onClick:()=>{w(n.id)},label:o({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(se.Z,null),noBorder:!0}),T&&e.createElement(j.h,{onClick:()=>Q(n.id),label:o({id:"global.delete",defaultMessage:"Delete"}),icon:e.createElement(F.Z,null),noBorder:!0,id:`delete-${n.id}`}))))))):e.createElement(oe.x,{icon:e.createElement(re.Z,{width:"160px"}),content:o({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(M.z,{variant:"secondary",startIcon:e.createElement(R.Z,null),onClick:()=>r?w("create"):{}},o({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}))),e.createElement(a.QH,{isOpen:ge,onToggleDialog:De,onConfirm:ve}))},ue=()=>e.createElement(a.O4,{permissions:b.Z.settings.webhooks.main},e.createElement(he,null))},99223:function(U,L,t){t.d(L,{Z:function(){return D}});var e=t(32735),a=t(60216),b=t(8471),h=t(72850),O=t(87933);const p=(0,b.ZP)(O.k)`
43
+ & > * + * {
44
+ margin-left: ${({theme:c})=>c.spaces[2]};
45
+ }
46
+
47
+ margin-left: ${({pullRight:c})=>c?"auto":void 0};
48
+ `,C=(0,b.ZP)(p)`
49
+ flex-shrink: 0;
50
+ `,D=({startActions:c,endActions:f})=>c||f?e.createElement(h.x,{paddingLeft:10,paddingRight:10},e.createElement(h.x,{paddingBottom:4},e.createElement(O.k,{justifyContent:"space-between",alignItems:"flex-start"},c&&e.createElement(p,{wrap:"wrap"},c),f&&e.createElement(C,{pullRight:!0},f)))):null;D.defaultProps={endActions:void 0,startActions:void 0},D.propTypes={endActions:a.node,startActions:a.node}},73269:function(U,L,t){t.d(L,{c:function(){return f}});var e=t(32735),a=t(60216),b=t(8471),h=t(72850),O=t(9026),p=t(87933),C=t(49372);const D=(0,b.ZP)(h.x)`
51
+ height: ${24/16}rem;
52
+ width: ${24/16}rem;
53
+ border-radius: 50%;
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+
58
+ svg {
59
+ height: ${10/16}rem;
60
+ width: ${10/16}rem;
61
+ }
62
+
63
+ svg path {
64
+ fill: ${({theme:i})=>i.colors.primary600};
65
+ }
66
+ `,c=(0,b.ZP)(h.x)`
67
+ border-radius: 0 0 ${({theme:i})=>i.borderRadius} ${({theme:i})=>i.borderRadius};
68
+ display: block;
69
+ width: 100%;
70
+ border: none;
71
+ `,f=({children:i,icon:M,...x})=>e.createElement("div",null,e.createElement(O.i,null),e.createElement(c,{as:"button",background:"primary100",padding:5,...x},e.createElement(p.k,null,e.createElement(D,{"aria-hidden":!0,background:"primary200"},M),e.createElement(h.x,{paddingLeft:3},e.createElement(C.Z,{variant:"pi",fontWeight:"bold",textColor:"primary600"},i)))));f.propTypes={children:a.string.isRequired,icon:a.node.isRequired}}}]);
@@ -5,6 +5,7 @@ const { features } = require('@strapi/strapi/lib/utils/ee');
5
5
  const executeCEBootstrap = require('../../server/bootstrap');
6
6
  const { getService } = require('../../server/utils');
7
7
  const actions = require('./config/admin-actions');
8
+ const { persistTablesWithPrefix } = require('./utils/persisted-tables');
8
9
 
9
10
  module.exports = async () => {
10
11
  const { actionProvider } = getService('permission');
@@ -14,6 +15,8 @@ module.exports = async () => {
14
15
  }
15
16
 
16
17
  if (features.isEnabled('audit-logs')) {
18
+ await persistTablesWithPrefix('strapi_audit_logs');
19
+
17
20
  await actionProvider.registerMany(actions.auditLogs);
18
21
  }
19
22
 
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
- const { features } = require('@strapi/strapi/lib/utils/ee');
4
3
  const executeCERegister = require('../../server/register');
5
4
  const migrateAuditLogsTable = require('./migrations/audit-logs-table');
6
5
  const createAuditLogsService = require('./services/audit-logs');
7
6
 
8
7
  module.exports = async ({ strapi }) => {
9
- if (features.isEnabled('audit-logs')) {
8
+ const auditLogsIsEnabled = strapi.config.get('admin.auditLogs.enabled', true);
9
+
10
+ if (auditLogsIsEnabled) {
10
11
  strapi.hook('strapi::content-types.beforeSync').register(migrateAuditLogsTable);
11
12
  const auditLogsService = createAuditLogsService(strapi);
12
13
  strapi.container.register('audit-logs', auditLogsService);
@@ -63,16 +63,37 @@ const getEventMap = (defaultEvents) => {
63
63
  }, {});
64
64
  };
65
65
 
66
+ const getRetentionDays = (strapi) => {
67
+ const licenseRetentionDays = features.get('audit-logs')?.options.retentionDays;
68
+ const userRetentionDays = strapi.config.get('admin.auditLogs.retentionDays');
69
+
70
+ // For enterprise plans, use 90 days by default, but allow users to override it
71
+ if (licenseRetentionDays == null) {
72
+ return userRetentionDays ?? DEFAULT_RETENTION_DAYS;
73
+ }
74
+
75
+ // Allow users to override the license retention days, but not to increase it
76
+ if (userRetentionDays && userRetentionDays < licenseRetentionDays) {
77
+ return userRetentionDays;
78
+ }
79
+
80
+ // User didn't provide a retention days value, use the license one
81
+ return licenseRetentionDays;
82
+ };
83
+
66
84
  const createAuditLogsService = (strapi) => {
85
+ // Manage internal service state privately
86
+ const state = {};
87
+
67
88
  // NOTE: providers should be able to replace getEventMap to add or remove events
68
89
  const eventMap = getEventMap(defaultEvents);
69
90
 
70
91
  const processEvent = (name, ...args) => {
71
- const state = strapi.requestContext.get()?.state;
92
+ const requestState = strapi.requestContext.get()?.state;
72
93
 
73
94
  // Ignore events with auth strategies different from admin
74
- const isUsingAdminAuth = state?.auth?.strategy.name === 'admin';
75
- const user = state?.user;
95
+ const isUsingAdminAuth = requestState?.auth?.strategy.name === 'admin';
96
+ const user = requestState?.user;
76
97
 
77
98
  if (!isUsingAdminAuth || !user) {
78
99
  return null;
@@ -103,26 +124,60 @@ const createAuditLogsService = (strapi) => {
103
124
  const processedEvent = processEvent(name, ...args);
104
125
 
105
126
  if (processedEvent) {
106
- await this._provider.saveEvent(processedEvent);
127
+ await state.provider.saveEvent(processedEvent);
107
128
  }
108
129
  }
109
130
 
110
131
  return {
111
132
  async register() {
112
- const retentionDays =
113
- features.get('audit-logs')?.options.retentionDays ?? DEFAULT_RETENTION_DAYS;
114
- this._provider = await localProvider.register({ strapi });
115
- this._eventHubUnsubscribe = strapi.eventHub.subscribe(handleEvent.bind(this));
116
- this._deleteExpiredJob = scheduleJob('0 0 * * *', () => {
133
+ // Handle license being enabled
134
+ if (!state.eeEnableUnsubscribe) {
135
+ state.eeEnableUnsubscribe = strapi.eventHub.on('ee.enable', () => {
136
+ // Recreate the service to use the new license info
137
+ this.destroy();
138
+ this.register();
139
+ });
140
+ }
141
+
142
+ // Handle license being updated
143
+ if (!state.eeUpdateUnsubscribe) {
144
+ state.eeUpdateUnsubscribe = strapi.eventHub.on('ee.update', () => {
145
+ // Recreate the service to use the new license info
146
+ this.destroy();
147
+ this.register();
148
+ });
149
+ }
150
+
151
+ // Handle license being disabled
152
+ state.eeDisableUnsubscribe = strapi.eventHub.on('ee.disable', () => {
153
+ // Turn off service when the license gets disabled
154
+ // Only ee.enable and ee.update listeners remain active to recreate the service
155
+ this.destroy();
156
+ });
157
+
158
+ // Register the provider now because collections can't be added later at runtime
159
+ state.provider = await localProvider.register({ strapi });
160
+
161
+ // Check current state of license
162
+ if (!features.isEnabled('audit-logs')) {
163
+ return this;
164
+ }
165
+
166
+ // Start saving events
167
+ state.eventHubUnsubscribe = strapi.eventHub.subscribe(handleEvent.bind(this));
168
+
169
+ // Manage audit logs auto deletion
170
+ const retentionDays = getRetentionDays(strapi);
171
+ state.deleteExpiredJob = scheduleJob('0 0 * * *', () => {
117
172
  const expirationDate = new Date(Date.now() - retentionDays * 24 * 60 * 60 * 1000);
118
- this._provider.deleteExpiredEvents(expirationDate);
173
+ state.provider.deleteExpiredEvents(expirationDate);
119
174
  });
120
175
 
121
176
  return this;
122
177
  },
123
178
 
124
179
  async findMany(query) {
125
- const { results, pagination } = await this._provider.findMany(query);
180
+ const { results, pagination } = await state.provider.findMany(query);
126
181
 
127
182
  const sanitizedResults = results.map((result) => {
128
183
  const { user, ...rest } = result;
@@ -139,7 +194,7 @@ const createAuditLogsService = (strapi) => {
139
194
  },
140
195
 
141
196
  async findOne(id) {
142
- const result = await this._provider.findOne(id);
197
+ const result = await state.provider.findOne(id);
143
198
 
144
199
  if (!result) {
145
200
  return null;
@@ -153,12 +208,16 @@ const createAuditLogsService = (strapi) => {
153
208
  },
154
209
 
155
210
  unsubscribe() {
156
- if (this._eventHubUnsubscribe) {
157
- this._eventHubUnsubscribe();
211
+ if (state.eeDisableUnsubscribe) {
212
+ state.eeDisableUnsubscribe();
213
+ }
214
+
215
+ if (state.eventHubUnsubscribe) {
216
+ state.eventHubUnsubscribe();
158
217
  }
159
218
 
160
- if (this._deleteExpiredJob) {
161
- this._deleteExpiredJob.cancel();
219
+ if (state.deleteExpiredJob) {
220
+ state.deleteExpiredJob.cancel();
162
221
  }
163
222
 
164
223
  return this;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Finds all tables in the database that start with a prefix
5
+ * @param {string} prefix
6
+ * @returns {Array}
7
+ */
8
+ const findTablesThatStartWithPrefix = async (prefix) => {
9
+ const tables = await strapi.db.dialect.schemaInspector.getTables();
10
+ return tables.filter((tableName) => tableName.startsWith(prefix));
11
+ };
12
+
13
+ /**
14
+ * Get all reserved table names from the core store
15
+ * @returns {Array}
16
+ */
17
+ const getPersistedTables = async () =>
18
+ (await strapi.store.get({
19
+ type: 'core',
20
+ key: 'persisted_tables',
21
+ })) ?? [];
22
+
23
+ /**
24
+ * Add all table names that start with a prefix to the reserved tables in
25
+ * core store
26
+ * @param {string} tableNamePrefix
27
+ */
28
+
29
+ const persistTablesWithPrefix = async (tableNamePrefix) => {
30
+ const persistedTables = await getPersistedTables();
31
+ const tableNames = await findTablesThatStartWithPrefix(tableNamePrefix);
32
+ const notReservedTableNames = tableNames.filter((name) => !persistedTables.includes(name));
33
+
34
+ if (!notReservedTableNames.length) {
35
+ return;
36
+ }
37
+
38
+ persistedTables.push(...notReservedTableNames);
39
+ await strapi.store.set({
40
+ type: 'core',
41
+ key: 'persisted_tables',
42
+ value: persistedTables,
43
+ });
44
+ };
45
+
46
+ module.exports = {
47
+ persistTablesWithPrefix,
48
+ findTablesThatStartWithPrefix,
49
+ };
@@ -1,11 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const baseConfig = require('../../../jest.base-config.front');
4
- const pkg = require('./package.json');
5
-
6
3
  module.exports = {
7
- ...baseConfig,
8
- displayName: (pkg.strapi && pkg.strapi.name) || pkg.name,
9
- roots: [__dirname],
4
+ preset: '../../../jest-preset.front.js',
10
5
  collectCoverageFrom: ['<rootDir>/packages/core/admin/admin/**/*.js'],
11
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
3
+ "version": "4.9.0",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,12 +30,14 @@
30
30
  "build": "rimraf build && node ./scripts/build.js",
31
31
  "build:mesure": "rimraf build && cross-env MESURE_BUILD_SPEED=true node ./scripts/build.js",
32
32
  "test": "echo \"no tests yet\"",
33
- "test:unit": "jest --verbose",
33
+ "test:unit": "jest",
34
+ "test:unit:watch": "jest --watch",
34
35
  "test:front": "cross-env IS_EE=true jest --config ./jest.config.front.js",
35
36
  "test:front:watch": "cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
36
37
  "test:front:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js",
37
38
  "test:front:watch:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
38
- "test:front:ce:cov": "cross-env IS_EE=false jest --config ./jest.config.front.js --coverage"
39
+ "test:front:ce:cov": "cross-env IS_EE=false jest --config ./jest.config.front.js --coverage",
40
+ "lint": "eslint ."
39
41
  },
40
42
  "dependencies": {
41
43
  "@babel/core": "^7.20.12",
@@ -46,15 +48,15 @@
46
48
  "@casl/ability": "^5.4.3",
47
49
  "@fingerprintjs/fingerprintjs": "3.3.6",
48
50
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
49
- "@strapi/babel-plugin-switch-ee-ce": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
50
- "@strapi/data-transfer": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
51
- "@strapi/design-system": "1.6.5",
52
- "@strapi/helper-plugin": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
53
- "@strapi/icons": "1.6.5",
54
- "@strapi/permissions": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
55
- "@strapi/provider-audit-logs-local": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
56
- "@strapi/typescript-utils": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
57
- "@strapi/utils": "4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8",
51
+ "@strapi/babel-plugin-switch-ee-ce": "4.9.0",
52
+ "@strapi/data-transfer": "4.9.0",
53
+ "@strapi/design-system": "1.6.6",
54
+ "@strapi/helper-plugin": "4.9.0",
55
+ "@strapi/icons": "1.6.6",
56
+ "@strapi/permissions": "4.9.0",
57
+ "@strapi/provider-audit-logs-local": "4.9.0",
58
+ "@strapi/typescript-utils": "4.9.0",
59
+ "@strapi/utils": "4.9.0",
58
60
  "axios": "1.3.4",
59
61
  "babel-loader": "^9.1.2",
60
62
  "babel-plugin-styled-components": "2.0.2",
@@ -106,27 +108,27 @@
106
108
  "passport-local": "1.0.0",
107
109
  "pluralize": "8.0.0",
108
110
  "prop-types": "^15.7.2",
109
- "qs": "6.11.0",
111
+ "qs": "6.11.1",
110
112
  "react": "^17.0.2",
111
113
  "react-copy-to-clipboard": "^5.1.0",
112
114
  "react-dnd": "15.1.2",
113
- "react-dnd-html5-backend": "15.1.2",
115
+ "react-dnd-html5-backend": "15.1.3",
114
116
  "react-dom": "^17.0.2",
115
117
  "react-error-boundary": "3.1.4",
116
118
  "react-fast-compare": "^3.2.0",
117
119
  "react-helmet": "^6.1.0",
118
- "react-intl": "6.2.8",
120
+ "react-intl": "6.3.2",
119
121
  "react-is": "^17.0.2",
120
122
  "react-query": "3.24.3",
121
123
  "react-redux": "8.0.5",
122
124
  "react-refresh": "0.14.0",
123
125
  "react-router-dom": "5.3.4",
124
126
  "react-select": "5.7.0",
125
- "react-window": "1.8.7",
127
+ "react-window": "1.8.8",
126
128
  "redux": "^4.2.1",
127
129
  "reselect": "^4.1.7",
128
130
  "rimraf": "3.0.2",
129
- "sanitize-html": "2.7.3",
131
+ "sanitize-html": "2.10.0",
130
132
  "semver": "7.3.8",
131
133
  "sift": "16.0.0",
132
134
  "style-loader": "3.3.1",
@@ -134,7 +136,7 @@
134
136
  "typescript": "4.6.2",
135
137
  "webpack": "^5.76.0",
136
138
  "webpack-cli": "^5.0.1",
137
- "webpack-dev-server": "^4.11.1",
139
+ "webpack-dev-server": "^4.13.1",
138
140
  "webpackbar": "^5.0.2",
139
141
  "yup": "^0.32.9"
140
142
  },
@@ -166,5 +168,5 @@
166
168
  }
167
169
  }
168
170
  },
169
- "gitHead": "366eb8a0d0f06935914854c6d9c4b3fe859468e0"
171
+ "gitHead": "ffe3f4621ccc968ce56fda9a8317ec30d4bad205"
170
172
  }
@@ -13,7 +13,10 @@ module.exports = () => async (ctx, next) => {
13
13
 
14
14
  if (!hasValidTokenSalt()) {
15
15
  return ctx.notImplemented(
16
- 'The server configuration for data transfer is invalid. Please contact your server administrator.'
16
+ 'The server configuration for data transfer is invalid. Please contact your server administrator.',
17
+ {
18
+ code: 'INVALID_TOKEN_SALT',
19
+ }
17
20
  );
18
21
  }
19
22
 
@@ -34,6 +34,7 @@ const {
34
34
  ID_ATTRIBUTE,
35
35
  CREATED_AT_ATTRIBUTE,
36
36
  UPDATED_AT_ATTRIBUTE,
37
+ PUBLISHED_AT_ATTRIBUTE,
37
38
  CREATED_BY_ATTRIBUTE,
38
39
  UPDATED_BY_ATTRIBUTE,
39
40
  } = constants;
@@ -261,6 +262,7 @@ module.exports = ({ action, ability, model }) => {
261
262
  ...COMPONENT_FIELDS,
262
263
  CREATED_AT_ATTRIBUTE,
263
264
  UPDATED_AT_ATTRIBUTE,
265
+ PUBLISHED_AT_ATTRIBUTE,
264
266
  ]);
265
267
  };
266
268
 
package/webpack.config.js CHANGED
@@ -221,7 +221,7 @@ module.exports = ({
221
221
  alias,
222
222
  symlinks: false,
223
223
  extensions: ['.js', '.jsx', '.react.js', '.ts', '.tsx'],
224
- mainFields: ['browser', 'jsnext:main', 'main'],
224
+ mainFields: ['browser', 'module', 'jsnext:main', 'main'],
225
225
  modules: ['node_modules', path.resolve(__dirname, 'node_modules')],
226
226
  },
227
227
  plugins: [
@@ -1 +0,0 @@
1
- (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2637],{88058:function(u,v,n){var t=n(87650);function o(e,i){var a=e==null?0:e.length;return!!a&&t(e,i,0)>-1}u.exports=o},37431:function(u){function v(n,t,o){for(var e=-1,i=n==null?0:n.length;++e<i;)if(o(t,n[e]))return!0;return!1}u.exports=v},23089:function(u,v,n){var t=n(61712),o=t("length");u.exports=o},56671:function(u,v,n){var t=n(35897),o=n(74741),e=o(t);u.exports=e},60528:function(u){function v(n,t,o,e){for(var i=n.length,a=o+(e?1:-1);e?a--:++a<i;)if(t(n[a],a,n))return a;return-1}u.exports=v},87650:function(u,v,n){var t=n(60528),o=n(25556),e=n(54256);function i(a,p,d){return p===p?e(a,p,d):t(a,o,d)}u.exports=i},25556:function(u){function v(n){return n!==n}u.exports=v},91131:function(u,v,n){var t=n(94318),o=n(3387),e="[object RegExp]";function i(a){return o(a)&&t(a)==e}u.exports=i},52920:function(u,v,n){var t=n(56671),o=n(81580);function e(i,a){var p=-1,d=o(i)?Array(i.length):[];return t(i,function(S,E,O){d[++p]=a(S,E,O)}),d}u.exports=e},50690:function(u,v,n){var t=n(26460),o=n(80166),e=n(88904),i=n(52920),a=n(36024),p=n(76535),d=n(1397),S=n(15362),E=n(77236);function O(g,r,s){r.length?r=t(r,function(c){return E(c)?function(x){return o(x,c.length===1?c[0]:c)}:c}):r=[S];var f=-1;r=t(r,p(e));var b=i(g,function(c,x,l){var h=t(r,function(m){return m(c)});return{criteria:h,index:++f,value:c}});return a(b,function(c,x){return d(c,x,s)})}u.exports=O},36024:function(u){function v(n,t){var o=n.length;for(n.sort(t);o--;)n[o]=n[o].value;return n}u.exports=v},84351:function(u,v,n){var t=n(61124),o=n(88058),e=n(37431),i=n(30555),a=n(58491),p=n(66350),d=200;function S(E,O,g){var r=-1,s=o,f=E.length,b=!0,c=[],x=c;if(g)b=!1,s=e;else if(f>=d){var l=O?null:a(E);if(l)return p(l);b=!1,s=i,x=new t}else x=O?[]:c;n:for(;++r<f;){var h=E[r],m=O?O(h):h;if(h=g||h!==0?h:0,b&&m===m){for(var y=x.length;y--;)if(x[y]===m)continue n;O&&x.push(m),c.push(h)}else s(x,m,g)||(x!==c&&x.push(m),c.push(h))}return c}u.exports=S},40709:function(u,v,n){var t=n(22945);function o(e,i){if(e!==i){var a=e!==void 0,p=e===null,d=e===e,S=t(e),E=i!==void 0,O=i===null,g=i===i,r=t(i);if(!O&&!r&&!S&&e>i||S&&E&&g&&!O&&!r||p&&E&&g||!a&&g||!d)return 1;if(!p&&!S&&!r&&e<i||r&&a&&d&&!p&&!S||O&&a&&d||!E&&d||!g)return-1}return 0}u.exports=o},1397:function(u,v,n){var t=n(40709);function o(e,i,a){for(var p=-1,d=e.criteria,S=i.criteria,E=d.length,O=a.length;++p<E;){var g=t(d[p],S[p]);if(g){if(p>=O)return g;var r=a[p];return g*(r=="desc"?-1:1)}}return e.index-i.index}u.exports=o},74741:function(u,v,n){var t=n(81580);function o(e,i){return function(a,p){if(a==null)return a;if(!t(a))return e(a,p);for(var d=a.length,S=i?d:-1,E=Object(a);(i?S--:++S<d)&&p(E[S],S,E)!==!1;);return a}}u.exports=o},58491:function(u,v,n){var t=n(69902),o=n(13581),e=n(66350),i=1/0,a=t&&1/e(new t([,-0]))[1]==i?function(p){return new t(p)}:o;u.exports=a},54256:function(u){function v(n,t,o){for(var e=o-1,i=n.length;++e<i;)if(n[e]===t)return e;return-1}u.exports=v},38788:function(u,v,n){var t=n(23089),o=n(34327),e=n(71286);function i(a){return o(a)?e(a):t(a)}u.exports=i},71286:function(u){var v="\\ud800-\\udfff",n="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",o="\\u20d0-\\u20ff",e=n+t+o,i="\\ufe0e\\ufe0f",a="["+v+"]",p="["+e+"]",d="\\ud83c[\\udffb-\\udfff]",S="(?:"+p+"|"+d+")",E="[^"+v+"]",O="(?:\\ud83c[\\udde6-\\uddff]){2}",g="[\\ud800-\\udbff][\\udc00-\\udfff]",r="\\u200d",s=S+"?",f="["+i+"]?",b="(?:"+r+"(?:"+[E,O,g].join("|")+")"+f+s+")*",c=f+s+b,x="(?:"+[E+p+"?",p,O,g,a].join("|")+")",l=RegExp(d+"(?="+d+")|"+x+c,"g");function h(m){for(var y=l.lastIndex=0;l.test(m);)++y;return y}u.exports=h},52654:function(u,v,n){var t=n(91131),o=n(76535),e=n(91782),i=e&&e.isRegExp,a=i?o(i):t;u.exports=a},13581:function(u){function v(){}u.exports=v},98978:function(u,v,n){var t=n(40314),o=n(50690),e=n(94569),i=n(63108),a=e(function(p,d){if(p==null)return[];var S=d.length;return S>1&&i(p,d[0],d[1])?d=[]:S>2&&i(d[0],d[1],d[2])&&(d=[d[0]]),o(p,t(d,1),[])});u.exports=a},59578:function(u,v,n){var t=n(41119);function o(e){return t(e).toLowerCase()}u.exports=o},51382:function(u,v,n){var t=n(90454),o=n(24793),e=n(34327),i=n(85973),a=n(52654),p=n(38788),d=n(51119),S=n(25225),E=n(41119),O=30,g="...",r=/\w*$/;function s(f,b){var c=O,x=g;if(i(b)){var l="separator"in b?b.separator:l;c="length"in b?S(b.length):c,x="omission"in b?t(b.omission):x}f=E(f);var h=f.length;if(e(f)){var m=d(f);h=m.length}if(c>=h)return f;var y=c-p(x);if(y<1)return x;var C=m?o(m,0,y).join(""):f.slice(0,y);if(l===void 0)return C+x;if(m&&(y+=C.length-y),a(l)){if(f.slice(y).search(l)){var A,j=C;for(l.global||(l=RegExp(l.source,E(r.exec(l))+"g")),l.lastIndex=0;A=l.exec(j);)var R=A.index;C=C.slice(0,R===void 0?y:R)}}else if(f.indexOf(t(l),y)!=y){var z=C.lastIndexOf(l);z>-1&&(C=C.slice(0,z))}return C+x}u.exports=s},91815:function(u,v,n){var t=n(84351);function o(e){return e&&e.length?t(e):[]}u.exports=o},98178:function(u,v,n){"use strict";n.d(v,{P1:function(){return E}});var t="NOT_FOUND";function o(g){var r;return{get:function(f){return r&&g(r.key,f)?r.value:t},put:function(f,b){r={key:f,value:b}},getEntries:function(){return r?[r]:[]},clear:function(){r=void 0}}}function e(g,r){var s=[];function f(l){var h=s.findIndex(function(y){return r(l,y.key)});if(h>-1){var m=s[h];return h>0&&(s.splice(h,1),s.unshift(m)),m.value}return t}function b(l,h){f(l)===t&&(s.unshift({key:l,value:h}),s.length>g&&s.pop())}function c(){return s}function x(){s=[]}return{get:f,put:b,getEntries:c,clear:x}}var i=function(r,s){return r===s};function a(g){return function(s,f){if(s===null||f===null||s.length!==f.length)return!1;for(var b=s.length,c=0;c<b;c++)if(!g(s[c],f[c]))return!1;return!0}}function p(g,r){var s=typeof r=="object"?r:{equalityCheck:r},f=s.equalityCheck,b=f===void 0?i:f,c=s.maxSize,x=c===void 0?1:c,l=s.resultEqualityCheck,h=a(b),m=x===1?o(h):e(x,h);function y(){var C=m.get(arguments);if(C===t){if(C=g.apply(null,arguments),l){var A=m.getEntries(),j=A.find(function(R){return l(R.value,C)});j&&(C=j.value)}m.put(arguments,C)}return C}return y.clearCache=function(){return m.clear()},y}function d(g){var r=Array.isArray(g[0])?g[0]:g;if(!r.every(function(f){return typeof f=="function"})){var s=r.map(function(f){return typeof f=="function"?"function "+(f.name||"unnamed")+"()":typeof f}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+s+"]")}return r}function S(g){for(var r=arguments.length,s=new Array(r>1?r-1:0),f=1;f<r;f++)s[f-1]=arguments[f];var b=function(){for(var x=arguments.length,l=new Array(x),h=0;h<x;h++)l[h]=arguments[h];var m=0,y,C={memoizeOptions:void 0},A=l.pop();if(typeof A=="object"&&(C=A,A=l.pop()),typeof A!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof A+"]");var j=C,R=j.memoizeOptions,z=R===void 0?s:R,N=Array.isArray(z)?z:[z],F=d(l),U=g.apply(void 0,[function(){return m++,A.apply(null,arguments)}].concat(N)),L=g(function(){for(var M=[],B=F.length,T=0;T<B;T++)M.push(F[T].apply(null,arguments));return y=U.apply(null,M),y});return Object.assign(L,{resultFunc:A,memoizedResultFunc:U,dependencies:F,lastResult:function(){return y},recomputations:function(){return m},resetRecomputations:function(){return m=0}}),L};return b}var E=S(p),O=function(r,s){if(s===void 0&&(s=E),typeof r!="object")throw new Error("createStructuredSelector expects first argument to be an object "+("where each property is a selector, instead received a "+typeof r));var f=Object.keys(r),b=s(f.map(function(c){return r[c]}),function(){for(var c=arguments.length,x=new Array(c),l=0;l<c;l++)x[l]=arguments[l];return x.reduce(function(h,m,y){return h[f[y]]=m,h},{})});return b}}}]);