@strapi/content-releases 5.37.1 → 5.38.1

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 (150) hide show
  1. package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -1
  2. package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -1
  3. package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -1
  4. package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -1
  5. package/dist/admin/components/EntryValidationPopover.js.map +1 -1
  6. package/dist/admin/components/EntryValidationPopover.mjs +1 -1
  7. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -1
  8. package/dist/admin/components/RelativeTime.js.map +1 -1
  9. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  10. package/dist/admin/components/ReleaseAction.js.map +1 -1
  11. package/dist/admin/components/ReleaseAction.mjs +1 -1
  12. package/dist/admin/components/ReleaseAction.mjs.map +1 -1
  13. package/dist/admin/components/ReleaseActionMenu.js.map +1 -1
  14. package/dist/admin/components/ReleaseActionMenu.mjs +3 -3
  15. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -1
  16. package/dist/admin/components/ReleaseActionModal.js.map +1 -1
  17. package/dist/admin/components/ReleaseActionModal.mjs +2 -2
  18. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -1
  19. package/dist/admin/components/ReleaseActionOptions.js.map +1 -1
  20. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -1
  21. package/dist/admin/components/ReleaseListCell.js.map +1 -1
  22. package/dist/admin/components/ReleaseListCell.mjs.map +1 -1
  23. package/dist/admin/components/ReleaseModal.js.map +1 -1
  24. package/dist/admin/components/ReleaseModal.mjs.map +1 -1
  25. package/dist/admin/components/ReleasesPanel.js.map +1 -1
  26. package/dist/admin/components/ReleasesPanel.mjs.map +1 -1
  27. package/dist/admin/components/Widgets.js.map +1 -1
  28. package/dist/admin/components/Widgets.mjs +1 -1
  29. package/dist/admin/components/Widgets.mjs.map +1 -1
  30. package/dist/admin/constants.js.map +1 -1
  31. package/dist/admin/constants.mjs.map +1 -1
  32. package/dist/admin/index.js +1 -0
  33. package/dist/admin/index.js.map +1 -1
  34. package/dist/admin/index.mjs +1 -0
  35. package/dist/admin/index.mjs.map +1 -1
  36. package/dist/admin/modules/hooks.js.map +1 -1
  37. package/dist/admin/modules/hooks.mjs.map +1 -1
  38. package/dist/admin/pages/App.js.map +1 -1
  39. package/dist/admin/pages/App.mjs.map +1 -1
  40. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
  41. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
  42. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
  43. package/dist/admin/pages/ReleaseDetailsPage.mjs +2 -2
  44. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
  45. package/dist/admin/pages/ReleasesPage.js.map +1 -1
  46. package/dist/admin/pages/ReleasesPage.mjs +1 -1
  47. package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
  48. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
  49. package/dist/admin/pages/ReleasesSettingsPage.mjs +1 -1
  50. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
  51. package/dist/admin/services/homepage.js.map +1 -1
  52. package/dist/admin/services/homepage.mjs.map +1 -1
  53. package/dist/admin/services/release.js.map +1 -1
  54. package/dist/admin/services/release.mjs.map +1 -1
  55. package/dist/admin/store/hooks.js.map +1 -1
  56. package/dist/admin/store/hooks.mjs.map +1 -1
  57. package/dist/admin/translations/es.json.js +103 -0
  58. package/dist/admin/translations/es.json.js.map +1 -0
  59. package/dist/admin/translations/es.json.mjs +101 -0
  60. package/dist/admin/translations/es.json.mjs.map +1 -0
  61. package/dist/admin/utils/api.js.map +1 -1
  62. package/dist/admin/utils/api.mjs.map +1 -1
  63. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  64. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  65. package/dist/admin/utils/time.js.map +1 -1
  66. package/dist/admin/utils/time.mjs.map +1 -1
  67. package/dist/admin/validation/schemas.js.map +1 -1
  68. package/dist/admin/validation/schemas.mjs.map +1 -1
  69. package/dist/server/bootstrap.js.map +1 -1
  70. package/dist/server/bootstrap.mjs.map +1 -1
  71. package/dist/server/constants.js.map +1 -1
  72. package/dist/server/constants.mjs.map +1 -1
  73. package/dist/server/content-types/index.js +4 -4
  74. package/dist/server/content-types/index.js.map +1 -1
  75. package/dist/server/content-types/index.mjs.map +1 -1
  76. package/dist/server/content-types/release/index.js.map +1 -1
  77. package/dist/server/content-types/release/index.mjs.map +1 -1
  78. package/dist/server/content-types/release/schema.js.map +1 -1
  79. package/dist/server/content-types/release/schema.mjs.map +1 -1
  80. package/dist/server/content-types/release-action/index.js.map +1 -1
  81. package/dist/server/content-types/release-action/index.mjs.map +1 -1
  82. package/dist/server/content-types/release-action/schema.js.map +1 -1
  83. package/dist/server/content-types/release-action/schema.mjs.map +1 -1
  84. package/dist/server/controllers/homepage.js.map +1 -1
  85. package/dist/server/controllers/homepage.mjs.map +1 -1
  86. package/dist/server/controllers/index.js.map +1 -1
  87. package/dist/server/controllers/index.mjs.map +1 -1
  88. package/dist/server/controllers/release-action.js.map +1 -1
  89. package/dist/server/controllers/release-action.mjs +1 -1
  90. package/dist/server/controllers/release-action.mjs.map +1 -1
  91. package/dist/server/controllers/release.js.map +1 -1
  92. package/dist/server/controllers/release.mjs +1 -1
  93. package/dist/server/controllers/release.mjs.map +1 -1
  94. package/dist/server/controllers/settings.js.map +1 -1
  95. package/dist/server/controllers/settings.mjs.map +1 -1
  96. package/dist/server/controllers/validation/release-action.js.map +1 -1
  97. package/dist/server/controllers/validation/release-action.mjs.map +1 -1
  98. package/dist/server/controllers/validation/release.js.map +1 -1
  99. package/dist/server/controllers/validation/release.mjs.map +1 -1
  100. package/dist/server/controllers/validation/settings.js.map +1 -1
  101. package/dist/server/controllers/validation/settings.mjs.map +1 -1
  102. package/dist/server/destroy.js.map +1 -1
  103. package/dist/server/destroy.mjs.map +1 -1
  104. package/dist/server/index.js +9 -9
  105. package/dist/server/index.js.map +1 -1
  106. package/dist/server/index.mjs.map +1 -1
  107. package/dist/server/middlewares/documents.js.map +1 -1
  108. package/dist/server/middlewares/documents.mjs +1 -1
  109. package/dist/server/middlewares/documents.mjs.map +1 -1
  110. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
  111. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
  112. package/dist/server/migrations/index.js.map +1 -1
  113. package/dist/server/migrations/index.mjs.map +1 -1
  114. package/dist/server/register.js.map +1 -1
  115. package/dist/server/register.mjs.map +1 -1
  116. package/dist/server/routes/homepage.js.map +1 -1
  117. package/dist/server/routes/homepage.mjs.map +1 -1
  118. package/dist/server/routes/index.js.map +1 -1
  119. package/dist/server/routes/index.mjs.map +1 -1
  120. package/dist/server/routes/release-action.js.map +1 -1
  121. package/dist/server/routes/release-action.mjs.map +1 -1
  122. package/dist/server/routes/release.js.map +1 -1
  123. package/dist/server/routes/release.mjs.map +1 -1
  124. package/dist/server/routes/settings.js.map +1 -1
  125. package/dist/server/routes/settings.mjs.map +1 -1
  126. package/dist/server/services/homepage.js.map +1 -1
  127. package/dist/server/services/homepage.mjs.map +1 -1
  128. package/dist/server/services/index.js.map +1 -1
  129. package/dist/server/services/index.mjs.map +1 -1
  130. package/dist/server/services/release-action.js.map +1 -1
  131. package/dist/server/services/release-action.mjs +3 -3
  132. package/dist/server/services/release-action.mjs.map +1 -1
  133. package/dist/server/services/release.js +10 -3
  134. package/dist/server/services/release.js.map +1 -1
  135. package/dist/server/services/release.mjs +13 -6
  136. package/dist/server/services/release.mjs.map +1 -1
  137. package/dist/server/services/scheduling.js.map +1 -1
  138. package/dist/server/services/scheduling.mjs.map +1 -1
  139. package/dist/server/services/settings.js.map +1 -1
  140. package/dist/server/services/settings.mjs.map +1 -1
  141. package/dist/server/services/validation.js.map +1 -1
  142. package/dist/server/services/validation.mjs.map +1 -1
  143. package/dist/server/src/services/release.d.ts.map +1 -1
  144. package/dist/server/src/utils/index.d.ts +16 -0
  145. package/dist/server/src/utils/index.d.ts.map +1 -1
  146. package/dist/server/utils/index.js +91 -0
  147. package/dist/server/utils/index.js.map +1 -1
  148. package/dist/server/utils/index.mjs +91 -1
  149. package/dist/server/utils/index.mjs.map +1 -1
  150. package/package.json +17 -12
