@strapi/content-releases 5.37.1 → 5.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) 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.map +1 -1
  33. package/dist/admin/index.mjs.map +1 -1
  34. package/dist/admin/modules/hooks.js.map +1 -1
  35. package/dist/admin/modules/hooks.mjs.map +1 -1
  36. package/dist/admin/pages/App.js.map +1 -1
  37. package/dist/admin/pages/App.mjs.map +1 -1
  38. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
  39. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
  40. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
  41. package/dist/admin/pages/ReleaseDetailsPage.mjs +2 -2
  42. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
  43. package/dist/admin/pages/ReleasesPage.js.map +1 -1
  44. package/dist/admin/pages/ReleasesPage.mjs +1 -1
  45. package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
  46. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
  47. package/dist/admin/pages/ReleasesSettingsPage.mjs +1 -1
  48. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
  49. package/dist/admin/services/homepage.js.map +1 -1
  50. package/dist/admin/services/homepage.mjs.map +1 -1
  51. package/dist/admin/services/release.js.map +1 -1
  52. package/dist/admin/services/release.mjs.map +1 -1
  53. package/dist/admin/store/hooks.js.map +1 -1
  54. package/dist/admin/store/hooks.mjs.map +1 -1
  55. package/dist/admin/utils/api.js.map +1 -1
  56. package/dist/admin/utils/api.mjs.map +1 -1
  57. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  58. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  59. package/dist/admin/utils/time.js.map +1 -1
  60. package/dist/admin/utils/time.mjs.map +1 -1
  61. package/dist/admin/validation/schemas.js.map +1 -1
  62. package/dist/admin/validation/schemas.mjs.map +1 -1
  63. package/dist/server/bootstrap.js.map +1 -1
  64. package/dist/server/bootstrap.mjs.map +1 -1
  65. package/dist/server/constants.js.map +1 -1
  66. package/dist/server/constants.mjs.map +1 -1
  67. package/dist/server/content-types/index.js +4 -4
  68. package/dist/server/content-types/index.js.map +1 -1
  69. package/dist/server/content-types/index.mjs.map +1 -1
  70. package/dist/server/content-types/release/index.js.map +1 -1
  71. package/dist/server/content-types/release/index.mjs.map +1 -1
  72. package/dist/server/content-types/release/schema.js.map +1 -1
  73. package/dist/server/content-types/release/schema.mjs.map +1 -1
  74. package/dist/server/content-types/release-action/index.js.map +1 -1
  75. package/dist/server/content-types/release-action/index.mjs.map +1 -1
  76. package/dist/server/content-types/release-action/schema.js.map +1 -1
  77. package/dist/server/content-types/release-action/schema.mjs.map +1 -1
  78. package/dist/server/controllers/homepage.js.map +1 -1
  79. package/dist/server/controllers/homepage.mjs.map +1 -1
  80. package/dist/server/controllers/index.js.map +1 -1
  81. package/dist/server/controllers/index.mjs.map +1 -1
  82. package/dist/server/controllers/release-action.js.map +1 -1
  83. package/dist/server/controllers/release-action.mjs +1 -1
  84. package/dist/server/controllers/release-action.mjs.map +1 -1
  85. package/dist/server/controllers/release.js.map +1 -1
  86. package/dist/server/controllers/release.mjs +1 -1
  87. package/dist/server/controllers/release.mjs.map +1 -1
  88. package/dist/server/controllers/settings.js.map +1 -1
  89. package/dist/server/controllers/settings.mjs.map +1 -1
  90. package/dist/server/controllers/validation/release-action.js.map +1 -1
  91. package/dist/server/controllers/validation/release-action.mjs.map +1 -1
  92. package/dist/server/controllers/validation/release.js.map +1 -1
  93. package/dist/server/controllers/validation/release.mjs.map +1 -1
  94. package/dist/server/controllers/validation/settings.js.map +1 -1
  95. package/dist/server/controllers/validation/settings.mjs.map +1 -1
  96. package/dist/server/destroy.js.map +1 -1
  97. package/dist/server/destroy.mjs.map +1 -1
  98. package/dist/server/index.js +9 -9
  99. package/dist/server/index.js.map +1 -1
  100. package/dist/server/index.mjs.map +1 -1
  101. package/dist/server/middlewares/documents.js.map +1 -1
  102. package/dist/server/middlewares/documents.mjs +1 -1
  103. package/dist/server/middlewares/documents.mjs.map +1 -1
  104. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
  105. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
  106. package/dist/server/migrations/index.js.map +1 -1
  107. package/dist/server/migrations/index.mjs.map +1 -1
  108. package/dist/server/register.js.map +1 -1
  109. package/dist/server/register.mjs.map +1 -1
  110. package/dist/server/routes/homepage.js.map +1 -1
  111. package/dist/server/routes/homepage.mjs.map +1 -1
  112. package/dist/server/routes/index.js.map +1 -1
  113. package/dist/server/routes/index.mjs.map +1 -1
  114. package/dist/server/routes/release-action.js.map +1 -1
  115. package/dist/server/routes/release-action.mjs.map +1 -1
  116. package/dist/server/routes/release.js.map +1 -1
  117. package/dist/server/routes/release.mjs.map +1 -1
  118. package/dist/server/routes/settings.js.map +1 -1
  119. package/dist/server/routes/settings.mjs.map +1 -1
  120. package/dist/server/services/homepage.js.map +1 -1
  121. package/dist/server/services/homepage.mjs.map +1 -1
  122. package/dist/server/services/index.js.map +1 -1
  123. package/dist/server/services/index.mjs.map +1 -1
  124. package/dist/server/services/release-action.js.map +1 -1
  125. package/dist/server/services/release-action.mjs +3 -3
  126. package/dist/server/services/release-action.mjs.map +1 -1
  127. package/dist/server/services/release.js.map +1 -1
  128. package/dist/server/services/release.mjs +2 -2
  129. package/dist/server/services/release.mjs.map +1 -1
  130. package/dist/server/services/scheduling.js.map +1 -1
  131. package/dist/server/services/scheduling.mjs.map +1 -1
  132. package/dist/server/services/settings.js.map +1 -1
  133. package/dist/server/services/settings.mjs.map +1 -1
  134. package/dist/server/services/validation.js.map +1 -1
  135. package/dist/server/services/validation.mjs.map +1 -1
  136. package/dist/server/utils/index.js.map +1 -1
  137. package/dist/server/utils/index.mjs.map +1 -1
  138. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":"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"}
