{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core, UID, Modules } from '@strapi/types';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from './constants';\nimport { getService } from './utils';\nimport { deleteActionsOnDelete, updateActionsOnUpdate } from './middlewares/documents';\n\ninterface DeleteManyParams {\n  contentType: UID.ContentType;\n  locale: string | null;\n  entryDocumentId?: Modules.Documents.ID;\n}\n\nconst deleteReleasesActionsAndUpdateReleaseStatus = async (params: DeleteManyParams) => {\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  // We update the status of each release after delete the actions\n  for (const release of releases) {\n    getService('release', { strapi }).updateReleaseStatus(release.id);\n  }\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n  if (strapi.ee.features.isEnabled('cms-content-releases')) {\n    const contentTypesWithDraftAndPublish = Object.keys(strapi.contentTypes).filter(\n      (uid: any) => strapi.contentTypes[uid]?.options?.draftAndPublish\n    );\n\n    strapi.db.lifecycles.subscribe({\n      models: contentTypesWithDraftAndPublish,\n\n      /**\n       * deleteMany is still used outside documents service, for example when deleting a locale\n       */\n      async afterDeleteMany(event) {\n        try {\n          const model = strapi.getModel(event.model.uid as UID.Schema);\n          // @ts-expect-error TODO: lifecycles types looks like are not 100% finished\n          if (model.kind === 'collectionType' && model.options?.draftAndPublish) {\n            const { where } = event.params;\n\n            deleteReleasesActionsAndUpdateReleaseStatus({\n              contentType: model.uid,\n              locale: where?.locale ?? null,\n              ...(where?.documentId && { entryDocumentId: where.documentId }),\n            });\n          }\n        } catch (error) {\n          // If an error happens we don't want to block the delete entry flow, but we log the error\n          strapi.log.error('Error while deleting release actions after entry deleteMany', {\n            error,\n          });\n        }\n      },\n    });\n\n    // We register middleware to handle ReleaseActions when changes on documents are made\n    strapi.documents.use(deleteActionsOnDelete);\n    strapi.documents.use(updateActionsOnUpdate);\n\n    getService('scheduling', { strapi })\n      .syncFromDatabase()\n      .catch((err: Error) => {\n        strapi.log.error(\n          'Error while syncing scheduled jobs from the database in the content-releases plugin. This could lead to errors in the releases scheduling.'\n        );\n\n        throw err;\n      });\n\n    Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n      strapi.get('webhookStore').addAllowedEvent(key, value);\n    });\n  }\n};\n"],"names":["deleteReleasesActionsAndUpdateReleaseStatus","params","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","actions","RELEASE_ACTION_MODEL_UID","deleteMany","release","getService","updateReleaseStatus","id","bootstrap","ee","features","isEnabled","contentTypesWithDraftAndPublish","Object","keys","contentTypes","filter","uid","options","draftAndPublish","lifecycles","subscribe","models","afterDeleteMany","event","model","getModel","kind","contentType","locale","documentId","entryDocumentId","error","log","documents","use","deleteActionsOnDelete","updateActionsOnUpdate","syncFromDatabase","catch","err","entries","ALLOWED_WEBHOOK_EVENTS","forEach","key","value","get","addAllowedEvent"],"mappings":"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"}