@sayren/storefront-sdk 0.18.0 → 0.18.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.
- package/dist/analytics/index.d.mts +1 -1
- package/dist/auth/index.d.mts +2 -2
- package/dist/auth/index.mjs +2 -2
- package/dist/{checkout-C25liqdW.mjs → checkout-PJk8g5DY.mjs} +6 -6
- package/dist/{client-CQYPw2N6.mjs → client-BNChG_51.mjs} +49 -19
- package/dist/{index-D6lDEBHy.d.mts → index-D2WiGpwr.d.mts} +86 -27
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -3
- package/dist/payments/index.d.mts +2 -2
- package/dist/payments/index.mjs +1 -1
- package/package.json +1 -1
- package/src/analytics/index.ts +1 -1
- package/src/auth/index.ts +2 -2
- package/src/client.ts +6 -6
- package/src/payments/index.ts +1 -1
- package/src/schemas/catalog.ts +28 -3
- package/src/schemas/checkout.ts +5 -5
- package/src/schemas/claim.ts +2 -2
- package/src/schemas/consent.ts +3 -3
- package/src/schemas/inquiry.ts +46 -0
- package/src/schemas/member.ts +1 -1
- package/src/schemas/product-options.ts +1 -1
- package/src/schemas/store.ts +23 -1
- package/src/session.ts +1 -1
|
@@ -14,7 +14,7 @@ export type AnalyticsConsent = "granted" | "denied" | "pending";
|
|
|
14
14
|
export interface AnalyticsOptions {
|
|
15
15
|
/** 스토어프론트 API 베이스 — 예: `https://api.sayren.app/storefront/v1` */
|
|
16
16
|
baseUrl: string;
|
|
17
|
-
/** 테넌트
|
|
17
|
+
/** 테넌트 상점 코드 */
|
|
18
18
|
storeCode: string;
|
|
19
19
|
/** 동의 상태. 기본 `pending` — 셀러의 동의 배너가 `setConsent`로 바꾼다 */
|
|
20
20
|
consent?: AnalyticsConsent;
|
package/dist/auth/index.d.mts
CHANGED
|
@@ -26,7 +26,7 @@ export declare class IdpCallbackError extends Error {
|
|
|
26
26
|
export interface StorefrontAuthOptions {
|
|
27
27
|
/** 예: https://api.sayren.app/storefront/v1 */
|
|
28
28
|
baseUrl: string;
|
|
29
|
-
/** 테넌트
|
|
29
|
+
/** 테넌트 상점 코드 — `X-Store-Code` 헤더로 보낸다 */
|
|
30
30
|
storeCode: string;
|
|
31
31
|
fetch?: typeof globalThis.fetch;
|
|
32
32
|
}
|
|
@@ -104,7 +104,7 @@ export declare function createStorefrontAuth(options: StorefrontAuthOptions): {
|
|
|
104
104
|
signOut(accessToken: string): Promise<void>;
|
|
105
105
|
/**
|
|
106
106
|
* 구매자 탈퇴 — 계정·배송지·위시리스트·장바구니·적립금을 지우고 토큰을 모두 무효로 만든다. 되돌릴 수 없다.
|
|
107
|
-
* 주문·리뷰·문의 기록은
|
|
107
|
+
* 주문·리뷰·문의 기록은 상점이 보관한다. 진행 중인 주문이나 처리 중인 클레임이 있으면
|
|
108
108
|
* 409 `WITHDRAWAL_BLOCKED`(`error.details`: `WithdrawalBlockedDetails`)다. 앱은 성공 후 보관한 토큰을 지운다.
|
|
109
109
|
*/
|
|
110
110
|
withdraw(accessToken: string, body: WithdrawRequest): Promise<void>;
|
package/dist/auth/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mt as ApiError, t as createStorefrontClient } from "../client-BNChG_51.mjs";
|
|
2
2
|
//#region src/auth/index.ts
|
|
3
3
|
/** 소셜 로그인 실패 — 구매자가 취소했거나(`access_denied`) state가 맞지 않는다 */
|
|
4
4
|
var IdpCallbackError = class extends Error {
|
|
@@ -156,7 +156,7 @@ function createStorefrontAuth(options) {
|
|
|
156
156
|
},
|
|
157
157
|
/**
|
|
158
158
|
* 구매자 탈퇴 — 계정·배송지·위시리스트·장바구니·적립금을 지우고 토큰을 모두 무효로 만든다. 되돌릴 수 없다.
|
|
159
|
-
* 주문·리뷰·문의 기록은
|
|
159
|
+
* 주문·리뷰·문의 기록은 상점이 보관한다. 진행 중인 주문이나 처리 중인 클레임이 있으면
|
|
160
160
|
* 409 `WITHDRAWAL_BLOCKED`(`error.details`: `WithdrawalBlockedDetails`)다. 앱은 성공 후 보관한 토큰을 지운다.
|
|
161
161
|
*/
|
|
162
162
|
withdraw(accessToken, body) {
|
|
@@ -95,7 +95,7 @@ function normalizeCustomInputValue(value) {
|
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
97
|
* 직접 입력값의 글자 수 — 정규화한 값의 **코드 포인트 수**다(이모지 하나가 1자). 서버의 최대 글자 수 판정(`CUSTOM_INPUT_TOO_LONG`)과
|
|
98
|
-
*
|
|
98
|
+
* 스토어프론트·상점 플랫폼의 글자 수 표시가 이 함수 하나를 쓴다. `String.length`(UTF-16)로 세면 이모지가 2자로 세어 판정이 갈린다.
|
|
99
99
|
*/
|
|
100
100
|
function customInputLength(value) {
|
|
101
101
|
return [...normalizeCustomInputValue(value)].length;
|
|
@@ -264,7 +264,7 @@ const checkoutDeliverySchema = z.object({
|
|
|
264
264
|
remoteArea: remoteAreaSchema.describe("배송지 지역 구분. 배송지를 모르면 NONE"),
|
|
265
265
|
remoteAreaLabel: z.string().nullable().describe("지역 안내 이름(예: 제주특별자치도). 추가 배송비 지역이 아니면 null"),
|
|
266
266
|
bundleCount: z.number().int().describe("배송 묶음 수 — 배송비를 부과한 횟수다"),
|
|
267
|
-
freeByThreshold: z.boolean().describe("
|
|
267
|
+
freeByThreshold: z.boolean().describe("상점 전체 무료배송 기준액을 넘겨 기본 배송비를 면제했는가"),
|
|
268
268
|
zipCode: z.string().nullable().describe("이 금액에 반영한 배송지 우편번호. null이면 배송지 미반영(추가 배송비 0)이다")
|
|
269
269
|
});
|
|
270
270
|
const checkoutSessionSchema = z.object({
|
|
@@ -297,7 +297,7 @@ const checkoutSessionSchema = z.object({
|
|
|
297
297
|
}).optional().describe("**Deprecated** — 항상 `{ required: false, notice: null }`이다. 청약철회 제한 고지를 없앴고(이슈 #48) storefront-sdk 0.15 이하 호환으로만 싣는다. 게시된 스토어프론트가 0.16 이상으로 넘어간 뒤 다음 릴리스에서 뺀다"),
|
|
298
298
|
expiresAt: z.string(),
|
|
299
299
|
paymentOptions: z.lazy(() => paymentOptionListSchema).describe("이 주문서에서 고를 수 있는 결제 옵션, PG 우선순위순. 셀러가 켠 PG·결제수단·간편결제만 담긴다. 비어 있으면 지금 결제할 수 없다"),
|
|
300
|
-
testPayment: z.boolean().describe("지금 결제하면 테스트 결제(샌드박스)인가. true면 실제로 돈이 나가지 않습니다 — 주문서에 테스트 결제 안내를 표시합니다. 결제 요청 시점에
|
|
300
|
+
testPayment: z.boolean().describe("지금 결제하면 테스트 결제(샌드박스)인가. true면 실제로 돈이 나가지 않습니다 — 주문서에 테스트 결제 안내를 표시합니다. 결제 요청 시점에 상점 결제 설정으로 다시 정해지니 최종 값은 결제 요청 응답의 `testPayment`입니다")
|
|
301
301
|
});
|
|
302
302
|
/**
|
|
303
303
|
* 배송비 미리보기 요청 — 배송지 우편번호로 배송비를 다시 계산한다. 주문서를 바꾸지 않는다(읽기 계산이다).
|
|
@@ -317,7 +317,7 @@ const paymentMethodSchema = z.enum([
|
|
|
317
317
|
"MOBILE",
|
|
318
318
|
"EASY_PAY"
|
|
319
319
|
]);
|
|
320
|
-
/** 결제를 처리하는 PG. 셀러가 직접 계약하고
|
|
320
|
+
/** 결제를 처리하는 PG. 셀러가 직접 계약하고 상점 플랫폼 설정 › 결제에서 연결한다 */
|
|
321
321
|
const pgProviderSchema = z.enum(["tosspayments", "portone"]);
|
|
322
322
|
/** 간편결제사. 토스페이먼츠·포트원 모두 같은 코드를 쓴다 */
|
|
323
323
|
const easyPayProviderSchema = z.enum([
|
|
@@ -471,11 +471,11 @@ const cashReceiptField = cashReceiptRequestSchema.optional().describe("현금영
|
|
|
471
471
|
/**
|
|
472
472
|
* 결제 시작 — 배송지를 확정하고 고른 결제 옵션으로 결제 시도를 연다. 응답의 `payUrl`(결제 서비스)을 팝업(`mode=popup`)이나
|
|
473
473
|
* 전체 페이지로 열면 결제 서비스가 PG 결제창을 띄우고 승인까지 한다. 리다이렉트 결제가 끝나면 구매자는 `returnUrl`로 돌아온다.
|
|
474
|
-
* `returnUrl`의 도메인은
|
|
474
|
+
* `returnUrl`의 도메인은 상점 결제 도메인(상점 플랫폼 설정 › 결제)에 등록돼 있어야 한다(테스트 결제는 localhost 허용).
|
|
475
475
|
*/
|
|
476
476
|
const startPaymentRequestSchema = z.object({
|
|
477
477
|
option: paymentOptionSchema,
|
|
478
|
-
returnUrl: z.url().max(2048).describe("결제를 마치면 돌아올 스토어프론트 주소.
|
|
478
|
+
returnUrl: z.url().max(2048).describe("결제를 마치면 돌아올 스토어프론트 주소. 상점 결제 도메인에 등록된 도메인이어야 한다"),
|
|
479
479
|
shippingAddress: shippingAddressInputSchema.optional().describe("배송지. 주문서의 `requiresShipping`이 true면 필수이고 없으면 400 `SHIPPING_ADDRESS_REQUIRED`다. 배송이 필요 없는 주문(배송 없는 상품만)은 보내지 않아도 된다. 보내면 형식을 검사한 뒤 버린다"),
|
|
480
480
|
guest: guestInfoSchema.optional(),
|
|
481
481
|
cashReceipt: cashReceiptField,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as ANALYTICS_VISITOR_HEADER, r as ANALYTICS_SESSION_HEADER } from "./analytics-CgD70OqH.mjs";
|
|
2
|
-
import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, C as paymentStartSchema, F as checkoutPricingSchema, J as customInputViewSchema, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, U as addonGroupViewSchema, V as myCouponSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, m as easyPayProviderResponseSchema, nt as productFulfillmentViewSchema, p as deliveryQuoteSchema, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, w as paymentStatusSchema, y as paymentMethodSchema } from "./checkout-
|
|
2
|
+
import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, C as paymentStartSchema, F as checkoutPricingSchema, J as customInputViewSchema, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, U as addonGroupViewSchema, V as myCouponSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, m as easyPayProviderResponseSchema, nt as productFulfillmentViewSchema, p as deliveryQuoteSchema, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, w as paymentStatusSchema, y as paymentMethodSchema } from "./checkout-PJk8g5DY.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/http.ts
|
|
5
5
|
/** 표준 엔벨로프의 $.error 상세 */
|
|
@@ -320,9 +320,10 @@ const productCardSchema = z.object({
|
|
|
320
320
|
productId: z.string(),
|
|
321
321
|
name: z.string(),
|
|
322
322
|
thumbnailUrl: z.url().nullable().describe("대표 이미지 주소. 등록된 이미지가 없으면 null"),
|
|
323
|
-
salePrice: z.number().int().describe("판매가. 원(KRW) 단위
|
|
324
|
-
discountedPrice: z.number().int().nullable().describe("
|
|
325
|
-
discountRate: z.number().int().nullable().describe("
|
|
323
|
+
salePrice: z.number().int().describe("판매가. 원(KRW) 단위 정수. 즉시할인이 없으면 구매자가 내는 한 개 가격(옵션 추가금 제외)이고, 즉시할인의 기준 가격이다"),
|
|
324
|
+
discountedPrice: z.number().int().nullable().describe("즉시할인 적용가. 원 단위. 판매가에 즉시할인을 적용한 값이고, 있으면 이 값이 구매자가 내는 한 개 가격이다. 할인이 없으면 null"),
|
|
325
|
+
discountRate: z.number().int().nullable().describe("즉시할인율(%). 판매가 대비 `discountedPrice`의 할인율이다(정가 기준이 아니다). 할인이 없으면 null"),
|
|
326
|
+
originalPrice: z.number().int().nullable().optional().default(null).describe("정가(할인 전 표시 가격, 이슈 #82). 원 단위. 셀러가 상품에 적은 비교용 가격이고 결제 금액 계산에 쓰지 않는다. 구매자가 내는 가격은 `discountedPrice ?? salePrice`다. 정가가 그 가격보다 클 때 「정가 취소선 + 할인율 + 판매가」로 보이면 되고, 이때 할인율은 `round((1 - (discountedPrice ?? salePrice) / originalPrice) × 100)`이다. 판매가와 크기를 검증하지 않으므로 작거나 같으면 표시하지 않는다. 정하지 않았으면 null. 서버는 항상 싣는다"),
|
|
326
327
|
freeShipping: z.boolean().describe("무료배송 배지. 배송 상품이고 배송비가 무료일 때만 true다(배송이 없는 상품은 false)"),
|
|
327
328
|
fulfillment: productCardFulfillmentSchema,
|
|
328
329
|
averageRating: z.number(),
|
|
@@ -415,10 +416,10 @@ const createClaimResultSchema = z.object({
|
|
|
415
416
|
couponChargeRefundAmount: z.number().int().optional().default(0).describe("되돌릴 쿠폰 차감 예상액 — 앞선 취소·반품에서 뺀 쿠폰 조건 미달 차감 중 이번에 돌려받을 몫이다. 예상 환불액에 이미 반영돼 있다. 서버는 항상 싣는다")
|
|
416
417
|
});
|
|
417
418
|
/**
|
|
418
|
-
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다.
|
|
419
|
+
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다. 상점 주소록의 기본 반품지이거나,
|
|
419
420
|
* 상품이 반품지를 따로 지정했으면 그 주소다.
|
|
420
421
|
*
|
|
421
|
-
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은
|
|
422
|
+
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은 상점도 null이다.
|
|
422
423
|
* 구매자가 직접 보내는 수거(`BUYER_SEND`)에 이 주소가 필요하다.
|
|
423
424
|
*/
|
|
424
425
|
const claimReturnAddressSchema = z.object({
|
|
@@ -476,11 +477,11 @@ const consentStateSchema = z.object({
|
|
|
476
477
|
agreed: z.boolean(),
|
|
477
478
|
/** 동의한 약관 버전. 마케팅은 버전이 없어 null이고, 동의 이력이 없으면 null이다 */
|
|
478
479
|
agreedVersion: z.string().nullable(),
|
|
479
|
-
/**
|
|
480
|
+
/** 상점의 현재 약관 버전. 마케팅은 null */
|
|
480
481
|
currentVersion: z.string().nullable(),
|
|
481
482
|
/**
|
|
482
|
-
*
|
|
483
|
-
*
|
|
483
|
+
* 상점이 정한 현재 약관 문서 주소. 재동의 화면에서 이 주소를 보여 준다.
|
|
484
|
+
* 상점이 정하지 않았거나 마케팅이면 null이다(동의한 시점의 주소는 셀러가 보는 이력에 남는다).
|
|
484
485
|
*/
|
|
485
486
|
currentDocumentUrl: z.string().nullable(),
|
|
486
487
|
/** 마지막으로 동의·철회한 시각. 이력이 없으면 null */
|
|
@@ -536,6 +537,17 @@ const createCustomerInquiryRequestSchema = z.object({
|
|
|
536
537
|
});
|
|
537
538
|
//#endregion
|
|
538
539
|
//#region src/schemas/inquiry.ts
|
|
540
|
+
/**
|
|
541
|
+
* 상품 문의 유형(이슈 #85) — 관리 API 상품 문의의 `category`와 같은 값이다.
|
|
542
|
+
* `PRODUCT` 상품(사이즈·소재 등), `DELIVERY` 배송, `RETURN` 반품, `EXCHANGE` 교환, `ETC` 기타
|
|
543
|
+
*/
|
|
544
|
+
const productInquiryCategorySchema = z.enum([
|
|
545
|
+
"PRODUCT",
|
|
546
|
+
"DELIVERY",
|
|
547
|
+
"RETURN",
|
|
548
|
+
"EXCHANGE",
|
|
549
|
+
"ETC"
|
|
550
|
+
]);
|
|
539
551
|
const publicInquirySchema = z.object({
|
|
540
552
|
inquiryId: z.string(),
|
|
541
553
|
content: z.string().nullable(),
|
|
@@ -546,11 +558,16 @@ const publicInquirySchema = z.object({
|
|
|
546
558
|
content: z.string().nullable(),
|
|
547
559
|
answeredAt: z.string()
|
|
548
560
|
}).nullable(),
|
|
549
|
-
createdAt: z.string()
|
|
561
|
+
createdAt: z.string(),
|
|
562
|
+
productId: z.string().nullable().optional().default(null).describe("문의한 상품 id. 서버는 항상 싣는다(옛 서버 응답이면 null)"),
|
|
563
|
+
productName: z.string().nullable().optional().default(null).describe("문의한 상품의 지금 이름. 상품이 지워졌으면 null. 서버는 항상 싣는다"),
|
|
564
|
+
thumbnailUrl: z.url().nullable().optional().default(null).describe("문의한 상품의 대표 이미지 주소. 이미지가 없거나 상품이 지워졌으면 null. 서버는 항상 싣는다"),
|
|
565
|
+
category: productInquiryCategorySchema.optional().default("PRODUCT").describe("문의 유형. `PRODUCT`(상품)·`DELIVERY`(배송)·`RETURN`(반품)·`EXCHANGE`(교환)·`ETC`(기타). 서버는 항상 싣는다")
|
|
550
566
|
});
|
|
551
567
|
const createInquiryRequestSchema = z.object({
|
|
552
568
|
content: z.string().min(1).max(1e3),
|
|
553
|
-
secret: z.boolean().default(false)
|
|
569
|
+
secret: z.boolean().default(false),
|
|
570
|
+
category: productInquiryCategorySchema.optional().describe("문의 유형(이슈 #85). `PRODUCT`(상품)·`DELIVERY`(배송)·`RETURN`(반품)·`EXCHANGE`(교환)·`ETC`(기타). 생략하면 `PRODUCT`다")
|
|
554
571
|
});
|
|
555
572
|
/** `POST /products/{productId}/inquiries` 응답 */
|
|
556
573
|
const createInquiryResultSchema = z.object({
|
|
@@ -568,7 +585,7 @@ const memberSchema = z.object({
|
|
|
568
585
|
point: z.number().int(),
|
|
569
586
|
marketingAgreed: z.boolean(),
|
|
570
587
|
joinedAt: z.string(),
|
|
571
|
-
reconsentRequired: z.boolean().describe("약관이 개정돼 필수 동의를 다시 받아야 하는가. true면 `GET /me/consents`로 어떤 항목인지 확인하고 `POST /me/consents`로 받는다. 받기 전에도
|
|
588
|
+
reconsentRequired: z.boolean().describe("약관이 개정돼 필수 동의를 다시 받아야 하는가. true면 `GET /me/consents`로 어떤 항목인지 확인하고 `POST /me/consents`로 받는다. 받기 전에도 상점 이용은 막히지 않는다")
|
|
572
589
|
});
|
|
573
590
|
const updateProfileRequestSchema = z.object({
|
|
574
591
|
name: z.string().max(50).optional(),
|
|
@@ -741,7 +758,12 @@ const updateReviewResultSchema = z.object({
|
|
|
741
758
|
//#endregion
|
|
742
759
|
//#region src/schemas/store.ts
|
|
743
760
|
/**
|
|
744
|
-
*
|
|
761
|
+
* 사업자 정보 필드(이슈 #81) — 전자상거래법 표기(푸터)용이다. 셀러가 정하지 않았으면 null이고, 그 항목은 표시하지 않으면 된다.
|
|
762
|
+
* 옛 서버 응답에 없으면 null로 읽는다.
|
|
763
|
+
*/
|
|
764
|
+
const businessText = (description) => z.string().nullable().optional().default(null).describe(`${description}. 정하지 않았으면 null. 서버는 항상 싣는다`);
|
|
765
|
+
/**
|
|
766
|
+
* 상점 공개 설정 — `GET /store`. 스토어프론트가 화면을 그릴 때 읽는 값만 담는다.
|
|
745
767
|
*/
|
|
746
768
|
const storefrontStoreSchema = z.object({
|
|
747
769
|
storeCode: z.string(),
|
|
@@ -749,6 +771,14 @@ const storefrontStoreSchema = z.object({
|
|
|
749
771
|
logoUrl: z.string().nullable(),
|
|
750
772
|
customerCenterPhone: z.string().nullable(),
|
|
751
773
|
businessHours: z.string().nullable(),
|
|
774
|
+
businessName: businessText("상호(사업자등록증의 상호). 상점명(`name`)과 다를 수 있다"),
|
|
775
|
+
representativeName: businessText("대표자명"),
|
|
776
|
+
businessNumber: businessText("사업자등록번호. 관리 API로 저장한 값은 숫자 10자리(하이픈 없음)이고 표시할 때 `123-45-67890`으로 끊으면 된다"),
|
|
777
|
+
mailOrderSalesNumber: businessText("통신판매업 신고번호. 셀러가 적은 그대로다"),
|
|
778
|
+
businessAddress: businessText("사업장 주소"),
|
|
779
|
+
customerCenterEmail: businessText("고객센터 이메일"),
|
|
780
|
+
privacyOfficerName: businessText("개인정보 보호책임자 성명"),
|
|
781
|
+
privacyOfficerEmail: businessText("개인정보 보호책임자 이메일"),
|
|
752
782
|
/**
|
|
753
783
|
* 비회원 주문 허용. false면 로그인하지 않은 구매자의 주문서 생성·결제 요청이 403 `GUEST_CHECKOUT_DISABLED`다.
|
|
754
784
|
* 장바구니 담기는 된다 — 주문 버튼을 로그인 안내로 바꾸면 된다
|
|
@@ -844,7 +874,7 @@ function createStorefrontClient(options) {
|
|
|
844
874
|
unlinkIdentity: (provider) => http.request("DELETE", path`/me/identities/${provider}`, memberIdentitiesSchema)
|
|
845
875
|
},
|
|
846
876
|
store: {
|
|
847
|
-
/**
|
|
877
|
+
/** 상점 공개 설정 — 이름·고객센터·비회원 주문 허용 여부 */
|
|
848
878
|
get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
849
879
|
catalog: {
|
|
850
880
|
listCategories: () => http.request("GET", "/categories", z.array(categoryNodeSchema)),
|
|
@@ -878,10 +908,10 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
878
908
|
* `@sayren/storefront-sdk/payments`의 `createPayments().start()`다 — 이 메서드는 값만 받는다.
|
|
879
909
|
*
|
|
880
910
|
* 에러(`ApiError.code`):
|
|
881
|
-
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이
|
|
911
|
+
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이 상점에서 쓸 수 없는 옵션. `details.paymentOptions`에 지금 목록
|
|
882
912
|
* - 409 `PAYMENT_NOT_CONFIGURED`: 사용 중인 PG가 없다
|
|
883
913
|
* - 400 `RETURN_URL_NOT_ALLOWED`: `returnUrl`이 https가 아니거나(테스트 결제의 localhost는 예외),
|
|
884
|
-
*
|
|
914
|
+
* 상점이 결제 도메인을 등록했는데 그 안이 아니다. 등록하지 않았으면 https 주소는 모두 받는다
|
|
885
915
|
* - 503 `PAYMENT_PROVIDER_UNAVAILABLE`: 고른 PG의 결제창을 준비하지 못했다(다른 옵션으로 다시 시도)
|
|
886
916
|
*/
|
|
887
917
|
startPayment: (checkoutId, body) => http.request("POST", path`/checkout/${checkoutId}/payment`, paymentStartSchema, { body: startPaymentRequestSchema.parse(body) }),
|
|
@@ -901,7 +931,7 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
901
931
|
* `expiresAt`까지 폴링한다. `completed`면 `orderId`로 완료 화면, `failed`·`expired`면 실패 안내다.
|
|
902
932
|
* TTL이 지난 `pending`은 `expired`로 보고된다. `testPayment`는 완료면 주문 플래그, 아니면 세션 환경이다.
|
|
903
933
|
*
|
|
904
|
-
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른
|
|
934
|
+
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른 상점) · 410 `STORE_CLOSED` · 503 `STORE_SUSPENDED`
|
|
905
935
|
*/
|
|
906
936
|
getStatus: (paymentId) => http.request("GET", path`/payments/${paymentId}`, paymentStatusSchema),
|
|
907
937
|
/**
|
|
@@ -918,7 +948,7 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
918
948
|
*
|
|
919
949
|
* 에러: 404 `ORDER_NOT_FOUND`(주문이 없거나 연락처·비밀번호가 다름 — 둘을 구분하지 않는다) ·
|
|
920
950
|
* 429 `TOO_MANY_REQUESTS`(주문번호마다 10분에 5번까지 확인하고, 5번째가 틀리면 30분 잠금.
|
|
921
|
-
* 주문번호마다 하루 15번,
|
|
951
|
+
* 주문번호마다 하루 15번, 상점 전체 분당 한도도 있다. 남은 시간은 `ApiError.details.retryAfterSeconds`).
|
|
922
952
|
* 맞게 조회하면 주문번호의 횟수가 초기화된다. 본문 형식은 `guestInfoSchema`의 `phone`·`orderPassword`와 같다.
|
|
923
953
|
* 429는 연락처·비밀번호가 맞아도 난다 — 「잠시 후 다시 시도」로 안내한다.
|
|
924
954
|
*/
|
|
@@ -965,4 +995,4 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
965
995
|
};
|
|
966
996
|
}
|
|
967
997
|
//#endregion
|
|
968
|
-
export {
|
|
998
|
+
export { cartSchema as $, consentKindSchema as A, myClaimSchema as B, createInquiryResultSchema as C, customerInquiryCategorySchema as D, createCustomerInquiryRequestSchema as E, claimReasonSchema as F, productPageSchema as G, productCardSchema as H, claimReturnAddressSchema as I, orderItemStatusSchema as J, productSortSchema as K, claimTypeSchema as L, consentStateSchema as M, consentUpdateRequestSchema as N, customerInquirySchema as O, memberConsentsSchema as P, cartItemSchema as Q, createClaimRequestSchema as R, createInquiryRequestSchema as S, publicInquirySchema as T, productDetailSchema as U, categoryNodeSchema as V, productFacetsSchema as W, pageSchema as X, pageInfoSchema as Y, addCartItemRequestSchema as Z, memberAddressRequestSchema as _, unwrapData as _t, publicReviewSchema as a, idpTokenRequestSchema as at, updateProfileRequestSchema as b, updateReviewRequestSchema as c, memberIdentitiesSchema as ct, deliveryTrackingSchema as d, tokenPairSchema as dt, updateCartItemRequestSchema as et, myOrderItemSchema as f, withdrawRequestSchema as ft, trackingStageResponseSchema as g, toApiError as gt, purchaseDecisionResultSchema as h, buildQuery as ht, createReviewResultSchema as i, idpAuthorizeResponseSchema as it, consentSourceSchema as j, consentActionSchema as k, updateReviewResultSchema as l, signupRequestSchema as lt, orderShippingAddressSchema as m, ApiError as mt, storefrontStoreSchema as n, idpAgreementsSchema as nt, reviewPageSchema as o, linkIdentityRequestSchema as ot, myOrderSchema as p, withdrawalBlockedDetailsSchema as pt, claimStatusSchema as q, createReviewRequestSchema as r, idpAuthorizeRequestSchema as rt, reviewSummarySchema as s, loginRequestSchema as st, createStorefrontClient as t, anonymousSessionSchema as tt, writableReviewSchema as u, socialProviderSchema as ut, memberAddressSchema as v, productInquiryCategorySchema as w, wishlistAddResultSchema as x, memberSchema as y, createClaimResultSchema as z };
|
|
@@ -241,6 +241,7 @@ declare const productCardSchema: z.ZodObject<{
|
|
|
241
241
|
salePrice: z.ZodNumber;
|
|
242
242
|
discountedPrice: z.ZodNullable<z.ZodNumber>;
|
|
243
243
|
discountRate: z.ZodNullable<z.ZodNumber>;
|
|
244
|
+
originalPrice: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
244
245
|
freeShipping: z.ZodBoolean;
|
|
245
246
|
fulfillment: z.ZodObject<{
|
|
246
247
|
type: z.ZodString;
|
|
@@ -258,6 +259,7 @@ declare const productDetailSchema: z.ZodObject<{
|
|
|
258
259
|
salePrice: z.ZodNumber;
|
|
259
260
|
discountedPrice: z.ZodNullable<z.ZodNumber>;
|
|
260
261
|
discountRate: z.ZodNullable<z.ZodNumber>;
|
|
262
|
+
originalPrice: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
261
263
|
freeShipping: z.ZodBoolean;
|
|
262
264
|
averageRating: z.ZodNumber;
|
|
263
265
|
reviewCount: z.ZodNumber;
|
|
@@ -367,6 +369,7 @@ declare const productPageSchema: z.ZodObject<{
|
|
|
367
369
|
salePrice: z.ZodNumber;
|
|
368
370
|
discountedPrice: z.ZodNullable<z.ZodNumber>;
|
|
369
371
|
discountRate: z.ZodNullable<z.ZodNumber>;
|
|
372
|
+
originalPrice: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
370
373
|
freeShipping: z.ZodBoolean;
|
|
371
374
|
fulfillment: z.ZodObject<{
|
|
372
375
|
type: z.ZodString;
|
|
@@ -576,7 +579,7 @@ declare const paymentMethodSchema: z.ZodEnum<{
|
|
|
576
579
|
MOBILE: "MOBILE";
|
|
577
580
|
}>;
|
|
578
581
|
type PaymentMethod = z.infer<typeof paymentMethodSchema>;
|
|
579
|
-
/** 결제를 처리하는 PG. 셀러가 직접 계약하고
|
|
582
|
+
/** 결제를 처리하는 PG. 셀러가 직접 계약하고 상점 플랫폼 설정 › 결제에서 연결한다 */
|
|
580
583
|
declare const pgProviderSchema: z.ZodEnum<{
|
|
581
584
|
tosspayments: "tosspayments";
|
|
582
585
|
portone: "portone";
|
|
@@ -804,7 +807,7 @@ type CashReceiptRequest = z.infer<typeof cashReceiptRequestSchema>;
|
|
|
804
807
|
/**
|
|
805
808
|
* 결제 시작 — 배송지를 확정하고 고른 결제 옵션으로 결제 시도를 연다. 응답의 `payUrl`(결제 서비스)을 팝업(`mode=popup`)이나
|
|
806
809
|
* 전체 페이지로 열면 결제 서비스가 PG 결제창을 띄우고 승인까지 한다. 리다이렉트 결제가 끝나면 구매자는 `returnUrl`로 돌아온다.
|
|
807
|
-
* `returnUrl`의 도메인은
|
|
810
|
+
* `returnUrl`의 도메인은 상점 결제 도메인(상점 플랫폼 설정 › 결제)에 등록돼 있어야 한다(테스트 결제는 localhost 허용).
|
|
808
811
|
*/
|
|
809
812
|
declare const startPaymentRequestSchema: z.ZodObject<{
|
|
810
813
|
option: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1039,9 +1042,9 @@ type PaymentMessage = z.infer<typeof paymentMessageSchema>;
|
|
|
1039
1042
|
//#endregion
|
|
1040
1043
|
//#region src/schemas/claim.d.ts
|
|
1041
1044
|
declare const claimTypeSchema: z.ZodEnum<{
|
|
1042
|
-
CANCEL: "CANCEL";
|
|
1043
1045
|
RETURN: "RETURN";
|
|
1044
1046
|
EXCHANGE: "EXCHANGE";
|
|
1047
|
+
CANCEL: "CANCEL";
|
|
1045
1048
|
}>;
|
|
1046
1049
|
type ClaimType = z.infer<typeof claimTypeSchema>;
|
|
1047
1050
|
declare const claimReasonSchema: z.ZodEnum<{
|
|
@@ -1055,9 +1058,9 @@ declare const claimReasonSchema: z.ZodEnum<{
|
|
|
1055
1058
|
type ClaimReason = z.infer<typeof claimReasonSchema>;
|
|
1056
1059
|
declare const createClaimRequestSchema: z.ZodObject<{
|
|
1057
1060
|
type: z.ZodEnum<{
|
|
1058
|
-
CANCEL: "CANCEL";
|
|
1059
1061
|
RETURN: "RETURN";
|
|
1060
1062
|
EXCHANGE: "EXCHANGE";
|
|
1063
|
+
CANCEL: "CANCEL";
|
|
1061
1064
|
}>;
|
|
1062
1065
|
reason: z.ZodEnum<{
|
|
1063
1066
|
CHANGE_OF_MIND: "CHANGE_OF_MIND";
|
|
@@ -1085,10 +1088,10 @@ declare const createClaimResultSchema: z.ZodObject<{
|
|
|
1085
1088
|
}, z.core.$strip>;
|
|
1086
1089
|
type CreateClaimResult = z.infer<typeof createClaimResultSchema>;
|
|
1087
1090
|
/**
|
|
1088
|
-
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다.
|
|
1091
|
+
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다. 상점 주소록의 기본 반품지이거나,
|
|
1089
1092
|
* 상품이 반품지를 따로 지정했으면 그 주소다.
|
|
1090
1093
|
*
|
|
1091
|
-
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은
|
|
1094
|
+
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은 상점도 null이다.
|
|
1092
1095
|
* 구매자가 직접 보내는 수거(`BUYER_SEND`)에 이 주소가 필요하다.
|
|
1093
1096
|
*/
|
|
1094
1097
|
declare const claimReturnAddressSchema: z.ZodObject<{
|
|
@@ -1103,9 +1106,9 @@ type ClaimReturnAddress = z.infer<typeof claimReturnAddressSchema>;
|
|
|
1103
1106
|
declare const myClaimSchema: z.ZodObject<{
|
|
1104
1107
|
claimId: z.ZodString;
|
|
1105
1108
|
type: z.ZodEnum<{
|
|
1106
|
-
CANCEL: "CANCEL";
|
|
1107
1109
|
RETURN: "RETURN";
|
|
1108
1110
|
EXCHANGE: "EXCHANGE";
|
|
1111
|
+
CANCEL: "CANCEL";
|
|
1109
1112
|
}>;
|
|
1110
1113
|
status: z.ZodEnum<{
|
|
1111
1114
|
COMPLETED: "COMPLETED";
|
|
@@ -1393,22 +1396,22 @@ declare const myCouponListQuerySchema: z.ZodObject<{
|
|
|
1393
1396
|
//#endregion
|
|
1394
1397
|
//#region src/schemas/customer-inquiry.d.ts
|
|
1395
1398
|
declare const customerInquiryCategorySchema: z.ZodEnum<{
|
|
1399
|
+
DELIVERY: "DELIVERY";
|
|
1396
1400
|
RETURN: "RETURN";
|
|
1397
1401
|
EXCHANGE: "EXCHANGE";
|
|
1398
|
-
DELIVERY: "DELIVERY";
|
|
1399
|
-
PAYMENT: "PAYMENT";
|
|
1400
1402
|
ETC: "ETC";
|
|
1403
|
+
PAYMENT: "PAYMENT";
|
|
1401
1404
|
}>;
|
|
1402
1405
|
type CustomerInquiryCategory = z.infer<typeof customerInquiryCategorySchema>;
|
|
1403
1406
|
/** 구매자 본인 뷰 — 마스킹 없이 본인 데이터, 셀러 답변(수정횟수 제외) */
|
|
1404
1407
|
declare const customerInquirySchema: z.ZodObject<{
|
|
1405
1408
|
inquiryId: z.ZodString;
|
|
1406
1409
|
category: z.ZodEnum<{
|
|
1410
|
+
DELIVERY: "DELIVERY";
|
|
1407
1411
|
RETURN: "RETURN";
|
|
1408
1412
|
EXCHANGE: "EXCHANGE";
|
|
1409
|
-
DELIVERY: "DELIVERY";
|
|
1410
|
-
PAYMENT: "PAYMENT";
|
|
1411
1413
|
ETC: "ETC";
|
|
1414
|
+
PAYMENT: "PAYMENT";
|
|
1412
1415
|
}>;
|
|
1413
1416
|
title: z.ZodString;
|
|
1414
1417
|
content: z.ZodString;
|
|
@@ -1423,11 +1426,11 @@ declare const customerInquirySchema: z.ZodObject<{
|
|
|
1423
1426
|
type CustomerInquiry = z.infer<typeof customerInquirySchema>;
|
|
1424
1427
|
declare const createCustomerInquiryRequestSchema: z.ZodObject<{
|
|
1425
1428
|
category: z.ZodEnum<{
|
|
1429
|
+
DELIVERY: "DELIVERY";
|
|
1426
1430
|
RETURN: "RETURN";
|
|
1427
1431
|
EXCHANGE: "EXCHANGE";
|
|
1428
|
-
DELIVERY: "DELIVERY";
|
|
1429
|
-
PAYMENT: "PAYMENT";
|
|
1430
1432
|
ETC: "ETC";
|
|
1433
|
+
PAYMENT: "PAYMENT";
|
|
1431
1434
|
}>;
|
|
1432
1435
|
title: z.ZodString;
|
|
1433
1436
|
content: z.ZodString;
|
|
@@ -1436,6 +1439,18 @@ declare const createCustomerInquiryRequestSchema: z.ZodObject<{
|
|
|
1436
1439
|
type CreateCustomerInquiryRequest = z.infer<typeof createCustomerInquiryRequestSchema>;
|
|
1437
1440
|
//#endregion
|
|
1438
1441
|
//#region src/schemas/inquiry.d.ts
|
|
1442
|
+
/**
|
|
1443
|
+
* 상품 문의 유형(이슈 #85) — 관리 API 상품 문의의 `category`와 같은 값이다.
|
|
1444
|
+
* `PRODUCT` 상품(사이즈·소재 등), `DELIVERY` 배송, `RETURN` 반품, `EXCHANGE` 교환, `ETC` 기타
|
|
1445
|
+
*/
|
|
1446
|
+
declare const productInquiryCategorySchema: z.ZodEnum<{
|
|
1447
|
+
PRODUCT: "PRODUCT";
|
|
1448
|
+
DELIVERY: "DELIVERY";
|
|
1449
|
+
RETURN: "RETURN";
|
|
1450
|
+
EXCHANGE: "EXCHANGE";
|
|
1451
|
+
ETC: "ETC";
|
|
1452
|
+
}>;
|
|
1453
|
+
type ProductInquiryCategory = z.infer<typeof productInquiryCategorySchema>;
|
|
1439
1454
|
declare const publicInquirySchema: z.ZodObject<{
|
|
1440
1455
|
inquiryId: z.ZodString;
|
|
1441
1456
|
content: z.ZodNullable<z.ZodString>;
|
|
@@ -1447,11 +1462,28 @@ declare const publicInquirySchema: z.ZodObject<{
|
|
|
1447
1462
|
answeredAt: z.ZodString;
|
|
1448
1463
|
}, z.core.$strip>>;
|
|
1449
1464
|
createdAt: z.ZodString;
|
|
1465
|
+
productId: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
1466
|
+
productName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
1467
|
+
thumbnailUrl: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodURL>>>;
|
|
1468
|
+
category: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
1469
|
+
PRODUCT: "PRODUCT";
|
|
1470
|
+
DELIVERY: "DELIVERY";
|
|
1471
|
+
RETURN: "RETURN";
|
|
1472
|
+
EXCHANGE: "EXCHANGE";
|
|
1473
|
+
ETC: "ETC";
|
|
1474
|
+
}>>>;
|
|
1450
1475
|
}, z.core.$strip>;
|
|
1451
1476
|
type PublicInquiry = z.infer<typeof publicInquirySchema>;
|
|
1452
1477
|
declare const createInquiryRequestSchema: z.ZodObject<{
|
|
1453
1478
|
content: z.ZodString;
|
|
1454
1479
|
secret: z.ZodDefault<z.ZodBoolean>;
|
|
1480
|
+
category: z.ZodOptional<z.ZodEnum<{
|
|
1481
|
+
PRODUCT: "PRODUCT";
|
|
1482
|
+
DELIVERY: "DELIVERY";
|
|
1483
|
+
RETURN: "RETURN";
|
|
1484
|
+
EXCHANGE: "EXCHANGE";
|
|
1485
|
+
ETC: "ETC";
|
|
1486
|
+
}>>;
|
|
1455
1487
|
}, z.core.$strip>;
|
|
1456
1488
|
type CreateInquiryRequest = z.infer<typeof createInquiryRequestSchema>;
|
|
1457
1489
|
/** `POST /products/{productId}/inquiries` 응답 */
|
|
@@ -1609,7 +1641,7 @@ declare const STOREFRONT_SESSION_KEYS: {
|
|
|
1609
1641
|
interface StorefrontSessionOptions {
|
|
1610
1642
|
/** 예: https://shop.api.example.com/storefront/v1 */
|
|
1611
1643
|
baseUrl: string;
|
|
1612
|
-
/** 테넌트
|
|
1644
|
+
/** 테넌트 상점 코드 — X-Store-Code 헤더로 전송한다 */
|
|
1613
1645
|
storeCode?: string;
|
|
1614
1646
|
/** 저장 매체 어댑터 (앱 소유) */
|
|
1615
1647
|
storage: SessionStorage;
|
|
@@ -1646,7 +1678,7 @@ interface StorefrontClientOptions {
|
|
|
1646
1678
|
/** 예: https://demo.store.example.com/api/v1 */
|
|
1647
1679
|
baseUrl: string;
|
|
1648
1680
|
/**
|
|
1649
|
-
* 테넌트
|
|
1681
|
+
* 테넌트 상점 코드 — `X-Store-Code` 헤더로 전송한다. 공유 API 호스트로 접근할 때
|
|
1650
1682
|
* 서버가 Host 서브도메인을 추측하는 대신 명시적으로 테넌트를 지정한다(멀티테넌트 격리).
|
|
1651
1683
|
* 함수로 전달하면 매 요청마다 재평가.
|
|
1652
1684
|
*/
|
|
@@ -1764,13 +1796,21 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1764
1796
|
}>;
|
|
1765
1797
|
};
|
|
1766
1798
|
store: {
|
|
1767
|
-
/**
|
|
1799
|
+
/** 상점 공개 설정 — 이름·고객센터·비회원 주문 허용 여부 */
|
|
1768
1800
|
get: () => Promise<{
|
|
1769
1801
|
storeCode: string;
|
|
1770
1802
|
name: string;
|
|
1771
1803
|
logoUrl: string | null;
|
|
1772
1804
|
customerCenterPhone: string | null;
|
|
1773
1805
|
businessHours: string | null;
|
|
1806
|
+
businessName: string | null;
|
|
1807
|
+
representativeName: string | null;
|
|
1808
|
+
businessNumber: string | null;
|
|
1809
|
+
mailOrderSalesNumber: string | null;
|
|
1810
|
+
businessAddress: string | null;
|
|
1811
|
+
customerCenterEmail: string | null;
|
|
1812
|
+
privacyOfficerName: string | null;
|
|
1813
|
+
privacyOfficerEmail: string | null;
|
|
1774
1814
|
guestCheckout: boolean;
|
|
1775
1815
|
loginMethods: ("password" | "kakao" | "naver" | "google")[];
|
|
1776
1816
|
checkoutAvailable: boolean;
|
|
@@ -1792,6 +1832,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1792
1832
|
salePrice: number;
|
|
1793
1833
|
discountedPrice: number | null;
|
|
1794
1834
|
discountRate: number | null;
|
|
1835
|
+
originalPrice: number | null;
|
|
1795
1836
|
freeShipping: boolean;
|
|
1796
1837
|
fulfillment: {
|
|
1797
1838
|
type: string;
|
|
@@ -1820,6 +1861,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1820
1861
|
salePrice: number;
|
|
1821
1862
|
discountedPrice: number | null;
|
|
1822
1863
|
discountRate: number | null;
|
|
1864
|
+
originalPrice: number | null;
|
|
1823
1865
|
freeShipping: boolean;
|
|
1824
1866
|
averageRating: number;
|
|
1825
1867
|
reviewCount: number;
|
|
@@ -1923,6 +1965,10 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1923
1965
|
answeredAt: string;
|
|
1924
1966
|
} | null;
|
|
1925
1967
|
createdAt: string;
|
|
1968
|
+
productId: string | null;
|
|
1969
|
+
productName: string | null;
|
|
1970
|
+
thumbnailUrl: string | null;
|
|
1971
|
+
category: "PRODUCT" | "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC";
|
|
1926
1972
|
}[];
|
|
1927
1973
|
}>;
|
|
1928
1974
|
createInquiry: (productId: string, body: CreateInquiryRequest) => Promise<void>;
|
|
@@ -2143,10 +2189,10 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2143
2189
|
* `@sayren/storefront-sdk/payments`의 `createPayments().start()`다 — 이 메서드는 값만 받는다.
|
|
2144
2190
|
*
|
|
2145
2191
|
* 에러(`ApiError.code`):
|
|
2146
|
-
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이
|
|
2192
|
+
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이 상점에서 쓸 수 없는 옵션. `details.paymentOptions`에 지금 목록
|
|
2147
2193
|
* - 409 `PAYMENT_NOT_CONFIGURED`: 사용 중인 PG가 없다
|
|
2148
2194
|
* - 400 `RETURN_URL_NOT_ALLOWED`: `returnUrl`이 https가 아니거나(테스트 결제의 localhost는 예외),
|
|
2149
|
-
*
|
|
2195
|
+
* 상점이 결제 도메인을 등록했는데 그 안이 아니다. 등록하지 않았으면 https 주소는 모두 받는다
|
|
2150
2196
|
* - 503 `PAYMENT_PROVIDER_UNAVAILABLE`: 고른 PG의 결제창을 준비하지 못했다(다른 옵션으로 다시 시도)
|
|
2151
2197
|
*/
|
|
2152
2198
|
startPayment: (checkoutId: string, body: StartPaymentRequest) => Promise<{
|
|
@@ -2252,7 +2298,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2252
2298
|
* `expiresAt`까지 폴링한다. `completed`면 `orderId`로 완료 화면, `failed`·`expired`면 실패 안내다.
|
|
2253
2299
|
* TTL이 지난 `pending`은 `expired`로 보고된다. `testPayment`는 완료면 주문 플래그, 아니면 세션 환경이다.
|
|
2254
2300
|
*
|
|
2255
|
-
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른
|
|
2301
|
+
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른 상점) · 410 `STORE_CLOSED` · 503 `STORE_SUSPENDED`
|
|
2256
2302
|
*/
|
|
2257
2303
|
getStatus: (paymentId: string) => Promise<{
|
|
2258
2304
|
paymentId: string;
|
|
@@ -2464,7 +2510,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2464
2510
|
*
|
|
2465
2511
|
* 에러: 404 `ORDER_NOT_FOUND`(주문이 없거나 연락처·비밀번호가 다름 — 둘을 구분하지 않는다) ·
|
|
2466
2512
|
* 429 `TOO_MANY_REQUESTS`(주문번호마다 10분에 5번까지 확인하고, 5번째가 틀리면 30분 잠금.
|
|
2467
|
-
* 주문번호마다 하루 15번,
|
|
2513
|
+
* 주문번호마다 하루 15번, 상점 전체 분당 한도도 있다. 남은 시간은 `ApiError.details.retryAfterSeconds`).
|
|
2468
2514
|
* 맞게 조회하면 주문번호의 횟수가 초기화된다. 본문 형식은 `guestInfoSchema`의 `phone`·`orderPassword`와 같다.
|
|
2469
2515
|
* 429는 연락처·비밀번호가 맞아도 난다 — 「잠시 후 다시 시도」로 안내한다.
|
|
2470
2516
|
*/
|
|
@@ -2575,7 +2621,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2575
2621
|
totalPages: number;
|
|
2576
2622
|
contents: {
|
|
2577
2623
|
claimId: string;
|
|
2578
|
-
type: "
|
|
2624
|
+
type: "RETURN" | "EXCHANGE" | "CANCEL";
|
|
2579
2625
|
status: "COMPLETED" | "REQUESTED" | "HELD" | "COLLECTING" | "COLLECTED" | "REDELIVERING" | "APPROVED" | "REJECTED" | "WITHDRAWN";
|
|
2580
2626
|
orderItemId: string;
|
|
2581
2627
|
productName: string;
|
|
@@ -2697,6 +2743,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2697
2743
|
salePrice: number;
|
|
2698
2744
|
discountedPrice: number | null;
|
|
2699
2745
|
discountRate: number | null;
|
|
2746
|
+
originalPrice: number | null;
|
|
2700
2747
|
freeShipping: boolean;
|
|
2701
2748
|
fulfillment: {
|
|
2702
2749
|
type: string;
|
|
@@ -2745,6 +2792,10 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2745
2792
|
answeredAt: string;
|
|
2746
2793
|
} | null;
|
|
2747
2794
|
createdAt: string;
|
|
2795
|
+
productId: string | null;
|
|
2796
|
+
productName: string | null;
|
|
2797
|
+
thumbnailUrl: string | null;
|
|
2798
|
+
category: "PRODUCT" | "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC";
|
|
2748
2799
|
}[];
|
|
2749
2800
|
}>;
|
|
2750
2801
|
};
|
|
@@ -2773,7 +2824,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2773
2824
|
customerInquiries: {
|
|
2774
2825
|
create: (body: CreateCustomerInquiryRequest) => Promise<{
|
|
2775
2826
|
inquiryId: string;
|
|
2776
|
-
category: "
|
|
2827
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2777
2828
|
title: string;
|
|
2778
2829
|
content: string;
|
|
2779
2830
|
orderItemId: string | null;
|
|
@@ -2794,7 +2845,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2794
2845
|
totalPages: number;
|
|
2795
2846
|
contents: {
|
|
2796
2847
|
inquiryId: string;
|
|
2797
|
-
category: "
|
|
2848
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2798
2849
|
title: string;
|
|
2799
2850
|
content: string;
|
|
2800
2851
|
orderItemId: string | null;
|
|
@@ -2808,7 +2859,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2808
2859
|
}>;
|
|
2809
2860
|
get: (inquiryId: string) => Promise<{
|
|
2810
2861
|
inquiryId: string;
|
|
2811
|
-
category: "
|
|
2862
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2812
2863
|
title: string;
|
|
2813
2864
|
content: string;
|
|
2814
2865
|
orderItemId: string | null;
|
|
@@ -3168,7 +3219,7 @@ type CustomInputView = z.infer<typeof customInputViewSchema>;
|
|
|
3168
3219
|
declare function normalizeCustomInputValue(value: string): string;
|
|
3169
3220
|
/**
|
|
3170
3221
|
* 직접 입력값의 글자 수 — 정규화한 값의 **코드 포인트 수**다(이모지 하나가 1자). 서버의 최대 글자 수 판정(`CUSTOM_INPUT_TOO_LONG`)과
|
|
3171
|
-
*
|
|
3222
|
+
* 스토어프론트·상점 플랫폼의 글자 수 표시가 이 함수 하나를 쓴다. `String.length`(UTF-16)로 세면 이모지가 2자로 세어 판정이 갈린다.
|
|
3172
3223
|
*/
|
|
3173
3224
|
declare function customInputLength(value: string): number;
|
|
3174
3225
|
/** 담기·바로 구매 요청의 직접 입력값 한 칸. 앞뒤 공백을 지우고, 빈 값은 입력하지 않은 것으로 본다 */
|
|
@@ -3223,7 +3274,7 @@ declare const lineSelectionResponseShape: {
|
|
|
3223
3274
|
//#endregion
|
|
3224
3275
|
//#region src/schemas/store.d.ts
|
|
3225
3276
|
/**
|
|
3226
|
-
*
|
|
3277
|
+
* 상점 공개 설정 — `GET /store`. 스토어프론트가 화면을 그릴 때 읽는 값만 담는다.
|
|
3227
3278
|
*/
|
|
3228
3279
|
declare const storefrontStoreSchema: z.ZodObject<{
|
|
3229
3280
|
storeCode: z.ZodString;
|
|
@@ -3231,6 +3282,14 @@ declare const storefrontStoreSchema: z.ZodObject<{
|
|
|
3231
3282
|
logoUrl: z.ZodNullable<z.ZodString>;
|
|
3232
3283
|
customerCenterPhone: z.ZodNullable<z.ZodString>;
|
|
3233
3284
|
businessHours: z.ZodNullable<z.ZodString>;
|
|
3285
|
+
businessName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3286
|
+
representativeName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3287
|
+
businessNumber: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3288
|
+
mailOrderSalesNumber: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3289
|
+
businessAddress: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3290
|
+
customerCenterEmail: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3291
|
+
privacyOfficerName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3292
|
+
privacyOfficerEmail: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3234
3293
|
guestCheckout: z.ZodBoolean;
|
|
3235
3294
|
loginMethods: z.ZodArray<z.ZodEnum<{
|
|
3236
3295
|
password: "password";
|
|
@@ -3250,4 +3309,4 @@ declare const storefrontStoreSchema: z.ZodObject<{
|
|
|
3250
3309
|
}, z.core.$strip>;
|
|
3251
3310
|
type StorefrontStore = z.infer<typeof storefrontStoreSchema>;
|
|
3252
3311
|
//#endregion
|
|
3253
|
-
export { CreateReviewRequest as $,
|
|
3312
|
+
export { CreateReviewRequest as $, StartPaymentRequest as $n, lineFulfillmentSchema as $r, couponResultSchema as $t, ANALYTICS_MAX_BATCH_BYTES as A, CashReceiptRequest as An, ProductFacets as Ar, createInquiryResultSchema as At, analyticsBatchSchema as B, KnownPaymentStatus as Bn, ClaimStatus as Br, CheckoutPricing as Bt, PurchaseDecisionResult as C, claimTypeSchema as Cn, residentNumberLike as Cr, updateProfileRequestSchema as Ct, orderShippingAddressSchema as D, AvailablePaymentOption as Dn, CategoryNode as Dr, ProductInquiryCategory as Dt, myOrderSchema as E, myClaimSchema as En, startPaymentRequestSchema as Er, CreateInquiryResult as Et, AnalyticsBatch as F, DeliveryQuoteRequest as Fn, productCardSchema as Fr, CustomerInquiryCategory as Ft, StorefrontClient as G, PaymentMethod as Gn, orderItemStatusSchema as Gr, MIN_PAYMENT_AMOUNT as Gt, analyticsClientEventSchema as H, PAYMENT_STATUS_VALUES as Hn, PageInfo as Hr, CouponApplication as Ht, AnalyticsClientEvent as I, DeliveryQuoteResult as In, productDetailSchema as Ir, createCustomerInquiryRequestSchema as It, STOREFRONT_SESSION_KEYS as J, PaymentStatus as Jn, LineFulfillment as Jr, checkoutPricingRequestSchema as Jt, StorefrontClientOptions as K, PaymentOption as Kn, pageInfoSchema as Kr, MyCoupon as Kt, AnalyticsClientEventName as L, EasyPayProvider as Ln, productFacetsSchema as Lr, customerInquiryCategorySchema as Lt, ANALYTICS_SESSION_HEADER as M, CheckoutDelivery as Mn, ProductSearchParams as Mr, publicInquirySchema as Mt, ANALYTICS_VISITOR_COOKIE as N, CheckoutSession as Nn, ProductSort as Nr, CreateCustomerInquiryRequest as Nt, purchaseDecisionResultSchema as O, CASH_RECEIPT_METHODS as On, ProductCard as Or, PublicInquiry as Ot, ANALYTICS_VISITOR_HEADER as P, CreateCheckoutRequest as Pn, categoryNodeSchema as Pr, CustomerInquiry as Pt, createStorefrontSession as Q, ShippingAddressInput as Qn, UnknownFulfillmentView as Qr, couponBenefitViewSchema as Qt, AnalyticsEventName as R, GuestInfo as Rn, productPageSchema as Rr, customerInquirySchema as Rt, OrderShippingAddress as S, claimReturnAddressSchema as Sn, remoteAreaSchema as Sr, memberSchema as St, myOrderItemSchema as T, createClaimResultSchema as Tn, shippingAddressInputSchema as Tr, CreateInquiryRequest as Tt, analyticsIdSchema as U, PaymentFailureCategory as Un, PageParams as Ur, CouponResult as Ut, analyticsClientEventNameSchema as V, PAYMENT_RESULT_VALUES as Vn, OrderItemStatus as Vr, CheckoutPricingRequest as Vt, analyticsServerEventNameSchema as W, PaymentMessage as Wn, claimStatusSchema as Wr, MAX_COUPONS_PER_CHECKOUT as Wt, StorefrontSession as X, RemoteArea as Xn, ProductCardFulfillment as Xr, couponApplicationListSchema as Xt, SessionStorage as Y, PgProvider as Yn, MyOrderItemFulfillmentSnapshot as Yr, checkoutPricingSchema as Yt, StorefrontSessionOptions as Z, RetryPaymentRequest as Zn, ProductFulfillmentView as Zr, couponApplicationSchema as Zt, normalizeCustomInputValue as _, ClaimType as _n, paymentOptionListSchema as _r, MemberAddressRequest as _t, CustomInputEntry as a, CartItem as ai, ConsentSource as an, checkoutDeliverySchema as ar, UpdateReviewResult as at, MyOrder as b, MyClaim as bn, paymentStatusSchema as br, memberAddressRequestSchema as bt, OptionSelectionView as c, cartItemSchema as ci, MemberConsents as cn, deliveryQuoteRequestSchema as cr, createReviewResultSchema as ct, customInputEntrySchema as d, analyticsIdsFromCookie as di, consentSourceSchema as dn, easyPayProviderSchema as dr, reviewSummarySchema as dt, myOrderItemFulfillmentSnapshotSchema as ei, myCouponListQuerySchema as en, availablePaymentOptionSchema as er, CreateReviewResult as et, customInputLength as f, consentStateSchema as fn, guestInfoSchema as fr, updateReviewRequestSchema as ft, lineSelectionResponseShape as g, ClaimReturnAddress as gn, paymentOptionKey as gr, MemberAddress as gt, lineSelectionRequestShape as h, ClaimReason as hn, paymentMethodSchema as hr, Member as ht, AddonSelection as i, Cart as ii, ConsentKind as in, cashReceiptTypeSchema as ir, UpdateReviewRequest as it, ANALYTICS_SESSION_COOKIE as j, CashReceiptType as jn, ProductPage as jr, productInquiryCategorySchema as jt, trackingStageResponseSchema as k, CashReceiptIdentityType as kn, ProductDetail as kr, createInquiryRequestSchema as kt, addonGroupViewSchema as l, cartSchema as li, consentActionSchema as ln, deliveryQuoteSchema as lr, publicReviewSchema as lt, customInputViewSchema as m, memberConsentsSchema as mn, paymentMessageSchema as mr, writableReviewSchema as mt, storefrontStoreSchema as n, productFulfillmentViewSchema as ni, pricingAmountsSchema as nn, cashReceiptIdentityTypeOf as nr, ReviewPage as nt, CustomInputValueView as o, UpdateCartItemRequest as oi, ConsentState as on, checkoutSessionSchema as or, WritableReview as ot, customInputValueViewSchema as p, consentUpdateRequestSchema as pn, paymentFailureCategorySchema as pr, updateReviewResultSchema as pt, createStorefrontClient as q, PaymentStart as qn, pageSchema as qr, applicableCouponSchema as qt, AddonGroupView as r, AddCartItemRequest as ri, ConsentAction as rn, cashReceiptRequestSchema as rr, ReviewSummary as rt, CustomInputView as s, addCartItemRequestSchema as si, ConsentUpdateRequest as sn, createCheckoutRequestSchema as sr, createReviewRequestSchema as st, StorefrontStore as t, productCardFulfillmentSchema as ti, myCouponSchema as tn, cashReceiptAvailable as tr, PublicReview as tt, addonSelectionSchema as u, updateCartItemRequestSchema as ui, consentKindSchema as un, easyPayProviderResponseSchema as ur, reviewPageSchema as ut, optionSelectionViewSchema as v, CreateClaimRequest as vn, paymentOptionSchema as vr, UpdateProfileRequest as vt, deliveryTrackingSchema as w, createClaimRequestSchema as wn, retryPaymentRequestSchema as wr, wishlistAddResultSchema as wt, MyOrderItem as x, claimReasonSchema as xn, pgProviderSchema as xr, memberAddressSchema as xt, DeliveryTracking as y, CreateClaimResult as yn, paymentStartSchema as yr, WishlistAddResult as yt, AnalyticsServerEventName as z, KnownPaymentResult as zn, productSortSchema as zr, ApplicableCoupon as zt };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { C as loginRequestSchema, D as tokenPairSchema, E as socialProviderSchema, O as withdrawRequestSchema, S as linkIdentityRequestSchema, T as signupRequestSchema, _ as anonymousSessionSchema, a as AnonymousSession, b as idpAuthorizeResponseSchema, c as IdpTokenRequest, d as MemberIdentities, f as SignupRequest, g as WithdrawalBlockedDetails, h as WithdrawRequest, i as buildQuery, k as withdrawalBlockedDetailsSchema, l as LinkIdentityRequest, m as TokenPair, n as Query, o as IdpAgreements, p as SocialProvider, r as TokenSource, s as IdpAuthorizeRequest, t as ApiError, u as LoginRequest, v as idpAgreementsSchema, w as memberIdentitiesSchema, x as idpTokenRequestSchema, y as idpAuthorizeRequestSchema } from "./http-1ab7tP4-.mjs";
|
|
2
|
-
import { $ as CreateReviewRequest, $n as
|
|
3
|
-
export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, AddCartItemRequest, AddonGroupView, AddonSelection, AnalyticsBatch, AnalyticsClientEvent, AnalyticsClientEventName, AnalyticsEventName, AnalyticsServerEventName, AnonymousSession, ApiError, ApplicableCoupon, AvailablePaymentOption, CASH_RECEIPT_METHODS, Cart, CartItem, CashReceiptIdentityType, CashReceiptRequest, CashReceiptType, CategoryNode, CheckoutDelivery, CheckoutPricing, CheckoutPricingRequest, CheckoutSession, ClaimReason, ClaimReturnAddress, ClaimStatus, ClaimType, ConsentAction, ConsentKind, ConsentSource, ConsentState, ConsentUpdateRequest, CouponApplication, CouponResult, CreateCheckoutRequest, CreateClaimRequest, CreateClaimResult, CreateCustomerInquiryRequest, CreateInquiryRequest, CreateInquiryResult, CreateReviewRequest, CreateReviewResult, CustomInputEntry, CustomInputValueView, CustomInputView, CustomerInquiry, CustomerInquiryCategory, DeliveryQuoteRequest, DeliveryQuoteResult, DeliveryTracking, EasyPayProvider, GuestInfo, IdpAgreements, IdpAuthorizeRequest, IdpTokenRequest, KnownPaymentResult, KnownPaymentStatus, LineFulfillment, LinkIdentityRequest, LoginRequest, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, Member, MemberAddress, MemberAddressRequest, MemberConsents, MemberIdentities, MyClaim, MyCoupon, MyOrder, MyOrderItem, MyOrderItemFulfillmentSnapshot, OptionSelectionView, OrderItemStatus, OrderShippingAddress, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, PageInfo, PageParams, PaymentFailureCategory, PaymentMessage, PaymentMethod, PaymentOption, PaymentStart, PaymentStatus, PgProvider, ProductCard, ProductCardFulfillment, ProductDetail, ProductFacets, ProductFulfillmentView, ProductPage, ProductSearchParams, ProductSort, PublicInquiry, PublicReview, PurchaseDecisionResult, type Query, RemoteArea, RetryPaymentRequest, ReviewPage, ReviewSummary, STOREFRONT_SESSION_KEYS, type SessionStorage, ShippingAddressInput, SignupRequest, SocialProvider, StartPaymentRequest, type StorefrontClient, type StorefrontClientOptions, type StorefrontSession, type StorefrontSessionOptions, StorefrontStore, TokenPair, type TokenSource, UnknownFulfillmentView, UpdateCartItemRequest, UpdateProfileRequest, UpdateReviewRequest, UpdateReviewResult, WishlistAddResult, WithdrawRequest, WithdrawalBlockedDetails, WritableReview, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productPageSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
|
2
|
+
import { $ as CreateReviewRequest, $n as StartPaymentRequest, $r as lineFulfillmentSchema, $t as couponResultSchema, A as ANALYTICS_MAX_BATCH_BYTES, An as CashReceiptRequest, Ar as ProductFacets, At as createInquiryResultSchema, B as analyticsBatchSchema, Bn as KnownPaymentStatus, Br as ClaimStatus, Bt as CheckoutPricing, C as PurchaseDecisionResult, Cn as claimTypeSchema, Cr as residentNumberLike, Ct as updateProfileRequestSchema, D as orderShippingAddressSchema, Dn as AvailablePaymentOption, Dr as CategoryNode, Dt as ProductInquiryCategory, E as myOrderSchema, En as myClaimSchema, Er as startPaymentRequestSchema, Et as CreateInquiryResult, F as AnalyticsBatch, Fn as DeliveryQuoteRequest, Fr as productCardSchema, Ft as CustomerInquiryCategory, G as StorefrontClient, Gn as PaymentMethod, Gr as orderItemStatusSchema, Gt as MIN_PAYMENT_AMOUNT, H as analyticsClientEventSchema, Hn as PAYMENT_STATUS_VALUES, Hr as PageInfo, Ht as CouponApplication, I as AnalyticsClientEvent, In as DeliveryQuoteResult, Ir as productDetailSchema, It as createCustomerInquiryRequestSchema, J as STOREFRONT_SESSION_KEYS, Jn as PaymentStatus, Jr as LineFulfillment, Jt as checkoutPricingRequestSchema, K as StorefrontClientOptions, Kn as PaymentOption, Kr as pageInfoSchema, Kt as MyCoupon, L as AnalyticsClientEventName, Ln as EasyPayProvider, Lr as productFacetsSchema, Lt as customerInquiryCategorySchema, M as ANALYTICS_SESSION_HEADER, Mn as CheckoutDelivery, Mr as ProductSearchParams, Mt as publicInquirySchema, N as ANALYTICS_VISITOR_COOKIE, Nn as CheckoutSession, Nr as ProductSort, Nt as CreateCustomerInquiryRequest, O as purchaseDecisionResultSchema, On as CASH_RECEIPT_METHODS, Or as ProductCard, Ot as PublicInquiry, P as ANALYTICS_VISITOR_HEADER, Pn as CreateCheckoutRequest, Pr as categoryNodeSchema, Pt as CustomerInquiry, Q as createStorefrontSession, Qn as ShippingAddressInput, Qr as UnknownFulfillmentView, Qt as couponBenefitViewSchema, R as AnalyticsEventName, Rn as GuestInfo, Rr as productPageSchema, Rt as customerInquirySchema, S as OrderShippingAddress, Sn as claimReturnAddressSchema, Sr as remoteAreaSchema, St as memberSchema, T as myOrderItemSchema, Tn as createClaimResultSchema, Tr as shippingAddressInputSchema, Tt as CreateInquiryRequest, U as analyticsIdSchema, Un as PaymentFailureCategory, Ur as PageParams, Ut as CouponResult, V as analyticsClientEventNameSchema, Vn as PAYMENT_RESULT_VALUES, Vr as OrderItemStatus, Vt as CheckoutPricingRequest, W as analyticsServerEventNameSchema, Wn as PaymentMessage, Wr as claimStatusSchema, Wt as MAX_COUPONS_PER_CHECKOUT, X as StorefrontSession, Xn as RemoteArea, Xr as ProductCardFulfillment, Xt as couponApplicationListSchema, Y as SessionStorage, Yn as PgProvider, Yr as MyOrderItemFulfillmentSnapshot, Yt as checkoutPricingSchema, Z as StorefrontSessionOptions, Zn as RetryPaymentRequest, Zr as ProductFulfillmentView, Zt as couponApplicationSchema, _ as normalizeCustomInputValue, _n as ClaimType, _r as paymentOptionListSchema, _t as MemberAddressRequest, a as CustomInputEntry, ai as CartItem, an as ConsentSource, ar as checkoutDeliverySchema, at as UpdateReviewResult, b as MyOrder, bn as MyClaim, br as paymentStatusSchema, bt as memberAddressRequestSchema, c as OptionSelectionView, ci as cartItemSchema, cn as MemberConsents, cr as deliveryQuoteRequestSchema, ct as createReviewResultSchema, d as customInputEntrySchema, di as analyticsIdsFromCookie, dn as consentSourceSchema, dr as easyPayProviderSchema, dt as reviewSummarySchema, ei as myOrderItemFulfillmentSnapshotSchema, en as myCouponListQuerySchema, er as availablePaymentOptionSchema, et as CreateReviewResult, f as customInputLength, fn as consentStateSchema, fr as guestInfoSchema, ft as updateReviewRequestSchema, g as lineSelectionResponseShape, gn as ClaimReturnAddress, gr as paymentOptionKey, gt as MemberAddress, h as lineSelectionRequestShape, hn as ClaimReason, hr as paymentMethodSchema, ht as Member, i as AddonSelection, ii as Cart, in as ConsentKind, ir as cashReceiptTypeSchema, it as UpdateReviewRequest, j as ANALYTICS_SESSION_COOKIE, jn as CashReceiptType, jr as ProductPage, jt as productInquiryCategorySchema, k as trackingStageResponseSchema, kn as CashReceiptIdentityType, kr as ProductDetail, kt as createInquiryRequestSchema, l as addonGroupViewSchema, li as cartSchema, ln as consentActionSchema, lr as deliveryQuoteSchema, lt as publicReviewSchema, m as customInputViewSchema, mn as memberConsentsSchema, mr as paymentMessageSchema, mt as writableReviewSchema, n as storefrontStoreSchema, ni as productFulfillmentViewSchema, nn as pricingAmountsSchema, nr as cashReceiptIdentityTypeOf, nt as ReviewPage, o as CustomInputValueView, oi as UpdateCartItemRequest, on as ConsentState, or as checkoutSessionSchema, ot as WritableReview, p as customInputValueViewSchema, pn as consentUpdateRequestSchema, pr as paymentFailureCategorySchema, pt as updateReviewResultSchema, q as createStorefrontClient, qn as PaymentStart, qr as pageSchema, qt as applicableCouponSchema, r as AddonGroupView, ri as AddCartItemRequest, rn as ConsentAction, rr as cashReceiptRequestSchema, rt as ReviewSummary, s as CustomInputView, si as addCartItemRequestSchema, sn as ConsentUpdateRequest, sr as createCheckoutRequestSchema, st as createReviewRequestSchema, t as StorefrontStore, ti as productCardFulfillmentSchema, tn as myCouponSchema, tr as cashReceiptAvailable, tt as PublicReview, u as addonSelectionSchema, ui as updateCartItemRequestSchema, un as consentKindSchema, ur as easyPayProviderResponseSchema, ut as reviewPageSchema, v as optionSelectionViewSchema, vn as CreateClaimRequest, vr as paymentOptionSchema, vt as UpdateProfileRequest, w as deliveryTrackingSchema, wn as createClaimRequestSchema, wr as retryPaymentRequestSchema, wt as wishlistAddResultSchema, x as MyOrderItem, xn as claimReasonSchema, xr as pgProviderSchema, xt as memberAddressSchema, y as DeliveryTracking, yn as CreateClaimResult, yr as paymentStartSchema, yt as WishlistAddResult, z as AnalyticsServerEventName, zn as KnownPaymentResult, zr as productSortSchema, zt as ApplicableCoupon } from "./index-D2WiGpwr.mjs";
|
|
3
|
+
export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, AddCartItemRequest, AddonGroupView, AddonSelection, AnalyticsBatch, AnalyticsClientEvent, AnalyticsClientEventName, AnalyticsEventName, AnalyticsServerEventName, AnonymousSession, ApiError, ApplicableCoupon, AvailablePaymentOption, CASH_RECEIPT_METHODS, Cart, CartItem, CashReceiptIdentityType, CashReceiptRequest, CashReceiptType, CategoryNode, CheckoutDelivery, CheckoutPricing, CheckoutPricingRequest, CheckoutSession, ClaimReason, ClaimReturnAddress, ClaimStatus, ClaimType, ConsentAction, ConsentKind, ConsentSource, ConsentState, ConsentUpdateRequest, CouponApplication, CouponResult, CreateCheckoutRequest, CreateClaimRequest, CreateClaimResult, CreateCustomerInquiryRequest, CreateInquiryRequest, CreateInquiryResult, CreateReviewRequest, CreateReviewResult, CustomInputEntry, CustomInputValueView, CustomInputView, CustomerInquiry, CustomerInquiryCategory, DeliveryQuoteRequest, DeliveryQuoteResult, DeliveryTracking, EasyPayProvider, GuestInfo, IdpAgreements, IdpAuthorizeRequest, IdpTokenRequest, KnownPaymentResult, KnownPaymentStatus, LineFulfillment, LinkIdentityRequest, LoginRequest, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, Member, MemberAddress, MemberAddressRequest, MemberConsents, MemberIdentities, MyClaim, MyCoupon, MyOrder, MyOrderItem, MyOrderItemFulfillmentSnapshot, OptionSelectionView, OrderItemStatus, OrderShippingAddress, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, PageInfo, PageParams, PaymentFailureCategory, PaymentMessage, PaymentMethod, PaymentOption, PaymentStart, PaymentStatus, PgProvider, ProductCard, ProductCardFulfillment, ProductDetail, ProductFacets, ProductFulfillmentView, ProductInquiryCategory, ProductPage, ProductSearchParams, ProductSort, PublicInquiry, PublicReview, PurchaseDecisionResult, type Query, RemoteArea, RetryPaymentRequest, ReviewPage, ReviewSummary, STOREFRONT_SESSION_KEYS, type SessionStorage, ShippingAddressInput, SignupRequest, SocialProvider, StartPaymentRequest, type StorefrontClient, type StorefrontClientOptions, type StorefrontSession, type StorefrontSessionOptions, StorefrontStore, TokenPair, type TokenSource, UnknownFulfillmentView, UpdateCartItemRequest, UpdateProfileRequest, UpdateReviewRequest, UpdateReviewResult, WishlistAddResult, WithdrawRequest, WithdrawalBlockedDetails, WritableReview, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productInquiryCategorySchema, productPageSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as ANALYTICS_VISITOR_HEADER, c as analyticsClientEventSchema, i as ANALYTICS_VISITOR_COOKIE, l as analyticsIdSchema, n as ANALYTICS_SESSION_COOKIE, o as analyticsBatchSchema, r as ANALYTICS_SESSION_HEADER, s as analyticsClientEventNameSchema, t as ANALYTICS_MAX_BATCH_BYTES, u as analyticsServerEventNameSchema } from "./analytics-CgD70OqH.mjs";
|
|
2
2
|
import { t as analyticsIdsFromCookie } from "./analytics-ids-COElZiI3.mjs";
|
|
3
|
-
import { $ as
|
|
4
|
-
import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, B as myCouponListQuerySchema, C as paymentStartSchema, D as residentNumberLike, E as remoteAreaSchema, F as checkoutPricingSchema, G as customInputEntrySchema, H as pricingAmountsSchema, I as couponApplicationListSchema, J as customInputViewSchema, K as customInputLength, L as couponApplicationSchema, M as MIN_PAYMENT_AMOUNT, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, Q as optionSelectionViewSchema, R as couponBenefitViewSchema, S as paymentOptionSchema, T as pgProviderSchema, U as addonGroupViewSchema, V as myCouponSchema, W as addonSelectionSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, Z as normalizeCustomInputValue, _ as paymentFailureCategorySchema, a as cashReceiptAvailable, b as paymentOptionKey, c as cashReceiptTypeSchema, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, g as guestInfoSchema, h as easyPayProviderSchema, i as availablePaymentOptionSchema, j as MAX_COUPONS_PER_CHECKOUT, k as shippingAddressInputSchema, l as checkoutDeliverySchema, m as easyPayProviderResponseSchema, n as PAYMENT_RESULT_VALUES, nt as productFulfillmentViewSchema, o as cashReceiptIdentityTypeOf, p as deliveryQuoteSchema, q as customInputValueViewSchema, r as PAYMENT_STATUS_VALUES, s as cashReceiptRequestSchema, t as CASH_RECEIPT_METHODS, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, v as paymentMessageSchema, w as paymentStatusSchema, x as paymentOptionListSchema, y as paymentMethodSchema, z as couponResultSchema } from "./checkout-
|
|
3
|
+
import { $ as cartSchema, A as consentKindSchema, B as myClaimSchema, C as createInquiryResultSchema, D as customerInquiryCategorySchema, E as createCustomerInquiryRequestSchema, F as claimReasonSchema, G as productPageSchema, H as productCardSchema, I as claimReturnAddressSchema, J as orderItemStatusSchema, K as productSortSchema, L as claimTypeSchema, M as consentStateSchema, N as consentUpdateRequestSchema, O as customerInquirySchema, P as memberConsentsSchema, Q as cartItemSchema, R as createClaimRequestSchema, S as createInquiryRequestSchema, T as publicInquirySchema, U as productDetailSchema, V as categoryNodeSchema, W as productFacetsSchema, X as pageSchema, Y as pageInfoSchema, Z as addCartItemRequestSchema, _ as memberAddressRequestSchema, _t as unwrapData, a as publicReviewSchema, at as idpTokenRequestSchema, b as updateProfileRequestSchema, c as updateReviewRequestSchema, ct as memberIdentitiesSchema, d as deliveryTrackingSchema, dt as tokenPairSchema, et as updateCartItemRequestSchema, f as myOrderItemSchema, ft as withdrawRequestSchema, g as trackingStageResponseSchema, gt as toApiError, h as purchaseDecisionResultSchema, ht as buildQuery, i as createReviewResultSchema, it as idpAuthorizeResponseSchema, j as consentSourceSchema, k as consentActionSchema, l as updateReviewResultSchema, lt as signupRequestSchema, m as orderShippingAddressSchema, mt as ApiError, n as storefrontStoreSchema, nt as idpAgreementsSchema, o as reviewPageSchema, ot as linkIdentityRequestSchema, p as myOrderSchema, pt as withdrawalBlockedDetailsSchema, q as claimStatusSchema, r as createReviewRequestSchema, rt as idpAuthorizeRequestSchema, s as reviewSummarySchema, st as loginRequestSchema, t as createStorefrontClient, tt as anonymousSessionSchema, u as writableReviewSchema, ut as socialProviderSchema, v as memberAddressSchema, w as productInquiryCategorySchema, x as wishlistAddResultSchema, y as memberSchema, z as createClaimResultSchema } from "./client-BNChG_51.mjs";
|
|
4
|
+
import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, B as myCouponListQuerySchema, C as paymentStartSchema, D as residentNumberLike, E as remoteAreaSchema, F as checkoutPricingSchema, G as customInputEntrySchema, H as pricingAmountsSchema, I as couponApplicationListSchema, J as customInputViewSchema, K as customInputLength, L as couponApplicationSchema, M as MIN_PAYMENT_AMOUNT, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, Q as optionSelectionViewSchema, R as couponBenefitViewSchema, S as paymentOptionSchema, T as pgProviderSchema, U as addonGroupViewSchema, V as myCouponSchema, W as addonSelectionSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, Z as normalizeCustomInputValue, _ as paymentFailureCategorySchema, a as cashReceiptAvailable, b as paymentOptionKey, c as cashReceiptTypeSchema, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, g as guestInfoSchema, h as easyPayProviderSchema, i as availablePaymentOptionSchema, j as MAX_COUPONS_PER_CHECKOUT, k as shippingAddressInputSchema, l as checkoutDeliverySchema, m as easyPayProviderResponseSchema, n as PAYMENT_RESULT_VALUES, nt as productFulfillmentViewSchema, o as cashReceiptIdentityTypeOf, p as deliveryQuoteSchema, q as customInputValueViewSchema, r as PAYMENT_STATUS_VALUES, s as cashReceiptRequestSchema, t as CASH_RECEIPT_METHODS, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, v as paymentMessageSchema, w as paymentStatusSchema, x as paymentOptionListSchema, y as paymentMethodSchema, z as couponResultSchema } from "./checkout-PJk8g5DY.mjs";
|
|
5
5
|
//#region src/session.ts
|
|
6
6
|
/** 세션 키 상수 — SDK가 소유한다. store-sdk와 겹치지 않는 별도 네임스페이스. */
|
|
7
7
|
const STOREFRONT_SESSION_KEYS = {
|
|
@@ -125,4 +125,4 @@ function createStorefrontSession(options) {
|
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
//#endregion
|
|
128
|
-
export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, ApiError, CASH_RECEIPT_METHODS, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, STOREFRONT_SESSION_KEYS, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productPageSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
|
128
|
+
export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, ApiError, CASH_RECEIPT_METHODS, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, STOREFRONT_SESSION_KEYS, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productInquiryCategorySchema, productPageSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $n as StartPaymentRequest, An as CashReceiptRequest, Jn as PaymentStatus, Kn as PaymentOption, Qn as ShippingAddressInput, Rn as GuestInfo, q as createStorefrontClient, qn as PaymentStart } from "../index-D2WiGpwr.mjs";
|
|
2
2
|
//#region src/payments/index.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 스토어프론트 결제 — 브라우저 전용(`@sayren/storefront-sdk/payments`).
|
|
@@ -101,7 +101,7 @@ export declare function paymentResultOf(status: PaymentStatus, options?: {
|
|
|
101
101
|
}): PaymentResult;
|
|
102
102
|
export interface PaymentsOptions {
|
|
103
103
|
client: StorefrontClient;
|
|
104
|
-
/** 결제를 마치면 돌아올 주소(
|
|
104
|
+
/** 결제를 마치면 돌아올 주소(상점 결제 도메인 안). `start`·`retry`에서 바꿀 수 있다 */
|
|
105
105
|
returnUrl?: string;
|
|
106
106
|
env?: PaymentsEnv;
|
|
107
107
|
}
|
package/dist/payments/index.mjs
CHANGED
package/package.json
CHANGED
package/src/analytics/index.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type AnalyticsConsent = "granted" | "denied" | "pending";
|
|
|
23
23
|
export interface AnalyticsOptions {
|
|
24
24
|
/** 스토어프론트 API 베이스 — 예: `https://api.sayren.app/storefront/v1` */
|
|
25
25
|
baseUrl: string;
|
|
26
|
-
/** 테넌트
|
|
26
|
+
/** 테넌트 상점 코드 */
|
|
27
27
|
storeCode: string;
|
|
28
28
|
/** 동의 상태. 기본 `pending` — 셀러의 동의 배너가 `setConsent`로 바꾼다 */
|
|
29
29
|
consent?: AnalyticsConsent;
|
package/src/auth/index.ts
CHANGED
|
@@ -74,7 +74,7 @@ async function s256(verifier: string): Promise<string> {
|
|
|
74
74
|
export interface StorefrontAuthOptions {
|
|
75
75
|
/** 예: https://api.sayren.app/storefront/v1 */
|
|
76
76
|
baseUrl: string;
|
|
77
|
-
/** 테넌트
|
|
77
|
+
/** 테넌트 상점 코드 — `X-Store-Code` 헤더로 보낸다 */
|
|
78
78
|
storeCode: string;
|
|
79
79
|
fetch?: typeof globalThis.fetch;
|
|
80
80
|
}
|
|
@@ -226,7 +226,7 @@ export function createStorefrontAuth(options: StorefrontAuthOptions) {
|
|
|
226
226
|
},
|
|
227
227
|
/**
|
|
228
228
|
* 구매자 탈퇴 — 계정·배송지·위시리스트·장바구니·적립금을 지우고 토큰을 모두 무효로 만든다. 되돌릴 수 없다.
|
|
229
|
-
* 주문·리뷰·문의 기록은
|
|
229
|
+
* 주문·리뷰·문의 기록은 상점이 보관한다. 진행 중인 주문이나 처리 중인 클레임이 있으면
|
|
230
230
|
* 409 `WITHDRAWAL_BLOCKED`(`error.details`: `WithdrawalBlockedDetails`)다. 앱은 성공 후 보관한 토큰을 지운다.
|
|
231
231
|
*/
|
|
232
232
|
withdraw(accessToken: string, body: WithdrawRequest): Promise<void> {
|
package/src/client.ts
CHANGED
|
@@ -103,7 +103,7 @@ export interface StorefrontClientOptions {
|
|
|
103
103
|
/** 예: https://demo.store.example.com/api/v1 */
|
|
104
104
|
baseUrl: string;
|
|
105
105
|
/**
|
|
106
|
-
* 테넌트
|
|
106
|
+
* 테넌트 상점 코드 — `X-Store-Code` 헤더로 전송한다. 공유 API 호스트로 접근할 때
|
|
107
107
|
* 서버가 Host 서브도메인을 추측하는 대신 명시적으로 테넌트를 지정한다(멀티테넌트 격리).
|
|
108
108
|
* 함수로 전달하면 매 요청마다 재평가.
|
|
109
109
|
*/
|
|
@@ -233,7 +233,7 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
233
233
|
},
|
|
234
234
|
|
|
235
235
|
store: {
|
|
236
|
-
/**
|
|
236
|
+
/** 상점 공개 설정 — 이름·고객센터·비회원 주문 허용 여부 */
|
|
237
237
|
get: () => http.request("GET", "/store", storefrontStoreSchema),
|
|
238
238
|
},
|
|
239
239
|
|
|
@@ -305,10 +305,10 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
305
305
|
* `@sayren/storefront-sdk/payments`의 `createPayments().start()`다 — 이 메서드는 값만 받는다.
|
|
306
306
|
*
|
|
307
307
|
* 에러(`ApiError.code`):
|
|
308
|
-
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이
|
|
308
|
+
* - 409 `PAYMENT_OPTION_UNAVAILABLE`: 이 상점에서 쓸 수 없는 옵션. `details.paymentOptions`에 지금 목록
|
|
309
309
|
* - 409 `PAYMENT_NOT_CONFIGURED`: 사용 중인 PG가 없다
|
|
310
310
|
* - 400 `RETURN_URL_NOT_ALLOWED`: `returnUrl`이 https가 아니거나(테스트 결제의 localhost는 예외),
|
|
311
|
-
*
|
|
311
|
+
* 상점이 결제 도메인을 등록했는데 그 안이 아니다. 등록하지 않았으면 https 주소는 모두 받는다
|
|
312
312
|
* - 503 `PAYMENT_PROVIDER_UNAVAILABLE`: 고른 PG의 결제창을 준비하지 못했다(다른 옵션으로 다시 시도)
|
|
313
313
|
*/
|
|
314
314
|
startPayment: (checkoutId: string, body: StartPaymentRequest) =>
|
|
@@ -336,7 +336,7 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
336
336
|
* `expiresAt`까지 폴링한다. `completed`면 `orderId`로 완료 화면, `failed`·`expired`면 실패 안내다.
|
|
337
337
|
* TTL이 지난 `pending`은 `expired`로 보고된다. `testPayment`는 완료면 주문 플래그, 아니면 세션 환경이다.
|
|
338
338
|
*
|
|
339
|
-
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른
|
|
339
|
+
* 에러: 404 `PAYMENT_NOT_FOUND`(없음·다른 상점) · 410 `STORE_CLOSED` · 503 `STORE_SUSPENDED`
|
|
340
340
|
*/
|
|
341
341
|
getStatus: (paymentId: string) =>
|
|
342
342
|
http.request("GET", path`/payments/${paymentId}`, paymentStatusSchema),
|
|
@@ -359,7 +359,7 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
359
359
|
*
|
|
360
360
|
* 에러: 404 `ORDER_NOT_FOUND`(주문이 없거나 연락처·비밀번호가 다름 — 둘을 구분하지 않는다) ·
|
|
361
361
|
* 429 `TOO_MANY_REQUESTS`(주문번호마다 10분에 5번까지 확인하고, 5번째가 틀리면 30분 잠금.
|
|
362
|
-
* 주문번호마다 하루 15번,
|
|
362
|
+
* 주문번호마다 하루 15번, 상점 전체 분당 한도도 있다. 남은 시간은 `ApiError.details.retryAfterSeconds`).
|
|
363
363
|
* 맞게 조회하면 주문번호의 횟수가 초기화된다. 본문 형식은 `guestInfoSchema`의 `phone`·`orderPassword`와 같다.
|
|
364
364
|
* 429는 연락처·비밀번호가 맞아도 난다 — 「잠시 후 다시 시도」로 안내한다.
|
|
365
365
|
*/
|
package/src/payments/index.ts
CHANGED
|
@@ -229,7 +229,7 @@ function browserEnv(): PaymentsEnv {
|
|
|
229
229
|
|
|
230
230
|
export interface PaymentsOptions {
|
|
231
231
|
client: StorefrontClient;
|
|
232
|
-
/** 결제를 마치면 돌아올 주소(
|
|
232
|
+
/** 결제를 마치면 돌아올 주소(상점 결제 도메인 안). `start`·`retry`에서 바꿀 수 있다 */
|
|
233
233
|
returnUrl?: string;
|
|
234
234
|
env?: PaymentsEnv;
|
|
235
235
|
}
|
package/src/schemas/catalog.ts
CHANGED
|
@@ -23,13 +23,38 @@ export const productCardSchema = z.object({
|
|
|
23
23
|
productId: z.string(),
|
|
24
24
|
name: z.string(),
|
|
25
25
|
thumbnailUrl: z.url().nullable().describe("대표 이미지 주소. 등록된 이미지가 없으면 null"),
|
|
26
|
-
salePrice: z
|
|
26
|
+
salePrice: z
|
|
27
|
+
.number()
|
|
28
|
+
.int()
|
|
29
|
+
.describe(
|
|
30
|
+
"판매가. 원(KRW) 단위 정수. 즉시할인이 없으면 구매자가 내는 한 개 가격(옵션 추가금 제외)이고, 즉시할인의 기준 가격이다",
|
|
31
|
+
),
|
|
27
32
|
discountedPrice: z
|
|
28
33
|
.number()
|
|
29
34
|
.int()
|
|
30
35
|
.nullable()
|
|
31
|
-
.describe(
|
|
32
|
-
|
|
36
|
+
.describe(
|
|
37
|
+
"즉시할인 적용가. 원 단위. 판매가에 즉시할인을 적용한 값이고, 있으면 이 값이 구매자가 내는 한 개 가격이다. 할인이 없으면 null",
|
|
38
|
+
),
|
|
39
|
+
discountRate: z
|
|
40
|
+
.number()
|
|
41
|
+
.int()
|
|
42
|
+
.nullable()
|
|
43
|
+
.describe(
|
|
44
|
+
"즉시할인율(%). 판매가 대비 `discountedPrice`의 할인율이다(정가 기준이 아니다). 할인이 없으면 null",
|
|
45
|
+
),
|
|
46
|
+
originalPrice: z
|
|
47
|
+
.number()
|
|
48
|
+
.int()
|
|
49
|
+
.nullable()
|
|
50
|
+
.optional()
|
|
51
|
+
.default(null)
|
|
52
|
+
.describe(
|
|
53
|
+
"정가(할인 전 표시 가격, 이슈 #82). 원 단위. 셀러가 상품에 적은 비교용 가격이고 결제 금액 계산에 쓰지 않는다. " +
|
|
54
|
+
"구매자가 내는 가격은 `discountedPrice ?? salePrice`다. 정가가 그 가격보다 클 때 「정가 취소선 + 할인율 + 판매가」로 보이면 되고, " +
|
|
55
|
+
"이때 할인율은 `round((1 - (discountedPrice ?? salePrice) / originalPrice) × 100)`이다. 판매가와 크기를 검증하지 않으므로 " +
|
|
56
|
+
"작거나 같으면 표시하지 않는다. 정하지 않았으면 null. 서버는 항상 싣는다",
|
|
57
|
+
),
|
|
33
58
|
freeShipping: z
|
|
34
59
|
.boolean()
|
|
35
60
|
.describe("무료배송 배지. 배송 상품이고 배송비가 무료일 때만 true다(배송이 없는 상품은 false)"),
|
package/src/schemas/checkout.ts
CHANGED
|
@@ -50,7 +50,7 @@ export const checkoutDeliverySchema = z.object({
|
|
|
50
50
|
bundleCount: z.number().int().describe("배송 묶음 수 — 배송비를 부과한 횟수다"),
|
|
51
51
|
freeByThreshold: z
|
|
52
52
|
.boolean()
|
|
53
|
-
.describe("
|
|
53
|
+
.describe("상점 전체 무료배송 기준액을 넘겨 기본 배송비를 면제했는가"),
|
|
54
54
|
zipCode: z
|
|
55
55
|
.string()
|
|
56
56
|
.nullable()
|
|
@@ -127,7 +127,7 @@ export const checkoutSessionSchema = z.object({
|
|
|
127
127
|
testPayment: z
|
|
128
128
|
.boolean()
|
|
129
129
|
.describe(
|
|
130
|
-
"지금 결제하면 테스트 결제(샌드박스)인가. true면 실제로 돈이 나가지 않습니다 — 주문서에 테스트 결제 안내를 표시합니다. 결제 요청 시점에
|
|
130
|
+
"지금 결제하면 테스트 결제(샌드박스)인가. true면 실제로 돈이 나가지 않습니다 — 주문서에 테스트 결제 안내를 표시합니다. 결제 요청 시점에 상점 결제 설정으로 다시 정해지니 최종 값은 결제 요청 응답의 `testPayment`입니다",
|
|
131
131
|
),
|
|
132
132
|
});
|
|
133
133
|
|
|
@@ -165,7 +165,7 @@ export const paymentMethodSchema = z.enum([
|
|
|
165
165
|
|
|
166
166
|
export type PaymentMethod = z.infer<typeof paymentMethodSchema>;
|
|
167
167
|
|
|
168
|
-
/** 결제를 처리하는 PG. 셀러가 직접 계약하고
|
|
168
|
+
/** 결제를 처리하는 PG. 셀러가 직접 계약하고 상점 플랫폼 설정 › 결제에서 연결한다 */
|
|
169
169
|
export const pgProviderSchema = z.enum(["tosspayments", "portone"]);
|
|
170
170
|
export type PgProvider = z.infer<typeof pgProviderSchema>;
|
|
171
171
|
|
|
@@ -373,7 +373,7 @@ const cashReceiptField = cashReceiptRequestSchema
|
|
|
373
373
|
/**
|
|
374
374
|
* 결제 시작 — 배송지를 확정하고 고른 결제 옵션으로 결제 시도를 연다. 응답의 `payUrl`(결제 서비스)을 팝업(`mode=popup`)이나
|
|
375
375
|
* 전체 페이지로 열면 결제 서비스가 PG 결제창을 띄우고 승인까지 한다. 리다이렉트 결제가 끝나면 구매자는 `returnUrl`로 돌아온다.
|
|
376
|
-
* `returnUrl`의 도메인은
|
|
376
|
+
* `returnUrl`의 도메인은 상점 결제 도메인(상점 플랫폼 설정 › 결제)에 등록돼 있어야 한다(테스트 결제는 localhost 허용).
|
|
377
377
|
*/
|
|
378
378
|
export const startPaymentRequestSchema = z.object({
|
|
379
379
|
option: paymentOptionSchema,
|
|
@@ -381,7 +381,7 @@ export const startPaymentRequestSchema = z.object({
|
|
|
381
381
|
.url()
|
|
382
382
|
.max(2048)
|
|
383
383
|
.describe(
|
|
384
|
-
"결제를 마치면 돌아올 스토어프론트 주소.
|
|
384
|
+
"결제를 마치면 돌아올 스토어프론트 주소. 상점 결제 도메인에 등록된 도메인이어야 한다",
|
|
385
385
|
),
|
|
386
386
|
shippingAddress: shippingAddressInputSchema
|
|
387
387
|
.optional()
|
package/src/schemas/claim.ts
CHANGED
|
@@ -76,10 +76,10 @@ export const createClaimResultSchema = z.object({
|
|
|
76
76
|
export type CreateClaimResult = z.infer<typeof createClaimResultSchema>;
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
|
-
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다.
|
|
79
|
+
* 반품지 (이슈 #30) — 반품·교환 수거가 안내하는 주소다. 상점 주소록의 기본 반품지이거나,
|
|
80
80
|
* 상품이 반품지를 따로 지정했으면 그 주소다.
|
|
81
81
|
*
|
|
82
|
-
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은
|
|
82
|
+
* 취소 클레임은 보낼 물건이 없어 null이고, 반품지를 등록하지 않은 상점도 null이다.
|
|
83
83
|
* 구매자가 직접 보내는 수거(`BUYER_SEND`)에 이 주소가 필요하다.
|
|
84
84
|
*/
|
|
85
85
|
export const claimReturnAddressSchema = z.object({
|
package/src/schemas/consent.ts
CHANGED
|
@@ -32,11 +32,11 @@ export const consentStateSchema = z.object({
|
|
|
32
32
|
agreed: z.boolean(),
|
|
33
33
|
/** 동의한 약관 버전. 마케팅은 버전이 없어 null이고, 동의 이력이 없으면 null이다 */
|
|
34
34
|
agreedVersion: z.string().nullable(),
|
|
35
|
-
/**
|
|
35
|
+
/** 상점의 현재 약관 버전. 마케팅은 null */
|
|
36
36
|
currentVersion: z.string().nullable(),
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* 상점이 정한 현재 약관 문서 주소. 재동의 화면에서 이 주소를 보여 준다.
|
|
39
|
+
* 상점이 정하지 않았거나 마케팅이면 null이다(동의한 시점의 주소는 셀러가 보는 이력에 남는다).
|
|
40
40
|
*/
|
|
41
41
|
currentDocumentUrl: z.string().nullable(),
|
|
42
42
|
/** 마지막으로 동의·철회한 시각. 이력이 없으면 null */
|
package/src/schemas/inquiry.ts
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* 상품 문의 유형(이슈 #85) — 관리 API 상품 문의의 `category`와 같은 값이다.
|
|
5
|
+
* `PRODUCT` 상품(사이즈·소재 등), `DELIVERY` 배송, `RETURN` 반품, `EXCHANGE` 교환, `ETC` 기타
|
|
6
|
+
*/
|
|
7
|
+
export const productInquiryCategorySchema = z.enum([
|
|
8
|
+
"PRODUCT",
|
|
9
|
+
"DELIVERY",
|
|
10
|
+
"RETURN",
|
|
11
|
+
"EXCHANGE",
|
|
12
|
+
"ETC",
|
|
13
|
+
]);
|
|
14
|
+
|
|
15
|
+
export type ProductInquiryCategory = z.infer<typeof productInquiryCategorySchema>;
|
|
16
|
+
|
|
3
17
|
export const publicInquirySchema = z.object({
|
|
4
18
|
inquiryId: z.string(),
|
|
5
19
|
content: z.string().nullable(),
|
|
@@ -13,6 +27,33 @@ export const publicInquirySchema = z.object({
|
|
|
13
27
|
})
|
|
14
28
|
.nullable(),
|
|
15
29
|
createdAt: z.string(),
|
|
30
|
+
// ── 이슈 #85: 어느 상품의 문의인지(「내 상품 문의」에서 상품으로 돌아가기)와 문의 유형. 옛 서버 응답에 없으면 기본값으로 읽는다 ──
|
|
31
|
+
productId: z
|
|
32
|
+
.string()
|
|
33
|
+
.nullable()
|
|
34
|
+
.optional()
|
|
35
|
+
.default(null)
|
|
36
|
+
.describe("문의한 상품 id. 서버는 항상 싣는다(옛 서버 응답이면 null)"),
|
|
37
|
+
productName: z
|
|
38
|
+
.string()
|
|
39
|
+
.nullable()
|
|
40
|
+
.optional()
|
|
41
|
+
.default(null)
|
|
42
|
+
.describe("문의한 상품의 지금 이름. 상품이 지워졌으면 null. 서버는 항상 싣는다"),
|
|
43
|
+
thumbnailUrl: z
|
|
44
|
+
.url()
|
|
45
|
+
.nullable()
|
|
46
|
+
.optional()
|
|
47
|
+
.default(null)
|
|
48
|
+
.describe(
|
|
49
|
+
"문의한 상품의 대표 이미지 주소. 이미지가 없거나 상품이 지워졌으면 null. 서버는 항상 싣는다",
|
|
50
|
+
),
|
|
51
|
+
category: productInquiryCategorySchema
|
|
52
|
+
.optional()
|
|
53
|
+
.default("PRODUCT")
|
|
54
|
+
.describe(
|
|
55
|
+
"문의 유형. `PRODUCT`(상품)·`DELIVERY`(배송)·`RETURN`(반품)·`EXCHANGE`(교환)·`ETC`(기타). 서버는 항상 싣는다",
|
|
56
|
+
),
|
|
16
57
|
});
|
|
17
58
|
|
|
18
59
|
export type PublicInquiry = z.infer<typeof publicInquirySchema>;
|
|
@@ -20,6 +61,11 @@ export type PublicInquiry = z.infer<typeof publicInquirySchema>;
|
|
|
20
61
|
export const createInquiryRequestSchema = z.object({
|
|
21
62
|
content: z.string().min(1).max(1000),
|
|
22
63
|
secret: z.boolean().default(false),
|
|
64
|
+
category: productInquiryCategorySchema
|
|
65
|
+
.optional()
|
|
66
|
+
.describe(
|
|
67
|
+
"문의 유형(이슈 #85). `PRODUCT`(상품)·`DELIVERY`(배송)·`RETURN`(반품)·`EXCHANGE`(교환)·`ETC`(기타). 생략하면 `PRODUCT`다",
|
|
68
|
+
),
|
|
23
69
|
});
|
|
24
70
|
|
|
25
71
|
export type CreateInquiryRequest = z.infer<typeof createInquiryRequestSchema>;
|
package/src/schemas/member.ts
CHANGED
|
@@ -13,7 +13,7 @@ export const memberSchema = z.object({
|
|
|
13
13
|
.boolean()
|
|
14
14
|
.describe(
|
|
15
15
|
"약관이 개정돼 필수 동의를 다시 받아야 하는가. true면 `GET /me/consents`로 어떤 항목인지 확인하고 " +
|
|
16
|
-
"`POST /me/consents`로 받는다. 받기 전에도
|
|
16
|
+
"`POST /me/consents`로 받는다. 받기 전에도 상점 이용은 막히지 않는다",
|
|
17
17
|
),
|
|
18
18
|
});
|
|
19
19
|
|
|
@@ -52,7 +52,7 @@ export function normalizeCustomInputValue(value: string): string {
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* 직접 입력값의 글자 수 — 정규화한 값의 **코드 포인트 수**다(이모지 하나가 1자). 서버의 최대 글자 수 판정(`CUSTOM_INPUT_TOO_LONG`)과
|
|
55
|
-
*
|
|
55
|
+
* 스토어프론트·상점 플랫폼의 글자 수 표시가 이 함수 하나를 쓴다. `String.length`(UTF-16)로 세면 이모지가 2자로 세어 판정이 갈린다.
|
|
56
56
|
*/
|
|
57
57
|
export function customInputLength(value: string): number {
|
|
58
58
|
return [...normalizeCustomInputValue(value)].length;
|
package/src/schemas/store.ts
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 사업자 정보 필드(이슈 #81) — 전자상거래법 표기(푸터)용이다. 셀러가 정하지 않았으면 null이고, 그 항목은 표시하지 않으면 된다.
|
|
5
|
+
* 옛 서버 응답에 없으면 null로 읽는다.
|
|
6
|
+
*/
|
|
7
|
+
const businessText = (description: string) =>
|
|
8
|
+
z
|
|
9
|
+
.string()
|
|
10
|
+
.nullable()
|
|
11
|
+
.optional()
|
|
12
|
+
.default(null)
|
|
13
|
+
.describe(`${description}. 정하지 않았으면 null. 서버는 항상 싣는다`);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 상점 공개 설정 — `GET /store`. 스토어프론트가 화면을 그릴 때 읽는 값만 담는다.
|
|
5
17
|
*/
|
|
6
18
|
export const storefrontStoreSchema = z.object({
|
|
7
19
|
storeCode: z.string(),
|
|
@@ -9,6 +21,16 @@ export const storefrontStoreSchema = z.object({
|
|
|
9
21
|
logoUrl: z.string().nullable(),
|
|
10
22
|
customerCenterPhone: z.string().nullable(),
|
|
11
23
|
businessHours: z.string().nullable(),
|
|
24
|
+
businessName: businessText("상호(사업자등록증의 상호). 상점명(`name`)과 다를 수 있다"),
|
|
25
|
+
representativeName: businessText("대표자명"),
|
|
26
|
+
businessNumber: businessText(
|
|
27
|
+
"사업자등록번호. 관리 API로 저장한 값은 숫자 10자리(하이픈 없음)이고 표시할 때 `123-45-67890`으로 끊으면 된다",
|
|
28
|
+
),
|
|
29
|
+
mailOrderSalesNumber: businessText("통신판매업 신고번호. 셀러가 적은 그대로다"),
|
|
30
|
+
businessAddress: businessText("사업장 주소"),
|
|
31
|
+
customerCenterEmail: businessText("고객센터 이메일"),
|
|
32
|
+
privacyOfficerName: businessText("개인정보 보호책임자 성명"),
|
|
33
|
+
privacyOfficerEmail: businessText("개인정보 보호책임자 이메일"),
|
|
12
34
|
/**
|
|
13
35
|
* 비회원 주문 허용. false면 로그인하지 않은 구매자의 주문서 생성·결제 요청이 403 `GUEST_CHECKOUT_DISABLED`다.
|
|
14
36
|
* 장바구니 담기는 된다 — 주문 버튼을 로그인 안내로 바꾸면 된다
|
package/src/session.ts
CHANGED
|
@@ -30,7 +30,7 @@ const REFRESH_LOCK = STOREFRONT_SESSION_KEYS.refreshToken;
|
|
|
30
30
|
export interface StorefrontSessionOptions {
|
|
31
31
|
/** 예: https://shop.api.example.com/storefront/v1 */
|
|
32
32
|
baseUrl: string;
|
|
33
|
-
/** 테넌트
|
|
33
|
+
/** 테넌트 상점 코드 — X-Store-Code 헤더로 전송한다 */
|
|
34
34
|
storeCode?: string;
|
|
35
35
|
/** 저장 매체 어댑터 (앱 소유) */
|
|
36
36
|
storage: SessionStorage;
|