1
+ {"version":3,"file":"release.js","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { errors } from '@strapi/utils';
2
2
  import { RELEASE_MODEL_UID } from '../constants.mjs';
3
- import { validatefindByDocumentAttachedParams, validateRelease } from './validation/release.mjs';
3
+ import { validateRelease, validatefindByDocumentAttachedParams } from './validation/release.mjs';
4
4
  import { getService } from '../utils/index.mjs';
5
5
 
6
6
  const releaseController = {
@@ -1 +1 @@
1
- {"version":3,"file":"release.mjs","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":"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"}
1
+ {"version":3,"file":"release.mjs","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;;;AAUA,MAAMA,kBAAqB,GAAA;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,iBAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMF,EAAAA;AAAS,SAAA;AAC9B,KAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAeR,GAAAA,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,UAAAA,GAAY,MAAMM,yBAAiBF,CAAAA,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,iBAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAkB,GAAA,MAAMV,eAAgBM,CAAAA,MAAM,CAAC;AAAEH,sBAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMK,EAAAA;AAAgB,SAAA;AACrC;AACF;;;;"}
1
+ {"version":3,"file":"settings.js","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;;;AAUA,MAAMA,kBAAAA,GAAqB;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,iBAAW,UAAA,EAAY;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAAA,EAAMF;AAAS,SAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAAA,GAAeR,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,UAAAA,GAAY,MAAMM,yBAAAA,CAAiBF,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,iBAAW,UAAA,EAAY;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAAA,GAAkB,MAAMV,eAAAA,CAAgBM,MAAM,CAAC;AAAEH,sBAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAAA,EAAMK;AAAgB,SAAA;AACrC,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.mjs","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;AAUA,MAAMA,kBAAqB,GAAA;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,WAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMF,EAAAA;AAAS,SAAA;AAC9B,KAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAeR,GAAAA,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,QAAAA,GAAY,MAAMM,gBAAiBF,CAAAA,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,WAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAkB,GAAA,MAAMV,eAAgBM,CAAAA,MAAM,CAAC;AAAEH,YAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMK,EAAAA;AAAgB,SAAA;AACrC;AACF;;;;"}
1
+ {"version":3,"file":"settings.mjs","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;AAUA,MAAMA,kBAAAA,GAAqB;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,WAAW,UAAA,EAAY;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAAA,EAAMF;AAAS,SAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAAA,GAAeR,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,QAAAA,GAAY,MAAMM,gBAAAA,CAAiBF,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,WAAW,UAAA,EAAY;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAAA,GAAkB,MAAMV,eAAAA,CAAgBM,MAAM,CAAC;AAAEH,YAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAAA,EAAMK;AAAgB,SAAA;AACrC,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-action.js","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;;;AAEA,MAAMA,qBAAwBC,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAaH,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,UAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,UAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAA+BX,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAA2BZ,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAwBC,GAAAA,uBAAAA,CAAkBhB,qBAAuB;AACvE,MAAMiB,iCAAoCD,GAAAA,uBAAAA,CAAkBJ,4BAA8B;AAC1F,MAAMM,6BAAgCF,GAAAA,uBAAAA,CAAkBH,wBAA0B;;;;;;"}
1
+ {"version":3,"file":"release-action.js","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;;;AAEA,MAAMA,qBAAAA,GAAwBC,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAAA,EAAaH,SAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,UAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,UAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,SAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAAAA,GAA+BX,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,SAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAAAA,GAA2BZ,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,SAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAAA,GAAwBC,uBAAAA,CAAkBhB,qBAAAA;AAChD,MAAMiB,iCAAAA,GAAoCD,uBAAAA,CAAkBJ,4BAAAA;AAC5D,MAAMM,6BAAAA,GAAgCF,uBAAAA,CAAkBH,wBAAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-action.mjs","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;AAEA,MAAMA,qBAAwBC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAaH,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,IAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,IAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAA+BX,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAA2BZ,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAwBC,GAAAA,iBAAAA,CAAkBhB,qBAAuB;AACvE,MAAMiB,iCAAoCD,GAAAA,iBAAAA,CAAkBJ,4BAA8B;AAC1F,MAAMM,6BAAgCF,GAAAA,iBAAAA,CAAkBH,wBAA0B;;;;"}
1
+ {"version":3,"file":"release-action.mjs","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;AAEA,MAAMA,qBAAAA,GAAwBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAAA,EAAaH,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,IAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,IAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,GAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAAAA,GAA+BX,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,GAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAAAA,GAA2BZ,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,GAAAA,CAAII,MAAM,EAAA,CAAGM,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAAA,GAAwBC,iBAAAA,CAAkBhB,qBAAAA;AAChD,MAAMiB,iCAAAA,GAAoCD,iBAAAA,CAAkBJ,4BAAAA;AAC5D,MAAMM,6BAAAA,GAAgCF,iBAAAA,CAAkBH,wBAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;;;MAEaA,cAAiBC,GAAAA,SAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,SAAII,CAAAA,MAAM,EAAGC,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAaP,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,IAAI,CAAC,aAAe,EAAA;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAU,KAAA,IAAA,IAAQA,KAAUC,KAAAA,SAAAA;QAChDC,IAAMd,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAWf,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CACCF,CAAAA,CAAAA,QAAQ,EACRU,CAAAA,SAAS;AAEZ,MAAMC,uCAA0CjB,GAAAA,SAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAalB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAiBnB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAkBpB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAQrB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CACCF,CAAAA,CAAAA,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAkBC,GAAAA,uBAAAA,CAAkBxB,cAAgB;AAE1D,MAAMyB,oCAAuCD,GAAAA,uBAAAA,CAClDN,uCACA;;;;;;"}
1
+ {"version":3,"file":"release.js","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;;;MAEaA,cAAAA,GAAiBC,SAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,SAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAAA,EAAaP,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,SAAAA,CAAII,MAAM,EAAA,CAAGM,IAAI,CAAC,aAAA,EAAe;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAAA,KAAU,IAAA,IAAQA,KAAAA,KAAUC,SAAAA;QAChDC,IAAAA,EAAMd,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAAA,EAAWf,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CAAA,CAAA,CACCF,QAAQ,EAAA,CACRU,SAAS;AAEZ,MAAMC,uCAAAA,GAA0CjB,SAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAAA,EAAalB,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAAA,EAAiBnB,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAAA,EAAkBpB,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAAA,EAAQrB,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CAAA,CAAA,CACCF,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAAA,GAAkBC,uBAAAA,CAAkBxB,cAAAA;AAE1C,MAAMyB,oCAAAA,GAAuCD,uBAAAA,CAClDN,uCAAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"release.mjs","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;MAEaA,cAAiBC,GAAAA,GAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,GAAII,CAAAA,MAAM,EAAGC,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAaP,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,IAAI,CAAC,aAAe,EAAA;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAU,KAAA,IAAA,IAAQA,KAAUC,KAAAA,SAAAA;QAChDC,IAAMd,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAWf,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CACCF,CAAAA,CAAAA,QAAQ,EACRU,CAAAA,SAAS;AAEZ,MAAMC,uCAA0CjB,GAAAA,GAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAalB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAiBnB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAkBpB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAQrB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CACCF,CAAAA,CAAAA,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAkBC,GAAAA,iBAAAA,CAAkBxB,cAAgB;AAE1D,MAAMyB,oCAAuCD,GAAAA,iBAAAA,CAClDN,uCACA;;;;"}
1
+ {"version":3,"file":"release.mjs","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;MAEaA,cAAAA,GAAiBC,GAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,GAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAAA,EAAaP,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,GAAAA,CAAII,MAAM,EAAA,CAAGM,IAAI,CAAC,aAAA,EAAe;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAAA,KAAU,IAAA,IAAQA,KAAAA,KAAUC,SAAAA;QAChDC,IAAAA,EAAMd,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAAA,EAAWf,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CAAA,CAAA,CACCF,QAAQ,EAAA,CACRU,SAAS;AAEZ,MAAMC,uCAAAA,GAA0CjB,GAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAAA,EAAalB,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAAA,EAAiBnB,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAAA,EAAkBpB,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAAA,EAAQrB,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CAAA,CAAA,CACCF,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAAA,GAAkBC,iBAAAA,CAAkBxB,cAAAA;AAE1C,MAAMyB,oCAAAA,GAAuCD,iBAAAA,CAClDN,uCAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sources":["../../../../server/src/controllers/validation/settings.ts"],"sourcesContent":["import { validateYupSchema } from '@strapi/utils';\nimport * as yup from 'yup';\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n\nexport const validateSettings = validateYupSchema(SETTINGS_SCHEMA);\n"],"names":["SETTINGS_SCHEMA","yup","object","shape","defaultTimezone","string","nullable","default","required","noUnknown","validateSettings","validateYupSchema"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAGaA,eAAkBC,GAAAA,cAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,eAAAA,EAAiBH,eAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA,CAAGC,OAAO,CAAC,IAAA;AACnD,CACCC,CAAAA,CAAAA,QAAQ,EACRC,CAAAA,SAAS;AAEL,MAAMC,gBAAmBC,GAAAA,uBAAAA,CAAkBX,eAAiB;;;;;"}
1
+ {"version":3,"file":"settings.js","sources":["../../../../server/src/controllers/validation/settings.ts"],"sourcesContent":["import { validateYupSchema } from '@strapi/utils';\nimport * as yup from 'yup';\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n\nexport const validateSettings = validateYupSchema(SETTINGS_SCHEMA);\n"],"names":["SETTINGS_SCHEMA","yup","object","shape","defaultTimezone","string","nullable","default","required","noUnknown","validateSettings","validateYupSchema"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAGaA,eAAAA,GAAkBC,cAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,eAAAA,EAAiBH,eAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA,CAAGC,OAAO,CAAC,IAAA;AACnD,CAAA,CAAA,CACCC,QAAQ,EAAA,CACRC,SAAS;AAEL,MAAMC,gBAAAA,GAAmBC,uBAAAA,CAAkBX,eAAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.mjs","sources":["../../../../server/src/controllers/validation/settings.ts"],"sourcesContent":["import { validateYupSchema } from '@strapi/utils';\nimport * as yup from 'yup';\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n\nexport const validateSettings = validateYupSchema(SETTINGS_SCHEMA);\n"],"names":["SETTINGS_SCHEMA","yup","object","shape","defaultTimezone","string","nullable","default","required","noUnknown","validateSettings","validateYupSchema"],"mappings":";;;MAGaA,eAAkBC,GAAAA,GAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,eAAAA,EAAiBH,IAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA,CAAGC,OAAO,CAAC,IAAA;AACnD,CACCC,CAAAA,CAAAA,QAAQ,EACRC,CAAAA,SAAS;AAEL,MAAMC,gBAAmBC,GAAAA,iBAAAA,CAAkBX,eAAiB;;;;"}
1
+ {"version":3,"file":"settings.mjs","sources":["../../../../server/src/controllers/validation/settings.ts"],"sourcesContent":["import { validateYupSchema } from '@strapi/utils';\nimport * as yup from 'yup';\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n\nexport const validateSettings = validateYupSchema(SETTINGS_SCHEMA);\n"],"names":["SETTINGS_SCHEMA","yup","object","shape","defaultTimezone","string","nullable","default","required","noUnknown","validateSettings","validateYupSchema"],"mappings":";;;MAGaA,eAAAA,GAAkBC,GAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,eAAAA,EAAiBH,IAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA,CAAGC,OAAO,CAAC,IAAA;AACnD,CAAA,CAAA,CACCC,QAAQ,EAAA,CACRC,SAAS;AAEL,MAAMC,gBAAAA,GAAmBC,iBAAAA,CAAkBX,eAAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.js","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { Release } from '../../shared/contracts/releases';\nimport { getService } from './utils';\n\nexport const destroy = async ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs: Map<Release['id'], string> = getService('scheduling', {\n strapi,\n }).getAll();\n\n for (const [, taskName] of scheduledJobs) {\n strapi.cron.remove(taskName);\n }\n};\n"],"names":["destroy","strapi","scheduledJobs","getService","getAll","taskName","cron","remove"],"mappings":";;;;AAKaA,MAAAA,OAAAA,GAAU,OAAO,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,aAAAA,GAA4CC,iBAAW,YAAc,EAAA;AACzEF,QAAAA;AACF,KAAA,CAAA,CAAGG,MAAM,EAAA;AAET,IAAA,KAAK,MAAM,GAAGC,QAAS,CAAA,IAAIH,aAAe,CAAA;QACxCD,MAAOK,CAAAA,IAAI,CAACC,MAAM,CAACF,QAAAA,CAAAA;AACrB;AACF;;;;"}
1
+ {"version":3,"file":"destroy.js","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { Release } from '../../shared/contracts/releases';\nimport { getService } from './utils';\n\nexport const destroy = async ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs: Map<Release['id'], string> = getService('scheduling', {\n strapi,\n }).getAll();\n\n for (const [, taskName] of scheduledJobs) {\n strapi.cron.remove(taskName);\n }\n};\n"],"names":["destroy","strapi","scheduledJobs","getService","getAll","taskName","cron","remove"],"mappings":";;;;AAKO,MAAMA,OAAAA,GAAU,OAAO,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,aAAAA,GAA4CC,iBAAW,YAAA,EAAc;AACzEF,QAAAA;AACF,KAAA,CAAA,CAAGG,MAAM,EAAA;AAET,IAAA,KAAK,MAAM,GAAGC,QAAAA,CAAS,IAAIH,aAAAA,CAAe;QACxCD,MAAAA,CAAOK,IAAI,CAACC,MAAM,CAACF,QAAAA,CAAAA;AACrB,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.mjs","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { Release } from '../../shared/contracts/releases';\nimport { getService } from './utils';\n\nexport const destroy = async ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs: Map<Release['id'], string> = getService('scheduling', {\n strapi,\n }).getAll();\n\n for (const [, taskName] of scheduledJobs) {\n strapi.cron.remove(taskName);\n }\n};\n"],"names":["destroy","strapi","scheduledJobs","getService","getAll","taskName","cron","remove"],"mappings":";;AAKaA,MAAAA,OAAAA,GAAU,OAAO,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,aAAAA,GAA4CC,WAAW,YAAc,EAAA;AACzEF,QAAAA;AACF,KAAA,CAAA,CAAGG,MAAM,EAAA;AAET,IAAA,KAAK,MAAM,GAAGC,QAAS,CAAA,IAAIH,aAAe,CAAA;QACxCD,MAAOK,CAAAA,IAAI,CAACC,MAAM,CAACF,QAAAA,CAAAA;AACrB;AACF;;;;"}
1
+ {"version":3,"file":"destroy.mjs","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { Release } from '../../shared/contracts/releases';\nimport { getService } from './utils';\n\nexport const destroy = async ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs: Map<Release['id'], string> = getService('scheduling', {\n strapi,\n }).getAll();\n\n for (const [, taskName] of scheduledJobs) {\n strapi.cron.remove(taskName);\n }\n};\n"],"names":["destroy","strapi","scheduledJobs","getService","getAll","taskName","cron","remove"],"mappings":";;AAKO,MAAMA,OAAAA,GAAU,OAAO,EAAEC,MAAM,EAA2B,GAAA;IAC/D,MAAMC,aAAAA,GAA4CC,WAAW,YAAA,EAAc;AACzEF,QAAAA;AACF,KAAA,CAAA,CAAGG,MAAM,EAAA;AAET,IAAA,KAAK,MAAM,GAAGC,QAAAA,CAAS,IAAIH,aAAAA,CAAe;QACxCD,MAAAA,CAAOK,IAAI,CAACC,MAAM,CAACF,QAAAA,CAAAA;AACrB,IAAA;AACF;;;;"}
@@ -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;;;;"}