@qrvey/sms 1.0.2-1215-beta.1 → 1.0.2-1215-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/cjs/services/clients/awsSmsSender.client.js +13 -9
  2. package/dist/cjs/services/clients/awsSmsSender.client.js.map +1 -1
  3. package/dist/esm/{awsSmsSender.client-QBVM62KM.mjs → awsSmsSender.client-3SLRZJIV.mjs} +9 -5
  4. package/dist/esm/awsSmsSender.client-3SLRZJIV.mjs.map +1 -0
  5. package/dist/esm/{azureSmsSender.client-Z3P5SL47.mjs → azureSmsSender.client-DA4OPYSB.mjs} +4 -3
  6. package/dist/esm/azureSmsSender.client-DA4OPYSB.mjs.map +1 -0
  7. package/dist/esm/chunk-4QVZYBYH.mjs +25 -0
  8. package/dist/esm/chunk-4QVZYBYH.mjs.map +1 -0
  9. package/dist/esm/chunk-NRKEOLLT.mjs +16 -0
  10. package/dist/esm/chunk-NRKEOLLT.mjs.map +1 -0
  11. package/dist/esm/index.mjs +6 -5
  12. package/dist/esm/index.mjs.map +1 -1
  13. package/dist/esm/{twilioSmsSender.client-J4FEYTVH.mjs → twilioSmsSender.client-TDXGCJPW.mjs} +4 -3
  14. package/dist/esm/twilioSmsSender.client-TDXGCJPW.mjs.map +1 -0
  15. package/dist/esm/{vonageSmsSender.client-7KP2UCMI.mjs → vonageSmsSender.client-MM7LS23Y.mjs} +4 -3
  16. package/dist/esm/vonageSmsSender.client-MM7LS23Y.mjs.map +1 -0
  17. package/package.json +7 -6
  18. package/src/services/clients/awsSmsSender.client.ts +13 -8
  19. package/src/services/clients/index.test.ts +2 -4
  20. package/src/services/smsSender.service.test.ts +14 -6
  21. package/dist/esm/awsSmsSender.client-QBVM62KM.mjs.map +0 -1
  22. package/dist/esm/azureSmsSender.client-Z3P5SL47.mjs.map +0 -1
  23. package/dist/esm/chunk-3OKJAMCQ.mjs +0 -36
  24. package/dist/esm/chunk-3OKJAMCQ.mjs.map +0 -1
  25. package/dist/esm/twilioSmsSender.client-J4FEYTVH.mjs.map +0 -1
  26. package/dist/esm/vonageSmsSender.client-7KP2UCMI.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const errors_1 = require("../../errors");
4
3
  const constants_1 = require("../../utils/constants");
5
4
  const client_sns_1 = require("@aws-sdk/client-sns");
