@qrvey/sms 1.0.1-949 → 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 (36) hide show
  1. package/README.md +0 -82
  2. package/dist/cjs/services/clients/awsSmsSender.client.js +13 -9
  3. package/dist/cjs/services/clients/awsSmsSender.client.js.map +1 -1
  4. package/dist/cjs/services/clients/vonageSmsSender.client.js +17 -7
  5. package/dist/cjs/services/clients/vonageSmsSender.client.js.map +1 -1
  6. package/dist/cjs/services/smsSender.service.js +1 -0
  7. package/dist/cjs/services/smsSender.service.js.map +1 -1
  8. package/dist/cjs/services/smsSenderFactory.service.js +17 -7
  9. package/dist/cjs/services/smsSenderFactory.service.js.map +1 -1
  10. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  11. package/dist/esm/{awsSmsSender.client-QBVM62KM.mjs → awsSmsSender.client-3SLRZJIV.mjs} +9 -5
  12. package/dist/esm/awsSmsSender.client-3SLRZJIV.mjs.map +1 -0
  13. package/dist/esm/{azureSmsSender.client-Z3P5SL47.mjs → azureSmsSender.client-DA4OPYSB.mjs} +4 -3
  14. package/dist/esm/azureSmsSender.client-DA4OPYSB.mjs.map +1 -0
  15. package/dist/esm/chunk-4QVZYBYH.mjs +25 -0
  16. package/dist/esm/chunk-4QVZYBYH.mjs.map +1 -0
  17. package/dist/esm/chunk-NRKEOLLT.mjs +16 -0
  18. package/dist/esm/chunk-NRKEOLLT.mjs.map +1 -0
  19. package/dist/esm/index.mjs +7 -5
  20. package/dist/esm/index.mjs.map +1 -1
  21. package/dist/esm/{twilioSmsSender.client-J4FEYTVH.mjs → twilioSmsSender.client-TDXGCJPW.mjs} +4 -3
  22. package/dist/esm/twilioSmsSender.client-TDXGCJPW.mjs.map +1 -0
  23. package/dist/esm/{vonageSmsSender.client-7KP2UCMI.mjs → vonageSmsSender.client-MM7LS23Y.mjs} +4 -3
  24. package/dist/esm/vonageSmsSender.client-MM7LS23Y.mjs.map +1 -0
  25. package/package.json +61 -77
  26. package/src/services/clients/awsSmsSender.client.ts +13 -8
  27. package/src/services/clients/index.test.ts +2 -4
  28. package/src/services/smsSender.service.test.ts +14 -6
  29. package/src/services/smsSender.service.ts +1 -0
  30. package/tsconfig.json +1 -1
  31. package/dist/esm/awsSmsSender.client-QBVM62KM.mjs.map +0 -1
  32. package/dist/esm/azureSmsSender.client-Z3P5SL47.mjs.map +0 -1
  33. package/dist/esm/chunk-3OKJAMCQ.mjs +0 -36
  34. package/dist/esm/chunk-3OKJAMCQ.mjs.map +0 -1
  35. package/dist/esm/twilioSmsSender.client-J4FEYTVH.mjs.map +0 -1
  36. package/dist/esm/vonageSmsSender.client-7KP2UCMI.mjs.map +0 -1
package/README.md CHANGED
@@ -1,83 +1 @@
1
- # @qrvey/sms
2
1
 
