{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { getService } from './utils';\nimport { ALLOWED_SORT_STRINGS, ALLOWED_WEBHOOK_EVENTS } from './constants';\n\nexport async function bootstrap({ strapi }: { strapi: Core.Strapi }) {\n  const defaultConfig = {\n    settings: {\n      sizeOptimization: true,\n      responsiveDimensions: true,\n      autoOrientation: false,\n      aiMetadata: true,\n    },\n    view_configuration: {\n      pageSize: 10,\n      sort: ALLOWED_SORT_STRINGS[0],\n    },\n  };\n\n  for (const [key, defaultValue] of Object.entries(defaultConfig)) {\n    // set plugin store\n    const configurator = strapi.store!({ type: 'plugin', name: 'upload', key });\n\n    const config = await configurator.get({});\n    if (\n      config &&\n      Object.keys(defaultValue).every((key) => Object.prototype.hasOwnProperty.call(config, key))\n    ) {\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    // if the config does not exist or does not have all the required keys\n    // set from the defaultValue ensuring all required settings are present\n    await configurator.set({\n      value: Object.assign(defaultValue, config || {}),\n    });\n  }\n\n  await registerPermissionActions();\n  await registerWebhookEvents();\n\n  await getService('weeklyMetrics').registerCron();\n  if (strapi.ai.admin.isEnabled() === true) {\n    await getService('aiMetadataJobs').registerCron();\n  }\n\n  getService('metrics').sendUploadPluginMetrics();\n\n  getService('extensions').signFileUrlsOnDocumentService();\n}\n\nconst registerWebhookEvents = async () =>\n  Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n    strapi.get('webhookStore').addAllowedEvent(key, value);\n  });\n\nconst registerPermissionActions = async () => {\n  const actions = [\n    {\n      section: 'plugins',\n      displayName: 'Access the Media Library',\n      uid: 'read',\n      pluginName: 'upload',\n    },\n    {\n      section: 'plugins',\n      displayName: 'Create (upload)',\n      uid: 'assets.create',\n      subCategory: 'assets',\n      pluginName: 'upload',\n    },\n    {\n      section: 'plugins',\n      displayName: 'Update (crop, details, replace) + delete',\n      uid: 'assets.update',\n      subCategory: 'assets',\n      pluginName: 'upload',\n    },\n    {\n      section: 'plugins',\n      displayName: 'Download',\n      uid: 'assets.download',\n      subCategory: 'assets',\n      pluginName: 'upload',\n    },\n    {\n      section: 'plugins',\n      displayName: 'Copy link',\n      uid: 'assets.copy-link',\n      subCategory: 'assets',\n      pluginName: 'upload',\n    },\n    {\n      section: 'plugins',\n      displayName: 'Configure view',\n      uid: 'configure-view',\n      pluginName: 'upload',\n    },\n    {\n      section: 'settings',\n      displayName: 'Access the Media Library settings page',\n      uid: 'settings.read',\n      category: 'media library',\n      pluginName: 'upload',\n    },\n  ];\n\n  await strapi.service('admin::permission').actionProvider.registerMany(actions);\n};\n"],"names":["bootstrap","strapi","defaultConfig","settings","sizeOptimization","responsiveDimensions","autoOrientation","aiMetadata","view_configuration","pageSize","sort","ALLOWED_SORT_STRINGS","key","defaultValue","Object","entries","configurator","store","type","name","config","get","keys","every","prototype","hasOwnProperty","call","set","value","assign","registerPermissionActions","registerWebhookEvents","getService","registerCron","ai","admin","isEnabled","sendUploadPluginMetrics","signFileUrlsOnDocumentService","ALLOWED_WEBHOOK_EVENTS","forEach","addAllowedEvent","actions","section","displayName","uid","pluginName","subCategory","category","service","actionProvider","registerMany"],"mappings":";;;AAKO,eAAeA,SAAAA,CAAU,EAAEC,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AACjE,IAAA,MAAMC,aAAAA,GAAgB;QACpBC,QAAAA,EAAU;YACRC,gBAAAA,EAAkB,IAAA;YAClBC,oBAAAA,EAAsB,IAAA;YACtBC,eAAAA,EAAiB,KAAA;YACjBC,UAAAA,EAAY;AACd,SAAA;QACAC,kBAAAA,EAAoB;YAClBC,QAAAA,EAAU,EAAA;YACVC,IAAAA,EAAMC,oBAAoB,CAAC,CAAA;AAC7B;AACF,KAAA;IAEA,KAAK,MAAM,CAACC,GAAAA,EAAKC,YAAAA,CAAa,IAAIC,MAAAA,CAAOC,OAAO,CAACb,aAAAA,CAAAA,CAAgB;;QAE/D,MAAMc,YAAAA,GAAef,OAAAA,CAAOgB,KAAK,CAAE;YAAEC,IAAAA,EAAM,QAAA;YAAUC,IAAAA,EAAM,QAAA;AAAUP,YAAAA;AAAI,SAAA,CAAA;AAEzE,QAAA,MAAMQ,MAAAA,GAAS,MAAMJ,YAAAA,CAAaK,GAAG,CAAC,EAAC,CAAA;AACvC,QAAA,IACED,UACAN,MAAAA,CAAOQ,IAAI,CAACT,YAAAA,CAAAA,CAAcU,KAAK,CAAC,CAACX,GAAAA,GAAQE,MAAAA,CAAOU,SAAS,CAACC,cAAc,CAACC,IAAI,CAACN,QAAQR,GAAAA,CAAAA,CAAAA,EACtF;AAEA,YAAA;AACF,QAAA;;;QAIA,MAAMI,YAAAA,CAAaW,GAAG,CAAC;AACrBC,YAAAA,KAAAA,EAAOd,MAAAA,CAAOe,MAAM,CAAChB,YAAAA,EAAcO,UAAU,EAAC;AAChD,SAAA,CAAA;AACF,IAAA;IAEA,MAAMU,yBAAAA,EAAAA;IACN,MAAMC,qBAAAA,EAAAA;IAEN,MAAMC,UAAAA,CAAW,iBAAiBC,YAAY,EAAA;AAC9C,IAAA,IAAIhC,QAAOiC,EAAE,CAACC,KAAK,CAACC,SAAS,OAAO,IAAA,EAAM;QACxC,MAAMJ,UAAAA,CAAW,kBAAkBC,YAAY,EAAA;AACjD,IAAA;AAEAD,IAAAA,UAAAA,CAAW,WAAWK,uBAAuB,EAAA;AAE7CL,IAAAA,UAAAA,CAAW,cAAcM,6BAA6B,EAAA;AACxD;AAEA,MAAMP,qBAAAA,GAAwB,UAC5BjB,MAAAA,CAAOC,OAAO,CAACwB,sBAAAA,CAAAA,CAAwBC,OAAO,CAAC,CAAC,CAAC5B,GAAAA,EAAKgB,KAAAA,CAAM,GAAA;AAC1D3B,QAAAA,MAAAA,CAAOoB,GAAG,CAAC,cAAA,CAAA,CAAgBoB,eAAe,CAAC7B,GAAAA,EAAKgB,KAAAA,CAAAA;AAClD,IAAA,CAAA,CAAA;AAEF,MAAME,yBAAAA,GAA4B,UAAA;AAChC,IAAA,MAAMY,OAAAA,GAAU;AACd,QAAA;YACEC,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,0BAAA;YACbC,GAAAA,EAAK,MAAA;YACLC,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,iBAAA;YACbC,GAAAA,EAAK,eAAA;YACLE,WAAAA,EAAa,QAAA;YACbD,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,0CAAA;YACbC,GAAAA,EAAK,eAAA;YACLE,WAAAA,EAAa,QAAA;YACbD,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,UAAA;YACbC,GAAAA,EAAK,iBAAA;YACLE,WAAAA,EAAa,QAAA;YACbD,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,WAAA;YACbC,GAAAA,EAAK,kBAAA;YACLE,WAAAA,EAAa,QAAA;YACbD,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,SAAA;YACTC,WAAAA,EAAa,gBAAA;YACbC,GAAAA,EAAK,gBAAA;YACLC,UAAAA,EAAY;AACd,SAAA;AACA,QAAA;YACEH,OAAAA,EAAS,UAAA;YACTC,WAAAA,EAAa,wCAAA;YACbC,GAAAA,EAAK,eAAA;YACLG,QAAAA,EAAU,eAAA;YACVF,UAAAA,EAAY;AACd;AACD,KAAA;AAED,IAAA,MAAM7C,OAAOgD,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACT,OAAAA,CAAAA;AACxE,CAAA;;;;"}