5
+ const credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
6
6
  class AwsSMSSenderClient {
7
7
  constructor() {
8
8
  this.sendOne = async (phone, message) => {
@@ -16,14 +16,18 @@ class AwsSMSSenderClient {
16
16
  const secretAccessKey = constants_1.PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
17
17
  const region = constants_1.REGION || process.env.AWS_REGION;
18
18
  if (!(accessKeyId && secretAccessKey))
19
- throw new errors_1.NotProvidedCredentialsError();
20
- this.client = new client_sns_1.SNSClient({
21
- region: region,
22
- credentials: {
23
- accessKeyId: accessKeyId,
24
- secretAccessKey: secretAccessKey,
25
- },
26
- });
19
+ this.client = new client_sns_1.SNSClient({
20
+ region: region,
21
+ credentials: (0, credential_provider_node_1.defaultProvider)(),
22
+ });
23
+ else
24
+ this.client = new client_sns_1.SNSClient({
25
+ region: region,
26
+ credentials: {
27
+ accessKeyId: accessKeyId,
28
+ secretAccessKey: secretAccessKey,
29
+ },
30
+ });
27
31
  }
28
32
  async send(phones = [], message) {
29
33
  const result = {
@@ -1 +1 @@
1
- {"version":3,"file":"awsSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/awsSmsSender.client.ts"],"names":[],"mappings":";;AAAA,yCAA2D;AAG3D,qDAAmE;AACnE,oDAI6B;AAE7B,MAAqB,kBAAkB;IAEnC;QAqCQ,YAAO,GAAG,KAAK,EACnB,KAAa,EACb,OAAe,EACc,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC;gBAC/B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,KAAK;aACrB,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;QA9CE,MAAM,WAAW,GAAG,oBAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,MAAM,eAAe,GAAG,oBAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACtE,MAAM,MAAM,GAAG,kBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,CAAC,WAAW,IAAI,eAAe,CAAC;YACjC,MAAM,IAAI,oCAA2B,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC;YACxB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE;gBACT,WAAW,EAAE,WAAW;gBACxB,eAAe,EAAE,eAAe;aACnC;SACJ,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,IAAI,CACb,SAAmB,EAAE,EACrB,OAAe;QAEf,MAAM,MAAM,GAAe;YACvB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CACtD,CACR,CACJ,CAAC;QAEF,OAAO,MAAM,CAAC;IAClB,CAAC;CAaJ;AAlDD,qCAkDC"}
1
+ {"version":3,"file":"awsSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/awsSmsSender.client.ts"],"names":[],"mappings":";;AAGA,qDAAmE;AACnE,oDAI6B;AAC7B,gFAAoE;AAEpE,MAAqB,kBAAkB;IAEnC;QAyCQ,YAAO,GAAG,KAAK,EACnB,KAAa,EACb,OAAe,EACc,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC;gBAC/B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,KAAK;aACrB,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;QAlDE,MAAM,WAAW,GAAG,oBAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,MAAM,eAAe,GAAG,oBAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACtE,MAAM,MAAM,GAAG,kBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,CAAC,WAAW,IAAI,eAAe,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAA,0CAAe,GAAE;aACjC,CAAC,CAAC;;YAEH,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE;oBACT,WAAW,EAAE,WAAW;oBACxB,eAAe,EAAE,eAAe;iBACnC;aACJ,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,IAAI,CACb,SAAmB,EAAE,EACrB,OAAe;QAEf,MAAM,MAAM,GAAe;YACvB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CACtD,CACR,CACJ,CAAC;QAEF,OAAO,MAAM,CAAC;IAClB,CAAC;CAaJ;AAtDD,qCAsDC"}
@@ -1,5 +1,6 @@
1
- import { __name, __publicField, USERNAME, PASSWORD, REGION, NotProvidedCredentialsError } from './chunk-3OKJAMCQ.mjs';
1
+ import { __name, __publicField, USERNAME, PASSWORD, REGION } from './chunk-NRKEOLLT.mjs';
2
2
  import { PublishCommand, SNSClient } from '@aws-sdk/client-sns';
3
+ import { defaultProvider } from '@aws-sdk/credential-provider-node';
3
4
 
4
5
  var _AwsSMSSenderClient = class _AwsSMSSenderClient {
5
6
  constructor() {
@@ -14,8 +15,11 @@ var _AwsSMSSenderClient = class _AwsSMSSenderClient {
14
15
  const accessKeyId = USERNAME || process.env.AWS_ACCESS_KEY_ID;
15
16
  const secretAccessKey = PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
16
17
  const region = REGION || process.env.AWS_REGION;
17
- if (!(accessKeyId && secretAccessKey)) throw new NotProvidedCredentialsError();
18
- this.client = new SNSClient({
18
+ if (!(accessKeyId && secretAccessKey)) this.client = new SNSClient({
19
+ region,
20
+ credentials: defaultProvider()
21
+ });
22
+ else this.client = new SNSClient({
19
23
  region,
20
24
  credentials: {
21
25
  accessKeyId,
@@ -41,5 +45,5 @@ __name(_AwsSMSSenderClient, "AwsSMSSenderClient");
41
45
  var AwsSMSSenderClient = _AwsSMSSenderClient;
42
46
 
43
47
  export { AwsSMSSenderClient as default };
44
- //# sourceMappingURL=awsSmsSender.client-QBVM62KM.mjs.map
45
- //# sourceMappingURL=awsSmsSender.client-QBVM62KM.mjs.map
48
+ //# sourceMappingURL=awsSmsSender.client-3SLRZJIV.mjs.map
49
+ //# sourceMappingURL=awsSmsSender.client-3SLRZJIV.mjs.map
@@ -0,0 +1 @@
1
+ {"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","SNSClient","credentials","defaultProvider","phones","result","sent","failed","Promise","all","map","then","push","catch","error"],"mappings":";;;;AAWA,IAAqBA,mBAAAA,GAArB,MAAqBA,mBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADNC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA;AA0CAC,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;AAxCd,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,IAAA,CAAKd,MAAAA,GAAS,IAAIoB,SAAAA,CAAU;AACxBH,MAAAA,MAAAA;AACAI,MAAAA,WAAAA,EAAaC,eAAAA;KACjB,CAAA;SAEA,IAAA,CAAKtB,MAAAA,GAAS,IAAIoB,SAAAA,CAAU;AACxBH,MAAAA,MAAAA;MACAI,WAAAA,EAAa;AACTZ,QAAAA,WAAAA;AACAK,QAAAA;AACJ;KACJ,CAAA;AACR,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;AAtDqB1B,MAAAA,CAAAA,mBAAAA,EAAAA,oBAAAA,CAAAA;AAArB,IAAqBA,kBAAAA,GAArB","file":"awsSmsSender.client-3SLRZJIV.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';\nimport { defaultProvider } from '@aws-sdk/credential-provider-node';\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 this.client = new SNSClient({\n region: region,\n credentials: defaultProvider(),\n });\n else\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"]}
@@ -1,4 +1,5 @@
1
- import { __name, __publicField, USERNAME, PASSWORD, FROM, NotProvidedCredentialsError } from './chunk-3OKJAMCQ.mjs';
1
+ import { NotProvidedCredentialsError } from './chunk-4QVZYBYH.mjs';
2
+ import { __name, __publicField, USERNAME, PASSWORD, FROM } from './chunk-NRKEOLLT.mjs';
2
3
  import { SmsClient } from '@azure/communication-sms';
3
4
 
4
5
  var _AzureSMSSenderClient = class _AzureSMSSenderClient {
@@ -35,5 +36,5 @@ __name(_AzureSMSSenderClient, "AzureSMSSenderClient");
35
36
  var AzureSMSSenderClient = _AzureSMSSenderClient;
36
37
 
37
38
  export { AzureSMSSenderClient as default };
38
- //# sourceMappingURL=azureSmsSender.client-Z3P5SL47.mjs.map
39
- //# sourceMappingURL=azureSmsSender.client-Z3P5SL47.mjs.map
39
+ //# sourceMappingURL=azureSmsSender.client-DA4OPYSB.mjs.map
40
+ //# sourceMappingURL=azureSmsSender.client-DA4OPYSB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/clients/azureSmsSender.client.ts"],"names":["AzureSMSSenderClient","constructor","client","USERNAME","PASSWORD","FROM","process","env","COMMUNICATION_SERVICES_CONNECTION_STRING","NotProvidedCredentialsError","connectionString","SmsClient","send","phones","message","result","sent","failed","smsResults","from","to","forEach","smsResult","errorMessage","push","phone","error"],"mappings":";;;;AAMA,IAAqBA,qBAAAA,GAArB,MAAqBA,qBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADdC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA;AAPJ,IAAA,IAAA,EAAA;AASQ,IAAA,IACI,EAAEC,QAAAA,IAAYC,QAAAA,IAAYC,IAAAA,CAAAA,IAC1B,CAACC,QAAQC,GAAAA,CAAIC,wCAAAA,EAEb,MAAM,IAAIC,2BAAAA,EAAAA;AACd,IAAA,MAAMC,gBAAAA,GAAAA,CACFJ,aAAQC,GAAAA,CAAIC,wCAAAA,KAAZF,YACA,CAAA,iBAAA,EAAoBH,QAAAA,uCAA+CC,QAAAA,CAAAA,CAAAA;AACvE,IAAA,IAAA,CAAKF,MAAAA,GAAS,IAAIS,SAAAA,CAAUD,gBAAAA,CAAAA;AAChC,EAAA;EAEA,MAAaE,IAAAA,CAAKC,QAAkBC,OAAAA,EAAsC;AACtE,IAAA,MAAMC,MAAAA,GAAqB;AACvBC,MAAAA,IAAAA,EAAM,EAAA;AACNC,MAAAA,MAAAA,EAAQ;AACZ,KAAA;AACA,IAAA,MAAMC,UAAAA,GAAa,MAAM,IAAA,CAAKhB,MAAAA,CAAOU,IAAAA,CAAK;MACtCO,IAAAA,EAAMd,IAAAA;MACNe,EAAAA,EAAIP,MAAAA;AACJC,MAAAA;KACJ,CAAA;AAEAI,IAAAA,UAAAA,CAAWG,OAAAA,CAAQ,CAACC,SAAAA,KAAAA;AAChB,MAAA,IAAIA,SAAAA,CAAUC,YAAAA,EACVR,MAAAA,CAAOE,MAAAA,CAAOO,IAAAA,CAAK;AACfC,QAAAA,KAAAA,EAAOH,SAAAA,CAAUF,EAAAA;AACjBM,QAAAA,KAAAA,EAAOJ,SAAAA,CAAUC;OACrB,CAAA;AACCR,WAAAA,MAAAA,CAAOC,KAAKQ,IAAAA,CAAK;AAAEC,QAAAA,KAAAA,EAAOH,SAAAA,CAAUF;OAAG,CAAA;IAChD,CAAA,CAAA;AAEA,IAAA,OAAOL,MAAAA;AACX,EAAA;AACJ,CAAA;AApCqBf,MAAAA,CAAAA,qBAAAA,EAAAA,sBAAAA,CAAAA;AAArB,IAAqBA,oBAAAA,GAArB","file":"azureSmsSender.client-DA4OPYSB.mjs","sourcesContent":["import { NotProvidedCredentialsError } from '../../errors';\nimport { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { SmsClient } from '@azure/communication-sms';\n\nexport default class AzureSMSSenderClient implements ISMSSender {\n client: SmsClient;\n constructor() {\n if (\n !(USERNAME && PASSWORD && FROM) &&\n !process.env.COMMUNICATION_SERVICES_CONNECTION_STRING\n )\n throw new NotProvidedCredentialsError();\n const connectionString =\n process.env.COMMUNICATION_SERVICES_CONNECTION_STRING ??\n `endpoint=https://${USERNAME}.communication.azure.com/;accesskey=${PASSWORD}`;\n this.client = new SmsClient(connectionString);\n }\n\n public async send(phones: string[], message: string): Promise<SendResult> {\n const result: SendResult = {\n sent: [],\n failed: [],\n };\n const smsResults = await this.client.send({\n from: FROM as string,\n to: phones,\n message: message,\n });\n\n smsResults.forEach((smsResult) => {\n if (smsResult.errorMessage)\n result.failed.push({\n phone: smsResult.to,\n error: smsResult.errorMessage,\n });\n else result.sent.push({ phone: smsResult.to });\n });\n\n return result;\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { __name } from './chunk-NRKEOLLT.mjs';
2
+
3
+ // src/errors/notProvidedCredentials.error.ts
4
+ var _NotProvidedCredentialsError = class _NotProvidedCredentialsError extends Error {
5
+ constructor() {
6
+ super("SMS sender credentials not provided.");
7
+ this.name = "NotProvidedCredentialsError";
8
+ }
9
+ };
10
+ __name(_NotProvidedCredentialsError, "NotProvidedCredentialsError");
11
+ var NotProvidedCredentialsError = _NotProvidedCredentialsError;
12
+
13
+ // src/errors/unknownProvider.error.ts
14
+ var _UnknownProviderError = class _UnknownProviderError extends Error {
15
+ constructor() {
16
+ super("Unknown provider. Set PROVIDER env variable");
17
+ this.name = "UnknownProviderError";
18
+ }
19
+ };
20
+ __name(_UnknownProviderError, "UnknownProviderError");
21
+ var UnknownProviderError = _UnknownProviderError;
22
+
23
+ export { NotProvidedCredentialsError, UnknownProviderError };
24
+ //# sourceMappingURL=chunk-4QVZYBYH.mjs.map
25
+ //# sourceMappingURL=chunk-4QVZYBYH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/errors/notProvidedCredentials.error.ts","../../src/errors/unknownProvider.error.ts"],"names":["NotProvidedCredentialsError","Error","constructor","name","UnknownProviderError"],"mappings":";;;AAAO,IAAMA,4BAAAA,GAAN,MAAMA,4BAAAA,SAAoCC,KAAAA,CAAAA;EAC7CC,WAAAA,GAAc;AACV,IAAA,KAAA,CAAM,sCAAA,CAAA;AACN,IAAA,IAAA,CAAKC,IAAAA,GAAO,6BAAA;AAChB,EAAA;AACJ,CAAA;AALiDF,MAAAA,CAAAA,4BAAAA,EAAAA,6BAAAA,CAAAA;AAA1C,IAAMD,2BAAAA,GAAN;;;ACAA,IAAMI,qBAAAA,GAAN,MAAMA,qBAAAA,SAA6BH,KAAAA,CAAAA;EACtCC,WAAAA,GAAc;AACV,IAAA,KAAA,CAAM,6CAAA,CAAA;AACN,IAAA,IAAA,CAAKC,IAAAA,GAAO,sBAAA;AAChB,EAAA;AACJ,CAAA;AAL0CF,MAAAA,CAAAA,qBAAAA,EAAAA,sBAAAA,CAAAA;AAAnC,IAAMG,oBAAAA,GAAN","file":"chunk-4QVZYBYH.mjs","sourcesContent":["export class NotProvidedCredentialsError extends Error {\n constructor() {\n super('SMS sender credentials not provided.');\n this.name = 'NotProvidedCredentialsError';\n }\n}\n","export class UnknownProviderError extends Error {\n constructor() {\n super('Unknown provider. Set PROVIDER env variable');\n this.name = 'UnknownProviderError';\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+
6
+ // src/utils/constants.ts
7
+ var SMS_PROVIDER = process.env.SMS_PROVIDER;
8
+ var PLATFORM_CLOUD = process.env.PLATFORM_CLOUD;
9
+ var USERNAME = process.env.SMS_PROVIDER_USERNAME;
10
+ var PASSWORD = process.env.SMS_PROVIDER_PASSWORD;
11
+ var FROM = process.env.SMS_PROVIDER_FROM_NUMBER;
12
+ var REGION = process.env.SMS_PROVIDER_REGION;
13
+
14
+ export { FROM, PASSWORD, PLATFORM_CLOUD, REGION, SMS_PROVIDER, USERNAME, __name, __publicField };
15
+ //# sourceMappingURL=chunk-NRKEOLLT.mjs.map
16
+ //# sourceMappingURL=chunk-NRKEOLLT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/constants.ts"],"names":["SMS_PROVIDER","process","env","PLATFORM_CLOUD","USERNAME","SMS_PROVIDER_USERNAME","PASSWORD","SMS_PROVIDER_PASSWORD","FROM","SMS_PROVIDER_FROM_NUMBER","REGION","SMS_PROVIDER_REGION"],"mappings":";;;;;;AAAO,IAAMA,YAAAA,GAAeC,QAAQC,GAAAA,CAAIF;AACjC,IAAMG,cAAAA,GAAiBF,QAAQC,GAAAA,CAAIC;AAEnC,IAAMC,QAAAA,GAAWH,QAAQC,GAAAA,CAAIG;AAC7B,IAAMC,QAAAA,GAAWL,QAAQC,GAAAA,CAAIK;AAC7B,IAAMC,IAAAA,GAAOP,QAAQC,GAAAA,CAAIO;AACzB,IAAMC,MAAAA,GAAST,QAAQC,GAAAA,CAAIS","file":"chunk-NRKEOLLT.mjs","sourcesContent":["export const SMS_PROVIDER = process.env.SMS_PROVIDER;\nexport const PLATFORM_CLOUD = process.env.PLATFORM_CLOUD;\n\nexport const USERNAME = process.env.SMS_PROVIDER_USERNAME;\nexport const PASSWORD = process.env.SMS_PROVIDER_PASSWORD;\nexport const FROM = process.env.SMS_PROVIDER_FROM_NUMBER;\nexport const REGION = process.env.SMS_PROVIDER_REGION;\n"]}
@@ -1,4 +1,5 @@
1
- import { __name, __publicField, SMS_PROVIDER, UnknownProviderError, PLATFORM_CLOUD } from './chunk-3OKJAMCQ.mjs';
1
+ import { UnknownProviderError } from './chunk-4QVZYBYH.mjs';
2
+ import { __name, __publicField, SMS_PROVIDER, PLATFORM_CLOUD } from './chunk-NRKEOLLT.mjs';
2
3
 
3
4
  // src/mappers/qrveyEnvs.mapper.ts
4
5
  var getSMSProviderFromPlatformCloud = /* @__PURE__ */ __name(() => {
@@ -24,10 +25,10 @@ var _SMSSenderFactory = class _SMSSenderFactory {
24
25
  };
25
26
  __name(_SMSSenderFactory, "SMSSenderFactory");
26
27
  __publicField(_SMSSenderFactory, "providerModules", {
27
- twilio: /* @__PURE__ */ __name(() => import('./twilioSmsSender.client-J4FEYTVH.mjs'), "twilio"),
28
- aws: /* @__PURE__ */ __name(() => import('./awsSmsSender.client-QBVM62KM.mjs'), "aws"),
29
- azure: /* @__PURE__ */ __name(() => import('./azureSmsSender.client-Z3P5SL47.mjs'), "azure"),
30
- vonage: /* @__PURE__ */ __name(() => import('./vonageSmsSender.client-7KP2UCMI.mjs'), "vonage")
28
+ twilio: /* @__PURE__ */ __name(() => import('./twilioSmsSender.client-TDXGCJPW.mjs'), "twilio"),
29
+ aws: /* @__PURE__ */ __name(() => import('./awsSmsSender.client-3SLRZJIV.mjs'), "aws"),
30
+ azure: /* @__PURE__ */ __name(() => import('./azureSmsSender.client-DA4OPYSB.mjs'), "azure"),
31
+ vonage: /* @__PURE__ */ __name(() => import('./vonageSmsSender.client-MM7LS23Y.mjs'), "vonage")
31
32
  });
32
33
  __publicField(_SMSSenderFactory, "_smsSender", null);
33
34
  var SMSSenderFactory = _SMSSenderFactory;
@@ -1 +1 @@
1
- {"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","console"],"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;AACZC,MAAAA,OAAAA,CAAQD,KAAAA,CAAM,qCAAqCA,KAAAA,CAAAA;AACnD,MAAA,OAAO,KAAA;AACX,IAAA;AACJ,EAAA;AACJ,CAAA;AApBaL,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 console.error('Error checking SMS sender status:', error);\n return false;\n }\n }\n}\n"]}
1
+ {"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","console"],"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;AACZC,MAAAA,OAAAA,CAAQD,KAAAA,CAAM,qCAAqCA,KAAAA,CAAAA;AACnD,MAAA,OAAO,KAAA;AACX,IAAA;AACJ,EAAA;AACJ,CAAA;AApBaL,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 console.error('Error checking SMS sender status:', error);\n return false;\n }\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
- import { __name, __publicField, FROM, USERNAME, PASSWORD, NotProvidedCredentialsError } from './chunk-3OKJAMCQ.mjs';
1
+ import { NotProvidedCredentialsError } from './chunk-4QVZYBYH.mjs';
2
+ import { __name, __publicField, FROM, USERNAME, PASSWORD } from './chunk-NRKEOLLT.mjs';
2
3
  import { Twilio } from 'twilio';
3
4
 
4
5
  var _TwilioSMSSenderClient = class _TwilioSMSSenderClient {
@@ -30,5 +31,5 @@ __name(_TwilioSMSSenderClient, "TwilioSMSSenderClient");
30
31
  var TwilioSMSSenderClient = _TwilioSMSSenderClient;
31
32
 
32
33
  export { TwilioSMSSenderClient as default };
33
- //# sourceMappingURL=twilioSmsSender.client-J4FEYTVH.mjs.map
34
- //# sourceMappingURL=twilioSmsSender.client-J4FEYTVH.mjs.map
34
+ //# sourceMappingURL=twilioSmsSender.client-TDXGCJPW.mjs.map
35
+ //# sourceMappingURL=twilioSmsSender.client-TDXGCJPW.mjs.map
@@ -0,0 +1 @@
1
+ {"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-TDXGCJPW.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"]}
@@ -1,4 +1,5 @@
1
- import { __name, __publicField, FROM, USERNAME, PASSWORD, NotProvidedCredentialsError } from './chunk-3OKJAMCQ.mjs';
1
+ import { NotProvidedCredentialsError } from './chunk-4QVZYBYH.mjs';
2
+ import { __name, __publicField, FROM, USERNAME, PASSWORD } from './chunk-NRKEOLLT.mjs';
2
3
 
3
4
  // src/services/clients/vonageSmsSender.client.ts
4
5
  var _VonageSMSSenderClient = class _VonageSMSSenderClient {
@@ -54,5 +55,5 @@ __name(_VonageSMSSenderClient, "VonageSMSSenderClient");
54
55
  var VonageSMSSenderClient = _VonageSMSSenderClient;
55
56
 
56
57
  export { VonageSMSSenderClient as default };
57
- //# sourceMappingURL=vonageSmsSender.client-7KP2UCMI.mjs.map
58
- //# sourceMappingURL=vonageSmsSender.client-7KP2UCMI.mjs.map
58
+ //# sourceMappingURL=vonageSmsSender.client-MM7LS23Y.mjs.map
59
+ //# sourceMappingURL=vonageSmsSender.client-MM7LS23Y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/clients/vonageSmsSender.client.ts"],"names":["VonageSMSSenderClient","constructor","clientPromise","sendOne","phone","message","client","getClient","sms","send","to","text","from","FROM","USERNAME","PASSWORD","NotProvidedCredentialsError","phones","result","sent","failed","Promise","all","map","then","data","messages","some","status","push","error","errorText","Vonage","Auth","vonageAuth","apiKey","apiSecret"],"mappings":";;;;AAOA,IAAqBA,sBAAAA,GAArB,MAAqBA,sBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADNC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,eAAAA,CAAAA;AAkDAC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,SAAAA,kBAAU,MAAA,CAAA,OACdC,OACAC,OAAAA,KAAAA;AAEA,MAAA,MAAMC,MAAAA,GAAS,MAAM,IAAA,CAAKC,SAAAA,EAAS;AACnC,MAAA,OAAOD,MAAAA,CAAOE,IAAIC,IAAAA,CAAK;QACnBC,EAAAA,EAAIN,KAAAA;QACJO,IAAAA,EAAMN,OAAAA;QACNO,IAAAA,EAAMC;OACV,CAAA;IACJ,CAAA,EAVkB,SAAA,CAAA,CAAA;AAhDd,IAAA,IAAI,EAAEC,QAAAA,IAAYC,QAAAA,IAAYF,IAAAA,CAAAA,EAC1B,MAAM,IAAIG,2BAAAA,EAAAA;AAClB,EAAA;EAEA,MAAaP,IAAAA,CAAKQ,QAAkBZ,OAAAA,EAAsC;AACtE,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,CAASmB,IAAAA,CAAK,CAACC,IAAAA,KAAAA;AApBnD,MAAA,IAAA,EAAA;AAqBoB,MAAA,IAAA,CACIA,EAAAA,GAAAA,IAAAA,CAAKC,aAALD,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAeE,IAAAA,CAAK,CAACtB,QAAAA,KAAYA,QAAAA,CAAQuB,WAAW,GAAA,CAAA,EACtD;AACEV,QAAAA,MAAAA,CAAOE,OAAOS,IAAAA,CAAK;AACfzB,UAAAA,KAAAA;UACA0B,KAAAA,EAAOL,IAAAA,CAAKC,QAAAA,CAAS,CAAA,CAAA,CAAGK;SAC5B,CAAA;MACJ,CAAA,MAAO;AACHb,QAAAA,MAAAA,CAAOC,KAAKU,IAAAA,CAAK;AAAEzB,UAAAA;SAAM,CAAA;AAC7B,MAAA;AACJ,IAAA,CAAA,CAAA,CAAA,CAAA;AAIR,IAAA,OAAOc,MAAAA;AACX,EAAA;AAEA,EAAA,MAAcX,SAAAA,GAA6B;AAtC/C,IAAA,IAAA,EAAA;AAuCQ,IAAA,IAAA,CAAKL,aAAAA,GAAAA,CACD,EAAA,GAAA,IAAA,CAAKA,aAAAA,KAAL,IAAA,GAAA,EAAA,GAAA,CACC,YAAA;AACG,MAAA,MAAM,CAAC,EAAE8B,MAAAA,EAAM,EAAI,EAAEC,MAAM,CAAA,GAAI,MAAMZ,OAAAA,CAAQC,GAAAA,CAAI;AAC7C,QAAA,OAAO,oBAAA,CAAA;AACP,QAAA,OAAO,cAAA;AACV,OAAA,CAAA;AACD,MAAA,MAAMY,UAAAA,GAAa,IAAID,IAAAA,CAAK;QACxBE,MAAAA,EAAQrB,QAAAA;QACRsB,SAAAA,EAAWrB;OACf,CAAA;AACA,MAAA,OAAO,IAAIiB,OAAOE,UAAAA,CAAAA;IACtB,CAAA,GAAA;AAEJ,IAAA,OAAO,IAAA,CAAKhC,aAAAA;AAChB,EAAA;AAaJ,CAAA;AA9DqBF,MAAAA,CAAAA,sBAAAA,EAAAA,uBAAAA,CAAAA;AAArB,IAAqBA,qBAAAA,GAArB","file":"vonageSmsSender.client-MM7LS23Y.mjs","sourcesContent":["import { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { NotProvidedCredentialsError } from '../../errors';\nimport type { Vonage } from '@vonage/server-sdk';\nimport type { SMSMessages } from '@vonage/sms';\n\nexport default class VonageSMSSenderClient implements ISMSSender {\n private clientPromise: Promise<Vonage> | undefined;\n constructor() {\n if (!(USERNAME && PASSWORD && FROM))\n throw new NotProvidedCredentialsError();\n }\n\n public async send(phones: string[], message: string): 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).then((data) => {\n if (\n data.messages?.some((message) => message.status !== '0')\n ) {\n result.failed.push({\n phone,\n error: data.messages[0].errorText,\n });\n } else {\n result.sent.push({ phone });\n }\n }),\n ),\n );\n\n return result;\n }\n\n private async getClient(): Promise<Vonage> {\n this.clientPromise =\n this.clientPromise ??\n (async () => {\n const [{ Vonage }, { Auth }] = await Promise.all([\n import('@vonage/server-sdk'),\n import('@vonage/auth'),\n ]);\n const vonageAuth = new Auth({\n apiKey: USERNAME as string,\n apiSecret: PASSWORD as string,\n });\n return new Vonage(vonageAuth);\n })();\n\n return this.clientPromise;\n }\n\n private sendOne = async (\n phone: string,\n message: string,\n ): Promise<SMSMessages> => {\n const client = await this.getClient();\n return client.sms.send({\n to: phone,\n text: message,\n from: FROM as string,\n });\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/sms",
3
- "version": "1.0.2-1215-beta.1",
3
+ "version": "1.0.2-1215-beta.2",
4
4
  "types": "dist/types/index.d.ts",
5
5
  "main": "dist/cjs/index.js",
6
6
  "exports": {
@@ -49,15 +49,16 @@
49
49
  "twilio": "5.13.1",
50
50
  "typescript": "5.9.3"
51
51
  },
52
- "peerDependencies": {
52
+ "publishConfig": {
53
+ "access": "public",
54
+ "registry": "https://registry.npmjs.org"
55
+ },
56
+ "dependencies": {
53
57
  "@aws-sdk/client-sns": "3.1021.0",
58
+ "@aws-sdk/credential-provider-node": "3.972.66",
54
59
  "@azure/communication-sms": "1.2.0-beta.1",
55
60
  "@vonage/auth": "1.12.2",
56
61
  "@vonage/server-sdk": "3.19.4",
57
62
  "twilio": "5.13.1"
58
- },
59
- "publishConfig": {
60
- "access": "public",
61
- "registry": "https://registry.npmjs.org"
62
63
  }
63
64
  }
@@ -7,6 +7,7 @@ import {
7
7
  PublishCommandOutput,
8
8
  SNSClient,
9
9
  } from '@aws-sdk/client-sns';
10
+ import { defaultProvider } from '@aws-sdk/credential-provider-node';
10
11
 
11
12
  export default class AwsSMSSenderClient implements ISMSSender {
12
13
  private client: SNSClient;
@@ -15,14 +16,18 @@ export default class AwsSMSSenderClient implements ISMSSender {
15
16
  const secretAccessKey = PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
16
17
  const region = REGION || process.env.AWS_REGION;
17
18
  if (!(accessKeyId && secretAccessKey))
18
- throw new NotProvidedCredentialsError();
19
- this.client = new SNSClient({
20
- region: region,
21
- credentials: {
22
- accessKeyId: accessKeyId,
23
- secretAccessKey: secretAccessKey,
24
- },
25
- });
19
+ this.client = new SNSClient({
20
+ region: region,
21
+ credentials: defaultProvider(),
22
+ });
23
+ else
24
+ this.client = new SNSClient({
25
+ region: region,
26
+ credentials: {
27
+ accessKeyId: accessKeyId,
28
+ secretAccessKey: secretAccessKey,
29
+ },
30
+ });
26
31
  }
27
32
 
28
33
  public async send(
@@ -33,10 +33,8 @@ describe('Client tests.', () => {
33
33
  expect(results.sent).toBeInstanceOf(Array);
34
34
  });
35
35
 
36
- test('Should return NotProvidedCredentialsError.', () => {
37
- expect(() => new AwsSMSSenderClient.default()).toThrow(
38
- new NotProvidedCredentialsError(),
39
- );
36
+ test('Should validate provider credential handling.', () => {
37
+ expect(() => new AwsSMSSenderClient.default()).not.toThrow();
40
38
  expect(() => new TwilioSMSSenderClient.default()).toThrow(
41
39
  new NotProvidedCredentialsError(),
42
40
  );
@@ -5,28 +5,36 @@ jest.mock('./smsSenderFactory.service');
5
5
 
6
6
  describe('SMSSenderService', () => {
7
7
  describe('checkStatus', () => {
8
+ const getSMSSenderMock = jest.mocked(SMSSenderFactory.getSMSSender);
9
+
8
10
  afterEach(() => {
9
11
  jest.clearAllMocks();
10
12
  });
11
13
 
12
14
  it('should return true when getSMSSender resolves', async () => {
13
- (SMSSenderFactory.getSMSSender as jest.Mock).mockResolvedValue({
15
+ getSMSSenderMock.mockResolvedValue({
14
16
  send: jest.fn(),
15
17
  });
16
18
 
17
19
  const result = await SMSSenderService.checkStatus();
18
20
  expect(result).toBe(true);
19
- expect(SMSSenderFactory.getSMSSender).toHaveBeenCalled();
21
+ expect(getSMSSenderMock).toHaveBeenCalled();
20
22
  });
21
23
 
22
24
  it('should return false when getSMSSender rejects', async () => {
23
- (SMSSenderFactory.getSMSSender as jest.Mock).mockRejectedValue(
24
- new Error('Provider error'),
25
- );
25
+ const providerError = new Error('Provider error');
26
+ getSMSSenderMock.mockRejectedValue(providerError);
27
+ const consoleErrorSpy = jest
28
+ .spyOn(console, 'error')
29
+ .mockImplementation(() => undefined);
26
30
 
27
31
  const result = await SMSSenderService.checkStatus();
28
32
  expect(result).toBe(false);
29
- expect(SMSSenderFactory.getSMSSender).toHaveBeenCalled();
33
+ expect(getSMSSenderMock).toHaveBeenCalled();
34
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
35
+ 'Error checking SMS sender status:',
36
+ providerError,
37
+ );
30
38
  });
31
39
  });
32
40
  });
@@ -1 +0,0 @@
1
- {"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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/clients/azureSmsSender.client.ts"],"names":["AzureSMSSenderClient","constructor","client","USERNAME","PASSWORD","FROM","process","env","COMMUNICATION_SERVICES_CONNECTION_STRING","NotProvidedCredentialsError","connectionString","SmsClient","send","phones","message","result","sent","failed","smsResults","from","to","forEach","smsResult","errorMessage","push","phone","error"],"mappings":";;;AAMA,IAAqBA,qBAAAA,GAArB,MAAqBA,qBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADdC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA;AAPJ,IAAA,IAAA,EAAA;AASQ,IAAA,IACI,EAAEC,QAAAA,IAAYC,QAAAA,IAAYC,IAAAA,CAAAA,IAC1B,CAACC,QAAQC,GAAAA,CAAIC,wCAAAA,EAEb,MAAM,IAAIC,2BAAAA,EAAAA;AACd,IAAA,MAAMC,gBAAAA,GAAAA,CACFJ,aAAQC,GAAAA,CAAIC,wCAAAA,KAAZF,YACA,CAAA,iBAAA,EAAoBH,QAAAA,uCAA+CC,QAAAA,CAAAA,CAAAA;AACvE,IAAA,IAAA,CAAKF,MAAAA,GAAS,IAAIS,SAAAA,CAAUD,gBAAAA,CAAAA;AAChC,EAAA;EAEA,MAAaE,IAAAA,CAAKC,QAAkBC,OAAAA,EAAsC;AACtE,IAAA,MAAMC,MAAAA,GAAqB;AACvBC,MAAAA,IAAAA,EAAM,EAAA;AACNC,MAAAA,MAAAA,EAAQ;AACZ,KAAA;AACA,IAAA,MAAMC,UAAAA,GAAa,MAAM,IAAA,CAAKhB,MAAAA,CAAOU,IAAAA,CAAK;MACtCO,IAAAA,EAAMd,IAAAA;MACNe,EAAAA,EAAIP,MAAAA;AACJC,MAAAA;KACJ,CAAA;AAEAI,IAAAA,UAAAA,CAAWG,OAAAA,CAAQ,CAACC,SAAAA,KAAAA;AAChB,MAAA,IAAIA,SAAAA,CAAUC,YAAAA,EACVR,MAAAA,CAAOE,MAAAA,CAAOO,IAAAA,CAAK;AACfC,QAAAA,KAAAA,EAAOH,SAAAA,CAAUF,EAAAA;AACjBM,QAAAA,KAAAA,EAAOJ,SAAAA,CAAUC;OACrB,CAAA;AACCR,WAAAA,MAAAA,CAAOC,KAAKQ,IAAAA,CAAK;AAAEC,QAAAA,KAAAA,EAAOH,SAAAA,CAAUF;OAAG,CAAA;IAChD,CAAA,CAAA;AAEA,IAAA,OAAOL,MAAAA;AACX,EAAA;AACJ,CAAA;AApCqBf,MAAAA,CAAAA,qBAAAA,EAAAA,sBAAAA,CAAAA;AAArB,IAAqBA,oBAAAA,GAArB","file":"azureSmsSender.client-Z3P5SL47.mjs","sourcesContent":["import { NotProvidedCredentialsError } from '../../errors';\nimport { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { SmsClient } from '@azure/communication-sms';\n\nexport default class AzureSMSSenderClient implements ISMSSender {\n client: SmsClient;\n constructor() {\n if (\n !(USERNAME && PASSWORD && FROM) &&\n !process.env.COMMUNICATION_SERVICES_CONNECTION_STRING\n )\n throw new NotProvidedCredentialsError();\n const connectionString =\n process.env.COMMUNICATION_SERVICES_CONNECTION_STRING ??\n `endpoint=https://${USERNAME}.communication.azure.com/;accesskey=${PASSWORD}`;\n this.client = new SmsClient(connectionString);\n }\n\n public async send(phones: string[], message: string): Promise<SendResult> {\n const result: SendResult = {\n sent: [],\n failed: [],\n };\n const smsResults = await this.client.send({\n from: FROM as string,\n to: phones,\n message: message,\n });\n\n smsResults.forEach((smsResult) => {\n if (smsResult.errorMessage)\n result.failed.push({\n phone: smsResult.to,\n error: smsResult.errorMessage,\n });\n else result.sent.push({ phone: smsResult.to });\n });\n\n return result;\n }\n}\n"]}
@@ -1,36 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
-
6
- // src/errors/notProvidedCredentials.error.ts
7
- var _NotProvidedCredentialsError = class _NotProvidedCredentialsError extends Error {
8
- constructor() {
9
- super("SMS sender credentials not provided.");
10
- this.name = "NotProvidedCredentialsError";
11
- }
12
- };
13
- __name(_NotProvidedCredentialsError, "NotProvidedCredentialsError");
14
- var NotProvidedCredentialsError = _NotProvidedCredentialsError;
15
-
16
- // src/errors/unknownProvider.error.ts
17
- var _UnknownProviderError = class _UnknownProviderError extends Error {
18
- constructor() {
19
- super("Unknown provider. Set PROVIDER env variable");
20
- this.name = "UnknownProviderError";
21
- }
22
- };
23
- __name(_UnknownProviderError, "UnknownProviderError");
24
- var UnknownProviderError = _UnknownProviderError;
25
-
26
- // src/utils/constants.ts
27
- var SMS_PROVIDER = process.env.SMS_PROVIDER;
28
- var PLATFORM_CLOUD = process.env.PLATFORM_CLOUD;
29
- var USERNAME = process.env.SMS_PROVIDER_USERNAME;
30
- var PASSWORD = process.env.SMS_PROVIDER_PASSWORD;
31
- var FROM = process.env.SMS_PROVIDER_FROM_NUMBER;
32
- var REGION = process.env.SMS_PROVIDER_REGION;
33
-
34
- export { FROM, NotProvidedCredentialsError, PASSWORD, PLATFORM_CLOUD, REGION, SMS_PROVIDER, USERNAME, UnknownProviderError, __name, __publicField };
35
- //# sourceMappingURL=chunk-3OKJAMCQ.mjs.map
36
- //# sourceMappingURL=chunk-3OKJAMCQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/errors/notProvidedCredentials.error.ts","../../src/errors/unknownProvider.error.ts","../../src/utils/constants.ts"],"names":["NotProvidedCredentialsError","Error","constructor","name","UnknownProviderError","SMS_PROVIDER","process","env","PLATFORM_CLOUD","USERNAME","SMS_PROVIDER_USERNAME","PASSWORD","SMS_PROVIDER_PASSWORD","FROM","SMS_PROVIDER_FROM_NUMBER","REGION","SMS_PROVIDER_REGION"],"mappings":";;;;;;AAAO,IAAMA,4BAAAA,GAAN,MAAMA,4BAAAA,SAAoCC,KAAAA,CAAAA;EAC7CC,WAAAA,GAAc;AACV,IAAA,KAAA,CAAM,sCAAA,CAAA;AACN,IAAA,IAAA,CAAKC,IAAAA,GAAO,6BAAA;AAChB,EAAA;AACJ,CAAA;AALiDF,MAAAA,CAAAA,4BAAAA,EAAAA,6BAAAA,CAAAA;AAA1C,IAAMD,2BAAAA,GAAN;;;ACAA,IAAMI,qBAAAA,GAAN,MAAMA,qBAAAA,SAA6BH,KAAAA,CAAAA;EACtCC,WAAAA,GAAc;AACV,IAAA,KAAA,CAAM,6CAAA,CAAA;AACN,IAAA,IAAA,CAAKC,IAAAA,GAAO,sBAAA;AAChB,EAAA;AACJ,CAAA;AAL0CF,MAAAA,CAAAA,qBAAAA,EAAAA,sBAAAA,CAAAA;AAAnC,IAAMG,oBAAAA,GAAN;;;ACAA,IAAMC,YAAAA,GAAeC,QAAQC,GAAAA,CAAIF;AACjC,IAAMG,cAAAA,GAAiBF,QAAQC,GAAAA,CAAIC;AAEnC,IAAMC,QAAAA,GAAWH,QAAQC,GAAAA,CAAIG;AAC7B,IAAMC,QAAAA,GAAWL,QAAQC,GAAAA,CAAIK;AAC7B,IAAMC,IAAAA,GAAOP,QAAQC,GAAAA,CAAIO;AACzB,IAAMC,MAAAA,GAAST,QAAQC,GAAAA,CAAIS","file":"chunk-3OKJAMCQ.mjs","sourcesContent":["export class NotProvidedCredentialsError extends Error {\n constructor() {\n super('SMS sender credentials not provided.');\n this.name = 'NotProvidedCredentialsError';\n }\n}\n","export class UnknownProviderError extends Error {\n constructor() {\n super('Unknown provider. Set PROVIDER env variable');\n this.name = 'UnknownProviderError';\n }\n}\n","export const SMS_PROVIDER = process.env.SMS_PROVIDER;\nexport const PLATFORM_CLOUD = process.env.PLATFORM_CLOUD;\n\nexport const USERNAME = process.env.SMS_PROVIDER_USERNAME;\nexport const PASSWORD = process.env.SMS_PROVIDER_PASSWORD;\nexport const FROM = process.env.SMS_PROVIDER_FROM_NUMBER;\nexport const REGION = process.env.SMS_PROVIDER_REGION;\n"]}
@@ -1 +0,0 @@
1
- {"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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/clients/vonageSmsSender.client.ts"],"names":["VonageSMSSenderClient","constructor","clientPromise","sendOne","phone","message","client","getClient","sms","send","to","text","from","FROM","USERNAME","PASSWORD","NotProvidedCredentialsError","phones","result","sent","failed","Promise","all","map","then","data","messages","some","status","push","error","errorText","Vonage","Auth","vonageAuth","apiKey","apiSecret"],"mappings":";;;AAOA,IAAqBA,sBAAAA,GAArB,MAAqBA,sBAAAA,CAAAA;EAEjBC,WAAAA,GAAc;AADNC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,eAAAA,CAAAA;AAkDAC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,SAAAA,kBAAU,MAAA,CAAA,OACdC,OACAC,OAAAA,KAAAA;AAEA,MAAA,MAAMC,MAAAA,GAAS,MAAM,IAAA,CAAKC,SAAAA,EAAS;AACnC,MAAA,OAAOD,MAAAA,CAAOE,IAAIC,IAAAA,CAAK;QACnBC,EAAAA,EAAIN,KAAAA;QACJO,IAAAA,EAAMN,OAAAA;QACNO,IAAAA,EAAMC;OACV,CAAA;IACJ,CAAA,EAVkB,SAAA,CAAA,CAAA;AAhDd,IAAA,IAAI,EAAEC,QAAAA,IAAYC,QAAAA,IAAYF,IAAAA,CAAAA,EAC1B,MAAM,IAAIG,2BAAAA,EAAAA;AAClB,EAAA;EAEA,MAAaP,IAAAA,CAAKQ,QAAkBZ,OAAAA,EAAsC;AACtE,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,CAASmB,IAAAA,CAAK,CAACC,IAAAA,KAAAA;AApBnD,MAAA,IAAA,EAAA;AAqBoB,MAAA,IAAA,CACIA,EAAAA,GAAAA,IAAAA,CAAKC,aAALD,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAeE,IAAAA,CAAK,CAACtB,QAAAA,KAAYA,QAAAA,CAAQuB,WAAW,GAAA,CAAA,EACtD;AACEV,QAAAA,MAAAA,CAAOE,OAAOS,IAAAA,CAAK;AACfzB,UAAAA,KAAAA;UACA0B,KAAAA,EAAOL,IAAAA,CAAKC,QAAAA,CAAS,CAAA,CAAA,CAAGK;SAC5B,CAAA;MACJ,CAAA,MAAO;AACHb,QAAAA,MAAAA,CAAOC,KAAKU,IAAAA,CAAK;AAAEzB,UAAAA;SAAM,CAAA;AAC7B,MAAA;AACJ,IAAA,CAAA,CAAA,CAAA,CAAA;AAIR,IAAA,OAAOc,MAAAA;AACX,EAAA;AAEA,EAAA,MAAcX,SAAAA,GAA6B;AAtC/C,IAAA,IAAA,EAAA;AAuCQ,IAAA,IAAA,CAAKL,aAAAA,GAAAA,CACD,EAAA,GAAA,IAAA,CAAKA,aAAAA,KAAL,IAAA,GAAA,EAAA,GAAA,CACC,YAAA;AACG,MAAA,MAAM,CAAC,EAAE8B,MAAAA,EAAM,EAAI,EAAEC,MAAM,CAAA,GAAI,MAAMZ,OAAAA,CAAQC,GAAAA,CAAI;AAC7C,QAAA,OAAO,oBAAA,CAAA;AACP,QAAA,OAAO,cAAA;AACV,OAAA,CAAA;AACD,MAAA,MAAMY,UAAAA,GAAa,IAAID,IAAAA,CAAK;QACxBE,MAAAA,EAAQrB,QAAAA;QACRsB,SAAAA,EAAWrB;OACf,CAAA;AACA,MAAA,OAAO,IAAIiB,OAAOE,UAAAA,CAAAA;IACtB,CAAA,GAAA;AAEJ,IAAA,OAAO,IAAA,CAAKhC,aAAAA;AAChB,EAAA;AAaJ,CAAA;AA9DqBF,MAAAA,CAAAA,sBAAAA,EAAAA,uBAAAA,CAAAA;AAArB,IAAqBA,qBAAAA,GAArB","file":"vonageSmsSender.client-7KP2UCMI.mjs","sourcesContent":["import { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { NotProvidedCredentialsError } from '../../errors';\nimport type { Vonage } from '@vonage/server-sdk';\nimport type { SMSMessages } from '@vonage/sms';\n\nexport default class VonageSMSSenderClient implements ISMSSender {\n private clientPromise: Promise<Vonage> | undefined;\n constructor() {\n if (!(USERNAME && PASSWORD && FROM))\n throw new NotProvidedCredentialsError();\n }\n\n public async send(phones: string[], message: string): 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).then((data) => {\n if (\n data.messages?.some((message) => message.status !== '0')\n ) {\n result.failed.push({\n phone,\n error: data.messages[0].errorText,\n });\n } else {\n result.sent.push({ phone });\n }\n }),\n ),\n );\n\n return result;\n }\n\n private async getClient(): Promise<Vonage> {\n this.clientPromise =\n this.clientPromise ??\n (async () => {\n const [{ Vonage }, { Auth }] = await Promise.all([\n import('@vonage/server-sdk'),\n import('@vonage/auth'),\n ]);\n const vonageAuth = new Auth({\n apiKey: USERNAME as string,\n apiSecret: PASSWORD as string,\n });\n return new Vonage(vonageAuth);\n })();\n\n return this.clientPromise;\n }\n\n private sendOne = async (\n phone: string,\n message: string,\n ): Promise<SMSMessages> => {\n const client = await this.getClient();\n return client.sms.send({\n to: phone,\n text: message,\n from: FROM as string,\n });\n };\n}\n"]}