{"version":3,"sources":["../../src/services/clients/twilioSmsSender.client.ts"],"names":["TwilioSMSSenderClient","constructor","client","sendOne","phone","message","messages","create","from","FROM","to","body","USERNAME","PASSWORD","Twilio","NotProvidedCredentialsError","send","phones","result","sent","failed","Promise","all","map","then","push","catch","error"],"mappings":";;;AAOA,IAAqBA,sBAAAA,GAArB,MAAqBA,sBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADNC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA;AA6BAC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,SAAAA,0BACJC,KAAAA,EACAC,OAAAA,KAEA,IAAA,CAAKH,MAAAA,CAAOI,SAASC,MAAAA,CAAO;MACxBC,IAAAA,EAAMC,IAAAA;MACNC,EAAAA,EAAIN,KAAAA;MACJO,IAAAA,EAAMN;AACV,KAAA,CAAA,EARc,SAAA,CAAA,CAAA;AA3Bd,IAAA,IAAIO,QAAAA,IAAYC,YAAYJ,IAAAA,EACxB,IAAA,CAAKP,SAAS,IAAIY,MAAAA,CAAOF,UAAUC,QAAAA,CAAAA;AAClC,SAAA,MAAM,IAAIE,2BAAAA,EAAAA;AACnB,EAAA;AAEA,EAAA,MAAaC,IAAAA,CACTC,MAAAA,GAAmB,EAAA,EACnBZ,OAAAA,EACmB;AACnB,IAAA,MAAMa,MAAAA,GAAqB;AACvBC,MAAAA,IAAAA,EAAM,EAAA;AACNC,MAAAA,MAAAA,EAAQ;AACZ,KAAA;AAEA,IAAA,MAAMC,OAAAA,CAAQC,GAAAA,CACVL,MAAAA,CAAOM,GAAAA,CAAI,CAACnB,KAAAA,KACR,IAAA,CAAKD,OAAAA,CAAQC,KAAAA,EAAOC,OAAAA,CAAAA,CACfmB,IAAAA,CAAK,MAAMN,MAAAA,CAAOC,KAAKM,IAAAA,CAAK;AAAErB,MAAAA;AAAM,KAAA,CAAA,CAAA,CACpCsB,KAAAA,CAAM,CAACC,KAAAA,KACJT,MAAAA,CAAOE,OAAOK,IAAAA,CAAK;AAAErB,MAAAA,KAAAA;AAAOuB,MAAAA,KAAAA,EAAOA,KAAAA,CAAMtB;KAAQ,CAAA,CAAA,CAAA,CAAA;AAKjE,IAAA,OAAOa,MAAAA;AACX,EAAA;AAWJ,CAAA;AAvCqBlB,MAAAA,CAAAA,sBAAAA,EAAAA,uBAAAA,CAAAA;AAArB,IAAqBA,qBAAAA,GAArB","file":"twilioSmsSender.client-J4FEYTVH.mjs","sourcesContent":["import { ISMSSender } from '../../interfaces/smsSender.interface';\nimport { Twilio } from 'twilio';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { MessageInstance } from 'twilio/lib/rest/api/v2010/account/message';\nimport { SendResult } from '../../types/sendResult.type';\nimport { NotProvidedCredentialsError } from '../../errors';\n\nexport default class TwilioSMSSenderClient implements ISMSSender {\n    private client: Twilio;\n    constructor() {\n        if (USERNAME && PASSWORD && FROM)\n            this.client = new Twilio(USERNAME, PASSWORD);\n        else throw new NotProvidedCredentialsError();\n    }\n\n    public async send(\n        phones: string[] = [],\n        message: string,\n    ): Promise<SendResult> {\n        const result: SendResult = {\n            sent: [],\n            failed: [],\n        };\n\n        await Promise.all(\n            phones.map((phone) =>\n                this.sendOne(phone, message)\n                    .then(() => result.sent.push({ phone }))\n                    .catch((error) =>\n                        result.failed.push({ phone, error: error.message }),\n                    ),\n            ),\n        );\n\n        return result;\n    }\n\n    private sendOne = (\n        phone: string,\n        message: string,\n    ): Promise<MessageInstance> =>\n        this.client.messages.create({\n            from: FROM,\n            to: phone,\n            body: message,\n        });\n}\n"]}