3
- ![install size](https://packagephobia.now.sh/badge?p=%40qrvey%2Fsms)
4
- ![coverage](https://img.shields.io/badge/unit_test_coverage-88%25-brightgreen)
5
-
6
- **@qrvey/sms** is a lightweight and reliable library to send manage sms messages. It supports different clients such SNS (AWS), ACS (Azure), Twilio, and Vonage.
7
-
8
- ## Installation
9
-
10
- You can install the **@qrvey/sms** package via npm. Run the following command in your terminal:
11
-
12
- ```bash
13
- npm install @qrvey/sms
14
- ```
15
-
16
- ## Peer Dependencies
17
-
18
- This package has the following peer dependencies:
19
-
20
- - `@aws-sdk/client-sns` (v3.x) for interacting with **AWS SNS**.
21
- - `@azure/communication-sms` (v1.x) for interacting with **Azure Communication Services**.
22
- - `@vonage/server-sdk` (v3.x) and `@vonage/auth` (v1.x) for interacting with **Vonage**.
23
- - `twilio` (v5.x) for interacting with **Twilio**.
24
-
25
- ## Configuration
26
-
27
- To work properly, the package need some env variables. To set the sms provider, you must set the `SMS_PROVIDER` env variable with one of these values:
28
- - `AWS`
29
- - `AZURE`
30
- - `TWILIO`
31
- - `VONAGE`
32
-
33
- In case the `SMS_PROVIDER` env variable is set with an unknown value, you will get a `UnknownProvider` error. Depending on the provider you must set some variables:
34
-
35
- ### AWS
36
- If you set `SMS_PROVIDER = AWS`, the following env variables are required:
37
- - `SMS_PROVIDER_USERNAME` which is `AWS_ACCESS_KEY_ID` in aws context.
38
- - `SMS_PROVIDER_PASSWORD` which is `AWS_SECRET_ACCESS_KEY` in aws context.
39
- - `SMS_PROVIDER_REGION` which is `AWS_REGION` in aws context.
40
-
41
- ### AZURE
42
- If you set `SMS_PROVIDER = AZURE`, the following env variables are required:
43
- - `SMS_PROVIDER_USERNAME` which is `resource-name` in azure `connectionString` context.
44
- - `SMS_PROVIDER_PASSWORD` which is `access-key` in azure `connectionString` context.
45
- - `SMS_PROVIDER_FROM_NUMBER` which is the ACS-registered number in azure context. This must be in E.164 format, example: "+123456789"
46
-
47
- **Note**: The azure `connectionString` for `Azure Communication Services` looks like this: `endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>`.
48
-
49
- ### TWILIO
50
- If you set `SMS_PROVIDER = TWILIO`, the following env variables are required:
51
- - `SMS_PROVIDER_USERNAME` which is `TWILIO_ACCOUNT_SID` in twilio context.
52
- - `SMS_PROVIDER_PASSWORD` which is `TWILIO_AUTH_TOKEN` in twilio context.
53
-
54
- ### VONAGE
55
- If you set `SMS_PROVIDER = VONAGE`, the following env variables are required:
56
- - `SMS_PROVIDER_USERNAME` which is `VONAGE_API_KEY` in vonage context.
57
- - `SMS_PROVIDER_PASSWORD` which is `VONAGE_API_SECRET` in vonage context.
58
- - `SMS_PROVIDER_FROM_NUMBER` which can be one of the next:
59
- - An alphanumeric ID. Example: "MyCompanyBrand"
60
- - A Vonage-registered number in E.164 format. Example: "+123456789".
61
- - A local-registered short number. Example: "12345".
62
-
63
- ## API Documentation
64
-
65
- ### Available Methods
66
-
67
- ```ts
68
- send: (phones: string[], message: string) => Promise<SendResult>;
69
- ```
70
-
71
-
72
- ## Example Usage
73
-
74
- ```ts
75
- const phones: string[] = [
76
- "+123456789",
77
- "+9876543210"
78
- ];
79
- const message = "Hello world!";
80
-
81
- const smsSenderService = new SMSSenderService();
82
- await smsSenderService.send(phones, message);
83
- ```
@@ -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"}
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  const constants_1 = require("../../utils/constants");
27
37
  const errors_1 = require("../../errors");
@@ -1 +1 @@
1
- {"version":3,"file":"vonageSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/vonageSmsSender.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDAAiE;AACjE,yCAA2D;AAI3D,MAAqB,qBAAqB;IAEtC;QAiDQ,YAAO,GAAG,KAAK,EACnB,KAAa,EACb,OAAe,EACK,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,gBAAc;aACvB,CAAC,CAAC;QACP,CAAC,CAAC;QA1DE,IAAI,CAAC,CAAC,oBAAQ,IAAI,oBAAQ,IAAI,gBAAI,CAAC;YAC/B,MAAM,IAAI,oCAA2B,EAAE,CAAC;IAChD,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;IAEO,KAAK,CAAC,SAAS;;QACnB,IAAI,CAAC,aAAa;YACd,MAAA,IAAI,CAAC,aAAa,mCAClB,CAAC,KAAK,IAAI,EAAE;gBACR,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;sEACtC,oBAAoB;sEACpB,cAAc;iBACxB,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC;oBACxB,MAAM,EAAE,oBAAkB;oBAC1B,SAAS,EAAE,oBAAkB;iBAChC,CAAC,CAAC;gBACH,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CAaJ;AA9DD,wCA8DC"}
1
+ {"version":3,"file":"vonageSmsSender.client.js","sourceRoot":"","sources":["../../../../src/services/clients/vonageSmsSender.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qDAAiE;AACjE,yCAA2D;AAI3D,MAAqB,qBAAqB;IAEtC;QAiDQ,YAAO,GAAG,KAAK,EACnB,KAAa,EACb,OAAe,EACK,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,gBAAc;aACvB,CAAC,CAAC;QACP,CAAC,CAAC;QA1DE,IAAI,CAAC,CAAC,oBAAQ,IAAI,oBAAQ,IAAI,gBAAI,CAAC;YAC/B,MAAM,IAAI,oCAA2B,EAAE,CAAC;IAChD,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,CAAC;gBACC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,KAAK;oBACL,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;iBACpC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CACL,CACJ,CAAC;QAEF,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,SAAS;;QACnB,IAAI,CAAC,aAAa;YACd,MAAA,IAAI,CAAC,aAAa,mCAClB,CAAC,KAAK,IAAI,EAAE;gBACR,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;sEACtC,oBAAoB;sEACpB,cAAc;iBACxB,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC;oBACxB,MAAM,EAAE,oBAAkB;oBAC1B,SAAS,EAAE,oBAAkB;iBAChC,CAAC,CAAC;gBACH,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CAaJ;AA9DD,wCA8DC"}
@@ -18,6 +18,7 @@ class SMSSenderService {
18
18
  return true;
19
19
  }
20
20
  catch (error) {
21
+ console.error('Error checking SMS sender status:', error);
21
22
  return false;
22
23
  }
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smsSender.service.js","sourceRoot":"","sources":["../../../src/services/smsSender.service.ts"],"names":[],"mappings":";;;AACA,yEAA8D;AAE9D,MAAa,gBAAgB;IACzB;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,MAAgB,EAAE,OAAe;QAC/C,OAAO,CAAC,MAAM,2CAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,WAAW;QAC3B,IAAI;YACA,MAAM,2CAAgB,CAAC,YAAY,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;CACJ;AAnBD,4CAmBC"}
1
+ {"version":3,"file":"smsSender.service.js","sourceRoot":"","sources":["../../../src/services/smsSender.service.ts"],"names":[],"mappings":";;;AACA,yEAA8D;AAE9D,MAAa,gBAAgB;IACzB;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,MAAgB,EAAE,OAAe;QAC/C,OAAO,CAAC,MAAM,2CAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,WAAW;QAC3B,IAAI,CAAC;YACD,MAAM,2CAAgB,CAAC,YAAY,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AApBD,4CAoBC"}
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.SMSSenderFactory = void 0;
27
37
  const errors_1 = require("../errors");
@@ -1 +1 @@
1
- {"version":3,"file":"smsSenderFactory.service.js","sourceRoot":"","sources":["../../../src/services/smsSenderFactory.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAiD;AAGjD,kDAAkD;AAClD,kEAA8E;AAE9E,MAAa,gBAAgB;IAYzB,MAAM,CAAC,KAAK,CAAC,YAAY;;QACrB,MAAM,QAAQ,GACV,MAAA,IAAA,kDAA+B,GAAE,mCAAI,wBAAY,aAAZ,wBAAY,uBAAZ,wBAAY,CAAE,WAAW,EAAE,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,6BAAoB,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,6BAAoB,EAAE,CAAC;QAEtE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,SAAS,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;;AArBL,4CAsBC;AArBkB,gCAAe,GAG1B;IACA,MAAM,EAAE,GAAG,EAAE,mDAAQ,kCAAkC,GAAC;IACxD,GAAG,EAAE,GAAG,EAAE,mDAAQ,+BAA+B,GAAC;IAClD,KAAK,EAAE,GAAG,EAAE,mDAAQ,iCAAiC,GAAC;IACtD,MAAM,EAAE,GAAG,EAAE,mDAAQ,kCAAkC,GAAC;CAC3D,CAAC;AACa,2BAAU,GAAsB,IAAI,CAAC"}
1
+ {"version":3,"file":"smsSenderFactory.service.js","sourceRoot":"","sources":["../../../src/services/smsSenderFactory.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAiD;AAGjD,kDAAkD;AAClD,kEAA8E;AAE9E,MAAa,gBAAgB;IAYzB,MAAM,CAAC,KAAK,CAAC,YAAY;;QACrB,MAAM,QAAQ,GACV,MAAA,IAAA,kDAA+B,GAAE,mCAAI,wBAAY,aAAZ,wBAAY,uBAAZ,wBAAY,CAAE,WAAW,EAAE,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,6BAAoB,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,6BAAoB,EAAE,CAAC;QAEtE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,SAAS,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;;AArBL,4CAsBC;AArBkB,gCAAe,GAG1B;IACA,MAAM,EAAE,GAAG,EAAE,mDAAQ,kCAAkC,GAAC;IACxD,GAAG,EAAE,GAAG,EAAE,mDAAQ,+BAA+B,GAAC;IAClD,KAAK,EAAE,GAAG,EAAE,mDAAQ,iCAAiC,GAAC;IACtD,MAAM,EAAE,GAAG,EAAE,mDAAQ,kCAAkC,GAAC;CAC3D,CAAC;AACa,2BAAU,GAAsB,IAAI,CAAC"}
@@ -0,0 +1 @@
1
+ {"root":["../../src/index.ts"],"version":"5.9.3"}
@@ -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;
@@ -48,6 +49,7 @@ var _SMSSenderService = class _SMSSenderService {
48
49
  await SMSSenderFactory.getSMSSender();
49
50
  return true;
50
51
  } catch (error) {
52
+ console.error("Error checking SMS sender status:", error);
51
53
  return false;
52
54
  }
53
55
  }
@@ -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"],"mappings":";;;AAEO,IAAMA,kDAAkC,MAAA,CAAA,MAAA;AAF/C,EAAA,IAAA,EAAA,EAAA,EAAA;AAGI,EAAA,MAAMC,uBAAAA,GAAkD;IACpDC,GAAAA,EAAK,KAAA;IACLC,KAAAA,EAAO;AACX,GAAA;AAEA,EAAA,OAAA,CAAOF,EAAAA,GAAAA,uBAAAA,CAAAA,CAAwBG,EAAAA,GAAAA,cAAAA,KAAAA,IAAAA,GAAAA,EAAAA,GAAkB,EAAA,CAAA,KAA1CH,IAAAA,GAAAA,EAAAA,GAAiDI,MAAAA;AAC5D,CAAA,EAP+C,iCAAA,CAAA;;;ACIxC,IAAMC,iBAAAA,GAAN,MAAMA,iBAAAA,CAAAA;AAYT,EAAA,aAAaC,YAAAA,GAAoC;AAlBrD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAmBQ,IAAA,MAAMC,QAAAA,GAAAA,CACFR,EAAAA,GAAAA,+BAAAA,EAAAA,KAAAA,IAAAA,GAAAA,EAAAA,GAAAA,CAAqCS,EAAAA,GAAAA,YAAAA,KAAAA,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAcC,WAAAA,EAAAA;AACvD,IAAA,IAAI,CAACF,QAAAA,EAAU,MAAM,IAAIG,oBAAAA,EAAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAKC,eAAAA,CAAgBJ,QAAAA,CAAAA,EAAW,MAAM,IAAIG,oBAAAA,EAAAA;AAE/C,IAAA,MAAM,EAAEE,SAASC,SAAAA,EAAS,GAAK,MAAM,IAAA,CAAKF,eAAAA,CAAgBJ,QAAAA,CAAAA,EAAS;AACnE,IAAA,IAAA,CAAKO,UAAAA,GAAAA,CAAa,EAAA,GAAA,IAAA,CAAKA,UAAAA,KAAL,IAAA,GAAA,EAAA,GAAmB,IAAID,SAAAA,EAAAA;AACzC,IAAA,OAAO,IAAA,CAAKC,UAAAA;AAChB,EAAA;AACJ,CAAA;AAtBaT,MAAAA,CAAAA,iBAAAA,EAAAA,kBAAAA,CAAAA;AACT,aAAA,CADSA,mBACMM,iBAAAA,EAGX;EACAI,MAAAA,kBAAQ,MAAA,CAAA,MAAM,OAAO,uCAAA,CAAA,EAAb,QAAA,CAAA;EACRC,GAAAA,kBAAK,MAAA,CAAA,MAAM,OAAO,oCAAA,CAAA,EAAb,KAAA,CAAA;EACLC,KAAAA,kBAAO,MAAA,CAAA,MAAM,OAAO,sCAAA,CAAA,EAAb,OAAA,CAAA;EACPC,MAAAA,kBAAQ,MAAA,CAAA,MAAM,OAAO,uCAAA,CAAA,EAAb,QAAA;AACZ,CAAA,CAAA;AACA,aAAA,CAVSb,mBAUMS,YAAAA,EAAgC,IAAA,CAAA;AAV5C,IAAMT,gBAAAA,GAAN,iBAAA;;;ACHA,IAAMc,iBAAAA,GAAN,MAAMA,iBAAAA,CAAAA;;;;;;;EAOT,MAAaC,IAAAA,CAAKC,QAAkBC,OAAAA,EAAsC;AACtE,IAAA,OAAA,CAAQ,MAAMjB,gBAAAA,CAAiBC,YAAAA,EAAY,EAAIc,IAAAA,CAAKC,QAAQC,OAAAA,CAAAA;AAChE,EAAA;AAEA,EAAA,aAAoBC,WAAAA,GAAgC;AAChD,IAAA,IAAI;AACA,MAAA,MAAMlB,iBAAiBC,YAAAA,EAAY;AACnC,MAAA,OAAO,IAAA;AACX,IAAA,CAAA,CAAA,OAASkB,KAAAA,EAAO;AACZ,MAAA,OAAO,KAAA;AACX,IAAA;AACJ,EAAA;AACJ,CAAA;AAnBaL,MAAAA,CAAAA,iBAAAA,EAAAA,kBAAAA,CAAAA;AAAN,IAAMA,gBAAAA,GAAN","file":"index.mjs","sourcesContent":["import { PLATFORM_CLOUD } from '../utils/constants';\n\nexport const getSMSProviderFromPlatformCloud = () => {\n const platformCloudDictionary: Record<string, string> = {\n AWS: 'aws',\n AZURE: 'azure',\n };\n\n return platformCloudDictionary[PLATFORM_CLOUD ?? ''] ?? undefined;\n};\n","import { UnknownProviderError } from '../errors';\nimport { ISMSSender } from '../interfaces';\nimport { SMSProviderModule } from '../types';\nimport { SMS_PROVIDER } from '../utils/constants';\nimport { getSMSProviderFromPlatformCloud } from '../mappers/qrveyEnvs.mapper';\n\nexport class SMSSenderFactory {\n private static providerModules: Record<\n string,\n () => Promise<SMSProviderModule>\n > = {\n twilio: () => import('./clients/twilioSmsSender.client'),\n aws: () => import('./clients/awsSmsSender.client'),\n azure: () => import('./clients/azureSmsSender.client'),\n vonage: () => import('./clients/vonageSmsSender.client'),\n };\n private static _smsSender: ISMSSender | null = null;\n\n static async getSMSSender(): Promise<ISMSSender> {\n const provider =\n getSMSProviderFromPlatformCloud() ?? SMS_PROVIDER?.toLowerCase();\n if (!provider) throw new UnknownProviderError();\n if (!this.providerModules[provider]) throw new UnknownProviderError();\n\n const { default: SMSSender } = await this.providerModules[provider]();\n this._smsSender = this._smsSender ?? new SMSSender();\n return this._smsSender;\n }\n}\n","import { SendResult } from '../types';\nimport { SMSSenderFactory } from './smsSenderFactory.service';\n\nexport class SMSSenderService {\n /**\n * Send a message to one or more phones.\n * @param phones - phone numbers to send to\n * @param message - message to send\n * @returns {Promise<SendResult>} Send result.\n */\n public async send(phones: string[], message: string): Promise<SendResult> {\n return (await SMSSenderFactory.getSMSSender()).send(phones, message);\n }\n\n public static async checkStatus(): Promise<boolean> {\n try {\n await SMSSenderFactory.getSMSSender();\n return true;\n } catch (error) {\n return false;\n }\n }\n}\n"]}
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,80 +1,64 @@
1
1
  {
2
- "name": "@qrvey/sms",
3
- "version": "1.0.1-949",
4
- "types": "dist/types/index.d.ts",
5
- "main": "dist/cjs/index.js",
6
- "exports": {
7
- ".": {
8
- "import": "./dist/esm/index.mjs",
9
- "require": "./dist/cjs/index.js",
10
- "default": "./dist/cjs/index.js"
11
- }
12
- },
13
- "scripts": {
14
- "test": "jest",
15
- "test:cov": "jest --coverage && chmod +x ./coverageReader.sh && sh ./coverageReader.sh",
16
- "build:clean": "rm -rf dist",
17
- "build:compile:original": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json ./tsconfig.types.json",
18
- "build:compile:cjs:original": "tsup --config ./tsup.config.cjs.ts",
19
- "build:compile:cjs": "tsc -b ./tsconfig.cjs.json",
20
- "build:compile:esm": "tsup --config ./tsup.config.esm.ts",
21
- "build:compile:types": "tsup --config ./tsup.config.types.ts",
22
- "build:compile": "yarn build:compile:cjs && yarn build:compile:esm && yarn build:compile:types",
23
- "build": "yarn test:cov && yarn build:clean && yarn build:compile",
24
- "prepare-publish": "yarn install && yarn build",
25
- "publish-package": "yarn prepare-publish && npm publish --tag latest"
26
- },
27
- "keywords": [
28
- "sms",
29
- "client",
30
- "qrvey"
31
- ],
32
- "author": "Qrvey",
33
- "license": "MIT",
34
- "description": "",
35
- "devDependencies": {
36
- "@aws-sdk/client-sns": "3.1021.0",
37
- "@azure/communication-sms": "1.2.0-beta.1",
38
- "@types/jest": "29.5.5",
39
- "@types/twilio": "3.19.3",
40
- "@vonage/auth": "1.12.0",
41
- "@vonage/server-sdk": "3.19.1",
42
- "auto-version-js": "0.3.10",
43
- "eslint-config-custom": "*",
44
- "jest": "29.7.0",
45
- "ts-jest": "29.1.1",
46
- "tsc": "2.0.4",
47
- "tsconfig": "*",
48
- "tsup": "8.5.0",
49
- "twilio": "5.6.1",
50
- "typescript": "5.2.2"
51
- },
52
- "peerDependencies": {
53
- "@aws-sdk/client-sns": "3.1021.0",
54
- "@azure/communication-sms": "1.2.0-beta.1",
55
- "@vonage/auth": "1.12.0",
56
- "@vonage/server-sdk": "3.19.1",
57
- "twilio": "5.6.1"
58
- },
59
- "peerDependenciesMeta": {
60
- "@aws-sdk/client-sns": {
61
- "optional": true
62
- },
63
- "@azure/communication-sms": {
64
- "optional": true
65
- },
66
- "@vonage/auth": {
67
- "optional": true
68
- },
69
- "@vonage/server-sdk": {
70
- "optional": true
71
- },
72
- "twilio": {
73
- "optional": true
74
- }
75
- },
76
- "publishConfig": {
77
- "access": "public",
78
- "registry": "https://registry.npmjs.org"
2
+ "name": "@qrvey/sms",
3
+ "version": "1.0.2-1215-beta.2",
4
+ "types": "dist/types/index.d.ts",
5
+ "main": "dist/cjs/index.js",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/esm/index.mjs",
9
+ "require": "./dist/cjs/index.js",
10
+ "default": "./dist/cjs/index.js"
79
11
  }
12
+ },
13
+ "scripts": {
14
+ "test": "jest",
15
+ "test:cov": "jest --coverage && chmod +x ./coverageReader.sh && sh ./coverageReader.sh",
16
+ "build:clean": "rm -rf dist",
17
+ "build:compile:original": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json ./tsconfig.types.json",
18
+ "build:compile:cjs:original": "tsup --config ./tsup.config.cjs.ts",
19
+ "build:compile:cjs": "tsc -b ./tsconfig.cjs.json",
20
+ "build:compile:esm": "tsup --config ./tsup.config.esm.ts",
21
+ "build:compile:types": "tsup --config ./tsup.config.types.ts",
22
+ "build:compile": "yarn build:compile:cjs && yarn build:compile:esm && yarn build:compile:types",
23
+ "build": "yarn test:cov && yarn build:clean && yarn build:compile",
24
+ "prepare-publish": "yarn install && yarn build",
25
+ "publish-package": "yarn prepare-publish && npm publish --tag latest"
26
+ },
27
+ "keywords": [
28
+ "sms",
29
+ "client",
30
+ "qrvey"
31
+ ],
32
+ "author": "Qrvey",
33
+ "license": "MIT",
34
+ "description": "",
35
+ "devDependencies": {
36
+ "@aws-sdk/client-sns": "3.1021.0",
37
+ "@azure/communication-sms": "1.2.0-beta.1",
38
+ "@types/jest": "29.5.14",
39
+ "@types/twilio": "3.19.3",
40
+ "@vonage/auth": "1.12.2",
41
+ "@vonage/server-sdk": "3.19.4",
42
+ "auto-version-js": "0.3.10",
43
+ "eslint-config-custom": "*",
44
+ "jest": "29.7.0",
45
+ "ts-jest": "29.1.5",
46
+ "tsc": "2.0.4",
47
+ "tsconfig": "*",
48
+ "tsup": "8.5.0",
49
+ "twilio": "5.13.1",
50
+ "typescript": "5.9.3"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public",
54
+ "registry": "https://registry.npmjs.org"
55
+ },
56
+ "dependencies": {
57
+ "@aws-sdk/client-sns": "3.1021.0",
58
+ "@aws-sdk/credential-provider-node": "3.972.66",
59
+ "@azure/communication-sms": "1.2.0-beta.1",
60
+ "@vonage/auth": "1.12.2",
61
+ "@vonage/server-sdk": "3.19.4",
62
+ "twilio": "5.13.1"
63
+ }
80
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
  });
@@ -17,6 +17,7 @@ export class SMSSenderService {
17
17
  await SMSSenderFactory.getSMSSender();
18
18
  return true;
19
19
  } catch (error) {
20
+ console.error('Error checking SMS sender status:', error);
20
21
  return false;
21
22
  }
22
23
  }
package/tsconfig.json CHANGED
@@ -12,6 +12,6 @@
12
12
  "**/*.test.ts",
13
13
  "**/*.test.d.ts",
14
14
  "**/*.spec.ts",
15
- "**/__tests__",
15
+ "**/__tests__"
16
16
  ]
17
17
  }
@@ -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"]}