{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { ProviderCapabilities } from '../../shared/types';\nimport type { EmailConfig, SendOptions } from './types';\n\ninterface EmailProvider {\n  send: (options: SendOptions) => Promise<any>;\n  verify?: () => Promise<boolean>;\n  isIdle?: () => boolean;\n  close?: () => void;\n  getCapabilities?: () => ProviderCapabilities;\n}\n\ninterface EmailProviderModule {\n  init: (\n    options: EmailConfig['providerOptions'],\n    settings: EmailConfig['settings']\n  ) => EmailProvider;\n  name?: string;\n  provider?: string;\n}\n\nconst createProvider = (emailConfig: EmailConfig) => {\n  const providerName = emailConfig.provider.toLowerCase();\n  let provider: EmailProviderModule;\n\n  let modulePath: string;\n  try {\n    modulePath = require.resolve(`@strapi/provider-email-${providerName}`);\n  } catch (error) {\n    if (\n      error !== null &&\n      typeof error === 'object' &&\n      'code' in error &&\n      error.code === 'MODULE_NOT_FOUND'\n    ) {\n      modulePath = providerName;\n    } else {\n      throw error;\n    }\n  }\n\n  try {\n    provider = require(modulePath);\n  } catch (err) {\n    const newError = new Error(`Could not load email provider \"${providerName}\".`);\n    if (err instanceof Error) {\n      newError.stack = err.stack;\n    }\n    throw newError;\n  }\n\n  return provider.init(emailConfig.providerOptions, emailConfig.settings);\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n  const emailConfig: EmailConfig = strapi.config.get('plugin::email');\n\n  const providerName = emailConfig.provider.toLowerCase();\n  const isDev = process.env.NODE_ENV !== 'production';\n  if (providerName === 'sendmail' && isDev) {\n    strapi.log.warn(\n      '[email]: The \"sendmail\" email provider is still supported, but for most production setups that use a dedicated SMTP relay, consider switching to @strapi/provider-email-nodemailer (set `provider` to `\"nodemailer\"` in your email plugin config). This message is only shown in non-production environments.'\n    );\n  }\n\n  strapi.plugin('email').provider = createProvider(emailConfig);\n\n  // Add permissions\n  const actions = [\n    {\n      section: 'settings',\n      category: 'email',\n      displayName: 'Access the Email Settings page',\n      uid: 'settings.read',\n      pluginName: 'email',\n    },\n  ];\n\n  await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["createProvider","emailConfig","providerName","provider","toLowerCase","modulePath","require","resolve","error","code","err","newError","Error","stack","init","providerOptions","settings","bootstrap","strapi","config","get","isDev","process","env","NODE_ENV","log","warn","plugin","actions","section","category","displayName","uid","pluginName","service","actionProvider","registerMany"],"mappings":"AAqBA,MAAMA,iBAAiB,CAACC,WAAAA,GAAAA;AACtB,IAAA,MAAMC,YAAAA,GAAeD,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;IACrD,IAAID,QAAAA;IAEJ,IAAIE,UAAAA;IACJ,IAAI;AACFA,QAAAA,UAAAA,GAAaC,QAAQC,OAAO,CAAC,CAAC,uBAAuB,EAAEL,YAAAA,CAAAA,CAAc,CAAA;AACvE,IAAA,CAAA,CAAE,OAAOM,KAAAA,EAAO;QACd,IACEA,KAAAA,KAAU,IAAA,IACV,OAAOA,KAAAA,KAAU,QAAA,IACjB,UAAUA,KAAAA,IACVA,KAAAA,CAAMC,IAAI,KAAK,kBAAA,EACf;YACAJ,UAAAA,GAAaH,YAAAA;QACf,CAAA,MAAO;YACL,MAAMM,KAAAA;AACR,QAAA;AACF,IAAA;IAEA,IAAI;AACFL,QAAAA,QAAAA,GAAWG,OAAAA,CAAQD,UAAAA,CAAAA;AACrB,IAAA,CAAA,CAAE,OAAOK,GAAAA,EAAK;QACZ,MAAMC,QAAAA,GAAW,IAAIC,KAAAA,CAAM,CAAC,+BAA+B,EAAEV,YAAAA,CAAa,EAAE,CAAC,CAAA;AAC7E,QAAA,IAAIQ,eAAeE,KAAAA,EAAO;YACxBD,QAAAA,CAASE,KAAK,GAAGH,GAAAA,CAAIG,KAAK;AAC5B,QAAA;QACA,MAAMF,QAAAA;AACR,IAAA;AAEA,IAAA,OAAOR,SAASW,IAAI,CAACb,YAAYc,eAAe,EAAEd,YAAYe,QAAQ,CAAA;AACxE,CAAA;AAEO,MAAMC,SAAAA,GAAY,OAAO,EAAEC,MAAM,EAA2B,GAAA;AACjE,IAAA,MAAMjB,WAAAA,GAA2BiB,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAA,CAAA;AAEnD,IAAA,MAAMlB,YAAAA,GAAeD,WAAAA,CAAYE,QAAQ,CAACC,WAAW,EAAA;AACrD,IAAA,MAAMiB,KAAAA,GAAQC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA;IACvC,IAAItB,YAAAA,KAAiB,cAAcmB,KAAAA,EAAO;QACxCH,MAAAA,CAAOO,GAAG,CAACC,IAAI,CACb,+SAAA,CAAA;AAEJ,IAAA;AAEAR,IAAAA,MAAAA,CAAOS,MAAM,CAAC,OAAA,CAAA,CAASxB,QAAQ,GAAGH,cAAAA,CAAeC,WAAAA,CAAAA;;AAGjD,IAAA,MAAM2B,OAAAA,GAAU;AACd,QAAA;YACEC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,OAAA;YACVC,WAAAA,EAAa,gCAAA;YACbC,GAAAA,EAAK,eAAA;YACLC,UAAAA,EAAY;AACd;AACD,KAAA;AAED,IAAA,MAAMf,OAAOgB,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACR,OAAAA,CAAAA;AACxE;;;;"}