{"version":3,"sources":["../../src/services/clients/awsSmsSender.client.ts"],"names":["AwsSMSSenderClient","constructor","client","sendOne","phone","message","command","PublishCommand","Message","PhoneNumber","send","accessKeyId","USERNAME","process","env","AWS_ACCESS_KEY_ID","secretAccessKey","PASSWORD","AWS_SECRET_ACCESS_KEY","region","REGION","AWS_REGION","NotProvidedCredentialsError","SNSClient","credentials","phones","result","sent","failed","Promise","all","map","then","push","catch","error"],"mappings":";;;AAUA,IAAqBA,mBAAAA,GAArB,MAAqBA,mBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADNC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA;AAsCAC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,SAAAA,kBAAU,MAAA,CAAA,OACdC,OACAC,OAAAA,KAAAA;AAEA,MAAA,MAAMC,OAAAA,GAAU,IAAIC,cAAAA,CAAe;QAC/BC,OAAAA,EAASH,OAAAA;QACTI,WAAAA,EAAaL;OACjB,CAAA;AAEA,MAAA,OAAO,MAAM,IAAA,CAAKF,MAAAA,CAAOQ,IAAAA,CAAKJ,OAAAA,CAAAA;IAClC,CAAA,EAVkB,SAAA,CAAA,CAAA;AApCd,IAAA,MAAMK,WAAAA,GAAcC,QAAAA,IAAYC,OAAAA,CAAQC,GAAAA,CAAIC,iBAAAA;AAC5C,IAAA,MAAMC,eAAAA,GAAkBC,QAAAA,IAAYJ,OAAAA,CAAQC,GAAAA,CAAII,qBAAAA;AAChD,IAAA,MAAMC,MAAAA,GAASC,MAAAA,IAAUP,OAAAA,CAAQC,GAAAA,CAAIO,UAAAA;AACrC,IAAA,IAAI,EAAEV,WAAAA,IAAeK,eAAAA,CAAAA,EACjB,MAAM,IAAIM,2BAAAA,EAAAA;AACd,IAAA,IAAA,CAAKpB,MAAAA,GAAS,IAAIqB,SAAAA,CAAU;AACxBJ,MAAAA,MAAAA;MACAK,WAAAA,EAAa;AACTb,QAAAA,WAAAA;AACAK,QAAAA;AACJ;KACJ,CAAA;AACJ,EAAA;AAEA,EAAA,MAAaN,IAAAA,CACTe,MAAAA,GAAmB,EAAA,EACnBpB,OAAAA,EACmB;AACnB,IAAA,MAAMqB,MAAAA,GAAqB;AACvBC,MAAAA,IAAAA,EAAM,EAAA;AACNC,MAAAA,MAAAA,EAAQ;AACZ,KAAA;AAEA,IAAA,MAAMC,OAAAA,CAAQC,GAAAA,CACVL,MAAAA,CAAOM,GAAAA,CAAI,CAAC3B,KAAAA,KACR,IAAA,CAAKD,OAAAA,CAAQC,KAAAA,EAAOC,OAAAA,CAAAA,CACf2B,IAAAA,CAAK,MAAMN,MAAAA,CAAOC,KAAKM,IAAAA,CAAK;AAAE7B,MAAAA;AAAM,KAAA,CAAA,CAAA,CACpC8B,KAAAA,CAAM,CAACC,KAAAA,KACJT,MAAAA,CAAOE,OAAOK,IAAAA,CAAK;AAAE7B,MAAAA,KAAAA;AAAO+B,MAAAA,KAAAA,EAAOA,KAAAA,CAAM9B;KAAQ,CAAA,CAAA,CAAA,CAAA;AAKjE,IAAA,OAAOqB,MAAAA;AACX,EAAA;AAaJ,CAAA;AAlDqB1B,MAAAA,CAAAA,mBAAAA,EAAAA,oBAAAA,CAAAA;AAArB,IAAqBA,kBAAAA,GAArB","file":"awsSmsSender.client-QBVM62KM.mjs","sourcesContent":["import { NotProvidedCredentialsError } from '../../errors';\nimport { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { PASSWORD, REGION, USERNAME } from '../../utils/constants';\nimport {\n    PublishCommand,\n    PublishCommandOutput,\n    SNSClient,\n} from '@aws-sdk/client-sns';\n\nexport default class AwsSMSSenderClient implements ISMSSender {\n    private client: SNSClient;\n    constructor() {\n        const accessKeyId = USERNAME || process.env.AWS_ACCESS_KEY_ID;\n        const secretAccessKey = PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;\n        const region = REGION || process.env.AWS_REGION;\n        if (!(accessKeyId && secretAccessKey))\n            throw new NotProvidedCredentialsError();\n        this.client = new SNSClient({\n            region: region,\n            credentials: {\n                accessKeyId: accessKeyId,\n                secretAccessKey: secretAccessKey,\n            },\n        });\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 = async (\n        phone: string,\n        message: string,\n    ): Promise<PublishCommandOutput> => {\n        const command = new PublishCommand({\n            Message: message,\n            PhoneNumber: phone,\n        });\n\n        return await this.client.send(command);\n    };\n}\n"]}