@k-msg/provider 0.1.6 → 0.3.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.
@@ -17,7 +17,7 @@ export declare class IWINVSMSProvider extends IWINVProvider {
17
17
  senderNumber?: string;
18
18
  scheduledAt?: Date;
19
19
  priority?: "high" | "normal" | "low";
20
- }): Promise<any>;
20
+ }): Promise<import("@k-msg/core").StandardResult>;
21
21
  /**
22
22
  * LMS 전송 (긴 문자 메시지)
23
23
  */
@@ -25,7 +25,7 @@ export declare class IWINVSMSProvider extends IWINVProvider {
25
25
  senderNumber?: string;
26
26
  scheduledAt?: Date;
27
27
  priority?: "high" | "normal" | "low";
28
- }): Promise<any>;
28
+ }): Promise<import("@k-msg/core").StandardResult>;
29
29
  /**
30
30
  * 대량 SMS 전송
31
31
  */
@@ -37,7 +37,7 @@ export declare class IWINVSMSProvider extends IWINVProvider {
37
37
  senderNumber?: string;
38
38
  scheduledAt?: Date;
39
39
  batchSize?: number;
40
- }): Promise<(PromiseRejectedResult | PromiseFulfilledResult<any>)[]>;
40
+ }): Promise<(PromiseRejectedResult | PromiseFulfilledResult<import("@k-msg/core").StandardResult>)[]>;
41
41
  /**
42
42
  * SMS/LMS 자동 판별 전송
43
43
  */
@@ -46,7 +46,7 @@ export declare class IWINVSMSProvider extends IWINVProvider {
46
46
  scheduledAt?: Date;
47
47
  subject?: string;
48
48
  priority?: "high" | "normal" | "low";
49
- }): Promise<any>;
49
+ }): Promise<import("@k-msg/core").StandardResult>;
50
50
  }
51
51
  /**
52
52
  * SMS Provider 팩토리 함수들
@@ -1,17 +1,47 @@
1
- import { type SendOptions, type StandardRequest, UniversalProvider } from "@k-msg/core";
2
- import type { IWINVConfig } from "./types/iwinv";
1
+ import { type SendOptions, type StandardRequest, type StandardResult, UniversalProvider } from "@k-msg/core";
2
+ import type { IWINVConfig, IWINVSmsHistoryItem } from "./types/iwinv";
3
+ export type IWINVSmsHistoryParams = {
4
+ version?: string;
5
+ companyId?: string;
6
+ startDate: string | Date;
7
+ endDate: string | Date;
8
+ requestNo?: string;
9
+ pageNum?: number;
10
+ pageSize?: number;
11
+ phone?: string;
12
+ };
3
13
  export declare class IWINVProvider extends UniversalProvider {
4
14
  private static readonly directSmsTemplates;
5
15
  private readonly iwinvConfig;
6
16
  constructor(config: IWINVConfig);
7
- send(params: SendOptions | StandardRequest | any): Promise<any>;
17
+ send(params: StandardRequest): Promise<StandardResult>;
18
+ send(params: SendOptions): Promise<unknown>;
19
+ /**
20
+ * SMS v2: 잔액(충전금) 조회
21
+ * - URL: POST https://sms.bizservice.iwinv.kr/api/charge/
22
+ * - Header: secret: base64(SMS_API_KEY&SMS_AUTH_KEY)
23
+ * - Body: { "version": "1.0" }
24
+ */
25
+ getSmsCharge(): Promise<number>;
26
+ /**
27
+ * SMS v2: 전송 내역 조회
28
+ * - URL: POST https://sms.bizservice.iwinv.kr/api/history/
29
+ * - 기간은 90일 이내만 허용
30
+ */
31
+ getSmsHistory(params: IWINVSmsHistoryParams): Promise<{
32
+ totalCount: number;
33
+ list: IWINVSmsHistoryItem[];
34
+ message: string;
35
+ }>;
8
36
  private isStandardRequest;
9
37
  private isSmsChannelRequest;
10
38
  private resolveSmsBaseUrl;
11
- private isLongMessage;
12
39
  private resolveSmsMessageType;
13
40
  private extractMessageText;
14
41
  private formatSmsReserveDate;
42
+ private formatSmsHistoryDate;
43
+ private assertSmsHistoryWindow;
44
+ private requestSmsApi;
15
45
  private normalizePhoneNumber;
16
46
  private buildSmsSecretHeader;
17
47
  private buildLmsTitle;
@@ -47,7 +47,7 @@ export interface Template {
47
47
  templateStatusMsg?: string;
48
48
  templateStatusComments?: string;
49
49
  createDate: string;
50
- buttons: any[];
50
+ buttons: unknown[];
51
51
  }