@@ -3,10 +3,10 @@
3
3
  var register = require('./register.js');
4
4
  var bootstrap = require('./bootstrap.js');
5
5
  var destroy = require('./destroy.js');
6
- var index$1 = require('./content-types/index.js');
7
- var index$2 = require('./services/index.js');
8
- var index$3 = require('./controllers/index.js');
9
- var index$4 = require('./routes/index.js');
6
+ var index$4 = require('./content-types/index.js');
7
+ var index$3 = require('./services/index.js');
8
+ var index$2 = require('./controllers/index.js');
9
+ var index$1 = require('./routes/index.js');
10
10
 
11
11
  const getPlugin = ()=>{
12
12
  if (strapi.ee.features.isEnabled('cms-content-releases')) {
@@ -14,17 +14,17 @@ const getPlugin = ()=>{
14
14
  register: register.register,
15
15
  bootstrap: bootstrap.bootstrap,
16
16
  destroy: destroy.destroy,
17
- contentTypes: index$1.contentTypes,
18
- services: index$2.services,
19
- controllers: index$3.controllers,
20
- routes: index$4.routes
17
+ contentTypes: index$4.contentTypes,
18
+ services: index$3.services,
19
+ controllers: index$2.controllers,
20
+ routes: index$1.routes
21
21
  };
22
22
  }
23
23
  return {
24
24
  // Always return register, it handles its own feature check
25
25
  register: register.register,
26
26
  // Always return contentTypes to avoid losing data when the feature is disabled
27
- contentTypes: index$1.contentTypes
27
+ contentTypes: index$4.contentTypes
28
28
  };
29
29
  };
30
30
  var index = getPlugin();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { register } from './register';\nimport { bootstrap } from './bootstrap';\nimport { destroy } from './destroy';\nimport { contentTypes } from './content-types';\nimport { services } from './services';\nimport { controllers } from './controllers';\nimport { routes } from './routes';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return register, it handles its own feature check\n register,\n // Always return contentTypes to avoid losing data when the feature is disabled\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;;;AASA,MAAMA,SAAY,GAAA,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;QACxD,OAAO;AACLC,sBAAAA,iBAAAA;AACAC,uBAAAA,mBAAAA;AACAC,qBAAAA,eAAAA;AACAC,0BAAAA,oBAAAA;AACAC,sBAAAA,gBAAAA;AACAC,yBAAAA,mBAAAA;AACAC,oBAAAA;AACF,SAAA;AACF;IAEA,OAAO;;AAELN,kBAAAA,iBAAAA;;AAEAG,sBAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAY,EAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { register } from './register';\nimport { bootstrap } from './bootstrap';\nimport { destroy } from './destroy';\nimport { contentTypes } from './content-types';\nimport { services } from './services';\nimport { controllers } from './controllers';\nimport { routes } from './routes';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return register, it handles its own feature check\n register,\n // Always return contentTypes to avoid losing data when the feature is disabled\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;;;AASA,MAAMA,SAAAA,GAAY,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;QACxD,OAAO;AACLC,sBAAAA,iBAAAA;AACAC,uBAAAA,mBAAAA;AACAC,qBAAAA,eAAAA;AACAC,0BAAAA,oBAAAA;AACAC,sBAAAA,gBAAAA;AACAC,yBAAAA,mBAAAA;AACAC,oBAAAA;AACF,SAAA;AACF,IAAA;IAEA,OAAO;;AAELN,kBAAAA,iBAAAA;;AAEAG,sBAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAAA,EAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../server/src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { register } from './register';\nimport { bootstrap } from './bootstrap';\nimport { destroy } from './destroy';\nimport { contentTypes } from './content-types';\nimport { services } from './services';\nimport { controllers } from './controllers';\nimport { routes } from './routes';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return register, it handles its own feature check\n register,\n // Always return contentTypes to avoid losing data when the feature is disabled\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;AASA,MAAMA,SAAY,GAAA,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;QACxD,OAAO;AACLC,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,OAAAA;AACAC,YAAAA,YAAAA;AACAC,YAAAA,QAAAA;AACAC,YAAAA,WAAAA;AACAC,YAAAA;AACF,SAAA;AACF;IAEA,OAAO;;AAELN,QAAAA,QAAAA;;AAEAG,QAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAY,EAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../server/src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { register } from './register';\nimport { bootstrap } from './bootstrap';\nimport { destroy } from './destroy';\nimport { contentTypes } from './content-types';\nimport { services } from './services';\nimport { controllers } from './controllers';\nimport { routes } from './routes';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return register, it handles its own feature check\n register,\n // Always return contentTypes to avoid losing data when the feature is disabled\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;AASA,MAAMA,SAAAA,GAAY,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;QACxD,OAAO;AACLC,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,OAAAA;AACAC,YAAAA,YAAAA;AACAC,YAAAA,QAAAA;AACAC,YAAAA,WAAAA;AACAC,YAAAA;AACF,SAAA;AACF,IAAA;IAEA,OAAO;;AAELN,QAAAA,QAAAA;;AAEAG,QAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAAA,EAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sources":["../../../server/src/middlewares/documents.ts"],"sourcesContent":["import type { Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { getService, isEntryValid } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\ninterface ReleaseActionsParams {\n contentType: UID.ContentType;\n entryDocumentId?: Modules.Documents.ID;\n locale?: string;\n}\n\nconst updateActionsStatusAndUpdateReleaseStatus = async (\n contentType: UID.ContentType,\n entry: Modules.Documents.AnyDocument\n) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n },\n });\n\n const entryStatus = await isEntryValid(contentType, entry, { strapi });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).updateMany({\n where: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n data: {\n isEntryValid: entryStatus,\n },\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsAndUpdateReleaseStatus = async (params: ReleaseActionsParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsOnDelete: Middleware = async (ctx, next) => {\n if (ctx.action !== 'delete') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n const { documentId, locale } = ctx.params;\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n try {\n deleteActionsAndUpdateReleaseStatus({\n contentType,\n entryDocumentId: documentId,\n ...(locale !== '*' && { locale }),\n });\n } catch (error) {\n strapi.log.error('Error while deleting release actions after delete', {\n error,\n });\n }\n\n return result;\n};\n\nconst updateActionsOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n\n const result = (await next()) as Modules.Documents.AnyDocument;\n\n if (!result) {\n return result;\n }\n\n try {\n updateActionsStatusAndUpdateReleaseStatus(contentType, result);\n } catch (error) {\n strapi.log.error('Error while updating release actions after update', {\n error,\n });\n }\n\n return result;\n};\n\nexport { deleteActionsOnDelete, updateActionsOnUpdate };\n"],"names":["updateActionsStatusAndUpdateReleaseStatus","contentType","entry","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","releasedAt","actions","entryDocumentId","documentId","locale","entryStatus","isEntryValid","RELEASE_ACTION_MODEL_UID","updateMany","data","release","getService","updateReleaseStatus","id","deleteActionsAndUpdateReleaseStatus","params","deleteMany","deleteActionsOnDelete","ctx","next","action","contentTypes","hasDraftAndPublish","uid","result","error","log","updateActionsOnUpdate"],"mappings":";;;;;;AAaA,MAAMA,yCAAAA,GAA4C,OAChDC,WACAC,EAAAA,KAAAA,GAAAA;IAEA,MAAMC,QAAAA,GAAW,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACC,2BAAmBC,CAAAA,CAAAA,QAAQ,CAAC;QACjEC,KAAO,EAAA;YACLC,UAAY,EAAA,IAAA;YACZC,OAAS,EAAA;AACPV,gBAAAA,WAAAA;AACAW,gBAAAA,eAAAA,EAAiBV,MAAMW,UAAU;AACjCC,gBAAAA,MAAAA,EAAQZ,MAAMY;AAChB;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,MAAMC,kBAAaf,CAAAA,WAAAA,EAAaC,KAAO,EAAA;AAAEE,QAAAA;AAAO,KAAA,CAAA;AAEpE,IAAA,MAAMA,OAAOC,EAAE,CAACC,KAAK,CAACW,kCAAAA,CAAAA,CAA0BC,UAAU,CAAC;QACzDT,KAAO,EAAA;AACLR,YAAAA,WAAAA;AACAW,YAAAA,eAAAA,EAAiBV,MAAMW,UAAU;AACjCC,YAAAA,MAAAA,EAAQZ,MAAMY;AAChB,SAAA;QACAK,IAAM,EAAA;YACJH,YAAcD,EAAAA;AAChB;AACF,KAAA,CAAA;IAEA,KAAK,MAAMK,WAAWjB,QAAU,CAAA;AAC9BkB,QAAAA,gBAAAA,CAAW,SAAW,EAAA;AAAEjB,YAAAA;SAAUkB,CAAAA,CAAAA,mBAAmB,CAACF,OAAAA,CAAQG,EAAE,CAAA;AAClE;AACF,CAAA;AAEA,MAAMC,sCAAsC,OAAOC,MAAAA,GAAAA;IACjD,MAAMtB,QAAAA,GAAW,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACC,2BAAmBC,CAAAA,CAAAA,QAAQ,CAAC;QACjEC,KAAO,EAAA;YACLE,OAASc,EAAAA;AACX;AACF,KAAA,CAAA;AAEA,IAAA,MAAMrB,OAAOC,EAAE,CAACC,KAAK,CAACW,kCAAAA,CAAAA,CAA0BS,UAAU,CAAC;QACzDjB,KAAOgB,EAAAA;AACT,KAAA,CAAA;IAEA,KAAK,MAAML,WAAWjB,QAAU,CAAA;AAC9BkB,QAAAA,gBAAAA,CAAW,SAAW,EAAA;AAAEjB,YAAAA;SAAUkB,CAAAA,CAAAA,mBAAmB,CAACF,OAAAA,CAAQG,EAAE,CAAA;AAClE;AACF,CAAA;AAEMI,MAAAA,qBAAAA,GAAoC,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;IACpD,IAAID,GAAAA,CAAIE,MAAM,KAAK,QAAU,EAAA;QAC3B,OAAOD,IAAAA,EAAAA;AACT;AAEA,IAAA,IAAI,CAACE,kBAAaC,CAAAA,kBAAkB,CAACJ,GAAAA,CAAI3B,WAAW,CAAG,EAAA;QACrD,OAAO4B,IAAAA,EAAAA;AACT;AAEA,IAAA,MAAM5B,WAAc2B,GAAAA,GAAAA,CAAI3B,WAAW,CAACgC,GAAG;AACvC,IAAA,MAAM,EAAEpB,UAAU,EAAEC,MAAM,EAAE,GAAGc,IAAIH,MAAM;AAEzC,IAAA,MAAMS,SAAS,MAAML,IAAAA,EAAAA;AAErB,IAAA,IAAI,CAACK,MAAQ,EAAA;QACX,OAAOA,MAAAA;AACT;IAEA,IAAI;QACFV,mCAAoC,CAAA;AAClCvB,YAAAA,WAAAA;YACAW,eAAiBC,EAAAA,UAAAA;AACjB,YAAA,GAAIC,WAAW,GAAO,IAAA;AAAEA,gBAAAA;;AAC1B,SAAA,CAAA;AACF,KAAA,CAAE,OAAOqB,KAAO,EAAA;AACd/B,QAAAA,MAAAA,CAAOgC,GAAG,CAACD,KAAK,CAAC,mDAAqD,EAAA;AACpEA,YAAAA;AACF,SAAA,CAAA;AACF;IAEA,OAAOD,MAAAA;AACT;AAEMG,MAAAA,qBAAAA,GAAoC,OAAOT,GAAKC,EAAAA,IAAAA,GAAAA;IACpD,IAAID,GAAAA,CAAIE,MAAM,KAAK,QAAU,EAAA;QAC3B,OAAOD,IAAAA,EAAAA;AACT;AAEA,IAAA,IAAI,CAACE,kBAAaC,CAAAA,kBAAkB,CAACJ,GAAAA,CAAI3B,WAAW,CAAG,EAAA;QACrD,OAAO4B,IAAAA,EAAAA;AACT;AAEA,IAAA,MAAM5B,WAAc2B,GAAAA,GAAAA,CAAI3B,WAAW,CAACgC,GAAG;AAEvC,IAAA,MAAMC,SAAU,MAAML,IAAAA,EAAAA;AAEtB,IAAA,IAAI,CAACK,MAAQ,EAAA;QACX,OAAOA,MAAAA;AACT;IAEA,IAAI;AACFlC,QAAAA,yCAAAA,CAA0CC,WAAaiC,EAAAA,MAAAA,CAAAA;AACzD,KAAA,CAAE,OAAOC,KAAO,EAAA;AACd/B,QAAAA,MAAAA,CAAOgC,GAAG,CAACD,KAAK,CAAC,mDAAqD,EAAA;AACpEA,YAAAA;AACF,SAAA,CAAA;AACF;IAEA,OAAOD,MAAAA;AACT;;;;;"}
