@qrvey/sms 0.0.2 → 0.0.4

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.
@@ -12,13 +12,16 @@ class AwsSMSSenderClient {
12
12
  });
13
13
  return await this.client.send(command);
14
14
  };
15
- if (!(constants_1.USERNAME && constants_1.PASSWORD))
15
+ const accessKeyId = constants_1.USERNAME || process.env.AWS_ACCESS_KEY_ID;
16
+ const secretAccessKey = constants_1.PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
17
+ const region = constants_1.REGION || process.env.AWS_REGION;
18
+ if (!(accessKeyId && secretAccessKey))
16
19
  throw new errors_1.NotProvidedCredentialsError();
17
20
  this.client = new client_sns_1.SNSClient({
18
- region: constants_1.REGION,
21
+ region: region,
19
22
  credentials: {
20
- accessKeyId: constants_1.USERNAME,
21
- secretAccessKey: constants_1.PASSWORD,
23
+ accessKeyId: accessKeyId,
24
+ secretAccessKey: secretAccessKey,
22
25
  },
23
26
  });
24
27
  }
@@ -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;QAiCQ,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;QA1CE,IAAI,CAAC,CAAC,oBAAQ,IAAI,oBAAQ,CAAC;YAAE,MAAM,IAAI,oCAA2B,EAAE,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC;YACxB,MAAM,EAAE,kBAAM;YACd,WAAW,EAAE;gBACT,WAAW,EAAE,oBAAQ;gBACrB,eAAe,EAAE,oBAAQ;aAC5B;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;AA9CD,qCA8CC"}
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"}
@@ -10,30 +10,19 @@ class TwilioSMSSenderClient {
10
10
  to: phone,
11
11
  body: message,
12
12
  });
13
- if (constants_1.USERNAME && constants_1.PASSWORD)
13
+ if (constants_1.USERNAME && constants_1.PASSWORD && constants_1.FROM)
14
14
  this.client = new twilio_1.Twilio(constants_1.USERNAME, constants_1.PASSWORD);
15
15
  else
16
16
  throw new errors_1.NotProvidedCredentialsError();
17
17
  }
18
18
  async send(phones = [], message) {
19
- const sentMessages = await Promise.all(phones.map((phone) => this.sendOne(phone, message)));
20
19
  const result = {
21
20
  sent: [],
22
21
  failed: [],
23
22
  };
24
- sentMessages.forEach((message) => {
25
- if (message.errorMessage) {
26
- result.failed.push({
27
- phone: message.to,
28
- error: message.errorMessage,
29
- });
30
- }
31
- else {
32
- result.sent.push({
33
- phone: message.to,
34
- });
35
- }
36
- });
23
+ await Promise.all(phones.map((phone) => this.sendOne(phone, message)
24
+ .then(() => result.sent.push({ phone }))
25
+ .catch((error) => result.failed.push({ phone, error: error.message }))));
37
26
  return result;
38
27
  }
39
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"twilioSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/twilioSmsSender.client.ts"],"names":[],"mappings":";;AACA,mCAAgC;AAChC,qDAAiE;AAGjE,yCAA2D;AAE3D,MAAqB,qBAAqB;IAEtC;QAiCQ,YAAO,GAAG,CACd,KAAa,EACb,OAAe,EACS,EAAE,CAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,gBAAI;YACV,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;QAxCH,IAAI,oBAAQ,IAAI,oBAAQ;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,oBAAQ,EAAE,oBAAQ,CAAC,CAAC;;YAClE,MAAM,IAAI,oCAA2B,EAAE,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,IAAI,CACb,SAAmB,EAAE,EACrB,OAAe;QAEf,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CACtD,CAAC;QAEF,MAAM,MAAM,GAAe;YACvB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACb,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,OAAO,CAAC,YAAY,EAAE;gBACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,OAAO,CAAC,EAAE;oBACjB,KAAK,EAAE,OAAO,CAAC,YAAY;iBAC9B,CAAC,CAAC;aACN;iBAAM;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,OAAO,CAAC,EAAE;iBACpB,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;CAWJ;AA5CD,wCA4CC"}
1
+ {"version":3,"file":"twilioSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/twilioSmsSender.client.ts"],"names":[],"mappings":";;AACA,mCAAgC;AAChC,qDAAiE;AAGjE,yCAA2D;AAE3D,MAAqB,qBAAqB;IAEtC;QA4BQ,YAAO,GAAG,CACd,KAAa,EACb,OAAe,EACS,EAAE,CAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,gBAAI;YACV,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;QAnCH,IAAI,oBAAQ,IAAI,oBAAQ,IAAI,gBAAI;YAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,oBAAQ,EAAE,oBAAQ,CAAC,CAAC;;YAC5C,MAAM,IAAI,oCAA2B,EAAE,CAAC;IACjD,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;CAWJ;AAvCD,wCAuCC"}
@@ -24,9 +24,18 @@ class VonageSMSSenderClient {
24
24
  sent: [],
25
25
  failed: [],
26
26
  };
