{"version":3,"sources":["../../src/mappers/qrveyEnvs.mapper.ts","../../src/services/smsSenderFactory.service.ts","../../src/services/smsSender.service.ts"],"names":["getSMSProviderFromPlatformCloud","platformCloudDictionary","AWS","AZURE","PLATFORM_CLOUD","undefined","SMSSenderFactory","getSMSSender","provider","SMS_PROVIDER","toLowerCase","UnknownProviderError","providerModules","default","SMSSender","_smsSender","twilio","aws","azure","vonage","SMSSenderService","send","phones","message","checkStatus","error"],"mappings":";;;AAEO,IAAMA,kDAAkC,MAAA,CAAA,MAAA;AAF/C,EAAA,IAAA,EAAA,EAAA,EAAA;AAGI,EAAA,MAAMC,uBAAAA,GAAkD;IACpDC,GAAAA,EAAK,KAAA;IACLC,KAAAA,EAAO;AACX,GAAA;AAEA,EAAA,OAAA,CAAOF,EAAAA,GAAAA,uBAAAA,CAAAA,CAAwBG,EAAAA,GAAAA,cAAAA,KAAAA,IAAAA,GAAAA,EAAAA,GAAkB,EAAA,CAAA,KAA1CH,IAAAA,GAAAA,EAAAA,GAAiDI,MAAAA;AAC5D,CAAA,EAP+C,iCAAA,CAAA;;;ACIxC,IAAMC,iBAAAA,GAAN,MAAMA,iBAAAA,CAAAA;AAYT,EAAA,aAAaC,YAAAA,GAAoC;AAlBrD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAmBQ,IAAA,MAAMC,QAAAA,GAAAA,CACFR,EAAAA,GAAAA,+BAAAA,EAAAA,KAAAA,IAAAA,GAAAA,EAAAA,GAAAA,CAAqCS,EAAAA,GAAAA,YAAAA,KAAAA,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAcC,WAAAA,EAAAA;AACvD,IAAA,IAAI,CAACF,QAAAA,EAAU,MAAM,IAAIG,oBAAAA,EAAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAKC,eAAAA,CAAgBJ,QAAAA,CAAAA,EAAW,MAAM,IAAIG,oBAAAA,EAAAA;AAE/C,IAAA,MAAM,EAAEE,SAASC,SAAAA,EAAS,GAAK,MAAM,IAAA,CAAKF,eAAAA,CAAgBJ,QAAAA,CAAAA,EAAS;AACnE,IAAA,IAAA,CAAKO,UAAAA,GAAAA,CAAa,EAAA,GAAA,IAAA,CAAKA,UAAAA,KAAL,IAAA,GAAA,EAAA,GAAmB,IAAID,SAAAA,EAAAA;AACzC,IAAA,OAAO,IAAA,CAAKC,UAAAA;AAChB,EAAA;AACJ,CAAA;AAtBaT,MAAAA,CAAAA,iBAAAA,EAAAA,kBAAAA,CAAAA;AACT,aAAA,CADSA,mBACMM,iBAAAA,EAGX;EACAI,MAAAA,kBAAQ,MAAA,CAAA,MAAM,OAAO,uCAAA,CAAA,EAAb,QAAA,CAAA;EACRC,GAAAA,kBAAK,MAAA,CAAA,MAAM,OAAO,oCAAA,CAAA,EAAb,KAAA,CAAA;EACLC,KAAAA,kBAAO,MAAA,CAAA,MAAM,OAAO,sCAAA,CAAA,EAAb,OAAA,CAAA;EACPC,MAAAA,kBAAQ,MAAA,CAAA,MAAM,OAAO,uCAAA,CAAA,EAAb,QAAA;AACZ,CAAA,CAAA;AACA,aAAA,CAVSb,mBAUMS,YAAAA,EAAgC,IAAA,CAAA;AAV5C,IAAMT,gBAAAA,GAAN,iBAAA;;;ACHA,IAAMc,iBAAAA,GAAN,MAAMA,iBAAAA,CAAAA;;;;;;;EAOT,MAAaC,IAAAA,CAAKC,QAAkBC,OAAAA,EAAsC;AACtE,IAAA,OAAA,CAAQ,MAAMjB,gBAAAA,CAAiBC,YAAAA,EAAY,EAAIc,IAAAA,CAAKC,QAAQC,OAAAA,CAAAA;AAChE,EAAA;AAEA,EAAA,aAAoBC,WAAAA,GAAgC;AAChD,IAAA,IAAI;AACA,MAAA,MAAMlB,iBAAiBC,YAAAA,EAAY;AACnC,MAAA,OAAO,IAAA;AACX,IAAA,CAAA,CAAA,OAASkB,KAAAA,EAAO;AACZ,MAAA,OAAO,KAAA;AACX,IAAA;AACJ,EAAA;AACJ,CAAA;AAnBaL,MAAAA,CAAAA,iBAAAA,EAAAA,kBAAAA,CAAAA;AAAN,IAAMA,gBAAAA,GAAN","file":"index.mjs","sourcesContent":["import { PLATFORM_CLOUD } from '../utils/constants';\n\nexport const getSMSProviderFromPlatformCloud = () => {\n    const platformCloudDictionary: Record<string, string> = {\n        AWS: 'aws',\n        AZURE: 'azure',\n    };\n\n    return platformCloudDictionary[PLATFORM_CLOUD ?? ''] ?? undefined;\n};\n","import { UnknownProviderError } from '../errors';\nimport { ISMSSender } from '../interfaces';\nimport { SMSProviderModule } from '../types';\nimport { SMS_PROVIDER } from '../utils/constants';\nimport { getSMSProviderFromPlatformCloud } from '../mappers/qrveyEnvs.mapper';\n\nexport class SMSSenderFactory {\n    private static providerModules: Record<\n        string,\n        () => Promise<SMSProviderModule>\n    > = {\n        twilio: () => import('./clients/twilioSmsSender.client'),\n        aws: () => import('./clients/awsSmsSender.client'),\n        azure: () => import('./clients/azureSmsSender.client'),\n        vonage: () => import('./clients/vonageSmsSender.client'),\n    };\n    private static _smsSender: ISMSSender | null = null;\n\n    static async getSMSSender(): Promise<ISMSSender> {\n        const provider =\n            getSMSProviderFromPlatformCloud() ?? SMS_PROVIDER?.toLowerCase();\n        if (!provider) throw new UnknownProviderError();\n        if (!this.providerModules[provider]) throw new UnknownProviderError();\n\n        const { default: SMSSender } = await this.providerModules[provider]();\n        this._smsSender = this._smsSender ?? new SMSSender();\n        return this._smsSender;\n    }\n}\n","import { SendResult } from '../types';\nimport { SMSSenderFactory } from './smsSenderFactory.service';\n\nexport class SMSSenderService {\n    /**\n     * Send a message to one or more phones.\n     * @param phones - phone numbers to send to\n     * @param message - message to send\n     * @returns {Promise<SendResult>} Send result.\n     */\n    public async send(phones: string[], message: string): Promise<SendResult> {\n        return (await SMSSenderFactory.getSMSSender()).send(phones, message);\n    }\n\n    public static async checkStatus(): Promise<boolean> {\n        try {\n            await SMSSenderFactory.getSMSSender();\n            return true;\n        } catch (error) {\n            return false;\n        }\n    }\n}\n"]}