1
+ {"version":3,"file":"documents.js","sources":["../../../server/src/middlewares/documents.ts"],"sourcesContent":["import type { Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { getService, isEntryValid } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\ninterface ReleaseActionsParams {\n contentType: UID.ContentType;\n entryDocumentId?: Modules.Documents.ID;\n locale?: string;\n}\n\nconst updateActionsStatusAndUpdateReleaseStatus = async (\n contentType: UID.ContentType,\n entry: Modules.Documents.AnyDocument\n) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n },\n });\n\n const entryStatus = await isEntryValid(contentType, entry, { strapi });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).updateMany({\n where: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n data: {\n isEntryValid: entryStatus,\n },\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsAndUpdateReleaseStatus = async (params: ReleaseActionsParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsOnDelete: Middleware = async (ctx, next) => {\n if (ctx.action !== 'delete') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n const { documentId, locale } = ctx.params;\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n try {\n deleteActionsAndUpdateReleaseStatus({\n contentType,\n entryDocumentId: documentId,\n ...(locale !== '*' && { locale }),\n });\n } catch (error) {\n strapi.log.error('Error while deleting release actions after delete', {\n error,\n });\n }\n\n return result;\n};\n\nconst updateActionsOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n\n const result = (await next()) as Modules.Documents.AnyDocument;\n\n if (!result) {\n return result;\n }\n\n try {\n updateActionsStatusAndUpdateReleaseStatus(contentType, result);\n } catch (error) {\n strapi.log.error('Error while updating release actions after update', {\n error,\n });\n }\n\n return result;\n};\n\nexport { deleteActionsOnDelete, updateActionsOnUpdate };\n"],"names":["updateActionsStatusAndUpdateReleaseStatus","contentType","entry","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","releasedAt","actions","entryDocumentId","documentId","locale","entryStatus","isEntryValid","RELEASE_ACTION_MODEL_UID","updateMany","data","release","getService","updateReleaseStatus","id","deleteActionsAndUpdateReleaseStatus","params","deleteMany","deleteActionsOnDelete","ctx","next","action","contentTypes","hasDraftAndPublish","uid","result","error","log","updateActionsOnUpdate"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { contentTypes } from '@strapi/utils';
2
2
  import { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants.mjs';
3
- import { isEntryValid, getService } from '../utils/index.mjs';
3
+ import { getService, isEntryValid } from '../utils/index.mjs';
4
4
 
5
5
  const updateActionsStatusAndUpdateReleaseStatus = async (contentType, entry)=>{
6
6
  const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({
@@ -1 +1 @@
1
- {"version":3,"file":"documents.mjs","sources":["../../../server/src/middlewares/documents.ts"],"sourcesContent":["import type { Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { getService, isEntryValid } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\ninterface ReleaseActionsParams {\n contentType: UID.ContentType;\n entryDocumentId?: Modules.Documents.ID;\n locale?: string;\n}\n\nconst updateActionsStatusAndUpdateReleaseStatus = async (\n contentType: UID.ContentType,\n entry: Modules.Documents.AnyDocument\n) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n },\n });\n\n const entryStatus = await isEntryValid(contentType, entry, { strapi });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).updateMany({\n where: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n data: {\n isEntryValid: entryStatus,\n },\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsAndUpdateReleaseStatus = async (params: ReleaseActionsParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsOnDelete: Middleware = async (ctx, next) => {\n if (ctx.action !== 'delete') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n const { documentId, locale } = ctx.params;\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n try {\n deleteActionsAndUpdateReleaseStatus({\n contentType,\n entryDocumentId: documentId,\n ...(locale !== '*' && { locale }),\n });\n } catch (error) {\n strapi.log.error('Error while deleting release actions after delete', {\n error,\n });\n }\n\n return result;\n};\n\nconst updateActionsOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n\n const result = (await next()) as Modules.Documents.AnyDocument;\n\n if (!result) {\n return result;\n }\n\n try {\n updateActionsStatusAndUpdateReleaseStatus(contentType, result);\n } catch (error) {\n strapi.log.error('Error while updating release actions after update', {\n error,\n });\n }\n\n return result;\n};\n\nexport { deleteActionsOnDelete, updateActionsOnUpdate };\n"],"names":["updateActionsStatusAndUpdateReleaseStatus","contentType","entry","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","releasedAt","actions","entryDocumentId","documentId","locale","entryStatus","isEntryValid","RELEASE_ACTION_MODEL_UID","updateMany","data","release","getService","updateReleaseStatus","id","deleteActionsAndUpdateReleaseStatus","params","deleteMany","deleteActionsOnDelete","ctx","next","action","contentTypes","hasDraftAndPublish","uid","result","error","log","updateActionsOnUpdate"],"mappings":"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"}
1
+ {"version":3,"file":"documents.mjs","sources":["../../../server/src/middlewares/documents.ts"],"sourcesContent":["import type { Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\nimport { RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { getService, isEntryValid } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\ninterface ReleaseActionsParams {\n contentType: UID.ContentType;\n entryDocumentId?: Modules.Documents.ID;\n locale?: string;\n}\n\nconst updateActionsStatusAndUpdateReleaseStatus = async (\n contentType: UID.ContentType,\n entry: Modules.Documents.AnyDocument\n) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n },\n });\n\n const entryStatus = await isEntryValid(contentType, entry, { strapi });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).updateMany({\n where: {\n contentType,\n entryDocumentId: entry.documentId,\n locale: entry.locale,\n },\n data: {\n isEntryValid: entryStatus,\n },\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsAndUpdateReleaseStatus = async (params: ReleaseActionsParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nconst deleteActionsOnDelete: Middleware = async (ctx, next) => {\n if (ctx.action !== 'delete') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n const { documentId, locale } = ctx.params;\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n try {\n deleteActionsAndUpdateReleaseStatus({\n contentType,\n entryDocumentId: documentId,\n ...(locale !== '*' && { locale }),\n });\n } catch (error) {\n strapi.log.error('Error while deleting release actions after delete', {\n error,\n });\n }\n\n return result;\n};\n\nconst updateActionsOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n if (!contentTypes.hasDraftAndPublish(ctx.contentType)) {\n return next();\n }\n\n const contentType = ctx.contentType.uid;\n\n const result = (await next()) as Modules.Documents.AnyDocument;\n\n if (!result) {\n return result;\n }\n\n try {\n updateActionsStatusAndUpdateReleaseStatus(contentType, result);\n } catch (error) {\n strapi.log.error('Error while updating release actions after update', {\n error,\n });\n }\n\n return result;\n};\n\nexport { deleteActionsOnDelete, updateActionsOnUpdate };\n"],"names":["updateActionsStatusAndUpdateReleaseStatus","contentType","entry","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","releasedAt","actions","entryDocumentId","documentId","locale","entryStatus","isEntryValid","RELEASE_ACTION_MODEL_UID","updateMany","data","release","getService","updateReleaseStatus","id","deleteActionsAndUpdateReleaseStatus","params","deleteMany","deleteActionsOnDelete","ctx","next","action","contentTypes","hasDraftAndPublish","uid","result","error","log","updateActionsOnUpdate"],"mappings":";;;;AAaA,MAAMA,yCAAAA,GAA4C,OAChDC,WAAAA,EACAC,KAAAA,GAAAA;IAEA,MAAMC,QAAAA,GAAW,MAAMC,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAACC,iBAAAA,CAAAA,CAAmBC,QAAQ,CAAC;QACjEC,KAAAA,EAAO;YACLC,UAAAA,EAAY,IAAA;YACZC,OAAAA,EAAS;AACPV,gBAAAA,WAAAA;AACAW,gBAAAA,eAAAA,EAAiBV,MAAMW,UAAU;AACjCC,gBAAAA,MAAAA,EAAQZ,MAAMY;AAChB;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc,MAAMC,YAAAA,CAAaf,WAAAA,EAAaC,KAAAA,EAAO;AAAEE,QAAAA;AAAO,KAAA,CAAA;AAEpE,IAAA,MAAMA,OAAOC,EAAE,CAACC,KAAK,CAACW,wBAAAA,CAAAA,CAA0BC,UAAU,CAAC;QACzDT,KAAAA,EAAO;AACLR,YAAAA,WAAAA;AACAW,YAAAA,eAAAA,EAAiBV,MAAMW,UAAU;AACjCC,YAAAA,MAAAA,EAAQZ,MAAMY;AAChB,SAAA;QACAK,IAAAA,EAAM;YACJH,YAAAA,EAAcD;AAChB;AACF,KAAA,CAAA;IAEA,KAAK,MAAMK,WAAWjB,QAAAA,CAAU;AAC9BkB,QAAAA,UAAAA,CAAW,SAAA,EAAW;AAAEjB,YAAAA;SAAO,CAAA,CAAGkB,mBAAmB,CAACF,OAAAA,CAAQG,EAAE,CAAA;AAClE,IAAA;AACF,CAAA;AAEA,MAAMC,sCAAsC,OAAOC,MAAAA,GAAAA;IACjD,MAAMtB,QAAAA,GAAW,MAAMC,MAAAA,CAAOC,EAAE,CAACC,KAAK,CAACC,iBAAAA,CAAAA,CAAmBC,QAAQ,CAAC;QACjEC,KAAAA,EAAO;YACLE,OAAAA,EAASc;AACX;AACF,KAAA,CAAA;AAEA,IAAA,MAAMrB,OAAOC,EAAE,CAACC,KAAK,CAACW,wBAAAA,CAAAA,CAA0BS,UAAU,CAAC;QACzDjB,KAAAA,EAAOgB;AACT,KAAA,CAAA;IAEA,KAAK,MAAML,WAAWjB,QAAAA,CAAU;AAC9BkB,QAAAA,UAAAA,CAAW,SAAA,EAAW;AAAEjB,YAAAA;SAAO,CAAA,CAAGkB,mBAAmB,CAACF,OAAAA,CAAQG,EAAE,CAAA;AAClE,IAAA;AACF,CAAA;AAEA,MAAMI,qBAAAA,GAAoC,OAAOC,GAAAA,EAAKC,IAAAA,GAAAA;IACpD,IAAID,GAAAA,CAAIE,MAAM,KAAK,QAAA,EAAU;QAC3B,OAAOD,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,IAAI,CAACE,YAAAA,CAAaC,kBAAkB,CAACJ,GAAAA,CAAI3B,WAAW,CAAA,EAAG;QACrD,OAAO4B,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,MAAM5B,WAAAA,GAAc2B,GAAAA,CAAI3B,WAAW,CAACgC,GAAG;AACvC,IAAA,MAAM,EAAEpB,UAAU,EAAEC,MAAM,EAAE,GAAGc,IAAIH,MAAM;AAEzC,IAAA,MAAMS,SAAS,MAAML,IAAAA,EAAAA;AAErB,IAAA,IAAI,CAACK,MAAAA,EAAQ;QACX,OAAOA,MAAAA;AACT,IAAA;IAEA,IAAI;QACFV,mCAAAA,CAAoC;AAClCvB,YAAAA,WAAAA;YACAW,eAAAA,EAAiBC,UAAAA;AACjB,YAAA,GAAIC,WAAW,GAAA,IAAO;AAAEA,gBAAAA;;AAC1B,SAAA,CAAA;AACF,IAAA,CAAA,CAAE,OAAOqB,KAAAA,EAAO;AACd/B,QAAAA,MAAAA,CAAOgC,GAAG,CAACD,KAAK,CAAC,mDAAA,EAAqD;AACpEA,YAAAA;AACF,SAAA,CAAA;AACF,IAAA;IAEA,OAAOD,MAAAA;AACT;AAEA,MAAMG,qBAAAA,GAAoC,OAAOT,GAAAA,EAAKC,IAAAA,GAAAA;IACpD,IAAID,GAAAA,CAAIE,MAAM,KAAK,QAAA,EAAU;QAC3B,OAAOD,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,IAAI,CAACE,YAAAA,CAAaC,kBAAkB,CAACJ,GAAAA,CAAI3B,WAAW,CAAA,EAAG;QACrD,OAAO4B,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,MAAM5B,WAAAA,GAAc2B,GAAAA,CAAI3B,WAAW,CAACgC,GAAG;AAEvC,IAAA,MAAMC,SAAU,MAAML,IAAAA,EAAAA;AAEtB,IAAA,IAAI,CAACK,MAAAA,EAAQ;QACX,OAAOA,MAAAA;AACT,IAAA;IAEA,IAAI;AACFlC,QAAAA,yCAAAA,CAA0CC,WAAAA,EAAaiC,MAAAA,CAAAA;AACzD,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;AACd/B,QAAAA,MAAAA,CAAOgC,GAAG,CAACD,KAAK,CAAC,mDAAA,EAAqD;AACpEA,YAAAA;AACF,SAAA,CAAA;AACF,IAAA;IAEA,OAAOD,MAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"5.0.0-document-id-in-actions.js","sources":["../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"sourcesContent":["import { async } from '@strapi/utils';\n\nimport type { Migration, Database } from '@strapi/database';\n\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * On v4, release actions are linked with entries using the built in Polymorphic relations.\n *\n * On v5, we are going to save entryDocumentId on the release action and make the link manually.\n * This because entryId is not a reliable way to link documents, as it can change.\n */\nexport const addEntryDocumentToReleaseActions: Migration = {\n name: 'content-releases::5.0.0-add-entry-document-id-to-release-actions',\n async up(trx: Knex, db: Database) {\n // Check if the table exists\n const hasTable = await trx.schema.hasTable('strapi_release_actions');\n\n if (!hasTable) {\n return;\n }\n\n const hasPolymorphicColumn = await trx.schema.hasColumn('strapi_release_actions', 'target_id');\n\n // If user has PolymorphicColumn means that is coming from v4\n if (hasPolymorphicColumn) {\n // First time coming from v4 user doesn't have entryDocumentId\n // but we double check to avoid errors\n const hasEntryDocumentIdColumn = await trx.schema.hasColumn(\n 'strapi_release_actions',\n 'entry_document_id'\n );\n\n if (!hasEntryDocumentIdColumn) {\n await trx.schema.alterTable('strapi_release_actions', (table) => {\n table.string('entry_document_id');\n });\n }\n\n const releaseActions = await trx.select('*').from('strapi_release_actions');\n\n await async.map(releaseActions, async (action: any) => {\n const { target_type, target_id } = action;\n\n const entry = await db.query(target_type).findOne({ where: { id: target_id } });\n\n if (entry) {\n await trx('strapi_release_actions')\n .update({ entry_document_id: entry.documentId })\n .where('id', action.id);\n }\n });\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["addEntryDocumentToReleaseActions","name","up","trx","db","hasTable","schema","hasPolymorphicColumn","hasColumn","hasEntryDocumentIdColumn","alterTable","table","string","releaseActions","select","from","async","map","action","target_type","target_id","entry","query","findOne","where","id","update","entry_document_id","documentId","down","Error"],"mappings":";;;;AAMA;;;;;UAMaA,gCAA8C,GAAA;IACzDC,IAAM,EAAA,kEAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,GAAS,EAAEC,EAAY,EAAA;;AAE9B,QAAA,MAAMC,WAAW,MAAMF,GAAAA,CAAIG,MAAM,CAACD,QAAQ,CAAC,wBAAA,CAAA;AAE3C,QAAA,IAAI,CAACA,QAAU,EAAA;AACb,YAAA;AACF;AAEA,QAAA,MAAME,uBAAuB,MAAMJ,GAAAA,CAAIG,MAAM,CAACE,SAAS,CAAC,wBAA0B,EAAA,WAAA,CAAA;;AAGlF,QAAA,IAAID,oBAAsB,EAAA;;;AAGxB,YAAA,MAAME,2BAA2B,MAAMN,GAAAA,CAAIG,MAAM,CAACE,SAAS,CACzD,wBACA,EAAA,mBAAA,CAAA;AAGF,YAAA,IAAI,CAACC,wBAA0B,EAAA;AAC7B,gBAAA,MAAMN,IAAIG,MAAM,CAACI,UAAU,CAAC,0BAA0B,CAACC,KAAAA,GAAAA;AACrDA,oBAAAA,KAAAA,CAAMC,MAAM,CAAC,mBAAA,CAAA;AACf,iBAAA,CAAA;AACF;AAEA,YAAA,MAAMC,iBAAiB,MAAMV,GAAAA,CAAIW,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,wBAAA,CAAA;AAElD,YAAA,MAAMC,WAAMC,CAAAA,GAAG,CAACJ,cAAAA,EAAgB,OAAOK,MAAAA,GAAAA;AACrC,gBAAA,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAE,GAAGF,MAAAA;AAEnC,gBAAA,MAAMG,QAAQ,MAAMjB,EAAAA,CAAGkB,KAAK,CAACH,WAAAA,CAAAA,CAAaI,OAAO,CAAC;oBAAEC,KAAO,EAAA;wBAAEC,EAAIL,EAAAA;AAAU;AAAE,iBAAA,CAAA;AAE7E,gBAAA,IAAIC,KAAO,EAAA;oBACT,MAAMlB,GAAAA,CAAI,wBACPuB,CAAAA,CAAAA,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAMN,EAAAA,MAAAA,CAAOO,EAAE,CAAA;AAC1B;AACF,aAAA,CAAA;AACF;AACF,KAAA;IACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
1
+ {"version":3,"file":"5.0.0-document-id-in-actions.js","sources":["../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"sourcesContent":["import { async } from '@strapi/utils';\n\nimport type { Migration, Database } from '@strapi/database';\n\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * On v4, release actions are linked with entries using the built in Polymorphic relations.\n *\n * On v5, we are going to save entryDocumentId on the release action and make the link manually.\n * This because entryId is not a reliable way to link documents, as it can change.\n */\nexport const addEntryDocumentToReleaseActions: Migration = {\n name: 'content-releases::5.0.0-add-entry-document-id-to-release-actions',\n async up(trx: Knex, db: Database) {\n // Check if the table exists\n const hasTable = await trx.schema.hasTable('strapi_release_actions');\n\n if (!hasTable) {\n return;\n }\n\n const hasPolymorphicColumn = await trx.schema.hasColumn('strapi_release_actions', 'target_id');\n\n // If user has PolymorphicColumn means that is coming from v4\n if (hasPolymorphicColumn) {\n // First time coming from v4 user doesn't have entryDocumentId\n // but we double check to avoid errors\n const hasEntryDocumentIdColumn = await trx.schema.hasColumn(\n 'strapi_release_actions',\n 'entry_document_id'\n );\n\n if (!hasEntryDocumentIdColumn) {\n await trx.schema.alterTable('strapi_release_actions', (table) => {\n table.string('entry_document_id');\n });\n }\n\n const releaseActions = await trx.select('*').from('strapi_release_actions');\n\n await async.map(releaseActions, async (action: any) => {\n const { target_type, target_id } = action;\n\n const entry = await db.query(target_type).findOne({ where: { id: target_id } });\n\n if (entry) {\n await trx('strapi_release_actions')\n .update({ entry_document_id: entry.documentId })\n .where('id', action.id);\n }\n });\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["addEntryDocumentToReleaseActions","name","up","trx","db","hasTable","schema","hasPolymorphicColumn","hasColumn","hasEntryDocumentIdColumn","alterTable","table","string","releaseActions","select","from","async","map","action","target_type","target_id","entry","query","findOne","where","id","update","entry_document_id","documentId","down","Error"],"mappings":";;;;AAMA;;;;;UAMaA,gCAAAA,GAA8C;IACzDC,IAAAA,EAAM,kEAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,GAAS,EAAEC,EAAY,EAAA;;AAE9B,QAAA,MAAMC,WAAW,MAAMF,GAAAA,CAAIG,MAAM,CAACD,QAAQ,CAAC,wBAAA,CAAA;AAE3C,QAAA,IAAI,CAACA,QAAAA,EAAU;AACb,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,uBAAuB,MAAMJ,GAAAA,CAAIG,MAAM,CAACE,SAAS,CAAC,wBAAA,EAA0B,WAAA,CAAA;;AAGlF,QAAA,IAAID,oBAAAA,EAAsB;;;AAGxB,YAAA,MAAME,2BAA2B,MAAMN,GAAAA,CAAIG,MAAM,CAACE,SAAS,CACzD,wBAAA,EACA,mBAAA,CAAA;AAGF,YAAA,IAAI,CAACC,wBAAAA,EAA0B;AAC7B,gBAAA,MAAMN,IAAIG,MAAM,CAACI,UAAU,CAAC,0BAA0B,CAACC,KAAAA,GAAAA;AACrDA,oBAAAA,KAAAA,CAAMC,MAAM,CAAC,mBAAA,CAAA;AACf,gBAAA,CAAA,CAAA;AACF,YAAA;AAEA,YAAA,MAAMC,iBAAiB,MAAMV,GAAAA,CAAIW,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,wBAAA,CAAA;AAElD,YAAA,MAAMC,WAAAA,CAAMC,GAAG,CAACJ,cAAAA,EAAgB,OAAOK,MAAAA,GAAAA;AACrC,gBAAA,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAE,GAAGF,MAAAA;AAEnC,gBAAA,MAAMG,QAAQ,MAAMjB,EAAAA,CAAGkB,KAAK,CAACH,WAAAA,CAAAA,CAAaI,OAAO,CAAC;oBAAEC,KAAAA,EAAO;wBAAEC,EAAAA,EAAIL;AAAU;AAAE,iBAAA,CAAA;AAE7E,gBAAA,IAAIC,KAAAA,EAAO;oBACT,MAAMlB,GAAAA,CAAI,wBAAA,CAAA,CACPuB,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAA,EAAMN,MAAAA,CAAOO,EAAE,CAAA;AAC1B,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAAA,CAAM,iBAAA,CAAA;AAClB,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"5.0.0-document-id-in-actions.mjs","sources":["../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"sourcesContent":["import { async } from '@strapi/utils';\n\nimport type { Migration, Database } from '@strapi/database';\n\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * On v4, release actions are linked with entries using the built in Polymorphic relations.\n *\n * On v5, we are going to save entryDocumentId on the release action and make the link manually.\n * This because entryId is not a reliable way to link documents, as it can change.\n */\nexport const addEntryDocumentToReleaseActions: Migration = {\n name: 'content-releases::5.0.0-add-entry-document-id-to-release-actions',\n async up(trx: Knex, db: Database) {\n // Check if the table exists\n const hasTable = await trx.schema.hasTable('strapi_release_actions');\n\n if (!hasTable) {\n return;\n }\n\n const hasPolymorphicColumn = await trx.schema.hasColumn('strapi_release_actions', 'target_id');\n\n // If user has PolymorphicColumn means that is coming from v4\n if (hasPolymorphicColumn) {\n // First time coming from v4 user doesn't have entryDocumentId\n // but we double check to avoid errors\n const hasEntryDocumentIdColumn = await trx.schema.hasColumn(\n 'strapi_release_actions',\n 'entry_document_id'\n );\n\n if (!hasEntryDocumentIdColumn) {\n await trx.schema.alterTable('strapi_release_actions', (table) => {\n table.string('entry_document_id');\n });\n }\n\n const releaseActions = await trx.select('*').from('strapi_release_actions');\n\n await async.map(releaseActions, async (action: any) => {\n const { target_type, target_id } = action;\n\n const entry = await db.query(target_type).findOne({ where: { id: target_id } });\n\n if (entry) {\n await trx('strapi_release_actions')\n .update({ entry_document_id: entry.documentId })\n .where('id', action.id);\n }\n });\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["addEntryDocumentToReleaseActions","name","up","trx","db","hasTable","schema","hasPolymorphicColumn","hasColumn","hasEntryDocumentIdColumn","alterTable","table","string","releaseActions","select","from","async","map","action","target_type","target_id","entry","query","findOne","where","id","update","entry_document_id","documentId","down","Error"],"mappings":";;AAMA;;;;;UAMaA,gCAA8C,GAAA;IACzDC,IAAM,EAAA,kEAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,GAAS,EAAEC,EAAY,EAAA;;AAE9B,QAAA,MAAMC,WAAW,MAAMF,GAAAA,CAAIG,MAAM,CAACD,QAAQ,CAAC,wBAAA,CAAA;AAE3C,QAAA,IAAI,CAACA,QAAU,EAAA;AACb,YAAA;AACF;AAEA,QAAA,MAAME,uBAAuB,MAAMJ,GAAAA,CAAIG,MAAM,CAACE,SAAS,CAAC,wBAA0B,EAAA,WAAA,CAAA;;AAGlF,QAAA,IAAID,oBAAsB,EAAA;;;AAGxB,YAAA,MAAME,2BAA2B,MAAMN,GAAAA,CAAIG,MAAM,CAACE,SAAS,CACzD,wBACA,EAAA,mBAAA,CAAA;AAGF,YAAA,IAAI,CAACC,wBAA0B,EAAA;AAC7B,gBAAA,MAAMN,IAAIG,MAAM,CAACI,UAAU,CAAC,0BAA0B,CAACC,KAAAA,GAAAA;AACrDA,oBAAAA,KAAAA,CAAMC,MAAM,CAAC,mBAAA,CAAA;AACf,iBAAA,CAAA;AACF;AAEA,YAAA,MAAMC,iBAAiB,MAAMV,GAAAA,CAAIW,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,wBAAA,CAAA;AAElD,YAAA,MAAMC,KAAMC,CAAAA,GAAG,CAACJ,cAAAA,EAAgB,OAAOK,MAAAA,GAAAA;AACrC,gBAAA,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAE,GAAGF,MAAAA;AAEnC,gBAAA,MAAMG,QAAQ,MAAMjB,EAAAA,CAAGkB,KAAK,CAACH,WAAAA,CAAAA,CAAaI,OAAO,CAAC;oBAAEC,KAAO,EAAA;wBAAEC,EAAIL,EAAAA;AAAU;AAAE,iBAAA,CAAA;AAE7E,gBAAA,IAAIC,KAAO,EAAA;oBACT,MAAMlB,GAAAA,CAAI,wBACPuB,CAAAA,CAAAA,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAMN,EAAAA,MAAAA,CAAOO,EAAE,CAAA;AAC1B;AACF,aAAA,CAAA;AACF;AACF,KAAA;IACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
1
+ {"version":3,"file":"5.0.0-document-id-in-actions.mjs","sources":["../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"sourcesContent":["import { async } from '@strapi/utils';\n\nimport type { Migration, Database } from '@strapi/database';\n\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * On v4, release actions are linked with entries using the built in Polymorphic relations.\n *\n * On v5, we are going to save entryDocumentId on the release action and make the link manually.\n * This because entryId is not a reliable way to link documents, as it can change.\n */\nexport const addEntryDocumentToReleaseActions: Migration = {\n name: 'content-releases::5.0.0-add-entry-document-id-to-release-actions',\n async up(trx: Knex, db: Database) {\n // Check if the table exists\n const hasTable = await trx.schema.hasTable('strapi_release_actions');\n\n if (!hasTable) {\n return;\n }\n\n const hasPolymorphicColumn = await trx.schema.hasColumn('strapi_release_actions', 'target_id');\n\n // If user has PolymorphicColumn means that is coming from v4\n if (hasPolymorphicColumn) {\n // First time coming from v4 user doesn't have entryDocumentId\n // but we double check to avoid errors\n const hasEntryDocumentIdColumn = await trx.schema.hasColumn(\n 'strapi_release_actions',\n 'entry_document_id'\n );\n\n if (!hasEntryDocumentIdColumn) {\n await trx.schema.alterTable('strapi_release_actions', (table) => {\n table.string('entry_document_id');\n });\n }\n\n const releaseActions = await trx.select('*').from('strapi_release_actions');\n\n await async.map(releaseActions, async (action: any) => {\n const { target_type, target_id } = action;\n\n const entry = await db.query(target_type).findOne({ where: { id: target_id } });\n\n if (entry) {\n await trx('strapi_release_actions')\n .update({ entry_document_id: entry.documentId })\n .where('id', action.id);\n }\n });\n }\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["addEntryDocumentToReleaseActions","name","up","trx","db","hasTable","schema","hasPolymorphicColumn","hasColumn","hasEntryDocumentIdColumn","alterTable","table","string","releaseActions","select","from","async","map","action","target_type","target_id","entry","query","findOne","where","id","update","entry_document_id","documentId","down","Error"],"mappings":";;AAMA;;;;;UAMaA,gCAAAA,GAA8C;IACzDC,IAAAA,EAAM,kEAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGC,GAAS,EAAEC,EAAY,EAAA;;AAE9B,QAAA,MAAMC,WAAW,MAAMF,GAAAA,CAAIG,MAAM,CAACD,QAAQ,CAAC,wBAAA,CAAA;AAE3C,QAAA,IAAI,CAACA,QAAAA,EAAU;AACb,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,uBAAuB,MAAMJ,GAAAA,CAAIG,MAAM,CAACE,SAAS,CAAC,wBAAA,EAA0B,WAAA,CAAA;;AAGlF,QAAA,IAAID,oBAAAA,EAAsB;;;AAGxB,YAAA,MAAME,2BAA2B,MAAMN,GAAAA,CAAIG,MAAM,CAACE,SAAS,CACzD,wBAAA,EACA,mBAAA,CAAA;AAGF,YAAA,IAAI,CAACC,wBAAAA,EAA0B;AAC7B,gBAAA,MAAMN,IAAIG,MAAM,CAACI,UAAU,CAAC,0BAA0B,CAACC,KAAAA,GAAAA;AACrDA,oBAAAA,KAAAA,CAAMC,MAAM,CAAC,mBAAA,CAAA;AACf,gBAAA,CAAA,CAAA;AACF,YAAA;AAEA,YAAA,MAAMC,iBAAiB,MAAMV,GAAAA,CAAIW,MAAM,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,wBAAA,CAAA;AAElD,YAAA,MAAMC,KAAAA,CAAMC,GAAG,CAACJ,cAAAA,EAAgB,OAAOK,MAAAA,GAAAA;AACrC,gBAAA,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAE,GAAGF,MAAAA;AAEnC,gBAAA,MAAMG,QAAQ,MAAMjB,EAAAA,CAAGkB,KAAK,CAACH,WAAAA,CAAAA,CAAaI,OAAO,CAAC;oBAAEC,KAAAA,EAAO;wBAAEC,EAAAA,EAAIL;AAAU;AAAE,iBAAA,CAAA;AAE7E,gBAAA,IAAIC,KAAAA,EAAO;oBACT,MAAMlB,GAAAA,CAAI,wBAAA,CAAA,CACPuB,MAAM,CAAC;AAAEC,wBAAAA,iBAAAA,EAAmBN,MAAMO;AAAW,qBAAA,CAAA,CAC7CJ,KAAK,CAAC,IAAA,EAAMN,MAAAA,CAAOO,EAAE,CAAA;AAC1B,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAAA,CAAM,iBAAA,CAAA;AAClB,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;;;AAcaA,MAAAA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,iBAAAA,CAAAA;QAEtEP,MAAOQ,CAAAA,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,0DAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,iCAAAA,CAAAA,CACTf,QAAQ,CAACgB,2CAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCACLd,CAAAA,CAAAA,QAAQ,CAACiB,sCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,gCACTlB,CAAAA,CAAAA,QAAQ,CAACmB,mCAAAA,CAAAA,CACTnB,QAAQ,CAACoB,qCAAAA,CAAAA;AACd;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAY,CAAA,EAAA;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAOoB,CAAAA,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAwBC,CAAAA,UAAU,CAACC,2BAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAwBC,CAAAA,UAAU,CAACG,kCAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE;AACF;;;;"}
1
+ {"version":3,"file":"register.js","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;;;AAcO,MAAMA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,iBAAAA,CAAAA;QAEtEP,MAAAA,CAAOQ,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,0DAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,iCAAAA,CAAAA,CACTf,QAAQ,CAACgB,2CAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCAAA,CAAA,CACLd,QAAQ,CAACiB,sCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,gCAAAA,CAAAA,CACTlB,QAAQ,CAACmB,mCAAAA,CAAAA,CACTnB,QAAQ,CAACoB,qCAAAA,CAAAA;AACd,IAAA;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAA,CAAA,EAAY;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAAA,CAAOoB,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAAA,CAAwBC,UAAU,CAACC,2BAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAAA,CAAwBC,UAAU,CAACG,kCAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.mjs","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;AAcaA,MAAAA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,OAAAA,CAAAA;QAEtEP,MAAOQ,CAAAA,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,gCAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,2BAAAA,CAAAA,CACTf,QAAQ,CAACgB,qCAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCACLd,CAAAA,CAAAA,QAAQ,CAACiB,gCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,0BACTlB,CAAAA,CAAAA,QAAQ,CAACmB,6BAAAA,CAAAA,CACTnB,QAAQ,CAACoB,+BAAAA,CAAAA;AACd;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAY,CAAA,EAAA;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAOoB,CAAAA,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAwBC,CAAAA,UAAU,CAACC,iBAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAwBC,CAAAA,UAAU,CAACG,wBAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE;AACF;;;;"}
1
+ {"version":3,"file":"register.mjs","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;AAcO,MAAMA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,OAAAA,CAAAA;QAEtEP,MAAAA,CAAOQ,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,gCAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,2BAAAA,CAAAA,CACTf,QAAQ,CAACgB,qCAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCAAA,CAAA,CACLd,QAAQ,CAACiB,gCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,0BAAAA,CAAAA,CACTlB,QAAQ,CAACmB,6BAAAA,CAAAA,CACTnB,QAAQ,CAACoB,+BAAAA,CAAAA;AACd,IAAA;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAA,CAAA,EAAY;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAAA,CAAOoB,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAAA,CAAwBC,UAAU,CAACC,iBAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAAA,CAAwBC,UAAU,CAACG,wBAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"homepage.js","sources":["../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'content-manager', type: 'admin' };\n\nconst homepageRouter: Plugin.LoadedPlugin['routes'][string] = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n info,\n path: '/homepage/upcoming-releases',\n handler: 'homepage.getUpcomingReleases',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n ],\n};\n\nexport default homepageRouter;\n"],"names":["info","pluginName","type","homepageRouter","routes","method","path","handler","config","policies"],"mappings":";;AAEA,MAAMA,IAAO,GAAA;IAAEC,UAAY,EAAA,iBAAA;IAAmBC,IAAM,EAAA;AAAQ,CAAA;AAE5D,MAAMC,cAAwD,GAAA;IAC5DD,IAAM,EAAA,OAAA;IACNE,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;AACRL,YAAAA,IAAAA;YACAM,IAAM,EAAA,6BAAA;YACNC,OAAS,EAAA,8BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AAAC,oBAAA;AAA8B;AAC3C;AACF;AACD;AACH;;;;"}
1
+ {"version":3,"file":"homepage.js","sources":["../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'content-manager', type: 'admin' };\n\nconst homepageRouter: Plugin.LoadedPlugin['routes'][string] = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n info,\n path: '/homepage/upcoming-releases',\n handler: 'homepage.getUpcomingReleases',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n ],\n};\n\nexport default homepageRouter;\n"],"names":["info","pluginName","type","homepageRouter","routes","method","path","handler","config","policies"],"mappings":";;AAEA,MAAMA,IAAAA,GAAO;IAAEC,UAAAA,EAAY,iBAAA;IAAmBC,IAAAA,EAAM;AAAQ,CAAA;AAE5D,MAAMC,cAAAA,GAAwD;IAC5DD,IAAAA,EAAM,OAAA;IACNE,MAAAA,EAAQ;AACN,QAAA;YACEC,MAAAA,EAAQ,KAAA;AACRL,YAAAA,IAAAA;YACAM,IAAAA,EAAM,6BAAA;YACNC,OAAAA,EAAS,8BAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AAAC,oBAAA;AAA8B;AAC3C;AACF;AACD;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"homepage.mjs","sources":["../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'content-manager', type: 'admin' };\n\nconst homepageRouter: Plugin.LoadedPlugin['routes'][string] = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n info,\n path: '/homepage/upcoming-releases',\n handler: 'homepage.getUpcomingReleases',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n ],\n};\n\nexport default homepageRouter;\n"],"names":["info","pluginName","type","homepageRouter","routes","method","path","handler","config","policies"],"mappings":"AAEA,MAAMA,IAAO,GAAA;IAAEC,UAAY,EAAA,iBAAA;IAAmBC,IAAM,EAAA;AAAQ,CAAA;AAE5D,MAAMC,cAAwD,GAAA;IAC5DD,IAAM,EAAA,OAAA;IACNE,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;AACRL,YAAAA,IAAAA;YACAM,IAAM,EAAA,6BAAA;YACNC,OAAS,EAAA,8BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AAAC,oBAAA;AAA8B;AAC3C;AACF;AACD;AACH;;;;"}
1
+ {"version":3,"file":"homepage.mjs","sources":["../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'content-manager', type: 'admin' };\n\nconst homepageRouter: Plugin.LoadedPlugin['routes'][string] = {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n info,\n path: '/homepage/upcoming-releases',\n handler: 'homepage.getUpcomingReleases',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n ],\n};\n\nexport default homepageRouter;\n"],"names":["info","pluginName","type","homepageRouter","routes","method","path","handler","config","policies"],"mappings":"AAEA,MAAMA,IAAAA,GAAO;IAAEC,UAAAA,EAAY,iBAAA;IAAmBC,IAAAA,EAAM;AAAQ,CAAA;AAE5D,MAAMC,cAAAA,GAAwD;IAC5DD,IAAAA,EAAM,OAAA;IACNE,MAAAA,EAAQ;AACN,QAAA;YACEC,MAAAA,EAAQ,KAAA;AACRL,YAAAA,IAAAA;YACAM,IAAAA,EAAM,6BAAA;YACNC,OAAAA,EAAS,8BAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AAAC,oBAAA;AAA8B;AAC3C;AACF;AACD;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n homepage,\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","homepage","settings","release","releaseAction"],"mappings":";;;;;;;MAKaA,MAAS,GAAA;AACpBC,IAAAA,QAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAkBC,EAAAA;AACpB;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n homepage,\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","homepage","settings","release","releaseAction"],"mappings":";;;;;;;MAKaA,MAAAA,GAAS;AACpBC,IAAAA,QAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAA,EAAkBC;AACpB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n homepage,\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","homepage","settings","release","releaseAction"],"mappings":";;;;;MAKaA,MAAS,GAAA;AACpBC,cAAAA,cAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAkBC,EAAAA;AACpB;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n homepage,\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","homepage","settings","release","releaseAction"],"mappings":";;;;;MAKaA,MAAAA,GAAS;AACpBC,cAAAA,cAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAA,EAAkBC;AACpB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-action.js","sources":["../../../server/src/routes/release-action.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/:releaseId/actions',\n handler: 'release-action.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:releaseId/actions/bulk',\n handler: 'release-action.createMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:releaseId/actions',\n handler: 'release-action.findMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete-action'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,oBAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,qBAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,0BAAA;YACNC,OAAS,EAAA,2BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,qBAAA;YACNC,OAAS,EAAA,yBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,+BAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,QAAA;YACRC,IAAM,EAAA,+BAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
1
+ {"version":3,"file":"release-action.js","sources":["../../../server/src/routes/release-action.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/:releaseId/actions',\n handler: 'release-action.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:releaseId/actions/bulk',\n handler: 'release-action.createMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:releaseId/actions',\n handler: 'release-action.findMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete-action'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,oBAAe;IACbA,IAAAA,EAAM,OAAA;IACNC,MAAAA,EAAQ;AACN,QAAA;YACEC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAM,qBAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAM,0BAAA;YACNC,OAAAA,EAAS,2BAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,qBAAA;YACNC,OAAAA,EAAS,yBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,+BAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,QAAA;YACRC,IAAAA,EAAM,+BAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF;AACD;AACH,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-action.mjs","sources":["../../../server/src/routes/release-action.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/:releaseId/actions',\n handler: 'release-action.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:releaseId/actions/bulk',\n handler: 'release-action.createMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:releaseId/actions',\n handler: 'release-action.findMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete-action'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"AAAA,oBAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,qBAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,0BAAA;YACNC,OAAS,EAAA,2BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,qBAAA;YACNC,OAAS,EAAA,yBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,+BAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,QAAA;YACRC,IAAM,EAAA,+BAAA;YACNC,OAAS,EAAA,uBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
1
+ {"version":3,"file":"release-action.mjs","sources":["../../../server/src/routes/release-action.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'POST',\n path: '/:releaseId/actions',\n handler: 'release-action.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:releaseId/actions/bulk',\n handler: 'release-action.createMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create-action'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:releaseId/actions',\n handler: 'release-action.findMany',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:releaseId/actions/:actionId',\n handler: 'release-action.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete-action'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"AAAA,oBAAe;IACbA,IAAAA,EAAM,OAAA;IACNC,MAAAA,EAAQ;AACN,QAAA;YACEC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAM,qBAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAM,0BAAA;YACNC,OAAAA,EAAS,2BAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,qBAAA;YACNC,OAAAA,EAAS,yBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,+BAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAAA,EAAQ,QAAA;YACRC,IAAAA,EAAM,+BAAA;YACNC,OAAAA,EAAS,uBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF;AACD;AACH,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../../server/src/routes/release.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/mapEntriesToReleases',\n handler: 'release.mapEntriesToReleases',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/getByDocumentAttached',\n handler: 'release.findByDocumentAttached',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/',\n handler: 'release.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/',\n handler: 'release.findPage',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:id',\n handler: 'release.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:id',\n handler: 'release.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:id',\n handler: 'release.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:id/publish',\n handler: 'release.publish',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.publish'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,cAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,uBAAA;YACNC,OAAS,EAAA,8BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,wBAAA;YACNC,OAAS,EAAA,gCAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,kBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,QAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,cAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAmC;AAC/C;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
1
+ {"version":3,"file":"release.js","sources":["../../../server/src/routes/release.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/mapEntriesToReleases',\n handler: 'release.mapEntriesToReleases',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/getByDocumentAttached',\n handler: 'release.findByDocumentAttached',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/',\n handler: 'release.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/',\n handler: 'release.findPage',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:id',\n handler: 'release.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:id',\n handler: 'release.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:id',\n handler: 'release.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:id/publish',\n handler: 'release.publish',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.publish'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"release.mjs","sources":["../../../server/src/routes/release.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/mapEntriesToReleases',\n handler: 'release.mapEntriesToReleases',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/getByDocumentAttached',\n handler: 'release.findByDocumentAttached',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/',\n handler: 'release.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/',\n handler: 'release.findPage',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:id',\n handler: 'release.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:id',\n handler: 'release.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:id',\n handler: 'release.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:id/publish',\n handler: 'release.publish',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.publish'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"AAAA,cAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,uBAAA;YACNC,OAAS,EAAA,8BAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,wBAAA;YACNC,OAAS,EAAA,gCAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,GAAA;YACNC,OAAS,EAAA,kBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAgC;AAC5C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,QAAA;YACRC,IAAM,EAAA,MAAA;YACNC,OAAS,EAAA,gBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAkC;AAC9C;AACF;AACD;AACH;AACF,SAAA;AACA,QAAA;YACEN,MAAQ,EAAA,MAAA;YACRC,IAAM,EAAA,cAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAmC;AAC/C;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
1
+ {"version":3,"file":"release.mjs","sources":["../../../server/src/routes/release.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/mapEntriesToReleases',\n handler: 'release.mapEntriesToReleases',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/getByDocumentAttached',\n handler: 'release.findByDocumentAttached',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/',\n handler: 'release.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.create'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/',\n handler: 'release.findPage',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/:id',\n handler: 'release.findOne',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/:id',\n handler: 'release.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/:id',\n handler: 'release.delete',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.delete'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/:id/publish',\n handler: 'release.publish',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.publish'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sources":["../../../server/src/routes/settings.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/settings',\n handler: 'settings.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.read'],\n },\n },\n ],\n },\n },\n\n {\n method: 'PUT',\n path: '/settings',\n handler: 'settings.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.update'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,eAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,eAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AAEA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAA2C;AACvD;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
1
+ {"version":3,"file":"settings.js","sources":["../../../server/src/routes/settings.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/settings',\n handler: 'settings.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.read'],\n },\n },\n ],\n },\n },\n\n {\n method: 'PUT',\n path: '/settings',\n handler: 'settings.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.update'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,eAAe;IACbA,IAAAA,EAAM,OAAA;IACNC,MAAAA,EAAQ;AACN,QAAA;YACEC,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,WAAA;YACNC,OAAAA,EAAS,eAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AAEA,QAAA;YACEN,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,WAAA;YACNC,OAAAA,EAAS,iBAAA;YACTC,MAAAA,EAAQ;gBACNC,QAAAA,EAAU;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAAA,EAAM,uBAAA;wBACNF,MAAAA,EAAQ;4BACNG,OAAAA,EAAS;AAAC,gCAAA;AAA2C;AACvD;AACF;AACD;AACH;AACF;AACD;AACH,CAAA;;;;"}