@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.
@@ -45,7 +45,7 @@ export interface IWINVTemplate {
45
45
  templateStatusMsg?: string;
46
46
  templateStatusComments?: string;
47
47
  createDate: string;
48
- buttons: any[];
48
+ buttons: unknown[];
49
49
  }
50
50
  export interface IWINVTemplateListResponse extends IWINVResponse {
51
51
  totalCount: number;
@@ -96,6 +96,37 @@ export declare class IWINVAdapter extends BaseProviderAdapter implements Templat
96
96
  * IWINV 특화 기능: 잔액 조회
97
97
  */
98
98
  getBalance(): Promise<number>;
99
+ /**
100
+ * IWINV SMS v2: 잔액 조회
101
+ * - URL: POST https://sms.bizservice.iwinv.kr/api/charge/
102
+ * - Header: secret: base64(SMS_API_KEY&SMS_AUTH_KEY)
103
+ * - Body: { "version": "1.0" }
104
+ */
105
+ getSmsCharge(): Promise<number>;
106
+ /**
107
+ * IWINV SMS v2: 전송 내역 조회
108
+ * - URL: POST https://sms.bizservice.iwinv.kr/api/history/
109
+ * - 기간은 90일 이내만 허용
110
+ */
111
+ getSmsHistory(params: {
112
+ companyId?: string;
113
+ startDate: string | Date;
114
+ endDate: string | Date;
115
+ requestNo?: string;
116
+ pageNum?: number;
117
+ pageSize?: number;
118
+ phone?: string;
119
+ version?: string;
120
+ }): Promise<{
121
+ totalCount: number;
122
+ list: unknown[];
123
+ message: string;
124
+ }>;
125
+ private resolveSmsBaseUrl;
126
+ private buildSmsSecretHeader;
127
+ private formatSmsHistoryDate;
128
+ private assertSmsHistoryWindow;
129
+ private requestSmsApi;
99
130
  }
100
131
  /**
101
132
  * IWINV 어댑터 팩토리
@@ -0,0 +1,48 @@
1
+ import type { HistoryQuery, StandardError, StandardRequest, StandardResult } from "@k-msg/core";
2
+ import { BaseProviderAdapter } from "@k-msg/core";
3
+ import { SolapiMessageService } from "solapi";
4
+ import type { SolapiConfig } from "../solapi/types/solapi";
5
+ export type SolapiSdkClient = Pick<SolapiMessageService, "sendOne" | "getMessages" | "getBalance" | "uploadFile">;
6
+ export declare class SolapiAdapter extends BaseProviderAdapter {
7
+ private static readonly directTemplates;
8
+ private readonly solapiConfig;
9
+ private readonly client;
10
+ constructor(config: SolapiConfig, client?: SolapiSdkClient);
11
+ adaptRequest(request: StandardRequest): Record<string, unknown>;
12
+ adaptResponse(response: unknown): StandardResult;
13
+ mapError(error: unknown): StandardError;
14
+ getAuthHeaders(): Record<string, string>;
15
+ getBaseUrl(): string;
16
+ getEndpoint(_operation: string): string;
17
+ sendStandard(request: StandardRequest): Promise<StandardResult>;
18
+ getSmsCharge(): Promise<number>;
19
+ getBalance(): Promise<number>;
20
+ getSmsHistory(params: {
21
+ channel?: HistoryQuery["channel"];
22
+ startDate: string | Date;
23
+ endDate: string | Date;
24
+ requestNo?: string;
25
+ pageNum?: number;
26
+ pageSize?: number;
27
+ phone?: string;
28
+ startKey?: string;
29
+ }): Promise<{
30
+ totalCount: number;
31
+ list: unknown[];
32
+ message: string;
33
+ nextKey?: string | null;
34
+ raw?: unknown;
35
+ }>;
36
+ getHistory(query: HistoryQuery): Promise<unknown>;
37
+ private clampLimit;
38
+ private normalizePhoneNumber;
39
+ private toSolapiTypeFromChannel;
40
+ private stringifyVariables;
41
+ private extractText;
42
+ private extractSubject;
43
+ private resolveChannelLike;
44
+ private toSolapiMessageType;
45
+ private toKakaoButtons;
46
+ private toRcsButtons;
47
+ private buildSolapiSendOneMessage;
48
+ }
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export * from "./utils";
11
11
  export { BaseAlimTalkProvider } from "./abstract/provider.base";
12
12
  export { AligoAdapter } from "./adapters/aligo.adapter";
13
13
  export { IWINVAdapter, IWINVAdapterFactory, } from "./adapters/iwinv.adapter";
14
+ export { SolapiAdapter } from "./adapters/solapi.adapter";
14
15
  export type { AccountContract, AnalyticsContract, ChannelContract, ConfigurationField, MessagingContract, ProviderCapabilities, ProviderConfiguration, ProviderMessageRequest, ProviderMessageResult, ScheduleResult, TemplateContract, } from "./contracts/provider.contract";
15
16
  export * from "./providers/mock";
16
17
  export * from "./services/provider.manager";
@@ -21,6 +22,8 @@ export { createDefaultIWINVProvider, createIWINVProvider, IWINVProvider, IWINVPr
21
22
  export { createDefaultIWINVMultiProvider, createIWINVMultiProvider, IWINVMultiProvider, } from "./iwinv/provider-multi";
22
23
  export { createDefaultIWINVSMSProvider, createIWINVSMSProvider, IWINVSMSProvider, } from "./iwinv/provider-sms";
23
24
  export type * from "./iwinv/types/iwinv";
25
+ export { createDefaultSolapiProvider, createSolapiProvider, initializeSolapi, SolapiProvider, SolapiProviderFactory, } from "./solapi/provider";
26
+ export type { SolapiConfig } from "./solapi/types/solapi";
24
27
  export type * from "./types/aligo";
25
28
  export type { TemplateCode, TemplateVariables, TypedRequest, TypedResult, ValidationResult, } from "./types/typed-templates";
26
29
  export { TEMPLATE_REGISTRY, TemplateTypeConverter, TemplateValidator, TypedProvider, } from "./types/typed-templates";