27
- await Promise.all(phones.map((phone) => this.sendOne(phone, message)
28
- .then(() => result.sent.push({ phone }))
29
- .catch((error) => result.failed.push({ phone, error: error.message }))));
27
+ await Promise.all(phones.map((phone) => this.sendOne(phone, message).then((data) => {
28
+ var _a;
29
+ if ((_a = data.messages) === null || _a === void 0 ? void 0 : _a.some((message) => message.status !== '0')) {
30
+ result.failed.push({
31
+ phone,
32
+ error: data.messages[0].errorText,
33
+ });
34
+ }
35
+ else {
36
+ result.sent.push({ phone });
37
+ }
38
+ })));
30
39
  return result;
31
40
  }
32
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vonageSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/vonageSmsSender.client.ts"],"names":[],"mappings":";;AAEA,mDAA4C;AAC5C,uCAAoC;AACpC,qDAAiE;AACjE,yCAA2D;AAG3D,MAAqB,qBAAqB;IAEtC;QA6BQ,YAAO,GAAG,CAAC,KAAa,EAAE,OAAe,EAAwB,EAAE,CACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,gBAAc;SACvB,CAAC,CAAC;QAjCH,IAAI,CAAC,CAAC,oBAAQ,IAAI,oBAAQ,IAAI,gBAAI,CAAC;YAC/B,MAAM,IAAI,oCAA2B,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,WAAI,CAAC;YACxB,MAAM,EAAE,oBAAQ;YAChB,SAAS,EAAE,oBAAQ;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAM,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAgB,EAAE,OAAe;QAC/C,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;CAQJ;AArCD,wCAqCC"}
1
+ {"version":3,"file":"vonageSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/vonageSmsSender.client.ts"],"names":[],"mappings":";;AAEA,mDAA4C;AAC5C,uCAAoC;AACpC,qDAAiE;AACjE,yCAA2D;AAG3D,MAAqB,qBAAqB;IAEtC;QAoCQ,YAAO,GAAG,CAAC,KAAa,EAAE,OAAe,EAAwB,EAAE,CACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,gBAAc;SACvB,CAAC,CAAC;QAxCH,IAAI,CAAC,CAAC,oBAAQ,IAAI,oBAAQ,IAAI,gBAAI,CAAC;YAC/B,MAAM,IAAI,oCAA2B,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,WAAI,CAAC;YACxB,MAAM,EAAE,oBAAQ;YAChB,SAAS,EAAE,oBAAQ;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAM,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAgB,EAAE,OAAe;QAC/C,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,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;;YACvC,IACI,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,EAC1D;gBACE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,KAAK;oBACL,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;iBACpC,CAAC,CAAC;aACN;iBAAM;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/B;QACL,CAAC,CAAC,CACL,CACJ,CAAC;QAEF,OAAO,MAAM,CAAC;IAClB,CAAC;CAQJ;AA5CD,wCA4CC"}
@@ -1,4 +1,4 @@
1
- import { USERNAME, PASSWORD, NotProvidedCredentialsError, REGION } from './chunk-NCQDKWNI.mjs';
1
+ import { USERNAME, PASSWORD, REGION, NotProvidedCredentialsError } from './chunk-NCQDKWNI.mjs';
2
2
  import { PublishCommand, SNSClient } from '@aws-sdk/client-sns';
