{"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n  private registerMap = new Map<string, unknown>();\n\n  private serviceMap = new Map();\n\n  add(name: string, resolver: unknown) {\n    if (this.registerMap.has(name)) {\n      throw new Error(`Cannot register already registered service ${name}`);\n    }\n\n    this.registerMap.set(name, resolver);\n    return this;\n  }\n\n  get(name: string, args?: unknown) {\n    // TODO: handle singleton vs instantiation everytime\n    if (this.serviceMap.has(name)) {\n      return this.serviceMap.get(name);\n    }\n\n    if (this.registerMap.has(name)) {\n      const resolver = this.registerMap.get(name);\n\n      if (typeof resolver === 'function') {\n        this.serviceMap.set(name, resolver(this, args));\n      } else {\n        this.serviceMap.set(name, resolver);\n      }\n\n      return this.serviceMap.get(name);\n    }\n\n    throw new Error(`Could not resolve service ${name}`);\n  }\n}\n"],"names":["Container","add","name","resolver","registerMap","has","Error","set","get","args","serviceMap","Map"],"mappings":"AAEO,MAAMA,SAAAA,CAAAA;IAKXC,GAAAA,CAAIC,IAAY,EAAEC,QAAiB,EAAE;AACnC,QAAA,IAAI,IAAI,CAACC,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,2CAA2C,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACtE,QAAA;AAEA,QAAA,IAAI,CAACE,WAAW,CAACG,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI;AACb,IAAA;IAEAK,GAAAA,CAAIN,IAAY,EAAEO,IAAc,EAAE;;AAEhC,QAAA,IAAI,IAAI,CAACC,UAAU,CAACL,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC7B,YAAA,OAAO,IAAI,CAACQ,UAAU,CAACF,GAAG,CAACN,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,IAAI,IAAI,CAACE,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAMC,WAAW,IAAI,CAACC,WAAW,CAACI,GAAG,CAACN,IAAAA,CAAAA;YAEtC,IAAI,OAAOC,aAAa,UAAA,EAAY;gBAClC,IAAI,CAACO,UAAU,CAACH,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAS,IAAI,EAAEM,IAAAA,CAAAA,CAAAA;YAC3C,CAAA,MAAO;AACL,gBAAA,IAAI,CAACC,UAAU,CAACH,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC5B,YAAA;AAEA,YAAA,OAAO,IAAI,CAACO,UAAU,CAACF,GAAG,CAACN,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,0BAA0B,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACrD,IAAA;;AAhCQE,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIO,GAAAA,EAAAA;AAElBD,QAAAA,IAAAA,CAAAA,UAAAA,GAAa,IAAIC,GAAAA,EAAAA;;AA+B3B;;;;"}