{"version":3,"file":"modules.mjs","sources":["../../src/registries/modules.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { createModule, RawModule, Module } from '../domain/module';\n\ntype ModuleMap = { [namespace: string]: Module };\n\nconst modulesRegistry = (strapi: Core.Strapi) => {\n  const modules: ModuleMap = {};\n\n  return {\n    get(namespace: string) {\n      return modules[namespace];\n    },\n    getAll(prefix = '') {\n      return pickBy<ModuleMap>((mod, namespace) => namespace.startsWith(prefix))(modules);\n    },\n    add(namespace: string, rawModule: RawModule) {\n      if (has(namespace, modules)) {\n        throw new Error(`Module ${namespace} has already been registered.`);\n      }\n\n      modules[namespace] = createModule(namespace, rawModule, strapi);\n      modules[namespace].load();\n\n      return modules[namespace];\n    },\n    async bootstrap() {\n      for (const mod of Object.values(modules)) {\n        await mod.bootstrap();\n      }\n    },\n    async register() {\n      for (const mod of Object.values(modules)) {\n        await mod.register();\n      }\n    },\n    async destroy() {\n      for (const mod of Object.values(modules)) {\n        await mod.destroy();\n      }\n    },\n  };\n};\n\nexport default modulesRegistry;\n"],"names":["modulesRegistry","strapi","modules","get","namespace","getAll","prefix","pickBy","mod","startsWith","add","rawModule","has","Error","createModule","load","bootstrap","Object","values","register","destroy"],"mappings":";;;AAMA,MAAMA,kBAAkB,CAACC,MAAAA,GAAAA;AACvB,IAAA,MAAMC,UAAqB,EAAC;IAE5B,OAAO;AACLC,QAAAA,GAAAA,CAAAA,CAAIC,SAAiB,EAAA;YACnB,OAAOF,OAAO,CAACE,SAAAA,CAAU;AAC3B,QAAA,CAAA;AACAC,QAAAA,MAAAA,CAAAA,CAAOC,SAAS,EAAE,EAAA;AAChB,YAAA,OAAOC,OAAkB,CAACC,GAAAA,EAAKJ,YAAcA,SAAAA,CAAUK,UAAU,CAACH,MAAAA,CAAAA,CAAAA,CAASJ,OAAAA,CAAAA;AAC7E,QAAA,CAAA;QACAQ,GAAAA,CAAAA,CAAIN,SAAiB,EAAEO,SAAoB,EAAA;YACzC,IAAIC,GAAAA,CAAIR,WAAWF,OAAAA,CAAAA,EAAU;AAC3B,gBAAA,MAAM,IAAIW,KAAAA,CAAM,CAAC,OAAO,EAAET,SAAAA,CAAU,6BAA6B,CAAC,CAAA;AACpE,YAAA;AAEAF,YAAAA,OAAO,CAACE,SAAAA,CAAU,GAAGU,YAAAA,CAAaV,WAAWO,SAAAA,EAAWV,MAAAA,CAAAA;YACxDC,OAAO,CAACE,SAAAA,CAAU,CAACW,IAAI,EAAA;YAEvB,OAAOb,OAAO,CAACE,SAAAA,CAAU;AAC3B,QAAA,CAAA;QACA,MAAMY,SAAAA,CAAAA,GAAAA;AACJ,YAAA,KAAK,MAAMR,GAAAA,IAAOS,MAAAA,CAAOC,MAAM,CAAChB,OAAAA,CAAAA,CAAU;AACxC,gBAAA,MAAMM,IAAIQ,SAAS,EAAA;AACrB,YAAA;AACF,QAAA,CAAA;QACA,MAAMG,QAAAA,CAAAA,GAAAA;AACJ,YAAA,KAAK,MAAMX,GAAAA,IAAOS,MAAAA,CAAOC,MAAM,CAAChB,OAAAA,CAAAA,CAAU;AACxC,gBAAA,MAAMM,IAAIW,QAAQ,EAAA;AACpB,YAAA;AACF,QAAA,CAAA;QACA,MAAMC,OAAAA,CAAAA,GAAAA;AACJ,YAAA,KAAK,MAAMZ,GAAAA,IAAOS,MAAAA,CAAOC,MAAM,CAAChB,OAAAA,CAAAA,CAAU;AACxC,gBAAA,MAAMM,IAAIY,OAAO,EAAA;AACnB,YAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}