3
3
 
4
4
  var AwsSMSSenderClient = class {
@@ -10,13 +10,16 @@ var AwsSMSSenderClient = class {
10
10
  });
11
11
  return await this.client.send(command);
12
12
  };
13
- if (!(USERNAME && PASSWORD))
13
+ const accessKeyId = USERNAME || process.env.AWS_ACCESS_KEY_ID;
14
+ const secretAccessKey = PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
15
+ const region = REGION || process.env.AWS_REGION;
16
+ if (!(accessKeyId && secretAccessKey))
14
17
  throw new NotProvidedCredentialsError();
15
18
  this.client = new SNSClient({
16
- region: REGION,
19
+ region,
17
20
  credentials: {
18
- accessKeyId: USERNAME,
19
- secretAccessKey: PASSWORD
21
+ accessKeyId,
22
+ secretAccessKey
20
23
  }
21
24
  });
22
25
  }
@@ -38,4 +41,4 @@ var AwsSMSSenderClient = class {
38
41
 
39
42
  export { AwsSMSSenderClient as default };
40
43
  //# sourceMappingURL=out.js.map
41
- //# sourceMappingURL=awsSmsSender.client-4AURYPI4.mjs.map
44
+ //# sourceMappingURL=awsSmsSender.client-KAGNU24Z.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/clients/awsSmsSender.client.ts"],"names":[],"mappings":";;;;;;;;AAIA;AAAA,EACI;AAAA,EAEA;AAAA,OACG;AAEP,IAAqB,qBAArB,MAA8D;AAAA,EAE1D,cAAc;AAqCd,SAAQ,UAAU,OACd,OACA,YACgC;AAChC,YAAM,UAAU,IAAI,eAAe;AAAA,QAC/B,SAAS;AAAA,QACT,aAAa;AAAA,MACjB,CAAC;AAED,aAAO,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,IACzC;AA9CI,UAAM,cAAc,YAAY,QAAQ,IAAI;AAC5C,UAAM,kBAAkB,YAAY,QAAQ,IAAI;AAChD,UAAM,SAAS,UAAU,QAAQ,IAAI;AACrC,QAAI,EAAE,eAAe;AACjB,YAAM,IAAI,4BAA4B;AAC1C,SAAK,SAAS,IAAI,UAAU;AAAA,MACxB;AAAA,MACA,aAAa;AAAA,QACT;AAAA,QACA;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,KACT,SAAmB,CAAC,GACpB,SACmB;AACnB,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AAEA,UAAM,QAAQ;AAAA,MACV,OAAO;AAAA,QAAI,CAAC,UACR,KAAK,QAAQ,OAAO,OAAO,EACtB,KAAK,MAAM,OAAO,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,EACtC;AAAA,UAAM,CAAC,UACJ,OAAO,OAAO,KAAK,EAAE,OAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,QACtD;AAAA,MACR;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAaJ","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"]}
@@ -12,10 +12,10 @@ var SMSSenderFactory = class {
12
12
  }
13
13
  };
14
14
  SMSSenderFactory.providerModules = {
15
- twilio: () => import('./twilioSmsSender.client-OKXZ2R67.mjs'),
16
- aws: () => import('./awsSmsSender.client-4AURYPI4.mjs'),
15
+ twilio: () => import('./twilioSmsSender.client-SSZMXU4M.mjs'),
16
+ aws: () => import('./awsSmsSender.client-KAGNU24Z.mjs'),
17
17
  azure: () => import('./azureSmsSender.client-K6MPTIU7.mjs'),
18
- vonage: () => import('./vonageSmsSender.client-TOAW6CJU.mjs')
18
+ vonage: () => import('./vonageSmsSender.client-FSND4BQX.mjs')
19
19
  };
20
20
 
21
21
  // src/services/smsSender.service.ts