52
52
  export interface TemplateListRequest {
53
53
  pageNum?: string;
@@ -114,10 +114,50 @@ export type CancelReservationResponse = IWINVBaseResponse;
114
114
  export interface BalanceResponse extends IWINVBaseResponse {
115
115
  charge: number;
116
116
  }
117
+ export interface IWINVSmsChargeRequest {
118
+ version: string;
119
+ }
120
+ export interface IWINVSmsChargeResponse {
121
+ code: number;
122
+ message: string;
123
+ charge: number;
124
+ }
125
+ export interface IWINVSmsHistoryRequest {
126
+ version: string;
127
+ companyid: string;
128
+ startDate: string;
129
+ endDate: string;
130
+ requestNo?: string;
131
+ pageNum?: number;
132
+ pageSize?: number;
133
+ phone?: string;
134
+ }
135
+ export interface IWINVSmsHistoryItem {
136
+ requestNo: string | number;
137
+ companyid: string;
138
+ msgType: string;
139
+ phone: string;
140
+ callback: string;
141
+ sendStatus?: string;
142
+ sendStatusCode?: string;
143
+ sendStatusMsg?: string;
144
+ sendDate: string;
145
+ }
146
+ export interface IWINVSmsHistoryResponse {
147
+ resultCode: number;
148
+ message: string;
149
+ totalCount: number;
150
+ list: IWINVSmsHistoryItem[];
151
+ }
117
152
  export interface IWINVConfig extends ProviderConfig {
118
153
  smsApiKey?: string;
119
154
  smsAuthKey?: string;
120
155
  smsBaseUrl?: string;
156
+ /**
157
+ * SMS v2 전송 내역 조회시 필요한 조직(업체) 발송 아이디.
158
+ * (API 문서의 `companyid`)
159
+ */
160
+ smsCompanyId?: string;
121
161
  senderNumber?: string;
122
162
  smsSenderNumber?: string;
123
163
  sendEndpoint?: string;
@@ -0,0 +1,16 @@
1
+ import { type StandardRequest, type StandardResult, UniversalProvider } from "@k-msg/core";
2
+ import { type SolapiSdkClient } from "../adapters/solapi.adapter";
3
+ import type { SolapiConfig } from "./types/solapi";
4
+ export declare class SolapiProvider extends UniversalProvider {
5
+ constructor(config: SolapiConfig, client?: SolapiSdkClient);
6
+ send(params: StandardRequest): Promise<StandardResult>;
7
+ send(params: unknown): Promise<unknown>;
8
+ getBalance(): Promise<number>;
9
+ }
10
+ export declare const createSolapiProvider: (config: SolapiConfig) => SolapiProvider;
11
+ export declare const createDefaultSolapiProvider: () => SolapiProvider;
12
+ export declare class SolapiProviderFactory {
13
+ static create(config: SolapiConfig): SolapiProvider;
14
+ static createDefault(): SolapiProvider;
15
+ }
16
+ export declare function initializeSolapi(): void;
@@ -0,0 +1,27 @@
1
+ import type { ProviderConfig } from "@k-msg/core";
2
+ export interface SolapiConfig extends ProviderConfig {
3
+ /**
4
+ * SOLAPI API Secret
5
+ */
6
+ apiSecret: string;
7
+ /**
8
+ * Default sender number (SMS/LMS/MMS/RCS).
9
+ */
10
+ defaultFrom?: string;
11
+ /**
12
+ * Default Kakao PF ID (for ALIMTALK/FRIENDTALK).
13
+ */
14
+ kakaoPfId?: string;
15
+ /**
16
+ * Default RCS Brand ID.
17
+ */
18
+ rcsBrandId?: string;
19
+ /**
20
+ * Optional appId for Solapi send APIs.
21
+ */
22
+ appId?: string;
23
+ /**
24
+ * Default country code (e.g. "82"). Optional.
25
+ */
26
+ defaultCountry?: string;
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k-msg/provider",
3
- "version": "0.1.6",
3
+ "version": "0.3.0",
4
4
  "packageManager": "bun@1.3.8",
5
5
  "type": "module",
6
6
  "description": "Complete provider system with adapters and implementations for K-Message platform",
@@ -55,7 +55,8 @@
55
55
  "publish": "bun publish --access public"
56
56
  },
57
57
  "dependencies": {
58
- "@k-msg/core": "0.1.6",
58
+ "@k-msg/core": "0.3.0",
59
+ "solapi": "^5.5.4",
59
60
  "zod": "^4.0.14"
60
61
  },
61
62
  "devDependencies": {