@ingestkorea/client-sens 1.9.0 β†’ 1.11.0

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 (102) hide show
  1. package/README.md +99 -57
  2. package/dist-cjs/SensClient.js +42 -43
  3. package/dist-cjs/commands/GetAlimtalkResultCommand.js +3 -0
  4. package/dist-cjs/commands/GetAlimtalkStatusCommand.js +8 -1
  5. package/dist-cjs/commands/GetAlimtalkTemplateCommand.js +3 -0
  6. package/dist-cjs/commands/GetSMSResultCommand.js +3 -0
  7. package/dist-cjs/commands/GetSMSStatusCommand.js +8 -1
  8. package/dist-cjs/commands/ListAlimtalkChannelsCommand.js +3 -0
  9. package/dist-cjs/commands/ListAlimtalkStatusCommand.js +22 -10
  10. package/dist-cjs/commands/ListAlimtalkTemplatesCommand.js +3 -0
  11. package/dist-cjs/commands/ListSMSStatusCommand.js +21 -10
  12. package/dist-cjs/commands/SendAlimtalkCommand.js +15 -14
  13. package/dist-cjs/commands/SendMMSCommand.js +16 -23
  14. package/dist-cjs/commands/SendSMSCommand.js +28 -16
  15. package/dist-cjs/commands/constants.js +8 -19
  16. package/dist-cjs/index.js +1 -0
  17. package/dist-cjs/middleware/constants.js +2 -1
  18. package/dist-cjs/middleware/middleware-metadata.js +7 -12
  19. package/dist-cjs/middleware/middleware-retry.js +48 -38
  20. package/dist-cjs/middleware/middleware-sign.js +8 -12
  21. package/dist-cjs/models/SensApiError.js +21 -0
  22. package/dist-cjs/models/{SensErrorInfo.js β†’ SensClientError.js} +6 -1
  23. package/dist-cjs/models/SensCommand.js +1 -0
  24. package/dist-cjs/models/index.js +2 -1
  25. package/dist-cjs/protocols/GetAlimtalkResult.js +14 -17
  26. package/dist-cjs/protocols/GetAlimtalkStatus.js +21 -17
  27. package/dist-cjs/protocols/GetAlimtalkTemplate.js +29 -17
  28. package/dist-cjs/protocols/GetSMSResult.js +16 -17
  29. package/dist-cjs/protocols/GetSMSStatus.js +10 -16
  30. package/dist-cjs/protocols/ListAlimtalkChannels.js +10 -16
  31. package/dist-cjs/protocols/ListAlimtalkStatus.js +10 -16
  32. package/dist-cjs/protocols/ListAlimtalkTemplates.js +12 -19
  33. package/dist-cjs/protocols/ListSMSStatus.js +10 -16
  34. package/dist-cjs/protocols/SendAlimtalk.js +10 -16
  35. package/dist-cjs/protocols/SendMMS.js +4 -13
  36. package/dist-cjs/protocols/SendSMS.js +11 -17
  37. package/dist-cjs/protocols/constants.js +124 -82
  38. package/dist-es/SensClient.js +37 -31
  39. package/dist-es/commands/GetAlimtalkResultCommand.js +8 -9
  40. package/dist-es/commands/GetAlimtalkStatusCommand.js +8 -9
  41. package/dist-es/commands/GetAlimtalkTemplateCommand.js +8 -9
  42. package/dist-es/commands/GetSMSResultCommand.js +8 -9
  43. package/dist-es/commands/GetSMSStatusCommand.js +8 -9
  44. package/dist-es/commands/ListAlimtalkChannelsCommand.js +8 -9
  45. package/dist-es/commands/ListAlimtalkStatusCommand.js +24 -28
  46. package/dist-es/commands/ListAlimtalkTemplatesCommand.js +8 -9
  47. package/dist-es/commands/ListSMSStatusCommand.js +25 -29
  48. package/dist-es/commands/SendAlimtalkCommand.js +18 -26
  49. package/dist-es/commands/SendMMSCommand.js +37 -48
  50. package/dist-es/commands/SendSMSCommand.js +25 -29
  51. package/dist-es/commands/constants.js +18 -39
  52. package/dist-es/commands/index.js +12 -28
  53. package/dist-es/index.js +3 -18
  54. package/dist-es/middleware/constants.js +8 -10
  55. package/dist-es/middleware/index.js +3 -19
  56. package/dist-es/middleware/middleware-metadata.js +4 -7
  57. package/dist-es/middleware/middleware-retry.js +47 -38
  58. package/dist-es/middleware/middleware-sign.js +9 -13
  59. package/dist-es/models/GetAlimtalkResult.js +1 -2
  60. package/dist-es/models/GetAlimtalkStatus.js +1 -2
  61. package/dist-es/models/GetAlimtalkTemplate.js +1 -2
  62. package/dist-es/models/GetSMSResult.js +1 -2
  63. package/dist-es/models/GetSMSStatus.js +1 -2
  64. package/dist-es/models/ListAlimtalkChannels.js +1 -2
  65. package/dist-es/models/ListAlimtalkStatus.js +1 -2
  66. package/dist-es/models/ListAlimtalkTemplates.js +1 -2
  67. package/dist-es/models/ListSMSStatus.js +1 -2
  68. package/dist-es/models/MetadataBearer.js +1 -2
  69. package/dist-es/models/SendAlimtalk.js +2 -5
  70. package/dist-es/models/SendMMS.js +2 -5
  71. package/dist-es/models/SendSMS.js +1 -2
  72. package/dist-es/models/SensApiError.js +18 -0
  73. package/dist-es/models/SensClient.js +1 -2
  74. package/dist-es/models/SensClientError.js +14 -0
  75. package/dist-es/models/SensCommand.js +2 -5
  76. package/dist-es/models/SensMiddleware.js +1 -2
  77. package/dist-es/models/index.js +18 -33
  78. package/dist-es/protocols/GetAlimtalkResult.js +11 -16
  79. package/dist-es/protocols/GetAlimtalkStatus.js +17 -24
  80. package/dist-es/protocols/GetAlimtalkTemplate.js +12 -17
  81. package/dist-es/protocols/GetSMSResult.js +11 -16
  82. package/dist-es/protocols/GetSMSStatus.js +15 -22
  83. package/dist-es/protocols/ListAlimtalkChannels.js +11 -16
  84. package/dist-es/protocols/ListAlimtalkStatus.js +11 -16
  85. package/dist-es/protocols/ListAlimtalkTemplates.js +15 -22
  86. package/dist-es/protocols/ListSMSStatus.js +11 -16
  87. package/dist-es/protocols/SendAlimtalk.js +12 -18
  88. package/dist-es/protocols/SendMMS.js +5 -10
  89. package/dist-es/protocols/SendSMS.js +12 -18
  90. package/dist-es/protocols/constants.js +126 -88
  91. package/dist-types/SensClient.d.ts +0 -1
  92. package/dist-types/index.d.ts +1 -0
  93. package/dist-types/middleware/constants.d.ts +1 -0
  94. package/dist-types/models/MetadataBearer.d.ts +1 -0
  95. package/dist-types/models/SensApiError.d.ts +55 -0
  96. package/dist-types/models/SensClient.d.ts +8 -1
  97. package/dist-types/models/SensClientError.d.ts +18 -0
  98. package/dist-types/models/index.d.ts +2 -1
  99. package/dist-types/protocols/constants.d.ts +1 -1
  100. package/package.json +4 -5
  101. package/dist-es/models/SensErrorInfo.js +0 -13
  102. package/dist-types/models/SensErrorInfo.d.ts +0 -21