@@ -8,35 +8,27 @@ var TwilioSMSSenderClient = class {
8
8
  to: phone,
9
9
  body: message
10
10
  });
11
- if (USERNAME && PASSWORD)
11
+ if (USERNAME && PASSWORD && FROM)
12
12
  this.client = new Twilio(USERNAME, PASSWORD);
13
13
  else
14
14
  throw new NotProvidedCredentialsError();
15
15
  }
16
16
  async send(phones = [], message) {
17
- const sentMessages = await Promise.all(
18
- phones.map((phone) => this.sendOne(phone, message))
19
- );
20
17
  const result = {
21
18
  sent: [],
22
19
  failed: []
23
20
  };
24
- sentMessages.forEach((message2) => {
25
- if (message2.errorMessage) {
26
- result.failed.push({
27
- phone: message2.to,
28
- error: message2.errorMessage
29
- });
30
- } else {
31
- result.sent.push({
32
- phone: message2.to
33
- });
34
- }
35
- });
21
+ await Promise.all(
22
+ phones.map(
23
+ (phone) => this.sendOne(phone, message).then(() => result.sent.push({ phone })).catch(
24
+ (error) => result.failed.push({ phone, error: error.message })
25
+ )
26
+ )
27
+ );
36
28
  return result;
37
29
  }
38
30
  };
39
31
 
40
32
  export { TwilioSMSSenderClient as default };
41
33
  //# sourceMappingURL=out.js.map
42
- //# sourceMappingURL=twilioSmsSender.client-OKXZ2R67.mjs.map
34
+ //# sourceMappingURL=twilioSmsSender.client-SSZMXU4M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/clients/twilioSmsSender.client.ts"],"names":[],"mappings":";;;;;;;;AACA,SAAS,cAAc;AAMvB,IAAqB,wBAArB,MAAiE;AAAA,EAE7D,cAAc;AA4Bd,SAAQ,UAAU,CACd,OACA,YAEA,KAAK,OAAO,SAAS,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,MAAM;AAAA,IACV,CAAC;AAnCD,QAAI,YAAY,YAAY;AACxB,WAAK,SAAS,IAAI,OAAO,UAAU,QAAQ;AAAA;AAC1C,YAAM,IAAI,4BAA4B;AAAA,EAC/C;AAAA,EAEA,MAAa,KACT,SAAmB,CAAC,GACpB,SACmB;AACnB,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AAEA,UAAM,QAAQ;AAAA,MACV,OAAO;AAAA,QAAI,CAAC,UACR,KAAK,QAAQ,OAAO,OAAO,EACtB,KAAK,MAAM,OAAO,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,EACtC;AAAA,UAAM,CAAC,UACJ,OAAO,OAAO,KAAK,EAAE,OAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,QACtD;AAAA,MACR;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAWJ","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"]}
@@ -24,9 +24,17 @@ var VonageSMSSenderClient = class {
24
24
  };
25
25
  await Promise.all(
26
26
  phones.map(
27
- (phone) => this.sendOne(phone, message).then(() => result.sent.push({ phone })).catch(
28
- (error) => result.failed.push({ phone, error: error.message })
29
- )
27
+ (phone) => this.sendOne(phone, message).then((data) => {
28
+ var _a;
29
+ if ((_a = data.messages) == null ? void 0 : _a.some((message2) => message2.status !== "0")) {
30
+ result.failed.push({
31
+ phone,
32
+ error: data.messages[0].errorText
33
+ });
34
+ } else {
35
+ result.sent.push({ phone });
36
+ }
37
+ })
30
38
  )
31
39
  );
32
40
  return result;
