@hamjimin/xplat-back 0.2.0 → 0.4.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.
package/dist/cli/index.js CHANGED
@@ -73,6 +73,5 @@ Examples:
73
73
  `);
74
74
  }
75
75
  // CLI 실행
76
- if (require.main === module) {
77
- main();
78
- }
76
+ // bin 파일에서 require 불러올 때도 실행되도록 main() 직접 호출
77
+ main();
@@ -6,6 +6,8 @@ import { MiddlewareModule } from '../modules/middleware';
6
6
  import { ConstantsModule } from '../modules/constants';
7
7
  import { StorageModule } from '../modules/storage';
8
8
  import { ORMModule } from '../modules/orm';
9
+ import { PaymentModule } from '../modules/payment';
10
+ import { ShippingModule } from '../modules/shipping';
9
11
  /**
10
12
  * XplatSystem - Singleton 패턴 기반 Framework 인스턴스
11
13
  *
@@ -21,6 +23,8 @@ export declare class XplatSystem {
21
23
  readonly constants: ConstantsModule;
22
24
  readonly storage: StorageModule;
23
25
  readonly orm: ORMModule;
26
+ readonly payment: PaymentModule;
27
+ readonly shipping: ShippingModule;
24
28
  /**
25
29
  * Private constructor (Singleton 패턴)
26
30
  */
@@ -9,6 +9,8 @@ const middleware_1 = require("../modules/middleware");
9
9
  const constants_1 = require("../modules/constants");
10
10
  const storage_1 = require("../modules/storage");
11
11
  const orm_1 = require("../modules/orm");
12
+ const payment_1 = require("../modules/payment");
13
+ const shipping_1 = require("../modules/shipping");
12
14
  /**
13
15
  * XplatSystem - Singleton 패턴 기반 Framework 인스턴스
14
16
  *
@@ -27,6 +29,8 @@ class XplatSystem {
27
29
  this.constants = new constants_1.ConstantsModule();
28
30
  this.storage = new storage_1.StorageModule();
29
31
  this.orm = new orm_1.ORMModule();
32
+ this.payment = new payment_1.PaymentModule();
33
+ this.shipping = new shipping_1.ShippingModule();
30
34
  }
31
35
  /**
32
36
  * Singleton 인스턴스 반환
package/dist/index.d.ts CHANGED
@@ -21,5 +21,11 @@ export { MiddlewareModule } from './modules/middleware';
21
21
  export { ConstantsModule } from './modules/constants';
22
22
  export { StorageModule } from './modules/storage';
23
23
  export { ORMModule } from './modules/orm';
24
+ export { PaymentModule } from './modules/payment';
25
+ export { ShippingModule } from './modules/shipping';
24
26
  export type { DetailSearch, SortQueryData, SearchDataItem, SortDataItem, ColumnMapper, } from './modules/orm/query-builder';
25
27
  export type { S3Config } from './modules/storage/s3';
28
+ export type { PaymentRequestParams, PaymentResponse, PaymentConfirmParams, PaymentCancelParams, PaymentDetails, } from './modules/payment/types';
29
+ export { TossPaymentProvider, KakaoPayProvider } from './modules/payment';
30
+ export type { ShippingFeeParams, ShippingFee, CreateLabelParams, ShippingLabel, TrackingInfo, } from './modules/shipping/types';
31
+ export { CJLogisticsProvider, LogenProvider, CvsProvider } from './modules/shipping';
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * @packageDocumentation
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ORMModule = exports.StorageModule = exports.ConstantsModule = exports.MiddlewareModule = exports.UtilsModule = exports.AuthModule = exports.RouterModule = exports.AppModule = exports.createApp = exports.createRouter = exports.XplatSystem = exports.xplatSystem = void 0;
13
+ exports.CvsProvider = exports.LogenProvider = exports.CJLogisticsProvider = exports.KakaoPayProvider = exports.TossPaymentProvider = exports.ShippingModule = exports.PaymentModule = exports.ORMModule = exports.StorageModule = exports.ConstantsModule = exports.MiddlewareModule = exports.UtilsModule = exports.AuthModule = exports.RouterModule = exports.AppModule = exports.createApp = exports.createRouter = exports.XplatSystem = exports.xplatSystem = void 0;
14
14
  // Singleton 인스턴스 및 클래스
15
15
  var XplatSystem_1 = require("./core/XplatSystem");
16
16
  Object.defineProperty(exports, "xplatSystem", { enumerable: true, get: function () { return XplatSystem_1.xplatSystem; } });
@@ -38,3 +38,14 @@ var storage_1 = require("./modules/storage");
38
38
  Object.defineProperty(exports, "StorageModule", { enumerable: true, get: function () { return storage_1.StorageModule; } });
39
39
  var orm_1 = require("./modules/orm");
40
40
  Object.defineProperty(exports, "ORMModule", { enumerable: true, get: function () { return orm_1.ORMModule; } });
41
+ var payment_1 = require("./modules/payment");
42
+ Object.defineProperty(exports, "PaymentModule", { enumerable: true, get: function () { return payment_1.PaymentModule; } });
43
+ var shipping_1 = require("./modules/shipping");
44
+ Object.defineProperty(exports, "ShippingModule", { enumerable: true, get: function () { return shipping_1.ShippingModule; } });
45
+ var payment_2 = require("./modules/payment");
46
+ Object.defineProperty(exports, "TossPaymentProvider", { enumerable: true, get: function () { return payment_2.TossPaymentProvider; } });
47
+ Object.defineProperty(exports, "KakaoPayProvider", { enumerable: true, get: function () { return payment_2.KakaoPayProvider; } });
48
+ var shipping_2 = require("./modules/shipping");
49
+ Object.defineProperty(exports, "CJLogisticsProvider", { enumerable: true, get: function () { return shipping_2.CJLogisticsProvider; } });
50
+ Object.defineProperty(exports, "LogenProvider", { enumerable: true, get: function () { return shipping_2.LogenProvider; } });
51
+ Object.defineProperty(exports, "CvsProvider", { enumerable: true, get: function () { return shipping_2.CvsProvider; } });
@@ -0,0 +1,43 @@
1
+ import { PaymentProvider, PaymentRequestParams, PaymentConfirmParams, PaymentCancelParams, PaymentDetails } from './types';
2
+ /**
3
+ * PaymentModule - 결제 프로바이더 레지스트리
4
+ */
5
+ export declare class PaymentModule {
6
+ private providers;
7
+ private defaultProvider;
8
+ /**
9
+ * 프로바이더 등록
10
+ */
11
+ registerProvider(provider: PaymentProvider, setAsDefault?: boolean): void;
12
+ /**
13
+ * 프로바이더 목록
14
+ */
15
+ listProviders(): string[];
16
+ /**
17
+ * 기본 프로바이더 설정
18
+ */
19
+ setDefaultProvider(name: string): void;
20
+ /**
21
+ * 프로바이더 가져오기
22
+ */
23
+ private getProvider;
24
+ /**
25
+ * 결제 요청
26
+ */
27
+ requestPayment(params: PaymentRequestParams, providerName?: string): Promise<import("./types").PaymentResponse>;
28
+ /**
29
+ * 결제 확인
30
+ */
31
+ confirmPayment(params: PaymentConfirmParams, providerName?: string): Promise<PaymentDetails>;
32
+ /**
33
+ * 결제 취소
34
+ */
35
+ cancelPayment(params: PaymentCancelParams, providerName?: string): Promise<PaymentDetails>;
36
+ /**
37
+ * 결제 조회
38
+ */
39
+ getPayment(paymentKey: string, providerName?: string): Promise<PaymentDetails>;
40
+ }
41
+ export * from './types';
42
+ export * from './providers/toss';
43
+ export * from './providers/kakaopay';
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PaymentModule = void 0;
18
+ /**
19
+ * PaymentModule - 결제 프로바이더 레지스트리
20
+ */
21
+ class PaymentModule {
22
+ constructor() {
23
+ this.providers = new Map();
24
+ this.defaultProvider = null;
25
+ }
26
+ /**
27
+ * 프로바이더 등록
28
+ */
29
+ registerProvider(provider, setAsDefault = false) {
30
+ this.providers.set(provider.name, provider);
31
+ if (setAsDefault || !this.defaultProvider) {
32
+ this.defaultProvider = provider.name;
33
+ }
34
+ }
35
+ /**
36
+ * 프로바이더 목록
37
+ */
38
+ listProviders() {
39
+ return Array.from(this.providers.keys());
40
+ }
41
+ /**
42
+ * 기본 프로바이더 설정
43
+ */
44
+ setDefaultProvider(name) {
45
+ if (!this.providers.has(name)) {
46
+ throw new Error(`Payment provider "${name}" not registered`);
47
+ }
48
+ this.defaultProvider = name;
49
+ }
50
+ /**
51
+ * 프로바이더 가져오기
52
+ */
53
+ getProvider(name) {
54
+ const target = name || this.defaultProvider;
55
+ if (!target) {
56
+ throw new Error('No payment provider registered');
57
+ }
58
+ const provider = this.providers.get(target);
59
+ if (!provider) {
60
+ throw new Error(`Payment provider "${target}" not found`);
61
+ }
62
+ return provider;
63
+ }
64
+ /**
65
+ * 결제 요청
66
+ */
67
+ async requestPayment(params, providerName) {
68
+ return this.getProvider(providerName).requestPayment(params);
69
+ }
70
+ /**
71
+ * 결제 확인
72
+ */
73
+ async confirmPayment(params, providerName) {
74
+ return this.getProvider(providerName).confirmPayment(params);
75
+ }
76
+ /**
77
+ * 결제 취소
78
+ */
79
+ async cancelPayment(params, providerName) {
80
+ return this.getProvider(providerName).cancelPayment(params);
81
+ }
82
+ /**
83
+ * 결제 조회
84
+ */
85
+ async getPayment(paymentKey, providerName) {
86
+ return this.getProvider(providerName).getPayment(paymentKey);
87
+ }
88
+ }
89
+ exports.PaymentModule = PaymentModule;
90
+ __exportStar(require("./types"), exports);
91
+ __exportStar(require("./providers/toss"), exports);
92
+ __exportStar(require("./providers/kakaopay"), exports);
@@ -0,0 +1,17 @@
1
+ import { PaymentProvider, PaymentRequestParams, PaymentResponse, PaymentConfirmParams, PaymentCancelParams, PaymentDetails } from '../types';
2
+ export interface KakaoPayConfig {
3
+ cid: string;
4
+ secretKey?: string;
5
+ approvalUrl?: string;
6
+ cancelUrl?: string;
7
+ failUrl?: string;
8
+ }
9
+ export declare class KakaoPayProvider implements PaymentProvider {
10
+ readonly name = "kakaopay";
11
+ private readonly config;
12
+ constructor(config: KakaoPayConfig);
13
+ requestPayment(params: PaymentRequestParams): Promise<PaymentResponse>;
14
+ confirmPayment(params: PaymentConfirmParams): Promise<PaymentDetails>;
15
+ cancelPayment(params: PaymentCancelParams): Promise<PaymentDetails>;
16
+ getPayment(paymentKey: string): Promise<PaymentDetails>;
17
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KakaoPayProvider = void 0;
4
+ class KakaoPayProvider {
5
+ constructor(config) {
6
+ this.name = 'kakaopay';
7
+ this.config = config;
8
+ }
9
+ async requestPayment(params) {
10
+ return {
11
+ provider: this.name,
12
+ paymentKey: `kakao_${params.orderId}`,
13
+ checkoutUrl: this.config.approvalUrl || params.successUrl || '',
14
+ raw: {
15
+ amount: params.amount,
16
+ cid: this.config.cid,
17
+ },
18
+ };
19
+ }
20
+ async confirmPayment(params) {
21
+ return {
22
+ provider: this.name,
23
+ paymentKey: params.paymentKey,
24
+ status: 'paid',
25
+ amount: params.amount,
26
+ raw: {
27
+ orderId: params.orderId,
28
+ },
29
+ };
30
+ }
31
+ async cancelPayment(params) {
32
+ return {
33
+ provider: this.name,
34
+ paymentKey: params.paymentKey,
35
+ status: 'canceled',
36
+ amount: params.cancelAmount ?? 0,
37
+ raw: {
38
+ reason: params.cancelReason,
39
+ },
40
+ };
41
+ }
42
+ async getPayment(paymentKey) {
43
+ return {
44
+ provider: this.name,
45
+ paymentKey,
46
+ status: 'paid',
47
+ amount: 0,
48
+ };
49
+ }
50
+ }
51
+ exports.KakaoPayProvider = KakaoPayProvider;
@@ -0,0 +1,15 @@
1
+ import { PaymentProvider, PaymentRequestParams, PaymentResponse, PaymentConfirmParams, PaymentCancelParams, PaymentDetails } from '../types';
2
+ export interface TossConfig {
3
+ secretKey: string;
4
+ testMode?: boolean;
5
+ defaultCurrency?: string;
6
+ }
7
+ export declare class TossPaymentProvider implements PaymentProvider {
8
+ readonly name = "toss";
9
+ private readonly config;
10
+ constructor(config: TossConfig);
11
+ requestPayment(params: PaymentRequestParams): Promise<PaymentResponse>;
12
+ confirmPayment(params: PaymentConfirmParams): Promise<PaymentDetails>;
13
+ cancelPayment(params: PaymentCancelParams): Promise<PaymentDetails>;
14
+ getPayment(paymentKey: string): Promise<PaymentDetails>;
15
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TossPaymentProvider = void 0;
4
+ class TossPaymentProvider {
5
+ constructor(config) {
6
+ this.name = 'toss';
7
+ this.config = config;
8
+ }
9
+ async requestPayment(params) {
10
+ // 실제 API 연동은 프로젝트에서 구현하도록 남겨둡니다.
11
+ // 여기서는 기본적인 형식만 반환합니다.
12
+ return {
13
+ provider: this.name,
14
+ paymentKey: `toss_${params.orderId}`,
15
+ checkoutUrl: params.successUrl || '',
16
+ raw: {
17
+ amount: params.amount,
18
+ currency: params.currency || this.config.defaultCurrency || 'KRW',
19
+ testMode: this.config.testMode ?? true,
20
+ },
21
+ };
22
+ }
23
+ async confirmPayment(params) {
24
+ return {
25
+ provider: this.name,
26
+ paymentKey: params.paymentKey,
27
+ status: 'paid',
28
+ amount: params.amount,
29
+ raw: {
30
+ orderId: params.orderId,
31
+ },
32
+ };
33
+ }
34
+ async cancelPayment(params) {
35
+ return {
36
+ provider: this.name,
37
+ paymentKey: params.paymentKey,
38
+ status: 'canceled',
39
+ amount: params.cancelAmount ?? 0,
40
+ raw: {
41
+ reason: params.cancelReason,
42
+ },
43
+ };
44
+ }
45
+ async getPayment(paymentKey) {
46
+ return {
47
+ provider: this.name,
48
+ paymentKey,
49
+ status: 'paid',
50
+ amount: 0,
51
+ };
52
+ }
53
+ }
54
+ exports.TossPaymentProvider = TossPaymentProvider;
@@ -0,0 +1,46 @@
1
+ export interface PaymentRequestParams {
2
+ orderId: string;
3
+ amount: number;
4
+ customerName: string;
5
+ customerEmail?: string;
6
+ customerPhone?: string;
7
+ successUrl?: string;
8
+ failUrl?: string;
9
+ description?: string;
10
+ currency?: string;
11
+ method?: string;
12
+ metadata?: Record<string, any>;
13
+ }
14
+ export interface PaymentResponse {
15
+ provider: string;
16
+ paymentKey?: string;
17
+ checkoutUrl?: string;
18
+ raw?: any;
19
+ }
20
+ export interface PaymentConfirmParams {
21
+ paymentKey: string;
22
+ orderId: string;
23
+ amount: number;
24
+ }
25
+ export interface PaymentCancelParams {
26
+ paymentKey: string;
27
+ cancelReason: string;
28
+ cancelAmount?: number;
29
+ }
30
+ export interface PaymentDetails {
31
+ provider: string;
32
+ paymentKey: string;
33
+ status: 'requested' | 'authorized' | 'paid' | 'failed' | 'canceled';
34
+ amount: number;
35
+ raw?: any;
36
+ }
37
+ export interface PaymentProviderConfig {
38
+ name: string;
39
+ }
40
+ export interface PaymentProvider {
41
+ name: string;
42
+ requestPayment(params: PaymentRequestParams): Promise<PaymentResponse>;
43
+ confirmPayment(params: PaymentConfirmParams): Promise<PaymentDetails>;
44
+ cancelPayment(params: PaymentCancelParams): Promise<PaymentDetails>;
45
+ getPayment(paymentKey: string): Promise<PaymentDetails>;
46
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ import { ShippingProvider, ShippingFeeParams, ShippingFee, CreateLabelParams, ShippingLabel, TrackingInfo } from './types';
2
+ /**
3
+ * ShippingModule - 배송 프로바이더 레지스트리
4
+ */
5
+ export declare class ShippingModule {
6
+ private providers;
7
+ private defaultProvider;
8
+ registerProvider(provider: ShippingProvider, setAsDefault?: boolean): void;
9
+ listProviders(): string[];
10
+ setDefaultProvider(name: string): void;
11
+ private getProvider;
12
+ calculateFee(params: ShippingFeeParams, providerName?: string): Promise<ShippingFee>;
13
+ createLabel(params: CreateLabelParams, providerName?: string): Promise<ShippingLabel>;
14
+ track(trackingNumber: string, providerName?: string): Promise<TrackingInfo>;
15
+ }
16
+ export * from './types';
17
+ export * from './providers/cj';
18
+ export * from './providers/logen';
19
+ export * from './providers/cvs';
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ShippingModule = void 0;
18
+ /**
19
+ * ShippingModule - 배송 프로바이더 레지스트리
20
+ */
21
+ class ShippingModule {
22
+ constructor() {
23
+ this.providers = new Map();
24
+ this.defaultProvider = null;
25
+ }
26
+ registerProvider(provider, setAsDefault = false) {
27
+ this.providers.set(provider.name, provider);
28
+ if (setAsDefault || !this.defaultProvider) {
29
+ this.defaultProvider = provider.name;
30
+ }
31
+ }
32
+ listProviders() {
33
+ return Array.from(this.providers.keys());
34
+ }
35
+ setDefaultProvider(name) {
36
+ if (!this.providers.has(name)) {
37
+ throw new Error(`Shipping provider "${name}" not registered`);
38
+ }
39
+ this.defaultProvider = name;
40
+ }
41
+ getProvider(name) {
42
+ const target = name || this.defaultProvider;
43
+ if (!target) {
44
+ throw new Error('No shipping provider registered');
45
+ }
46
+ const provider = this.providers.get(target);
47
+ if (!provider) {
48
+ throw new Error(`Shipping provider "${target}" not found`);
49
+ }
50
+ return provider;
51
+ }
52
+ async calculateFee(params, providerName) {
53
+ return this.getProvider(providerName).calculateFee(params);
54
+ }
55
+ async createLabel(params, providerName) {
56
+ return this.getProvider(providerName).createLabel(params);
57
+ }
58
+ async track(trackingNumber, providerName) {
59
+ return this.getProvider(providerName).track(trackingNumber);
60
+ }
61
+ }
62
+ exports.ShippingModule = ShippingModule;
63
+ __exportStar(require("./types"), exports);
64
+ __exportStar(require("./providers/cj"), exports);
65
+ __exportStar(require("./providers/logen"), exports);
66
+ __exportStar(require("./providers/cvs"), exports);
@@ -0,0 +1,14 @@
1
+ import { ShippingProvider, ShippingFeeParams, ShippingFee, CreateLabelParams, ShippingLabel, TrackingInfo } from '../types';
2
+ export interface CJConfig {
3
+ apiKey: string;
4
+ customerCode?: string;
5
+ defaultCurrency?: string;
6
+ }
7
+ export declare class CJLogisticsProvider implements ShippingProvider {
8
+ readonly name = "cj";
9
+ private readonly config;
10
+ constructor(config: CJConfig);
11
+ calculateFee(params: ShippingFeeParams): Promise<ShippingFee>;
12
+ createLabel(params: CreateLabelParams): Promise<ShippingLabel>;
13
+ track(trackingNumber: string): Promise<TrackingInfo>;
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CJLogisticsProvider = void 0;
4
+ class CJLogisticsProvider {
5
+ constructor(config) {
6
+ this.name = 'cj';
7
+ this.config = config;
8
+ }
9
+ async calculateFee(params) {
10
+ return {
11
+ provider: this.name,
12
+ amount: 3500,
13
+ currency: this.config.defaultCurrency || 'KRW',
14
+ estimatedDays: 2,
15
+ raw: params,
16
+ };
17
+ }
18
+ async createLabel(params) {
19
+ return {
20
+ provider: this.name,
21
+ trackingNumber: `CJ-${params.orderId}`,
22
+ labelUrl: '',
23
+ raw: params,
24
+ };
25
+ }
26
+ async track(trackingNumber) {
27
+ return {
28
+ provider: this.name,
29
+ trackingNumber,
30
+ status: 'in_transit',
31
+ history: [],
32
+ };
33
+ }
34
+ }
35
+ exports.CJLogisticsProvider = CJLogisticsProvider;
@@ -0,0 +1,14 @@
1
+ import { ShippingProvider, ShippingFeeParams, ShippingFee, CreateLabelParams, ShippingLabel, TrackingInfo } from '../types';
2
+ export interface CvsConfig {
3
+ apiKey: string;
4
+ carrier?: 'cvsnet' | 'easycv';
5
+ defaultCurrency?: string;
6
+ }
7
+ export declare class CvsProvider implements ShippingProvider {
8
+ readonly name = "cvs";
9
+ private readonly config;
10
+ constructor(config: CvsConfig);
11
+ calculateFee(params: ShippingFeeParams): Promise<ShippingFee>;
12
+ createLabel(params: CreateLabelParams): Promise<ShippingLabel>;
13
+ track(trackingNumber: string): Promise<TrackingInfo>;
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CvsProvider = void 0;
4
+ class CvsProvider {
5
+ constructor(config) {
6
+ this.name = 'cvs';
7
+ this.config = config;
8
+ }
9
+ async calculateFee(params) {
10
+ return {
11
+ provider: this.name,
12
+ amount: 2700,
13
+ currency: this.config.defaultCurrency || 'KRW',
14
+ estimatedDays: 3,
15
+ raw: params,
16
+ };
17
+ }
18
+ async createLabel(params) {
19
+ return {
20
+ provider: this.name,
21
+ trackingNumber: `CVS-${params.orderId}`,
22
+ labelUrl: '',
23
+ raw: params,
24
+ };
25
+ }
26
+ async track(trackingNumber) {
27
+ return {
28
+ provider: this.name,
29
+ trackingNumber,
30
+ status: 'in_transit',
31
+ history: [],
32
+ };
33
+ }
34
+ }
35
+ exports.CvsProvider = CvsProvider;
@@ -0,0 +1,13 @@
1
+ import { ShippingProvider, ShippingFeeParams, ShippingFee, CreateLabelParams, ShippingLabel, TrackingInfo } from '../types';
2
+ export interface LogenConfig {
3
+ apiKey: string;
4
+ defaultCurrency?: string;
5
+ }
6
+ export declare class LogenProvider implements ShippingProvider {
7
+ readonly name = "logen";
8
+ private readonly config;
9
+ constructor(config: LogenConfig);
10
+ calculateFee(params: ShippingFeeParams): Promise<ShippingFee>;
11
+ createLabel(params: CreateLabelParams): Promise<ShippingLabel>;
12
+ track(trackingNumber: string): Promise<TrackingInfo>;
13
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogenProvider = void 0;
4
+ class LogenProvider {
5
+ constructor(config) {
6
+ this.name = 'logen';
7
+ this.config = config;
8
+ }
9
+ async calculateFee(params) {
10
+ return {
11
+ provider: this.name,
12
+ amount: 3200,
13
+ currency: this.config.defaultCurrency || 'KRW',
14
+ estimatedDays: 2,
15
+ raw: params,
16
+ };
17
+ }
18
+ async createLabel(params) {
19
+ return {
20
+ provider: this.name,
21
+ trackingNumber: `LOGEN-${params.orderId}`,
22
+ labelUrl: '',
23
+ raw: params,
24
+ };
25
+ }
26
+ async track(trackingNumber) {
27
+ return {
28
+ provider: this.name,
29
+ trackingNumber,
30
+ status: 'in_transit',
31
+ history: [],
32
+ };
33
+ }
34
+ }
35
+ exports.LogenProvider = LogenProvider;
@@ -0,0 +1,54 @@
1
+ export interface ShippingFeeParams {
2
+ destinationZip: string;
3
+ weight?: number;
4
+ volumeWeight?: number;
5
+ quantity?: number;
6
+ options?: Record<string, any>;
7
+ }
8
+ export interface ShippingFee {
9
+ provider: string;
10
+ amount: number;
11
+ currency?: string;
12
+ estimatedDays?: number;
13
+ raw?: any;
14
+ }
15
+ export interface CreateLabelParams {
16
+ orderId: string;
17
+ toName: string;
18
+ toPhone: string;
19
+ toAddress: string;
20
+ toZip: string;
21
+ fromName?: string;
22
+ fromPhone?: string;
23
+ fromAddress?: string;
24
+ fromZip?: string;
25
+ items?: Array<{
26
+ name: string;
27
+ quantity: number;
28
+ weight?: number;
29
+ }>;
30
+ memo?: string;
31
+ }
32
+ export interface ShippingLabel {
33
+ provider: string;
34
+ trackingNumber: string;
35
+ labelUrl?: string;
36
+ raw?: any;
37
+ }
38
+ export interface TrackingInfo {
39
+ provider: string;
40
+ trackingNumber: string;
41
+ status: string;
42
+ history?: Array<{
43
+ status: string;
44
+ timestamp: string;
45
+ location?: string;
46
+ }>;
47
+ raw?: any;
48
+ }
49
+ export interface ShippingProvider {
50
+ name: string;
51
+ calculateFee(params: ShippingFeeParams): Promise<ShippingFee>;
52
+ createLabel(params: CreateLabelParams): Promise<ShippingLabel>;
53
+ track(trackingNumber: string): Promise<TrackingInfo>;
54
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hamjimin/xplat-back",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Express + TypeScript 백엔드 스캐폴딩 도구 (zium-backend 기반)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",