package/README.md CHANGED
@@ -2,39 +2,49 @@
2
2
 
3
3
  [![npm (scoped)](https://img.shields.io/npm/v/@ingestkorea/client-sens?style=flat-square)](https://www.npmjs.com/package/@ingestkorea/client-sens)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/@ingestkorea/client-sens?style=flat-square)](https://www.npmjs.com/package/@ingestkorea/client-sens)
5
- ![build status](https://codebuild.ap-northeast-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiOTYrKzNDRklOaWJxS2ZoTkZvY05TU2VGVFdxWFlSWE9DZXJTYVBlbCtwc0J5YTcvdUFKRjlSc1RDTHNDV1J4YnhxMmRLaFdIakpSVWN3QzBHQXp0KzdRPSIsIml2UGFyYW1ldGVyU3BlYyI6IjQ1dUtTMlE1UWhmWmFTRGsiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=main)
6
5
  [![license](https://img.shields.io/github/license/ingestkorea/client-sens?style=flat-square)](https://www.npmjs.com/package/@ingestkorea/client-sens)
7
6
 
8
7
  ## Description
9
8
 
10
9
  INGESTKOREA SDK - Naver Cloud Platform SENS Client for Node.js.
11
10
 
12
- INGESTKOREA SDK - SENS Client for Node.js is a lightweight library that contains only the essential features frequently used in SENS.
11
+ SENS(Simple & Easy Notification Service) SDKλŠ” [넀이버 ν΄λΌμš°λ“œ SENS](https://www.ncloud.com/product/applicationService/sens)μ—μ„œ ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œ μœ„μ£Όλ‘œ κ΅¬ν˜„λœ κ°€λ²Όμš΄ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.
13
12
 
14
- This SDK performs tasks such as the following automatically.
13
+ SDKλŠ” μ•„λž˜ μž‘μ—…λ“€μ„ λ‚΄λΆ€μ μœΌλ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
15
14
 
16
- - Authentication using an API Signature
17
- - Retrying requests
18
- - Handling error responses
15
+ - 곡톡 헀더λ₯Ό μ΄μš©ν•œ 인증(Signature, Timestamp, AccessKey)
16
+ - API μš”μ²­ μ‹€νŒ¨μ‹œ μ§€λŠ₯ν˜• μž¬μ‹œλ„
17
+ - SENS API, Ncloud API ν‘œμ€€ μ—λŸ¬ 핸듀링
19
18
 
20
- ## Installing
19
+ SDKλŠ” [SENS API Docs](https://api.ncloud-docs.com/docs/sens-overview), [Ncloud API Docs](https://api.ncloud-docs.com/docs/common-ncpapi#응닡)μ—μ„œ μ œκ³΅ν•˜λŠ” ν˜•μ‹μ„ μ€€μˆ˜ν•©λ‹ˆλ‹€.
20
+
21
+ **μ£Όμ˜μ‚¬ν•­**: SENS μ„œλΉ„μŠ€ μ΄μš©μ„ μœ„ν•΄μ„œλŠ” μ•„λž˜ 정보듀이 ν•„μš”ν•©λ‹ˆλ‹€
22
+
23
+ - [Naver Cloud Platform API 인증킀](https://www.ncloud.com/mypage/manage/authkey): **AccessKey**, **SecretKey**
24
+ - [SENS 이용 μ„œλΉ„μŠ€ 정보](https://console.ncloud.com/sens/project): **ServiceId**
25
+
26
+ ## Getting Started
27
+
28
+ ### Installing
21
29
 
22
30
  ```sh
23
31
  npm install @ingestkorea/client-sens
24
32
  ```
25
33
 
26
- ## Getting Started
27
-
28
34
  ### Pre-requisites
29
35
 
30
- - Use TypeScript v5.x
31
- - Includes the TypeScript definitions for node.
32
- ```sh
33
- npm install -D typescript # save dev mode
34
- npm install -D @types/node # save dev mode
35
- ```
36
+ SDKλŠ” μ•„λž˜ 사항듀을 μš”κ΅¬ν•©λ‹ˆλ‹€.
37
+
38
+ - TypeScript v5 이상
39
+ - Node v22 이상
36
40
 
37
- ### Support Commands
41
+ ```sh
42
+ # save dev mode
43
+ npm install -D typescript
44
+ npm install -D @types/node
45
+ ```
46
+
47
+ ## Support Methods
38
48
 
39
49
  #### Kakao Alimtalk
40
50
 
@@ -52,12 +62,13 @@ npm install @ingestkorea/client-sens
52
62
  - SendMMS (MMS)
53
63
  - GetSMSStatus (SMS, LMS, MMS)
54
64
  - GetSMSResult (SMS, LMS, MMS)
65
+ - ListSMSStatus (SMS, LMS, MMS)
55
66
 
56
- ### Import
67
+ ## Import
57
68
 
58
- The INGESTKOREA SDK - SENS Client is modulized by `client` and `commands`.
69
+ Simple & Easy Notification Service SDKλŠ” `client`, `commands` 두 개의 λͺ¨λ“ˆλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
59
70
 
60
- To send a request, you only need to import the SensClient and the commands you need, for example SendMessageCommand:
71
+ SDK μ‚¬μš©μ„ μœ„ν•΄μ„œλŠ” `SensClient`, ν•„μš”ν•œ `Command` 단 두 개만 import ν•˜λ©΄ λ©λ‹ˆλ‹€. (μ˜ˆμ‹œλ₯Ό μœ„ν•΄ `SendMessageCommand`λ₯Ό μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€.)
61
72
 
62
73
  ```ts
63
74
  import { SensClient, SendAlimtalkCommand } from "@ingestkorea/client-sens";
@@ -65,30 +76,36 @@ import { SensClient, SendAlimtalkCommand } from "@ingestkorea/client-sens";
65
76
 
66
77
  ### Usage
67
78
 
68
- To send a request, you:
79
+ μš”μ²­μ„ 보내기 μœ„ν•΄μ„œλŠ”
80
+
81
+ - Client μ΄ˆκΈ°ν™” / μ„€μ • 정보 ν•„μš”(ex. credentials)
82
+ - Command μ΄ˆκΈ°ν™” / νŒŒλΌλ―Έν„° κ°’λ“€ ν•„μš”
83
+ - `send` λ©”μ„œλ“œ 호좜 / Command 객체 ν•„μš”
69
84
 
70
- - Initiate client with configuration.
71
- - Initiate command with input parameters.
72
- - Call `send` operation on client with command object as input.
85
+ `SensClient`κ°€ λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” **httpHandler**λŠ” 기본적으둜 λ‹€μŒ μ˜΅μ…˜μ΄ μ μš©λ©λ‹ˆλ‹€.
86
+
87
+ - **connectionTimeout**: 2000ms
88
+ - **socketTimeout**: 3000ms
89
+ - **keepAlive**: false
90
+ - **family**: ipv4
73
91
 
74
92
  ```ts
93
+ // μ΄ˆκΈ°ν™”λœ clientλŠ” λ‹€λ₯Έ μš”μ²­μ—λ„ μž¬μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.
75
94
  const client = new SensClient({
76
- /**
77
- * AccessKey, SecretKey: https://www.ncloud.com/mypage/manage/authkey
78
- * serviceId: https://console.ncloud.com/sens/project
79
- */
80
95
  credentials: {
81
96
  accessKey: "YOUR_ACCESS_KEY",
82
97
  secretKey: "YOUR_SECRET_KEY",
83
98
  },
84
- /**
85
- * at least one serviceId required
86
- * if you call send operation without serviceId, sdk throw error
87
- */
99
+ // μ΅œμ†Œ 1개 μ΄μƒμ˜ serviceId 정보가 ν•„μš”ν•©λ‹ˆλ‹€.
88
100
  serviceId: {
89
101
  kakao: "ncp:kkobizmsg:kr:xxxxxx:your-service-name",
90
102
  sms: "ncp:sms:kr:xxxxxx:your-service-name",
91
103
  },
104
+ // 선택 (ν•„μš”μ‹œ λ³€κ²½ κ°€λŠ₯)
105
+ httpHandler: {
106
+ connectionTimeout: 2000,
107
+ ...
108
+ },
92
109
  });
93
110
  ```
94
111
 
@@ -96,20 +113,43 @@ const client = new SensClient({
96
113
 
97
114
  ```ts
98
115
  const command = new SendAlimtalkCommand({
99
- /** Required: Kakao PlusFriend ID (e.g., @kakao) */
100
- plusFriendId: "PLUS_FRIEND_ID",
101
-
102
- /** Required: Kakao Alimtalk TemplateCode ID (e.g., welcomeTemplate) */
103
- templateCode: "TEMPLATE_CODE",
104
-
105
- /** Required: List of messages to send (Max 100) */
116
+ plusFriendId: "PLUS_FRIEND_ID", // @plusfriendId
117
+ templateCode: "TEMPLATE_CODE", // TemplateCode ID (e.g., welcomeTemplate)
106
118
  messages: [
107
- /** Recipient phone number (digits only), Message content */
119
+ // μ΅œλŒ€ 100κ°œκΉŒμ§€ μš”μ²­ κ°€λŠ₯
108
120
  { to: "01012345678", content: "YOUR_CONTENT" },
109
121
  ],
110
122
  });
111
123
  ```
112
124
 
125
+ ```json
126
+ {
127
+ "$metadata": {
128
+ "httpStatusCode": 202,
129
+ "attempts": 1,
130
+ "totalRetryDelay": 0,
131
+ "traceId": "xxxxxx"
132
+ },
133
+ "requestId": "xxxx-xxxx-xxxx-xxxx-xxxx",
134
+ "requestTime": "2026-01-23T12:34:56.789Z",
135
+ "statusCode": "202",
136
+ "statusName": "processing",
137
+ "messages": [
138
+ {
139
+ "messageId": "xxxx-xxx-xxxx-xxxx-xxxx",
140
+ "to": "010xxxxzzzz",
141
+ "countryCode": "82",
142
+ "content": "xxxx",
143
+ ...
144
+ "requestStatusCode": "A000",
145
+ "requestStatusName": "success",
146
+ "requestStatusDesc": "성곡",
147
+ "useSmsFailover": false
148
+ }
149
+ ]
150
+ }
151
+ ```
152
+
113
153
  #### ListAlimtalkStatus
114
154
 
115
155
  ```ts
@@ -134,7 +174,9 @@ const command = new ListAlimtalkStatusCommand({
134
174
  #### GetAlimtalkStatus
135
175
 
136
176
  ```ts
137
- const command = new GetAlimtalkStatusCommand({ requestId: "ALIMTALK_REQUEST_ID" });
177
+ const command = new GetAlimtalkStatusCommand({
178
+ requestId: "ALIMTALK_REQUEST_ID",
179
+ });
138
180
  ```
139
181
 
140
182
  #### SendSMS (SMS, LMS)
@@ -191,33 +233,33 @@ const command = new SendMMSCommand({
191
233
  });
192
234
  ```
193
235
 
194
- #### Async/await
236
+ ### Async/await
195
237
 
196
238
  ```ts
239
+ import {
240
+ SensClient, SendAlimtalkCommand, SensError
241
+ } from "@ingestkorea/client-sens";
242
+
197
243
  (async () => {
198
244
  try {
199
- const data = await client.send(command);
200
- console.dir(data, { depth: 4 });
201
- } catch (err) {
202
- console.dir(err, { depth: 4 });
245
+ // a client can be shared by different commands.
246
+ const client = new SensClient({...});
247
+ const command = new SendAlimtalkCommand({...});
248
+
249
+ const output = await client.send(command);
250
+ console.log(output);
251
+ } catch (error) {
252
+ if (error instanceof SensError) {
253
+ ...
254
+ }
255
+ console.error(error)
203
256
  }
204
257
  })();
205
258
  ```
206
259
 
207
- #### Promises
208
-
209
- ```ts
210
- client
211
- .send(command)
212
- .then((data) => console.dir(data, { depth: 4 }))
213
- .catch((err) => console.dir(err, { depth: 4 }));
214
- ```
215
-
216
260
  ## Getting Help
217
261
 
218
- We use the GitHub issues for tracking bugs and feature requests.
219
-
220
- If it turns out that you may have found a bug, please open an issue.
262
+ κΈ°λŠ₯ μΆ”κ°€ μš”μ²­, 버그 μ‹ κ³ λŠ” κΉƒν—ˆλΈŒ 이슈λ₯Ό μ‚¬μš©ν•΄μ£Όμ„Έμš”.
221
263
 
222
264
  ## License
223
265
 
@@ -1,42 +1,45 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.SensClient = void 0;
13
4
  const util_http_handler_1 = require("@ingestkorea/util-http-handler");
14
5
  const index_js_1 = require("./models/index.js");
15
6
  const index_js_2 = require("./middleware/index.js");
16
7
  class SensClient {
8
+ config;
9
+ httpHandler;
17
10
  constructor(config) {
18
- this.httpHandler = new util_http_handler_1.NodeHttpHandler({ connectionTimeout: 3000, socketTimeout: 3000 });
19
- this.requestHandler = (input, context) => __awaiter(this, void 0, void 0, function* () { return this.httpHandler.handle(input.request); });
20
11
  this.config = {
21
12
  credentials: resolveCredentials(config),
22
13
  serviceId: resolveServiceId(config),
14
+ httpHandler: {
15
+ connectionTimeout: config.httpHandler?.connectionTimeout ?? 2000,
16
+ socketTimeout: config.httpHandler?.socketTimeout ?? 3000,
17
+ keepAlive: config.httpHandler?.keepAlive ?? false,
18
+ family: 4,
19
+ },
23
20
  };
21
+ this.httpHandler = new util_http_handler_1.NodeHttpHandler(this.config.httpHandler);
24
22
  }
25
- send(command) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const { input, serializer, deserializer } = command;
28
- const middlewares = [index_js_2.middlewareIngestkoreaMetadata, index_js_2.middlewareNcpSign, index_js_2.middlewareRetry];
29
- const handler = composeMiddleware(middlewares, this.requestHandler);
30
- try {
31
- const request = yield serializer(input, this.config);
32
- const { response } = yield handler({ request }, this.config);
33
- const output = yield deserializer(response, this.config);
34
- return output;
35
- }
36
- catch (e) {
37
- throw e;
38
- }
39
- });
23
+ async send(command) {
24
+ const { input, serializer, deserializer } = command;
25
+ const middlewares = [index_js_2.middlewareIngestkoreaMetadata, index_js_2.middlewareNcpSign, index_js_2.middlewareRetry];
26
+ const finalHandler = async (input, context) => this.httpHandler.handle(input.request);
27
+ const handler = composeMiddleware(middlewares, finalHandler);
28
+ try {
29
+ const request = await serializer(input, this.config);
30
+ const { response } = await handler({ request }, this.config);
31
+ const output = await deserializer(response, this.config);
32
+ return output;
33
+ }
34
+ catch (error) {
35
+ if (error instanceof index_js_1.SensError)
36
+ throw error;
37
+ throw new index_js_1.SensError({
38
+ code: -1,
39
+ type: "SDK.UNKNOWN_ERROR",
40
+ message: error instanceof Error ? error.message : "unknown error",
41
+ });
42
+ }
40
43
  }
41
44
  }
42
45
  exports.SensClient = SensClient;
@@ -48,20 +51,19 @@ const composeMiddleware = (middlewares, finalHandler) => {
48
51
  };
49
52
  const resolveCredentials = (config) => {
50
53
  const { credentials } = config;
51
- let error = new index_js_1.SensError({
52
- code: 401,
53
- type: "Unauthorized",
54
- message: "Invalid Credentials",
55
- invalidInputs: [{ type: "not-valid.args", message: "SensClient μ΄ˆκΈ°ν™”μ‹œ 인증 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”" }],
54
+ const error = new index_js_1.SensError({
55
+ code: -1,
56
+ type: "SDK.AUTH_ERROR",
57
+ message: "SensClient μ΄ˆκΈ°ν™”μ‹œ 인증 정보λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.",
56
58
  });
57
59
  if (!credentials)
58
60
  throw error;
59
61
  if (!credentials.accessKey) {
60
- error.invalidInputs[0].message = "AccessKey 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”";
62
+ error.message = "AccessKey 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”.";
61
63
  throw error;
62
64
  }
63
65
  if (!credentials.secretKey) {
64
- error.invalidInputs[0].message = "SecretKey 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”";
66
+ error.message = "SecretKey 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”.";
65
67
  throw error;
66
68
  }
67
69
  return {
@@ -70,24 +72,21 @@ const resolveCredentials = (config) => {
70
72
  };
71
73
  };
72
74
  const resolveServiceId = (config) => {
73
- var _a, _b, _c;
74
75
  const { serviceId } = config;
75
- let error = new index_js_1.SensError({
76
- code: 400,
77
- type: "Bad Request",
78
- message: "Invalid ServiceId",
79
- invalidInputs: [{ type: "not-valid.args", message: "SensClient μ΄ˆκΈ°ν™”μ‹œ μ„œλΉ„μŠ€ 정보λ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”" }],
76
+ const error = new index_js_1.SensError({
77
+ code: -1,
78
+ type: "SDK.GENERAL_ERROR",
79
+ message: "SensClient μ΄ˆκΈ°ν™”μ‹œ μ‚¬μš©ν•  μ„œλΉ„μŠ€ 정보λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.",
80
80
  });
81
81
  if (!serviceId)
82
82
  throw error;
83
83
  const isReady = !!Object.values(serviceId).filter((d) => !!d).length;
84
84
  if (!isReady) {
85
- error.invalidInputs[0].message = "μ΅œμ†Œ 1개 μ΄μƒμ˜ μ„œλΉ„μŠ€ 정보가 ν•„μš”ν•©λ‹ˆλ‹€";
85
+ error.message = "μ΅œμ†Œ 1개 μ΄μƒμ˜ μ„œλΉ„μŠ€ 정보가 ν•„μš”ν•©λ‹ˆλ‹€";
86
86
  throw error;
87
87
  }
88
88
  return {
89
- kakao: (_a = serviceId.kakao) !== null && _a !== void 0 ? _a : "",
90
- push: (_b = serviceId.push) !== null && _b !== void 0 ? _b : "",
91
- sms: (_c = serviceId.sms) !== null && _c !== void 0 ? _c : "",
89
+ kakao: serviceId.kakao ?? "",
90
+ sms: serviceId.sms ?? "",
92
91
  };
93
92
  };
@@ -4,6 +4,9 @@ exports.GetAlimtalkResultCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const GetAlimtalkResult_js_1 = require("../protocols/GetAlimtalkResult.js");
6
6
  class GetAlimtalkResultCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {
@@ -5,9 +5,16 @@ const index_js_1 = require("../models/index.js");
5
5
  const GetAlimtalkStatus_js_1 = require("../protocols/GetAlimtalkStatus.js");
6
6
  const MAX_LIMIT = 100;
7
7
  class GetAlimtalkStatusCommand extends index_js_1.SensCommand {
8
+ input;
9
+ serializer;
10
+ deserializer;
8
11
  constructor(input) {
9
12
  super(input);
10
- this.input = Object.assign({ requestId: input.requestId, pageSize: input.pageSize ? Math.min(MAX_LIMIT, Math.max(1, input.pageSize)) : MAX_LIMIT }, (input.nextToken && { nextToken: input.nextToken }));
13
+ this.input = {
14
+ requestId: input.requestId,
15
+ pageSize: input.pageSize ? Math.min(MAX_LIMIT, Math.max(1, input.pageSize)) : MAX_LIMIT,
16
+ ...(input.nextToken && { nextToken: input.nextToken }),
17
+ };
11
18
  this.serializer = GetAlimtalkStatus_js_1.se_GetAlimtalkStatusCommand;
12
19
  this.deserializer = GetAlimtalkStatus_js_1.de_GetAlimtalkStatusCommand;
13
20
  }
@@ -4,6 +4,9 @@ exports.GetAlimtalkTemplateCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const GetAlimtalkTemplate_js_1 = require("../protocols/GetAlimtalkTemplate.js");
6
6
  class GetAlimtalkTemplateCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {
@@ -4,6 +4,9 @@ exports.GetSMSResultCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const GetSMSResult_js_1 = require("../protocols/GetSMSResult.js");
6
6
  class GetSMSResultCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {
@@ -5,9 +5,16 @@ const index_js_1 = require("../models/index.js");
5
5
  const GetSMSStatus_js_1 = require("../protocols/GetSMSStatus.js");
6
6
  const MAX_LIMIT = 100;
7
7
  class GetSMSStatusCommand extends index_js_1.SensCommand {
8
+ input;
9
+ serializer;
10
+ deserializer;
8
11
  constructor(input) {
9
12
  super(input);
10
- this.input = Object.assign({ requestId: input.requestId, pageSize: input.pageSize ? Math.min(MAX_LIMIT, Math.max(1, input.pageSize)) : MAX_LIMIT }, (input.nextToken && { nextToken: input.nextToken }));
13
+ this.input = {
14
+ requestId: input.requestId,
15
+ pageSize: input.pageSize ? Math.min(MAX_LIMIT, Math.max(1, input.pageSize)) : MAX_LIMIT,
16
+ ...(input.nextToken && { nextToken: input.nextToken }),
17
+ };
11
18
  this.serializer = GetSMSStatus_js_1.se_GetSMSStatusCommand;
12
19
  this.deserializer = GetSMSStatus_js_1.de_GetSMSStatusCommand;
13
20
  }
@@ -4,6 +4,9 @@ exports.ListAlimtalkChannelsCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const ListAlimtalkChannels_js_1 = require("../protocols/ListAlimtalkChannels.js");
6
6
  class ListAlimtalkChannelsCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {};
@@ -4,23 +4,23 @@ exports.ListAlimtalkStatusCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const ListAlimtalkStatus_js_1 = require("../protocols/ListAlimtalkStatus.js");
6
6
  const constants_js_1 = require("./constants.js");
7
- const DURATION_LIMIT_MS = 30 * 24 * 3600000; // 30일 μ΄λ‚΄λ§Œ 쑰회 κ°€λŠ₯
7
+ const DURATION_LIMIT_MS = 30 * 24 * 3_600_000; // 30일 μ΄λ‚΄λ§Œ 쑰회 κ°€λŠ₯
8
8
  const MAX_LIMIT = 100;
9
9
  const DEFAULT_LIMIT = 20;
10
10
  class ListAlimtalkStatusCommand extends index_js_1.SensCommand {
11
+ input;
12
+ serializer;
13
+ deserializer;
11
14
  constructor(input) {
12
- var _a;
13
15
  super(input);
14
16
  if (input.nextToken && (!input.requestStartTime || !input.requestEndTime)) {
15
17
  throw new index_js_1.SensError({
16
- code: 400,
17
- type: "Bad Request",
18
+ code: -1,
19
+ type: "SDK.GENERAL_ERROR",
18
20
  message: "νŽ˜μ΄μ§€λ„€μ΄μ…˜ 검색 쑰건 뢈일치",
19
- invalidInputs: [
20
- {
21
- type: "not-valid.args",
22
- message: "nextToken μ‚¬μš© μ‹œ 데이터 일관성을 μœ„ν•΄ 졜초 μš”μ²­ μ‹œμ˜ μ˜΅μ…˜(requestStartTime, requestEndTime, pageSize λ“±)이 λͺ¨λ‘ λ™μΌν•˜κ²Œ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.",
23
- },
21
+ errors: [
22
+ "nextToken μ‚¬μš© μ‹œ 데이터 일관성을 μœ„ν•΄ 졜초 μš”μ²­ μ‹œμ˜ μ˜΅μ…˜μ΄ λͺ¨λ‘ λ™μΌν•˜κ²Œ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.",
23
+ "requestStartTime, requestEndTime, pageSize μ˜΅μ…˜μ„ ν™•μΈν•΄μ£Όμ„Έμš”.",
24
24
  ],
25
25
  });
26
26
  }
@@ -29,7 +29,19 @@ class ListAlimtalkStatusCommand extends index_js_1.SensCommand {
29
29
  startTime: input.requestStartTime ? (0, constants_js_1.convertToUtc)(input.requestStartTime) : defaultDuration.startTime,
30
30
  endTime: input.requestEndTime ? (0, constants_js_1.convertToUtc)(input.requestEndTime) : defaultDuration.endTime,
31
31
  }, { durationLimitMs: DURATION_LIMIT_MS });
32
- this.input = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ plusFriendId: input.plusFriendId, requestStartTime: (0, constants_js_1.convertToKst)(startTimeMs), requestEndTime: (0, constants_js_1.convertToKst)(endTimeMs), pageSize: Math.min(MAX_LIMIT, Math.max(1, (_a = input.pageSize) !== null && _a !== void 0 ? _a : DEFAULT_LIMIT)) }, (input.requestStatusName && { requestStatusName: input.requestStatusName })), (input.messageStatusName && { messageStatusName: input.messageStatusName })), (input.requestId && { requestId: input.requestId, pageSize: MAX_LIMIT })), (input.messageId && { messageId: input.messageId })), (input.templateCode && { templateCode: input.templateCode })), (input.to && { to: (0, constants_js_1.prettyPhoneNum)(input.to) })), (input.nextToken && { nextToken: input.nextToken }));
32
+ this.input = {
33
+ plusFriendId: input.plusFriendId,
34
+ requestStartTime: (0, constants_js_1.convertToKst)(startTimeMs),
35
+ requestEndTime: (0, constants_js_1.convertToKst)(endTimeMs),
36
+ pageSize: Math.min(MAX_LIMIT, Math.max(1, input.pageSize ?? DEFAULT_LIMIT)),
37
+ ...(input.requestStatusName && { requestStatusName: input.requestStatusName }),
38
+ ...(input.messageStatusName && { messageStatusName: input.messageStatusName }),
39
+ ...(input.requestId && { requestId: input.requestId, pageSize: MAX_LIMIT }),
40
+ ...(input.messageId && { messageId: input.messageId }),
41
+ ...(input.templateCode && { templateCode: input.templateCode }),
42
+ ...(input.to && { to: (0, constants_js_1.prettyPhoneNum)(input.to) }),
43
+ ...(input.nextToken && { nextToken: input.nextToken }),
44
+ };
33
45
  this.serializer = ListAlimtalkStatus_js_1.se_ListAlimtalkStatusCommand;
34
46
  this.deserializer = ListAlimtalkStatus_js_1.de_ListAlimtalkStatusCommand;
35
47
  }
@@ -4,6 +4,9 @@ exports.ListAlimtalkTemplatesCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const ListAlimtalkTemplates_js_1 = require("../protocols/ListAlimtalkTemplates.js");
6
6
  class ListAlimtalkTemplatesCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {
@@ -4,23 +4,23 @@ exports.ListSMSStatusCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const ListSMSStatus_js_1 = require("../protocols/ListSMSStatus.js");
6
6
  const constants_js_1 = require("./constants.js");
7
- const DURATION_LIMIT_MS = 30 * 24 * 3600000; // 30일 μ΄λ‚΄λ§Œ 쑰회 κ°€λŠ₯
7
+ const DURATION_LIMIT_MS = 30 * 24 * 3_600_000; // 30일 μ΄λ‚΄λ§Œ 쑰회 κ°€λŠ₯
8
8
  const MAX_LIMIT = 100;
9
9
  const DEFAULT_LIMIT = 20;
10
10
  class ListSMSStatusCommand extends index_js_1.SensCommand {
11
+ input;
12
+ serializer;
13
+ deserializer;
11
14
  constructor(input) {
12
- var _a;
13
15
  super(input);
14
16
  if (input.nextToken && (!input.requestStartTime || !input.requestEndTime)) {
15
17
  throw new index_js_1.SensError({
16
- code: 400,
17
- type: "Bad Request",
18
+ code: -1,
19
+ type: "SDK.GENERAL_ERROR",
18
20
  message: "νŽ˜μ΄μ§€λ„€μ΄μ…˜ 검색 쑰건 뢈일치",
19
- invalidInputs: [
20
- {
21
- type: "not-valid.args",
22
- message: "nextToken μ‚¬μš© μ‹œ 데이터 일관성을 μœ„ν•΄ 졜초 μš”μ²­ μ‹œμ˜ μ˜΅μ…˜(requestStartTime, requestEndTime, pageSize λ“±)이 λͺ¨λ‘ λ™μΌν•˜κ²Œ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.",
23
- },
21
+ errors: [
22
+ "nextToken μ‚¬μš© μ‹œ 데이터 일관성을 μœ„ν•΄ 졜초 μš”μ²­ μ‹œμ˜ μ˜΅μ…˜μ΄ λͺ¨λ‘ λ™μΌν•˜κ²Œ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.",
23
+ "requestStartTime, requestEndTime, pageSize μ˜΅μ…˜μ„ ν™•μΈν•΄μ£Όμ„Έμš”.",
24
24
  ],
25
25
  });
26
26
  }
@@ -29,7 +29,18 @@ class ListSMSStatusCommand extends index_js_1.SensCommand {
29
29
  startTime: input.requestStartTime ? (0, constants_js_1.convertToUtc)(input.requestStartTime) : defaultDuration.startTime,
30
30
  endTime: input.requestEndTime ? (0, constants_js_1.convertToUtc)(input.requestEndTime) : defaultDuration.endTime,
31
31
  }, { durationLimitMs: DURATION_LIMIT_MS });
32
- this.input = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ requestStartTime: (0, constants_js_1.convertToKst)(startTimeMs), requestEndTime: (0, constants_js_1.convertToKst)(endTimeMs), pageSize: Math.min(MAX_LIMIT, Math.max(1, (_a = input.pageSize) !== null && _a !== void 0 ? _a : DEFAULT_LIMIT)) }, (input.type && { type: input.type })), (input.contentType && { contentType: input.contentType })), (input.status && { status: input.status })), (input.from && { from: (0, constants_js_1.prettyPhoneNum)(input.from) })), (input.to && { to: (0, constants_js_1.prettyPhoneNum)(input.to) })), (input.statusName && { statusName: input.statusName })), (input.nextToken && { nextToken: input.nextToken }));
32
+ this.input = {
33
+ requestStartTime: (0, constants_js_1.convertToKst)(startTimeMs),
34
+ requestEndTime: (0, constants_js_1.convertToKst)(endTimeMs),
35
+ pageSize: Math.min(MAX_LIMIT, Math.max(1, input.pageSize ?? DEFAULT_LIMIT)),
36
+ ...(input.type && { type: input.type }),
37
+ ...(input.contentType && { contentType: input.contentType }),
38
+ ...(input.status && { status: input.status }),
39
+ ...(input.from && { from: (0, constants_js_1.prettyPhoneNum)(input.from) }),
40
+ ...(input.to && { to: (0, constants_js_1.prettyPhoneNum)(input.to) }),
41
+ ...(input.statusName && { statusName: input.statusName }),
42
+ ...(input.nextToken && { nextToken: input.nextToken }),
43
+ };
33
44
  this.serializer = ListSMSStatus_js_1.se_ListSMSStatusCommand;
34
45
  this.deserializer = ListSMSStatus_js_1.de_ListSMSStatusCommand;
35
46
  }
@@ -4,6 +4,9 @@ exports.SendAlimtalkCommand = void 0;
4
4
  const index_js_1 = require("../models/index.js");
5
5
  const SendAlimtalk_js_1 = require("../protocols/SendAlimtalk.js");
6
6
  class SendAlimtalkCommand extends index_js_1.SensCommand {
7
+ input;
8
+ serializer;
9
+ deserializer;
7
10
  constructor(input) {
8
11
  super(input);
9
12
  this.input = {
@@ -22,27 +25,25 @@ exports.SendAlimtalkCommand = SendAlimtalkCommand;
22
25
  const resolveAlimtalkMessages = (messages, config) => {
23
26
  if (!messages.length || messages.length > config.maxRecipients) {
24
27
  throw new index_js_1.SensError({
25
- code: 400,
26
- type: "Bad Request",
27
- message: "μ•Œλ¦Όν†‘ λ™μ‹œ λ°œμ†‘ λ²”μœ„ 였λ₯˜",
28
- invalidInputs: [
29
- {
30
- type: "not-valid.args",
31
- message: `λ©”μ„Έμ§€ λ™μ‹œ λ°œμ†‘μ€ μ΅œμ†Œ 1λͺ…, μ΅œλŒ€ ${config.maxRecipients}λͺ…κΉŒμ§€ κ°€λŠ₯ν•©λ‹ˆλ‹€.`,
32
- },
33
- ],
28
+ code: -1,
29
+ type: "SDK.GENERAL_ERROR",
30
+ message: `μ•Œλ¦Όν†‘ λ™μ‹œ λ°œμ†‘μ€ μ΅œμ†Œ 1λͺ…, μ΅œλŒ€ ${config.maxRecipients}λͺ…κΉŒμ§€ κ°€λŠ₯ν•©λ‹ˆλ‹€.`,
34
31
  });
35
32
  }
36
33
  const result = messages.map((message) => {
37
34
  if (message.content.length > config.maxContentLength) {
38
35
  throw new index_js_1.SensError({
39
- code: 400,
40
- type: "Bad Request",
41
- message: "μ•Œλ¦Όν†‘ μ΅œλŒ€ 길이 초과",
42
- invalidInputs: [{ type: "not-valid.args", message: `λ©”μ„Έμ§€ μ΅œλŒ€ κΈΈμ΄λŠ” ${config.maxContentLength}κΈ€μžμž…λ‹ˆλ‹€` }],
36
+ code: -1,
37
+ type: "SDK.GENERAL_ERROR",
38
+ message: `μ•Œλ¦Όν†‘ μ΅œλŒ€ κΈΈμ΄λŠ” ${config.maxContentLength}κΈ€μžμž…λ‹ˆλ‹€`,
43
39
  });
44
40
  }
45
- return Object.assign({ to: message.to.replace(/\-/gi, ""), content: message.content, useSmsFailover: message.useSmsFailover != undefined ? message.useSmsFailover : false }, (message.buttons && message.buttons.length && { buttons: message.buttons }));
41
+ return {
42
+ to: message.to.replace(/\-/gi, ""),
43
+ content: message.content,
44
+ useSmsFailover: message.useSmsFailover != undefined ? message.useSmsFailover : false,
45
+ ...(message.buttons && message.buttons.length && { buttons: message.buttons }),
46
+ };
46
47
  });
47
48
  return result;
48
49
  };