@@ -35,4 +43,4 @@ var VonageSMSSenderClient = class {
35
43
 
36
44
  export { VonageSMSSenderClient as default };
37
45
  //# sourceMappingURL=out.js.map
38
- //# sourceMappingURL=vonageSmsSender.client-TOAW6CJU.mjs.map
46
+ //# sourceMappingURL=vonageSmsSender.client-FSND4BQX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/clients/vonageSmsSender.client.ts"],"names":["message"],"mappings":";;;;;;;;AAEA,SAAS,cAAc;AACvB,SAAS,YAAY;AAKrB,IAAqB,wBAArB,MAAiE;AAAA,EAE7D,cAAc;AAoCd,SAAQ,UAAU,CAAC,OAAe,YAC9B,KAAK,OAAO,IAAI,KAAK;AAAA,MACjB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAxCD,QAAI,EAAE,YAAY,YAAY;AAC1B,YAAM,IAAI,4BAA4B;AAC1C,UAAM,aAAa,IAAI,KAAK;AAAA,MACxB,QAAQ;AAAA,MACR,WAAW;AAAA,IACf,CAAC;AACD,SAAK,SAAS,IAAI,OAAO,UAAU;AAAA,EACvC;AAAA,EAEA,MAAa,KAAK,QAAkB,SAAsC;AACtE,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AAEA,UAAM,QAAQ;AAAA,MACV,OAAO;AAAA,QAAI,CAAC,UACR,KAAK,QAAQ,OAAO,OAAO,EAAE,KAAK,CAAC,SAAS;AA5B5D;AA6BoB,eACI,UAAK,aAAL,mBAAe,KAAK,CAACA,aAAYA,SAAQ,WAAW,MACtD;AACE,mBAAO,OAAO,KAAK;AAAA,cACf;AAAA,cACA,OAAO,KAAK,SAAS,CAAC,EAAE;AAAA,YAC5B,CAAC;AAAA,UACL,OAAO;AACH,mBAAO,KAAK,KAAK,EAAE,MAAM,CAAC;AAAA,UAC9B;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAQJ","sourcesContent":["import { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { Vonage } from '@vonage/server-sdk';\nimport { Auth } from '@vonage/auth';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { NotProvidedCredentialsError } from '../../errors';\nimport { SMSMessages } from '@vonage/sms/dist/lib/types/SMSMessages';\n\nexport default class VonageSMSSenderClient implements ISMSSender {\n private client: Vonage;\n constructor() {\n if (!(USERNAME && PASSWORD && FROM))\n throw new NotProvidedCredentialsError();\n const vonageAuth = new Auth({\n apiKey: USERNAME,\n apiSecret: PASSWORD,\n });\n this.client = new Vonage(vonageAuth);\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 sendOne = (phone: string, message: string): Promise<SMSMessages> =>\n this.client.sms.send({\n to: phone,\n text: message,\n from: FROM as string,\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/sms",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "types": "dist/types/index.d.ts",
5
5
  "main": "dist/cjs/index.js",
6
6
  "exports": {
@@ -11,12 +11,16 @@ import {
11
11
  export default class AwsSMSSenderClient implements ISMSSender {
12
12
  private client: SNSClient;
13
13
  constructor() {
14
- if (!(USERNAME && PASSWORD)) throw new NotProvidedCredentialsError();
14
+ const accessKeyId = USERNAME || process.env.AWS_ACCESS_KEY_ID;
15
+ const secretAccessKey = PASSWORD || process.env.AWS_SECRET_ACCESS_KEY;
16
+ const region = REGION || process.env.AWS_REGION;
17
+ if (!(accessKeyId && secretAccessKey))
18
+ throw new NotProvidedCredentialsError();
15
19
  this.client = new SNSClient({
16
- region: REGION,
20
+ region: region,
17
21
  credentials: {
18
- accessKeyId: USERNAME,
19
- secretAccessKey: PASSWORD,
22
+ accessKeyId: accessKeyId,
23
+ secretAccessKey: secretAccessKey,
20
24
  },
21
25
  });
22
26
  }
@@ -27,6 +27,7 @@ jest.mock('twilio', () => {
27
27
  jest.mock('../../utils/constants', () => ({
28
28
  USERNAME: 'qrvey',
29
29
  PASSWORD: '123456',
30
+ FROM: '+123456789',
30
31
  }));
31
32
 
32
33
  describe('TwilioSMSSender tests.', () => {
@@ -8,7 +8,8 @@ import { NotProvidedCredentialsError } from '../../errors';
8
8
  export default class TwilioSMSSenderClient implements ISMSSender {
9
9
  private client: Twilio;
10
10
  constructor() {
11
- if (USERNAME && PASSWORD) this.client = new Twilio(USERNAME, PASSWORD);
11
+ if (USERNAME && PASSWORD && FROM)
12
+ this.client = new Twilio(USERNAME, PASSWORD);
12
13
  else throw new NotProvidedCredentialsError();
13
14
  }
14
15
 
@@ -16,26 +17,20 @@ export default class TwilioSMSSenderClient implements ISMSSender {
16
17
  phones: string[] = [],
17
18
  message: string,
18
19
  ): Promise<SendResult> {
19
- const sentMessages = await Promise.all(
20
- phones.map((phone) => this.sendOne(phone, message)),
21
- );
22
-
23
20
  const result: SendResult = {
24
21
  sent: [],
25
22
  failed: [],
26
23
  };
27
- sentMessages.forEach((message) => {
28
- if (message.errorMessage) {
29
- result.failed.push({
30
- phone: message.to,
31
- error: message.errorMessage,
32
- });
33
- } else {
34
- result.sent.push({
35
- phone: message.to,
36
- });
37
- }
38
- });
24
+
25
+ await Promise.all(
26
+ phones.map((phone) =>
27
+ this.sendOne(phone, message)
28
+ .then(() => result.sent.push({ phone }))
29
+ .catch((error) =>
30
+ result.failed.push({ phone, error: error.message }),
31
+ ),
32
+ ),
33
+ );
39
34
 
40
35
  return result;
41
36
  }
@@ -26,11 +26,18 @@ export default class VonageSMSSenderClient implements ISMSSender {
26
26
 
27
27
  await Promise.all(
28
28
  phones.map((phone) =>
29
- this.sendOne(phone, message)
30
- .then(() => result.sent.push({ phone }))
31
- .catch((error) =>
32
- result.failed.push({ phone, error: error.message }),
33
- ),
29
+ this.sendOne(phone, message).then((data) => {
30
+ if (
31
+ data.messages?.some((message) => message.status !== '0')
32
+ ) {
33
+ result.failed.push({
34
+ phone,
35
+ error: data.messages[0].errorText,
36
+ });
37
+ } else {
38
+ result.sent.push({ phone });
39
+ }
40
+ }),
34
41
  ),
35
42
  );
36
43
 
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/clients/awsSmsSender.client.ts"],"names":[],"mappings":";;;;;;;;AAIA;AAAA,EACI;AAAA,EAEA;AAAA,OACG;AAEP,IAAqB,qBAArB,MAA8D;AAAA,EAE1D,cAAc;AAiCd,SAAQ,UAAU,OACd,OACA,YACgC;AAChC,YAAM,UAAU,IAAI,eAAe;AAAA,QAC/B,SAAS;AAAA,QACT,aAAa;AAAA,MACjB,CAAC;AAED,aAAO,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,IACzC;AA1CI,QAAI,EAAE,YAAY;AAAW,YAAM,IAAI,4BAA4B;AACnE,SAAK,SAAS,IAAI,UAAU;AAAA,MACxB,QAAQ;AAAA,MACR,aAAa;AAAA,QACT,aAAa;AAAA,QACb,iBAAiB;AAAA,MACrB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,KACT,SAAmB,CAAC,GACpB,SACmB;AACnB,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AAEA,UAAM,QAAQ;AAAA,MACV,OAAO;AAAA,QAAI,CAAC,UACR,KAAK,QAAQ,OAAO,OAAO,EACtB,KAAK,MAAM,OAAO,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,EACtC;AAAA,UAAM,CAAC,UACJ,OAAO,OAAO,KAAK,EAAE,OAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,QACtD;AAAA,MACR;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAaJ","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 if (!(USERNAME && PASSWORD)) throw new NotProvidedCredentialsError();\n this.client = new SNSClient({\n region: REGION,\n credentials: {\n accessKeyId: USERNAME,\n secretAccessKey: PASSWORD,\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/twilioSmsSender.client.ts"],"names":["message"],"mappings":";;;;;;;;AACA,SAAS,cAAc;AAMvB,IAAqB,wBAArB,MAAiE;AAAA,EAE7D,cAAc;AAiCd,SAAQ,UAAU,CACd,OACA,YAEA,KAAK,OAAO,SAAS,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,MAAM;AAAA,IACV,CAAC;AAxCD,QAAI,YAAY;AAAU,WAAK,SAAS,IAAI,OAAO,UAAU,QAAQ;AAAA;AAChE,YAAM,IAAI,4BAA4B;AAAA,EAC/C;AAAA,EAEA,MAAa,KACT,SAAmB,CAAC,GACpB,SACmB;AACnB,UAAM,eAAe,MAAM,QAAQ;AAAA,MAC/B,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,OAAO,OAAO,CAAC;AAAA,IACtD;AAEA,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AACA,iBAAa,QAAQ,CAACA,aAAY;AAC9B,UAAIA,SAAQ,cAAc;AACtB,eAAO,OAAO,KAAK;AAAA,UACf,OAAOA,SAAQ;AAAA,UACf,OAAOA,SAAQ;AAAA,QACnB,CAAC;AAAA,MACL,OAAO;AACH,eAAO,KAAK,KAAK;AAAA,UACb,OAAOA,SAAQ;AAAA,QACnB,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAWJ","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) 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 sentMessages = await Promise.all(\n phones.map((phone) => this.sendOne(phone, message)),\n );\n\n const result: SendResult = {\n sent: [],\n failed: [],\n };\n sentMessages.forEach((message) => {\n if (message.errorMessage) {\n result.failed.push({\n phone: message.to,\n error: message.errorMessage,\n });\n } else {\n result.sent.push({\n phone: message.to,\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":[],"mappings":";;;;;;;;AAEA,SAAS,cAAc;AACvB,SAAS,YAAY;AAKrB,IAAqB,wBAArB,MAAiE;AAAA,EAE7D,cAAc;AA6Bd,SAAQ,UAAU,CAAC,OAAe,YAC9B,KAAK,OAAO,IAAI,KAAK;AAAA,MACjB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAjCD,QAAI,EAAE,YAAY,YAAY;AAC1B,YAAM,IAAI,4BAA4B;AAC1C,UAAM,aAAa,IAAI,KAAK;AAAA,MACxB,QAAQ;AAAA,MACR,WAAW;AAAA,IACf,CAAC;AACD,SAAK,SAAS,IAAI,OAAO,UAAU;AAAA,EACvC;AAAA,EAEA,MAAa,KAAK,QAAkB,SAAsC;AACtE,UAAM,SAAqB;AAAA,MACvB,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,IACb;AAEA,UAAM,QAAQ;AAAA,MACV,OAAO;AAAA,QAAI,CAAC,UACR,KAAK,QAAQ,OAAO,OAAO,EACtB,KAAK,MAAM,OAAO,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,EACtC;AAAA,UAAM,CAAC,UACJ,OAAO,OAAO,KAAK,EAAE,OAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,QACtD;AAAA,MACR;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAQJ","sourcesContent":["import { ISMSSender } from '../../interfaces';\nimport { SendResult } from '../../types';\nimport { Vonage } from '@vonage/server-sdk';\nimport { Auth } from '@vonage/auth';\nimport { USERNAME, PASSWORD, FROM } from '../../utils/constants';\nimport { NotProvidedCredentialsError } from '../../errors';\nimport { SMSMessages } from '@vonage/sms/dist/lib/types/SMSMessages';\n\nexport default class VonageSMSSenderClient implements ISMSSender {\n private client: Vonage;\n constructor() {\n if (!(USERNAME && PASSWORD && FROM))\n throw new NotProvidedCredentialsError();\n const vonageAuth = new Auth({\n apiKey: USERNAME,\n apiSecret: PASSWORD,\n });\n this.client = new Vonage(vonageAuth);\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)\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 = (phone: string, message: string): Promise<SMSMessages> =>\n this.client.sms.send({\n to: phone,\n text: message,\n from: FROM as string,\n });\n}\n"]}