@sayren/storefront-sdk 0.18.1 → 0.18.3
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/auth/index.mjs +1 -1
- package/dist/{client-C91Y801B.mjs → client-nLYVG_HJ.mjs} +98 -6
- package/dist/{index-DJYqxHSY.d.mts → index-jE8JxvGj.d.mts} +180 -21
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/payments/index.d.mts +1 -1
- package/package.json +1 -1
- package/src/client.ts +20 -8
- package/src/schemas/catalog.ts +28 -3
- package/src/schemas/inquiry.ts +46 -0
- package/src/schemas/review.ts +108 -1
- package/src/schemas/store.ts +22 -0
package/dist/auth/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as createStorefrontClient, yt as ApiError } from "../client-nLYVG_HJ.mjs";
|
|
2
2
|
//#region src/auth/index.ts
|
|
3
3
|
/** 소셜 로그인 실패 — 구매자가 취소했거나(`access_denied`) state가 맞지 않는다 */
|
|
4
4
|
var IdpCallbackError = class extends 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(),
|
|
@@ -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({
|
|
@@ -697,6 +714,7 @@ const publicReviewSchema = z.object({
|
|
|
697
714
|
content: z.string(),
|
|
698
715
|
images: z.array(z.url()),
|
|
699
716
|
optionName: z.string().nullable(),
|
|
717
|
+
variantId: z.string().nullable().optional().describe("리뷰를 쓴 주문상품의 옵션(조합) id(이슈 #91). 상품 상세 `variants[].variantId`와 같은 값이고 리뷰 목록의 `variantId` 필터 키다. 옵션 없는 상품도 기본 조합 id가 있다. 주문상품을 찾지 못한 리뷰는 null이다. 서버는 항상 싣는다"),
|
|
700
718
|
writerMaskedName: z.string(),
|
|
701
719
|
sellerReply: z.object({
|
|
702
720
|
content: z.string(),
|
|
@@ -709,6 +727,28 @@ const reviewSummarySchema = z.object({
|
|
|
709
727
|
totalCount: z.number().int(),
|
|
710
728
|
distribution: z.record(z.string(), z.number().int())
|
|
711
729
|
});
|
|
730
|
+
/**
|
|
731
|
+
* 내가 쓴 리뷰 (이슈 #95) — `GET /me/reviews`. 수정·삭제(`PUT`·`DELETE /me/reviews/{reviewId}`)에 쓰는 `reviewId`와 상품 링크를 싣는다.
|
|
732
|
+
* 상품 정보는 주문 시점 값이고, 주문상품을 찾지 못하면 지금 상품의 값이다. 둘 다 없으면 null이다.
|
|
733
|
+
*/
|
|
734
|
+
const myReviewSchema = z.object({
|
|
735
|
+
reviewId: z.string(),
|
|
736
|
+
productId: z.string(),
|
|
737
|
+
productName: z.string().nullable().describe("주문 시점 상품명. 찾지 못하면 null"),
|
|
738
|
+
thumbnailUrl: z.url().nullable().describe("주문 시점 대표 이미지. 없으면 null"),
|
|
739
|
+
optionName: z.string().nullable(),
|
|
740
|
+
rating: z.number().int().min(1).max(5),
|
|
741
|
+
content: z.string(),
|
|
742
|
+
images: z.array(z.url()),
|
|
743
|
+
sellerReply: z.object({
|
|
744
|
+
content: z.string(),
|
|
745
|
+
repliedAt: z.string()
|
|
746
|
+
}).nullable(),
|
|
747
|
+
blinded: z.boolean().describe("판매자가 가린 리뷰. true면 상품 리뷰 목록에 보이지 않는다(작성자에게만 보인다)"),
|
|
748
|
+
editable: z.boolean().describe("지금 수정할 수 있는가. 작성 후 30일까지다. 지나면 `PUT /me/reviews/{reviewId}`가 409 `PERIOD_EXPIRED`다"),
|
|
749
|
+
editableUntil: z.string().describe("수정 기한(ISO 8601)"),
|
|
750
|
+
createdAt: z.string()
|
|
751
|
+
});
|
|
712
752
|
const writableReviewSchema = z.object({
|
|
713
753
|
orderItemId: z.string(),
|
|
714
754
|
productId: z.string(),
|
|
@@ -731,6 +771,37 @@ const updateReviewRequestSchema = z.object({
|
|
|
731
771
|
content: z.string().min(10).max(2e3).optional(),
|
|
732
772
|
images: z.array(z.url()).max(5).optional()
|
|
733
773
|
}).refine((value) => Object.values(value).some((v) => v !== void 0), { message: "최소 1개 필드가 필요합니다" });
|
|
774
|
+
/** 리뷰 정렬 — `helpful`은 도움 데이터가 없어 평점 높은 순과 같다 */
|
|
775
|
+
const productReviewSortSchema = z.enum([
|
|
776
|
+
"latest",
|
|
777
|
+
"ratingDesc",
|
|
778
|
+
"ratingAsc",
|
|
779
|
+
"helpful"
|
|
780
|
+
]);
|
|
781
|
+
/** `GET /products/{productId}/reviews` 쿼리 — 문서용이다. 쿼리 문자열이라 값은 문자열로 받는다 */
|
|
782
|
+
const productReviewQuerySchema = z.object({
|
|
783
|
+
rating: z.string().optional().describe("이 평점(1~5)의 리뷰만"),
|
|
784
|
+
hasImage: z.string().optional().describe("`true`면 사진이 있는 리뷰만"),
|
|
785
|
+
variantId: z.string().optional().describe("이 옵션(조합)으로 산 리뷰만(이슈 #91). 상품 상세 `variants[].variantId`이고 리뷰 응답의 `variantId`와 같은 값이다. 다른 필터와 함께 쓰면 모두 만족하는 리뷰만 온다"),
|
|
786
|
+
sort: z.string().optional().describe("정렬. `latest`(기본)·`ratingDesc`·`ratingAsc`·`helpful`(평점 높은 순과 같다)"),
|
|
787
|
+
page: z.string().optional().describe("페이지 번호 (1부터)"),
|
|
788
|
+
size: z.string().optional().describe("페이지 크기")
|
|
789
|
+
});
|
|
790
|
+
/**
|
|
791
|
+
* 리뷰 사진 업로드 자리 발급 (이슈 #96) — `POST /me/uploads`(구매자 로그인). 파일 바이트는 api를 거치지 않는다.
|
|
792
|
+
* 응답 `uploadUrl`에 파일을 그대로 PUT하면 `url`이 공개 주소가 되고, 그 주소를 리뷰 작성·수정의 `images`에 넣는다.
|
|
793
|
+
* 형식·크기 제한은 관리 API 상품 이미지(`product-image`)와 같은 정지 이미지 규칙이다(값은 API 문서). 서버가 객체 키를 정하므로 파일명은 확장자만 쓰인다.
|
|
794
|
+
*/
|
|
795
|
+
const reviewImageUploadRequestSchema = z.object({
|
|
796
|
+
filename: z.string().min(1).max(255).describe("파일명. 확장자로 형식을 판정하고 이름은 저장하지 않는다"),
|
|
797
|
+
purpose: z.enum(["review-image"]).default("review-image").describe("업로드 용도. 지금은 `review-image`(리뷰 사진)뿐이다"),
|
|
798
|
+
size: z.number().int().positive().optional().describe("파일 바이트 크기. 주면 크기 상한을 발급 전에 검사한다")
|
|
799
|
+
});
|
|
800
|
+
/** 업로드 자리 — `uploadUrl`은 1시간 유효하다 */
|
|
801
|
+
const uploadTicketSchema = z.object({
|
|
802
|
+
url: z.url().describe("업로드가 끝나면 공개될 주소. 리뷰의 `images`에 넣는다"),
|
|
803
|
+
uploadUrl: z.url().describe("파일 바이트를 그대로 PUT할 주소. 1시간 유효")
|
|
804
|
+
});
|
|
734
805
|
/** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
|
|
735
806
|
const reviewPageSchema = pageSchema(publicReviewSchema).extend({ summary: reviewSummarySchema.optional() });
|
|
736
807
|
/** `PUT /me/reviews/{reviewId}` 응답 */
|
|
@@ -741,6 +812,11 @@ const updateReviewResultSchema = z.object({
|
|
|
741
812
|
//#endregion
|
|
742
813
|
//#region src/schemas/store.ts
|
|
743
814
|
/**
|
|
815
|
+
* 사업자 정보 필드(이슈 #81) — 전자상거래법 표기(푸터)용이다. 셀러가 정하지 않았으면 null이고, 그 항목은 표시하지 않으면 된다.
|
|
816
|
+
* 옛 서버 응답에 없으면 null로 읽는다.
|
|
817
|
+
*/
|
|
818
|
+
const businessText = (description) => z.string().nullable().optional().default(null).describe(`${description}. 정하지 않았으면 null. 서버는 항상 싣는다`);
|
|
819
|
+
/**
|
|
744
820
|
* 상점 공개 설정 — `GET /store`. 스토어프론트가 화면을 그릴 때 읽는 값만 담는다.
|
|
745
821
|
*/
|
|
746
822
|
const storefrontStoreSchema = z.object({
|
|
@@ -749,6 +825,14 @@ const storefrontStoreSchema = z.object({
|
|
|
749
825
|
logoUrl: z.string().nullable(),
|
|
750
826
|
customerCenterPhone: z.string().nullable(),
|
|
751
827
|
businessHours: z.string().nullable(),
|
|
828
|
+
businessName: businessText("상호(사업자등록증의 상호). 상점명(`name`)과 다를 수 있다"),
|
|
829
|
+
representativeName: businessText("대표자명"),
|
|
830
|
+
businessNumber: businessText("사업자등록번호. 관리 API로 저장한 값은 숫자 10자리(하이픈 없음)이고 표시할 때 `123-45-67890`으로 끊으면 된다"),
|
|
831
|
+
mailOrderSalesNumber: businessText("통신판매업 신고번호. 셀러가 적은 그대로다"),
|
|
832
|
+
businessAddress: businessText("사업장 주소"),
|
|
833
|
+
customerCenterEmail: businessText("고객센터 이메일"),
|
|
834
|
+
privacyOfficerName: businessText("개인정보 보호책임자 성명"),
|
|
835
|
+
privacyOfficerEmail: businessText("개인정보 보호책임자 이메일"),
|
|
752
836
|
/**
|
|
753
837
|
* 비회원 주문 허용. false면 로그인하지 않은 구매자의 주문서 생성·결제 요청이 403 `GUEST_CHECKOUT_DISABLED`다.
|
|
754
838
|
* 장바구니 담기는 된다 — 주문 버튼을 로그인 안내로 바꾸면 된다
|
|
@@ -850,6 +934,7 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
850
934
|
listCategories: () => http.request("GET", "/categories", z.array(categoryNodeSchema)),
|
|
851
935
|
searchProducts: (params) => http.request("GET", "/products", productPageSchema, { query: params }),
|
|
852
936
|
getProduct: (productId) => http.request("GET", path`/products/${productId}`, productDetailSchema),
|
|
937
|
+
/** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
|
|
853
938
|
listProductReviews: (productId, params) => http.request("GET", path`/products/${productId}/reviews`, reviewPageSchema, { query: params }),
|
|
854
939
|
listProductInquiries: (productId, params) => http.request("GET", path`/products/${productId}/inquiries`, pageSchema(publicInquirySchema), { query: params }),
|
|
855
940
|
createInquiry: (productId, body) => http.requestVoid("POST", path`/products/${productId}/inquiries`, { body })
|
|
@@ -947,7 +1032,14 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
947
1032
|
removeWishlist: (productId) => http.requestVoid("DELETE", path`/me/wishlist/${productId}`)
|
|
948
1033
|
},
|
|
949
1034
|
reviews: {
|
|
1035
|
+
/** 내가 쓴 리뷰 — 최신순. 수정·삭제는 항목의 `reviewId`로 한다(이슈 #95) */
|
|
1036
|
+
listMine: (params) => http.request("GET", "/me/reviews", pageSchema(myReviewSchema), { query: params }),
|
|
950
1037
|
listWritable: () => http.request("GET", "/me/reviews/writable", z.array(writableReviewSchema)),
|
|
1038
|
+
/**
|
|
1039
|
+
* 리뷰 사진 업로드 자리(이슈 #96) — 응답 `uploadUrl`에 파일을 PUT한 뒤 `url`을 `create`·`update`의 `images`에 넣는다.
|
|
1040
|
+
* 형식·크기가 맞지 않으면 400 `UNSUPPORTED_FILE_TYPE`·413 `FILE_TOO_LARGE`, 연타하면 429 `TOO_MANY_REQUESTS`다
|
|
1041
|
+
*/
|
|
1042
|
+
createImageUpload: (body) => http.request("POST", "/me/uploads", uploadTicketSchema, { body: reviewImageUploadRequestSchema.parse(body) }),
|
|
951
1043
|
create: (orderItemId, body) => http.request("POST", path`/me/order-items/${orderItemId}/review`, createReviewResultSchema, { body: createReviewRequestSchema.parse(body) }),
|
|
952
1044
|
update: (reviewId, body) => http.requestVoid("PUT", path`/me/reviews/${reviewId}`, { body: updateReviewRequestSchema.parse(body) }),
|
|
953
1045
|
remove: (reviewId) => http.requestVoid("DELETE", path`/me/reviews/${reviewId}`)
|
|
@@ -965,4 +1057,4 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
965
1057
|
};
|
|
966
1058
|
}
|
|
967
1059
|
//#endregion
|
|
968
|
-
export {
|
|
1060
|
+
export { orderItemStatusSchema as $, publicInquirySchema as A, claimReasonSchema as B, memberAddressSchema as C, createInquiryRequestSchema as D, wishlistAddResultSchema as E, consentKindSchema as F, myClaimSchema as G, claimTypeSchema as H, consentSourceSchema as I, productDetailSchema as J, categoryNodeSchema as K, consentStateSchema as L, customerInquiryCategorySchema as M, customerInquirySchema as N, createInquiryResultSchema as O, consentActionSchema as P, claimStatusSchema as Q, consentUpdateRequestSchema as R, memberAddressRequestSchema as S, unwrapData as St, updateProfileRequestSchema as T, createClaimRequestSchema as U, claimReturnAddressSchema as V, createClaimResultSchema as W, productPageSchema as X, productFacetsSchema as Y, productSortSchema as Z, myOrderItemSchema as _, withdrawRequestSchema as _t, myReviewSchema as a, updateCartItemRequestSchema as at, purchaseDecisionResultSchema as b, buildQuery as bt, publicReviewSchema as c, idpAuthorizeRequestSchema as ct, reviewSummarySchema as d, linkIdentityRequestSchema as dt, pageInfoSchema as et, updateReviewRequestSchema as f, loginRequestSchema as ft, deliveryTrackingSchema as g, tokenPairSchema as gt, writableReviewSchema as h, socialProviderSchema as ht, createReviewResultSchema as i, cartSchema as it, createCustomerInquiryRequestSchema as j, productInquiryCategorySchema as k, reviewImageUploadRequestSchema as l, idpAuthorizeResponseSchema as lt, uploadTicketSchema as m, signupRequestSchema as mt, storefrontStoreSchema as n, addCartItemRequestSchema as nt, productReviewQuerySchema as o, anonymousSessionSchema as ot, updateReviewResultSchema as p, memberIdentitiesSchema as pt, productCardSchema as q, createReviewRequestSchema as r, cartItemSchema as rt, productReviewSortSchema as s, idpAgreementsSchema as st, createStorefrontClient as t, pageSchema as tt, reviewPageSchema as u, idpTokenRequestSchema as ut, myOrderSchema as v, withdrawalBlockedDetailsSchema as vt, memberSchema as w, trackingStageResponseSchema as x, toApiError as xt, orderShippingAddressSchema as y, ApiError as yt, memberConsentsSchema 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;
|
|
@@ -326,12 +328,12 @@ declare const productDetailSchema: z.ZodObject<{
|
|
|
326
328
|
}, z.core.$strip>;
|
|
327
329
|
type ProductDetail = z.infer<typeof productDetailSchema>;
|
|
328
330
|
declare const productSortSchema: z.ZodEnum<{
|
|
329
|
-
latest: "latest";
|
|
330
|
-
ratingDesc: "ratingDesc";
|
|
331
331
|
reviewCount: "reviewCount";
|
|
332
332
|
recommend: "recommend";
|
|
333
|
+
latest: "latest";
|
|
333
334
|
priceAsc: "priceAsc";
|
|
334
335
|
priceDesc: "priceDesc";
|
|
336
|
+
ratingDesc: "ratingDesc";
|
|
335
337
|
}>;
|
|
336
338
|
type ProductSort = z.infer<typeof productSortSchema>;
|
|
337
339
|
interface ProductSearchParams extends PageParams {
|
|
@@ -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;
|
|
@@ -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";
|
|
@@ -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` 응답 */
|
|
@@ -1514,6 +1546,7 @@ declare const publicReviewSchema: z.ZodObject<{
|
|
|
1514
1546
|
content: z.ZodString;
|
|
1515
1547
|
images: z.ZodArray<z.ZodURL>;
|
|
1516
1548
|
optionName: z.ZodNullable<z.ZodString>;
|
|
1549
|
+
variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1517
1550
|
writerMaskedName: z.ZodString;
|
|
1518
1551
|
sellerReply: z.ZodNullable<z.ZodObject<{
|
|
1519
1552
|
content: z.ZodString;
|
|
@@ -1528,6 +1561,29 @@ declare const reviewSummarySchema: z.ZodObject<{
|
|
|
1528
1561
|
distribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
1529
1562
|
}, z.core.$strip>;
|
|
1530
1563
|
type ReviewSummary = z.infer<typeof reviewSummarySchema>;
|
|
1564
|
+
/**
|
|
1565
|
+
* 내가 쓴 리뷰 (이슈 #95) — `GET /me/reviews`. 수정·삭제(`PUT`·`DELETE /me/reviews/{reviewId}`)에 쓰는 `reviewId`와 상품 링크를 싣는다.
|
|
1566
|
+
* 상품 정보는 주문 시점 값이고, 주문상품을 찾지 못하면 지금 상품의 값이다. 둘 다 없으면 null이다.
|
|
1567
|
+
*/
|
|
1568
|
+
declare const myReviewSchema: z.ZodObject<{
|
|
1569
|
+
reviewId: z.ZodString;
|
|
1570
|
+
productId: z.ZodString;
|
|
1571
|
+
productName: z.ZodNullable<z.ZodString>;
|
|
1572
|
+
thumbnailUrl: z.ZodNullable<z.ZodURL>;
|
|
1573
|
+
optionName: z.ZodNullable<z.ZodString>;
|
|
1574
|
+
rating: z.ZodNumber;
|
|
1575
|
+
content: z.ZodString;
|
|
1576
|
+
images: z.ZodArray<z.ZodURL>;
|
|
1577
|
+
sellerReply: z.ZodNullable<z.ZodObject<{
|
|
1578
|
+
content: z.ZodString;
|
|
1579
|
+
repliedAt: z.ZodString;
|
|
1580
|
+
}, z.core.$strip>>;
|
|
1581
|
+
blinded: z.ZodBoolean;
|
|
1582
|
+
editable: z.ZodBoolean;
|
|
1583
|
+
editableUntil: z.ZodString;
|
|
1584
|
+
createdAt: z.ZodString;
|
|
1585
|
+
}, z.core.$strip>;
|
|
1586
|
+
type MyReview = z.infer<typeof myReviewSchema>;
|
|
1531
1587
|
declare const writableReviewSchema: z.ZodObject<{
|
|
1532
1588
|
orderItemId: z.ZodString;
|
|
1533
1589
|
productId: z.ZodString;
|
|
@@ -1554,6 +1610,50 @@ declare const updateReviewRequestSchema: z.ZodObject<{
|
|
|
1554
1610
|
images: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
1555
1611
|
}, z.core.$strip>;
|
|
1556
1612
|
type UpdateReviewRequest = z.infer<typeof updateReviewRequestSchema>;
|
|
1613
|
+
/** 리뷰 정렬 — `helpful`은 도움 데이터가 없어 평점 높은 순과 같다 */
|
|
1614
|
+
declare const productReviewSortSchema: z.ZodEnum<{
|
|
1615
|
+
latest: "latest";
|
|
1616
|
+
ratingDesc: "ratingDesc";
|
|
1617
|
+
ratingAsc: "ratingAsc";
|
|
1618
|
+
helpful: "helpful";
|
|
1619
|
+
}>;
|
|
1620
|
+
type ProductReviewSort = z.infer<typeof productReviewSortSchema>;
|
|
1621
|
+
/** `GET /products/{productId}/reviews` 쿼리 — 문서용이다. 쿼리 문자열이라 값은 문자열로 받는다 */
|
|
1622
|
+
declare const productReviewQuerySchema: z.ZodObject<{
|
|
1623
|
+
rating: z.ZodOptional<z.ZodString>;
|
|
1624
|
+
hasImage: z.ZodOptional<z.ZodString>;
|
|
1625
|
+
variantId: z.ZodOptional<z.ZodString>;
|
|
1626
|
+
sort: z.ZodOptional<z.ZodString>;
|
|
1627
|
+
page: z.ZodOptional<z.ZodString>;
|
|
1628
|
+
size: z.ZodOptional<z.ZodString>;
|
|
1629
|
+
}, z.core.$strip>;
|
|
1630
|
+
/** 리뷰 목록 조회 파라미터 — `catalog.listProductReviews` */
|
|
1631
|
+
interface ProductReviewParams extends PageParams {
|
|
1632
|
+
rating?: number;
|
|
1633
|
+
hasImage?: boolean;
|
|
1634
|
+
/** 이 옵션(조합)으로 산 리뷰만 — 상품 상세 `variants[].variantId` */
|
|
1635
|
+
variantId?: string;
|
|
1636
|
+
sort?: ProductReviewSort;
|
|
1637
|
+
}
|
|
1638
|
+
/**
|
|
1639
|
+
* 리뷰 사진 업로드 자리 발급 (이슈 #96) — `POST /me/uploads`(구매자 로그인). 파일 바이트는 api를 거치지 않는다.
|
|
1640
|
+
* 응답 `uploadUrl`에 파일을 그대로 PUT하면 `url`이 공개 주소가 되고, 그 주소를 리뷰 작성·수정의 `images`에 넣는다.
|
|
1641
|
+
* 형식·크기 제한은 관리 API 상품 이미지(`product-image`)와 같은 정지 이미지 규칙이다(값은 API 문서). 서버가 객체 키를 정하므로 파일명은 확장자만 쓰인다.
|
|
1642
|
+
*/
|
|
1643
|
+
declare const reviewImageUploadRequestSchema: z.ZodObject<{
|
|
1644
|
+
filename: z.ZodString;
|
|
1645
|
+
purpose: z.ZodDefault<z.ZodEnum<{
|
|
1646
|
+
"review-image": "review-image";
|
|
1647
|
+
}>>;
|
|
1648
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
1649
|
+
}, z.core.$strip>;
|
|
1650
|
+
type ReviewImageUploadRequest = z.input<typeof reviewImageUploadRequestSchema>;
|
|
1651
|
+
/** 업로드 자리 — `uploadUrl`은 1시간 유효하다 */
|
|
1652
|
+
declare const uploadTicketSchema: z.ZodObject<{
|
|
1653
|
+
url: z.ZodURL;
|
|
1654
|
+
uploadUrl: z.ZodURL;
|
|
1655
|
+
}, z.core.$strip>;
|
|
1656
|
+
type UploadTicket = z.infer<typeof uploadTicketSchema>;
|
|
1557
1657
|
/** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
|
|
1558
1658
|
declare const reviewPageSchema: z.ZodObject<{
|
|
1559
1659
|
page: z.ZodNumber;
|
|
@@ -1566,6 +1666,7 @@ declare const reviewPageSchema: z.ZodObject<{
|
|
|
1566
1666
|
content: z.ZodString;
|
|
1567
1667
|
images: z.ZodArray<z.ZodURL>;
|
|
1568
1668
|
optionName: z.ZodNullable<z.ZodString>;
|
|
1669
|
+
variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1569
1670
|
writerMaskedName: z.ZodString;
|
|
1570
1671
|
sellerReply: z.ZodNullable<z.ZodObject<{
|
|
1571
1672
|
content: z.ZodString;
|
|
@@ -1771,6 +1872,14 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1771
1872
|
logoUrl: string | null;
|
|
1772
1873
|
customerCenterPhone: string | null;
|
|
1773
1874
|
businessHours: string | null;
|
|
1875
|
+
businessName: string | null;
|
|
1876
|
+
representativeName: string | null;
|
|
1877
|
+
businessNumber: string | null;
|
|
1878
|
+
mailOrderSalesNumber: string | null;
|
|
1879
|
+
businessAddress: string | null;
|
|
1880
|
+
customerCenterEmail: string | null;
|
|
1881
|
+
privacyOfficerName: string | null;
|
|
1882
|
+
privacyOfficerEmail: string | null;
|
|
1774
1883
|
guestCheckout: boolean;
|
|
1775
1884
|
loginMethods: ("password" | "kakao" | "naver" | "google")[];
|
|
1776
1885
|
checkoutAvailable: boolean;
|
|
@@ -1792,6 +1901,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1792
1901
|
salePrice: number;
|
|
1793
1902
|
discountedPrice: number | null;
|
|
1794
1903
|
discountRate: number | null;
|
|
1904
|
+
originalPrice: number | null;
|
|
1795
1905
|
freeShipping: boolean;
|
|
1796
1906
|
fulfillment: {
|
|
1797
1907
|
type: string;
|
|
@@ -1820,6 +1930,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1820
1930
|
salePrice: number;
|
|
1821
1931
|
discountedPrice: number | null;
|
|
1822
1932
|
discountRate: number | null;
|
|
1933
|
+
originalPrice: number | null;
|
|
1823
1934
|
freeShipping: boolean;
|
|
1824
1935
|
averageRating: number;
|
|
1825
1936
|
reviewCount: number;
|
|
@@ -1879,11 +1990,8 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1879
1990
|
name: string;
|
|
1880
1991
|
}[];
|
|
1881
1992
|
}>;
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
hasImage?: boolean;
|
|
1885
|
-
sort?: "latest" | "ratingDesc" | "ratingAsc" | "helpful";
|
|
1886
|
-
}) => Promise<{
|
|
1993
|
+
/** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
|
|
1994
|
+
listProductReviews: (productId: string, params?: ProductReviewParams) => Promise<{
|
|
1887
1995
|
page: number;
|
|
1888
1996
|
size: number;
|
|
1889
1997
|
totalElements: number;
|
|
@@ -1900,6 +2008,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1900
2008
|
repliedAt: string;
|
|
1901
2009
|
} | null;
|
|
1902
2010
|
createdAt: string;
|
|
2011
|
+
variantId?: string | null | undefined;
|
|
1903
2012
|
}[];
|
|
1904
2013
|
summary?: {
|
|
1905
2014
|
averageRating: number;
|
|
@@ -1923,6 +2032,10 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1923
2032
|
answeredAt: string;
|
|
1924
2033
|
} | null;
|
|
1925
2034
|
createdAt: string;
|
|
2035
|
+
productId: string | null;
|
|
2036
|
+
productName: string | null;
|
|
2037
|
+
thumbnailUrl: string | null;
|
|
2038
|
+
category: "PRODUCT" | "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC";
|
|
1926
2039
|
}[];
|
|
1927
2040
|
}>;
|
|
1928
2041
|
createInquiry: (productId: string, body: CreateInquiryRequest) => Promise<void>;
|
|
@@ -2575,7 +2688,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2575
2688
|
totalPages: number;
|
|
2576
2689
|
contents: {
|
|
2577
2690
|
claimId: string;
|
|
2578
|
-
type: "
|
|
2691
|
+
type: "RETURN" | "EXCHANGE" | "CANCEL";
|
|
2579
2692
|
status: "COMPLETED" | "REQUESTED" | "HELD" | "COLLECTING" | "COLLECTED" | "REDELIVERING" | "APPROVED" | "REJECTED" | "WITHDRAWN";
|
|
2580
2693
|
orderItemId: string;
|
|
2581
2694
|
productName: string;
|
|
@@ -2697,6 +2810,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2697
2810
|
salePrice: number;
|
|
2698
2811
|
discountedPrice: number | null;
|
|
2699
2812
|
discountRate: number | null;
|
|
2813
|
+
originalPrice: number | null;
|
|
2700
2814
|
freeShipping: boolean;
|
|
2701
2815
|
fulfillment: {
|
|
2702
2816
|
type: string;
|
|
@@ -2711,6 +2825,31 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2711
2825
|
removeWishlist: (productId: string) => Promise<void>;
|
|
2712
2826
|
};
|
|
2713
2827
|
reviews: {
|
|
2828
|
+
/** 내가 쓴 리뷰 — 최신순. 수정·삭제는 항목의 `reviewId`로 한다(이슈 #95) */
|
|
2829
|
+
listMine: (params?: PageParams) => Promise<{
|
|
2830
|
+
page: number;
|
|
2831
|
+
size: number;
|
|
2832
|
+
totalElements: number;
|
|
2833
|
+
totalPages: number;
|
|
2834
|
+
contents: {
|
|
2835
|
+
reviewId: string;
|
|
2836
|
+
productId: string;
|
|
2837
|
+
productName: string | null;
|
|
2838
|
+
thumbnailUrl: string | null;
|
|
2839
|
+
optionName: string | null;
|
|
2840
|
+
rating: number;
|
|
2841
|
+
content: string;
|
|
2842
|
+
images: string[];
|
|
2843
|
+
sellerReply: {
|
|
2844
|
+
content: string;
|
|
2845
|
+
repliedAt: string;
|
|
2846
|
+
} | null;
|
|
2847
|
+
blinded: boolean;
|
|
2848
|
+
editable: boolean;
|
|
2849
|
+
editableUntil: string;
|
|
2850
|
+
createdAt: string;
|
|
2851
|
+
}[];
|
|
2852
|
+
}>;
|
|
2714
2853
|
listWritable: () => Promise<{
|
|
2715
2854
|
orderItemId: string;
|
|
2716
2855
|
productId: string;
|
|
@@ -2719,6 +2858,14 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2719
2858
|
thumbnailUrl: string | null;
|
|
2720
2859
|
writableUntil: string;
|
|
2721
2860
|
}[]>;
|
|
2861
|
+
/**
|
|
2862
|
+
* 리뷰 사진 업로드 자리(이슈 #96) — 응답 `uploadUrl`에 파일을 PUT한 뒤 `url`을 `create`·`update`의 `images`에 넣는다.
|
|
2863
|
+
* 형식·크기가 맞지 않으면 400 `UNSUPPORTED_FILE_TYPE`·413 `FILE_TOO_LARGE`, 연타하면 429 `TOO_MANY_REQUESTS`다
|
|
2864
|
+
*/
|
|
2865
|
+
createImageUpload: (body: ReviewImageUploadRequest) => Promise<{
|
|
2866
|
+
url: string;
|
|
2867
|
+
uploadUrl: string;
|
|
2868
|
+
}>;
|
|
2722
2869
|
create: (orderItemId: string, body: CreateReviewRequest) => Promise<{
|
|
2723
2870
|
reviewId: string;
|
|
2724
2871
|
rewardPoint: number;
|
|
@@ -2745,6 +2892,10 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2745
2892
|
answeredAt: string;
|
|
2746
2893
|
} | null;
|
|
2747
2894
|
createdAt: string;
|
|
2895
|
+
productId: string | null;
|
|
2896
|
+
productName: string | null;
|
|
2897
|
+
thumbnailUrl: string | null;
|
|
2898
|
+
category: "PRODUCT" | "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC";
|
|
2748
2899
|
}[];
|
|
2749
2900
|
}>;
|
|
2750
2901
|
};
|
|
@@ -2773,7 +2924,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2773
2924
|
customerInquiries: {
|
|
2774
2925
|
create: (body: CreateCustomerInquiryRequest) => Promise<{
|
|
2775
2926
|
inquiryId: string;
|
|
2776
|
-
category: "
|
|
2927
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2777
2928
|
title: string;
|
|
2778
2929
|
content: string;
|
|
2779
2930
|
orderItemId: string | null;
|
|
@@ -2794,7 +2945,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2794
2945
|
totalPages: number;
|
|
2795
2946
|
contents: {
|
|
2796
2947
|
inquiryId: string;
|
|
2797
|
-
category: "
|
|
2948
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2798
2949
|
title: string;
|
|
2799
2950
|
content: string;
|
|
2800
2951
|
orderItemId: string | null;
|
|
@@ -2808,7 +2959,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2808
2959
|
}>;
|
|
2809
2960
|
get: (inquiryId: string) => Promise<{
|
|
2810
2961
|
inquiryId: string;
|
|
2811
|
-
category: "
|
|
2962
|
+
category: "DELIVERY" | "RETURN" | "EXCHANGE" | "ETC" | "PAYMENT";
|
|
2812
2963
|
title: string;
|
|
2813
2964
|
content: string;
|
|
2814
2965
|
orderItemId: string | null;
|
|
@@ -3231,6 +3382,14 @@ declare const storefrontStoreSchema: z.ZodObject<{
|
|
|
3231
3382
|
logoUrl: z.ZodNullable<z.ZodString>;
|
|
3232
3383
|
customerCenterPhone: z.ZodNullable<z.ZodString>;
|
|
3233
3384
|
businessHours: z.ZodNullable<z.ZodString>;
|
|
3385
|
+
businessName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3386
|
+
representativeName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3387
|
+
businessNumber: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3388
|
+
mailOrderSalesNumber: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3389
|
+
businessAddress: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3390
|
+
customerCenterEmail: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3391
|
+
privacyOfficerName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3392
|
+
privacyOfficerEmail: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
3234
3393
|
guestCheckout: z.ZodBoolean;
|
|
3235
3394
|
loginMethods: z.ZodArray<z.ZodEnum<{
|
|
3236
3395
|
password: "password";
|
|
@@ -3250,4 +3409,4 @@ declare const storefrontStoreSchema: z.ZodObject<{
|
|
|
3250
3409
|
}, z.core.$strip>;
|
|
3251
3410
|
type StorefrontStore = z.infer<typeof storefrontStoreSchema>;
|
|
3252
3411
|
//#endregion
|
|
3253
|
-
export { CreateReviewRequest as $,
|
|
3412
|
+
export { CreateReviewRequest as $, PaymentFailureCategory as $n, PageParams as $r, CouponResult as $t, ANALYTICS_MAX_BATCH_BYTES as A, MyClaim as An, paymentStatusSchema as Ar, memberAddressRequestSchema as At, analyticsBatchSchema as B, CashReceiptRequest as Bn, ProductFacets as Br, createInquiryResultSchema as Bt, PurchaseDecisionResult as C, consentUpdateRequestSchema as Cn, paymentFailureCategorySchema as Cr, uploadTicketSchema as Ct, orderShippingAddressSchema as D, ClaimType as Dn, paymentOptionListSchema as Dr, MemberAddressRequest as Dt, myOrderSchema as E, ClaimReturnAddress as En, paymentOptionKey as Er, MemberAddress as Et, AnalyticsBatch as F, createClaimResultSchema as Fn, shippingAddressInputSchema as Fr, CreateInquiryRequest as Ft, StorefrontClient as G, DeliveryQuoteRequest as Gn, productCardSchema as Gr, CustomerInquiryCategory as Gt, analyticsClientEventSchema as H, CheckoutDelivery as Hn, ProductSearchParams as Hr, publicInquirySchema as Ht, AnalyticsClientEvent as I, myClaimSchema as In, startPaymentRequestSchema as Ir, CreateInquiryResult as It, STOREFRONT_SESSION_KEYS as J, GuestInfo as Jn, productPageSchema as Jr, customerInquirySchema as Jt, StorefrontClientOptions as K, DeliveryQuoteResult as Kn, productDetailSchema as Kr, createCustomerInquiryRequestSchema as Kt, AnalyticsClientEventName as L, AvailablePaymentOption as Ln, CategoryNode as Lr, ProductInquiryCategory as Lt, ANALYTICS_SESSION_HEADER as M, claimReturnAddressSchema as Mn, remoteAreaSchema as Mr, memberSchema as Mt, ANALYTICS_VISITOR_COOKIE as N, claimTypeSchema as Nn, residentNumberLike as Nr, updateProfileRequestSchema as Nt, purchaseDecisionResultSchema as O, CreateClaimRequest as On, paymentOptionSchema as Or, UpdateProfileRequest as Ot, ANALYTICS_VISITOR_HEADER as P, createClaimRequestSchema as Pn, retryPaymentRequestSchema as Pr, wishlistAddResultSchema as Pt, createStorefrontSession as Q, PAYMENT_STATUS_VALUES as Qn, PageInfo as Qr, CouponApplication as Qt, AnalyticsEventName as R, CASH_RECEIPT_METHODS as Rn, ProductCard as Rr, PublicInquiry as Rt, OrderShippingAddress as S, consentStateSchema as Sn, guestInfoSchema as Sr, updateReviewResultSchema as St, myOrderItemSchema as T, ClaimReason as Tn, paymentMethodSchema as Tr, Member as Tt, analyticsIdSchema as U, CheckoutSession as Un, ProductSort as Ur, CreateCustomerInquiryRequest as Ut, analyticsClientEventNameSchema as V, CashReceiptType as Vn, ProductPage as Vr, productInquiryCategorySchema as Vt, analyticsServerEventNameSchema as W, CreateCheckoutRequest as Wn, categoryNodeSchema as Wr, CustomerInquiry as Wt, StorefrontSession as X, KnownPaymentStatus as Xn, ClaimStatus as Xr, CheckoutPricing as Xt, SessionStorage as Y, KnownPaymentResult as Yn, productSortSchema as Yr, ApplicableCoupon as Yt, StorefrontSessionOptions as Z, PAYMENT_RESULT_VALUES as Zn, OrderItemStatus as Zr, CheckoutPricingRequest as Zt, normalizeCustomInputValue as _, addCartItemRequestSchema as _i, ConsentUpdateRequest as _n, createCheckoutRequestSchema as _r, publicReviewSchema as _t, CustomInputEntry as a, MyOrderItemFulfillmentSnapshot as ai, checkoutPricingSchema as an, PgProvider as ar, ReviewImageUploadRequest as at, MyOrder as b, updateCartItemRequestSchema as bi, consentKindSchema as bn, easyPayProviderResponseSchema as br, reviewSummarySchema as bt, OptionSelectionView as c, UnknownFulfillmentView as ci, couponBenefitViewSchema as cn, ShippingAddressInput as cr, UpdateReviewRequest as ct, customInputEntrySchema as d, productCardFulfillmentSchema as di, myCouponSchema as dn, cashReceiptAvailable as dr, WritableReview as dt, claimStatusSchema as ei, MAX_COUPONS_PER_CHECKOUT as en, PaymentMessage as er, CreateReviewResult as et, customInputLength as f, productFulfillmentViewSchema as fi, pricingAmountsSchema as fn, cashReceiptIdentityTypeOf as fr, createReviewRequestSchema as ft, lineSelectionResponseShape as g, UpdateCartItemRequest as gi, ConsentState as gn, checkoutSessionSchema as gr, productReviewSortSchema as gt, lineSelectionRequestShape as h, CartItem as hi, ConsentSource as hn, checkoutDeliverySchema as hr, productReviewQuerySchema as ht, AddonSelection as i, LineFulfillment as ii, checkoutPricingRequestSchema as in, PaymentStatus as ir, PublicReview as it, ANALYTICS_SESSION_COOKIE as j, claimReasonSchema as jn, pgProviderSchema as jr, memberAddressSchema as jt, trackingStageResponseSchema as k, CreateClaimResult as kn, paymentStartSchema as kr, WishlistAddResult as kt, addonGroupViewSchema as l, lineFulfillmentSchema as li, couponResultSchema as ln, StartPaymentRequest as lr, UpdateReviewResult as lt, customInputViewSchema as m, Cart as mi, ConsentKind as mn, cashReceiptTypeSchema as mr, myReviewSchema as mt, storefrontStoreSchema as n, pageInfoSchema as ni, MyCoupon as nn, PaymentOption as nr, ProductReviewParams as nt, CustomInputValueView as o, ProductCardFulfillment as oi, couponApplicationListSchema as on, RemoteArea as or, ReviewPage as ot, customInputValueViewSchema as p, AddCartItemRequest as pi, ConsentAction as pn, cashReceiptRequestSchema as pr, createReviewResultSchema as pt, createStorefrontClient as q, EasyPayProvider as qn, productFacetsSchema as qr, customerInquiryCategorySchema as qt, AddonGroupView as r, pageSchema as ri, applicableCouponSchema as rn, PaymentStart as rr, ProductReviewSort as rt, CustomInputView as s, ProductFulfillmentView as si, couponApplicationSchema as sn, RetryPaymentRequest as sr, ReviewSummary as st, StorefrontStore as t, orderItemStatusSchema as ti, MIN_PAYMENT_AMOUNT as tn, PaymentMethod as tr, MyReview as tt, addonSelectionSchema as u, myOrderItemFulfillmentSnapshotSchema as ui, myCouponListQuerySchema as un, availablePaymentOptionSchema as ur, UploadTicket as ut, optionSelectionViewSchema as v, cartItemSchema as vi, MemberConsents as vn, deliveryQuoteRequestSchema as vr, reviewImageUploadRequestSchema as vt, deliveryTrackingSchema as w, memberConsentsSchema as wn, paymentMessageSchema as wr, writableReviewSchema as wt, MyOrderItem as x, analyticsIdsFromCookie as xi, consentSourceSchema as xn, easyPayProviderSchema as xr, updateReviewRequestSchema as xt, DeliveryTracking as y, cartSchema as yi, consentActionSchema as yn, deliveryQuoteSchema as yr, reviewPageSchema as yt, AnalyticsServerEventName as z, CashReceiptIdentityType as zn, ProductDetail as zr, createInquiryRequestSchema 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 PaymentFailureCategory, $r as PageParams, $t as CouponResult, A as ANALYTICS_MAX_BATCH_BYTES, An as MyClaim, Ar as paymentStatusSchema, At as memberAddressRequestSchema, B as analyticsBatchSchema, Bn as CashReceiptRequest, Br as ProductFacets, Bt as createInquiryResultSchema, C as PurchaseDecisionResult, Cn as consentUpdateRequestSchema, Cr as paymentFailureCategorySchema, Ct as uploadTicketSchema, D as orderShippingAddressSchema, Dn as ClaimType, Dr as paymentOptionListSchema, Dt as MemberAddressRequest, E as myOrderSchema, En as ClaimReturnAddress, Er as paymentOptionKey, Et as MemberAddress, F as AnalyticsBatch, Fn as createClaimResultSchema, Fr as shippingAddressInputSchema, Ft as CreateInquiryRequest, G as StorefrontClient, Gn as DeliveryQuoteRequest, Gr as productCardSchema, Gt as CustomerInquiryCategory, H as analyticsClientEventSchema, Hn as CheckoutDelivery, Hr as ProductSearchParams, Ht as publicInquirySchema, I as AnalyticsClientEvent, In as myClaimSchema, Ir as startPaymentRequestSchema, It as CreateInquiryResult, J as STOREFRONT_SESSION_KEYS, Jn as GuestInfo, Jr as productPageSchema, Jt as customerInquirySchema, K as StorefrontClientOptions, Kn as DeliveryQuoteResult, Kr as productDetailSchema, Kt as createCustomerInquiryRequestSchema, L as AnalyticsClientEventName, Ln as AvailablePaymentOption, Lr as CategoryNode, Lt as ProductInquiryCategory, M as ANALYTICS_SESSION_HEADER, Mn as claimReturnAddressSchema, Mr as remoteAreaSchema, Mt as memberSchema, N as ANALYTICS_VISITOR_COOKIE, Nn as claimTypeSchema, Nr as residentNumberLike, Nt as updateProfileRequestSchema, O as purchaseDecisionResultSchema, On as CreateClaimRequest, Or as paymentOptionSchema, Ot as UpdateProfileRequest, P as ANALYTICS_VISITOR_HEADER, Pn as createClaimRequestSchema, Pr as retryPaymentRequestSchema, Pt as wishlistAddResultSchema, Q as createStorefrontSession, Qn as PAYMENT_STATUS_VALUES, Qr as PageInfo, Qt as CouponApplication, R as AnalyticsEventName, Rn as CASH_RECEIPT_METHODS, Rr as ProductCard, Rt as PublicInquiry, S as OrderShippingAddress, Sn as consentStateSchema, Sr as guestInfoSchema, St as updateReviewResultSchema, T as myOrderItemSchema, Tn as ClaimReason, Tr as paymentMethodSchema, Tt as Member, U as analyticsIdSchema, Un as CheckoutSession, Ur as ProductSort, Ut as CreateCustomerInquiryRequest, V as analyticsClientEventNameSchema, Vn as CashReceiptType, Vr as ProductPage, Vt as productInquiryCategorySchema, W as analyticsServerEventNameSchema, Wn as CreateCheckoutRequest, Wr as categoryNodeSchema, Wt as CustomerInquiry, X as StorefrontSession, Xn as KnownPaymentStatus, Xr as ClaimStatus, Xt as CheckoutPricing, Y as SessionStorage, Yn as KnownPaymentResult, Yr as productSortSchema, Yt as ApplicableCoupon, Z as StorefrontSessionOptions, Zn as PAYMENT_RESULT_VALUES, Zr as OrderItemStatus, Zt as CheckoutPricingRequest, _ as normalizeCustomInputValue, _i as addCartItemRequestSchema, _n as ConsentUpdateRequest, _r as createCheckoutRequestSchema, _t as publicReviewSchema, a as CustomInputEntry, ai as MyOrderItemFulfillmentSnapshot, an as checkoutPricingSchema, ar as PgProvider, at as ReviewImageUploadRequest, b as MyOrder, bi as updateCartItemRequestSchema, bn as consentKindSchema, br as easyPayProviderResponseSchema, bt as reviewSummarySchema, c as OptionSelectionView, ci as UnknownFulfillmentView, cn as couponBenefitViewSchema, cr as ShippingAddressInput, ct as UpdateReviewRequest, d as customInputEntrySchema, di as productCardFulfillmentSchema, dn as myCouponSchema, dr as cashReceiptAvailable, dt as WritableReview, ei as claimStatusSchema, en as MAX_COUPONS_PER_CHECKOUT, er as PaymentMessage, et as CreateReviewResult, f as customInputLength, fi as productFulfillmentViewSchema, fn as pricingAmountsSchema, fr as cashReceiptIdentityTypeOf, ft as createReviewRequestSchema, g as lineSelectionResponseShape, gi as UpdateCartItemRequest, gn as ConsentState, gr as checkoutSessionSchema, gt as productReviewSortSchema, h as lineSelectionRequestShape, hi as CartItem, hn as ConsentSource, hr as checkoutDeliverySchema, ht as productReviewQuerySchema, i as AddonSelection, ii as LineFulfillment, in as checkoutPricingRequestSchema, ir as PaymentStatus, it as PublicReview, j as ANALYTICS_SESSION_COOKIE, jn as claimReasonSchema, jr as pgProviderSchema, jt as memberAddressSchema, k as trackingStageResponseSchema, kn as CreateClaimResult, kr as paymentStartSchema, kt as WishlistAddResult, l as addonGroupViewSchema, li as lineFulfillmentSchema, ln as couponResultSchema, lr as StartPaymentRequest, lt as UpdateReviewResult, m as customInputViewSchema, mi as Cart, mn as ConsentKind, mr as cashReceiptTypeSchema, mt as myReviewSchema, n as storefrontStoreSchema, ni as pageInfoSchema, nn as MyCoupon, nr as PaymentOption, nt as ProductReviewParams, o as CustomInputValueView, oi as ProductCardFulfillment, on as couponApplicationListSchema, or as RemoteArea, ot as ReviewPage, p as customInputValueViewSchema, pi as AddCartItemRequest, pn as ConsentAction, pr as cashReceiptRequestSchema, pt as createReviewResultSchema, q as createStorefrontClient, qn as EasyPayProvider, qr as productFacetsSchema, qt as customerInquiryCategorySchema, r as AddonGroupView, ri as pageSchema, rn as applicableCouponSchema, rr as PaymentStart, rt as ProductReviewSort, s as CustomInputView, si as ProductFulfillmentView, sn as couponApplicationSchema, sr as RetryPaymentRequest, st as ReviewSummary, t as StorefrontStore, ti as orderItemStatusSchema, tn as MIN_PAYMENT_AMOUNT, tr as PaymentMethod, tt as MyReview, u as addonSelectionSchema, ui as myOrderItemFulfillmentSnapshotSchema, un as myCouponListQuerySchema, ur as availablePaymentOptionSchema, ut as UploadTicket, v as optionSelectionViewSchema, vi as cartItemSchema, vn as MemberConsents, vr as deliveryQuoteRequestSchema, vt as reviewImageUploadRequestSchema, w as deliveryTrackingSchema, wn as memberConsentsSchema, wr as paymentMessageSchema, wt as writableReviewSchema, x as MyOrderItem, xi as analyticsIdsFromCookie, xn as consentSourceSchema, xr as easyPayProviderSchema, xt as updateReviewRequestSchema, y as DeliveryTracking, yi as cartSchema, yn as consentActionSchema, yr as deliveryQuoteSchema, yt as reviewPageSchema, z as AnalyticsServerEventName, zn as CashReceiptIdentityType, zr as ProductDetail, zt as createInquiryRequestSchema } from "./index-jE8JxvGj.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, MyReview, 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, ProductReviewParams, ProductReviewSort, ProductSearchParams, ProductSort, PublicInquiry, PublicReview, PurchaseDecisionResult, type Query, RemoteArea, RetryPaymentRequest, ReviewImageUploadRequest, 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, UploadTicket, 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, myReviewSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productInquiryCategorySchema, productPageSchema, productReviewQuerySchema, productReviewSortSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewImageUploadRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, uploadTicketSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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
|
|
3
|
+
import { $ as orderItemStatusSchema, A as publicInquirySchema, B as claimReasonSchema, C as memberAddressSchema, D as createInquiryRequestSchema, E as wishlistAddResultSchema, F as consentKindSchema, G as myClaimSchema, H as claimTypeSchema, I as consentSourceSchema, J as productDetailSchema, K as categoryNodeSchema, L as consentStateSchema, M as customerInquiryCategorySchema, N as customerInquirySchema, O as createInquiryResultSchema, P as consentActionSchema, Q as claimStatusSchema, R as consentUpdateRequestSchema, S as memberAddressRequestSchema, St as unwrapData, T as updateProfileRequestSchema, U as createClaimRequestSchema, V as claimReturnAddressSchema, W as createClaimResultSchema, X as productPageSchema, Y as productFacetsSchema, Z as productSortSchema, _ as myOrderItemSchema, _t as withdrawRequestSchema, a as myReviewSchema, at as updateCartItemRequestSchema, b as purchaseDecisionResultSchema, bt as buildQuery, c as publicReviewSchema, ct as idpAuthorizeRequestSchema, d as reviewSummarySchema, dt as linkIdentityRequestSchema, et as pageInfoSchema, f as updateReviewRequestSchema, ft as loginRequestSchema, g as deliveryTrackingSchema, gt as tokenPairSchema, h as writableReviewSchema, ht as socialProviderSchema, i as createReviewResultSchema, it as cartSchema, j as createCustomerInquiryRequestSchema, k as productInquiryCategorySchema, l as reviewImageUploadRequestSchema, lt as idpAuthorizeResponseSchema, m as uploadTicketSchema, mt as signupRequestSchema, n as storefrontStoreSchema, nt as addCartItemRequestSchema, o as productReviewQuerySchema, ot as anonymousSessionSchema, p as updateReviewResultSchema, pt as memberIdentitiesSchema, q as productCardSchema, r as createReviewRequestSchema, rt as cartItemSchema, s as productReviewSortSchema, st as idpAgreementsSchema, t as createStorefrontClient, tt as pageSchema, u as reviewPageSchema, ut as idpTokenRequestSchema, v as myOrderSchema, vt as withdrawalBlockedDetailsSchema, w as memberSchema, x as trackingStageResponseSchema, xt as toApiError, y as orderShippingAddressSchema, yt as ApiError, z as memberConsentsSchema } from "./client-nLYVG_HJ.mjs";
|
|
4
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와 겹치지 않는 별도 네임스페이스. */
|
|
@@ -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, myReviewSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productInquiryCategorySchema, productPageSchema, productReviewQuerySchema, productReviewSortSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewImageUploadRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, uploadTicketSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Bn as CashReceiptRequest, Jn as GuestInfo, cr as ShippingAddressInput, ir as PaymentStatus, lr as StartPaymentRequest, nr as PaymentOption, q as createStorefrontClient, rr as PaymentStart } from "../index-jE8JxvGj.mjs";
|
|
2
2
|
//#region src/payments/index.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 스토어프론트 결제 — 브라우저 전용(`@sayren/storefront-sdk/payments`).
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -91,9 +91,14 @@ import {
|
|
|
91
91
|
type CreateReviewRequest,
|
|
92
92
|
createReviewRequestSchema,
|
|
93
93
|
createReviewResultSchema,
|
|
94
|
+
myReviewSchema,
|
|
95
|
+
type ProductReviewParams,
|
|
96
|
+
type ReviewImageUploadRequest,
|
|
97
|
+
reviewImageUploadRequestSchema,
|
|
94
98
|
reviewPageSchema,
|
|
95
99
|
type UpdateReviewRequest,
|
|
96
100
|
updateReviewRequestSchema,
|
|
101
|
+
uploadTicketSchema,
|
|
97
102
|
writableReviewSchema,
|
|
98
103
|
} from "./schemas/review";
|
|
99
104
|
import { storefrontStoreSchema } from "./schemas/store";
|
|
@@ -243,14 +248,8 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
243
248
|
http.request("GET", "/products", productPageSchema, { query: params as Query }),
|
|
244
249
|
getProduct: (productId: string) =>
|
|
245
250
|
http.request("GET", path`/products/${productId}`, productDetailSchema),
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
params?: PageParams & {
|
|
249
|
-
rating?: number;
|
|
250
|
-
hasImage?: boolean;
|
|
251
|
-
sort?: "latest" | "ratingDesc" | "ratingAsc" | "helpful";
|
|
252
|
-
},
|
|
253
|
-
) =>
|
|
251
|
+
/** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
|
|
252
|
+
listProductReviews: (productId: string, params?: ProductReviewParams) =>
|
|
254
253
|
http.request("GET", path`/products/${productId}/reviews`, reviewPageSchema, {
|
|
255
254
|
query: params as Query,
|
|
256
255
|
}),
|
|
@@ -412,8 +411,21 @@ export function createStorefrontClient(options: StorefrontClientOptions) {
|
|
|
412
411
|
},
|
|
413
412
|
|
|
414
413
|
reviews: {
|
|
414
|
+
/** 내가 쓴 리뷰 — 최신순. 수정·삭제는 항목의 `reviewId`로 한다(이슈 #95) */
|
|
415
|
+
listMine: (params?: PageParams) =>
|
|
416
|
+
http.request("GET", "/me/reviews", pageSchema(myReviewSchema), {
|
|
417
|
+
query: params as Query,
|
|
418
|
+
}),
|
|
415
419
|
listWritable: () =>
|
|
416
420
|
http.request("GET", "/me/reviews/writable", z.array(writableReviewSchema)),
|
|
421
|
+
/**
|
|
422
|
+
* 리뷰 사진 업로드 자리(이슈 #96) — 응답 `uploadUrl`에 파일을 PUT한 뒤 `url`을 `create`·`update`의 `images`에 넣는다.
|
|
423
|
+
* 형식·크기가 맞지 않으면 400 `UNSUPPORTED_FILE_TYPE`·413 `FILE_TOO_LARGE`, 연타하면 429 `TOO_MANY_REQUESTS`다
|
|
424
|
+
*/
|
|
425
|
+
createImageUpload: (body: ReviewImageUploadRequest) =>
|
|
426
|
+
http.request("POST", "/me/uploads", uploadTicketSchema, {
|
|
427
|
+
body: reviewImageUploadRequestSchema.parse(body),
|
|
428
|
+
}),
|
|
417
429
|
create: (orderItemId: string, body: CreateReviewRequest) =>
|
|
418
430
|
http.request(
|
|
419
431
|
"POST",
|
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/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/review.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { pageSchema } from "./common";
|
|
2
|
+
import { type PageParams, pageSchema } from "./common";
|
|
3
3
|
|
|
4
4
|
export const publicReviewSchema = z.object({
|
|
5
5
|
reviewId: z.string(),
|
|
@@ -7,6 +7,14 @@ export const publicReviewSchema = z.object({
|
|
|
7
7
|
content: z.string(),
|
|
8
8
|
images: z.array(z.url()),
|
|
9
9
|
optionName: z.string().nullable(),
|
|
10
|
+
variantId: z
|
|
11
|
+
.string()
|
|
12
|
+
.nullable()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe(
|
|
15
|
+
"리뷰를 쓴 주문상품의 옵션(조합) id(이슈 #91). 상품 상세 `variants[].variantId`와 같은 값이고 리뷰 목록의 `variantId` 필터 키다. " +
|
|
16
|
+
"옵션 없는 상품도 기본 조합 id가 있다. 주문상품을 찾지 못한 리뷰는 null이다. 서버는 항상 싣는다",
|
|
17
|
+
),
|
|
10
18
|
writerMaskedName: z.string(),
|
|
11
19
|
sellerReply: z
|
|
12
20
|
.object({
|
|
@@ -27,6 +35,39 @@ export const reviewSummarySchema = z.object({
|
|
|
27
35
|
|
|
28
36
|
export type ReviewSummary = z.infer<typeof reviewSummarySchema>;
|
|
29
37
|
|
|
38
|
+
/**
|
|
39
|
+
* 내가 쓴 리뷰 (이슈 #95) — `GET /me/reviews`. 수정·삭제(`PUT`·`DELETE /me/reviews/{reviewId}`)에 쓰는 `reviewId`와 상품 링크를 싣는다.
|
|
40
|
+
* 상품 정보는 주문 시점 값이고, 주문상품을 찾지 못하면 지금 상품의 값이다. 둘 다 없으면 null이다.
|
|
41
|
+
*/
|
|
42
|
+
export const myReviewSchema = z.object({
|
|
43
|
+
reviewId: z.string(),
|
|
44
|
+
productId: z.string(),
|
|
45
|
+
productName: z.string().nullable().describe("주문 시점 상품명. 찾지 못하면 null"),
|
|
46
|
+
thumbnailUrl: z.url().nullable().describe("주문 시점 대표 이미지. 없으면 null"),
|
|
47
|
+
optionName: z.string().nullable(),
|
|
48
|
+
rating: z.number().int().min(1).max(5),
|
|
49
|
+
content: z.string(),
|
|
50
|
+
images: z.array(z.url()),
|
|
51
|
+
sellerReply: z
|
|
52
|
+
.object({
|
|
53
|
+
content: z.string(),
|
|
54
|
+
repliedAt: z.string(),
|
|
55
|
+
})
|
|
56
|
+
.nullable(),
|
|
57
|
+
blinded: z
|
|
58
|
+
.boolean()
|
|
59
|
+
.describe("판매자가 가린 리뷰. true면 상품 리뷰 목록에 보이지 않는다(작성자에게만 보인다)"),
|
|
60
|
+
editable: z
|
|
61
|
+
.boolean()
|
|
62
|
+
.describe(
|
|
63
|
+
"지금 수정할 수 있는가. 작성 후 30일까지다. 지나면 `PUT /me/reviews/{reviewId}`가 409 `PERIOD_EXPIRED`다",
|
|
64
|
+
),
|
|
65
|
+
editableUntil: z.string().describe("수정 기한(ISO 8601)"),
|
|
66
|
+
createdAt: z.string(),
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export type MyReview = z.infer<typeof myReviewSchema>;
|
|
70
|
+
|
|
30
71
|
export const writableReviewSchema = z.object({
|
|
31
72
|
orderItemId: z.string(),
|
|
32
73
|
productId: z.string(),
|
|
@@ -65,6 +106,72 @@ export const updateReviewRequestSchema = z
|
|
|
65
106
|
|
|
66
107
|
export type UpdateReviewRequest = z.infer<typeof updateReviewRequestSchema>;
|
|
67
108
|
|
|
109
|
+
/** 리뷰 정렬 — `helpful`은 도움 데이터가 없어 평점 높은 순과 같다 */
|
|
110
|
+
export const productReviewSortSchema = z.enum(["latest", "ratingDesc", "ratingAsc", "helpful"]);
|
|
111
|
+
|
|
112
|
+
export type ProductReviewSort = z.infer<typeof productReviewSortSchema>;
|
|
113
|
+
|
|
114
|
+
/** `GET /products/{productId}/reviews` 쿼리 — 문서용이다. 쿼리 문자열이라 값은 문자열로 받는다 */
|
|
115
|
+
export const productReviewQuerySchema = z.object({
|
|
116
|
+
rating: z.string().optional().describe("이 평점(1~5)의 리뷰만"),
|
|
117
|
+
hasImage: z.string().optional().describe("`true`면 사진이 있는 리뷰만"),
|
|
118
|
+
variantId: z
|
|
119
|
+
.string()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe(
|
|
122
|
+
"이 옵션(조합)으로 산 리뷰만(이슈 #91). 상품 상세 `variants[].variantId`이고 리뷰 응답의 `variantId`와 같은 값이다. " +
|
|
123
|
+
"다른 필터와 함께 쓰면 모두 만족하는 리뷰만 온다",
|
|
124
|
+
),
|
|
125
|
+
sort: z
|
|
126
|
+
.string()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe("정렬. `latest`(기본)·`ratingDesc`·`ratingAsc`·`helpful`(평점 높은 순과 같다)"),
|
|
129
|
+
page: z.string().optional().describe("페이지 번호 (1부터)"),
|
|
130
|
+
size: z.string().optional().describe("페이지 크기"),
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
/** 리뷰 목록 조회 파라미터 — `catalog.listProductReviews` */
|
|
134
|
+
export interface ProductReviewParams extends PageParams {
|
|
135
|
+
rating?: number;
|
|
136
|
+
hasImage?: boolean;
|
|
137
|
+
/** 이 옵션(조합)으로 산 리뷰만 — 상품 상세 `variants[].variantId` */
|
|
138
|
+
variantId?: string;
|
|
139
|
+
sort?: ProductReviewSort;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* 리뷰 사진 업로드 자리 발급 (이슈 #96) — `POST /me/uploads`(구매자 로그인). 파일 바이트는 api를 거치지 않는다.
|
|
144
|
+
* 응답 `uploadUrl`에 파일을 그대로 PUT하면 `url`이 공개 주소가 되고, 그 주소를 리뷰 작성·수정의 `images`에 넣는다.
|
|
145
|
+
* 형식·크기 제한은 관리 API 상품 이미지(`product-image`)와 같은 정지 이미지 규칙이다(값은 API 문서). 서버가 객체 키를 정하므로 파일명은 확장자만 쓰인다.
|
|
146
|
+
*/
|
|
147
|
+
export const reviewImageUploadRequestSchema = z.object({
|
|
148
|
+
filename: z
|
|
149
|
+
.string()
|
|
150
|
+
.min(1)
|
|
151
|
+
.max(255)
|
|
152
|
+
.describe("파일명. 확장자로 형식을 판정하고 이름은 저장하지 않는다"),
|
|
153
|
+
purpose: z
|
|
154
|
+
.enum(["review-image"])
|
|
155
|
+
.default("review-image")
|
|
156
|
+
.describe("업로드 용도. 지금은 `review-image`(리뷰 사진)뿐이다"),
|
|
157
|
+
size: z
|
|
158
|
+
.number()
|
|
159
|
+
.int()
|
|
160
|
+
.positive()
|
|
161
|
+
.optional()
|
|
162
|
+
.describe("파일 바이트 크기. 주면 크기 상한을 발급 전에 검사한다"),
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
export type ReviewImageUploadRequest = z.input<typeof reviewImageUploadRequestSchema>;
|
|
166
|
+
|
|
167
|
+
/** 업로드 자리 — `uploadUrl`은 1시간 유효하다 */
|
|
168
|
+
export const uploadTicketSchema = z.object({
|
|
169
|
+
url: z.url().describe("업로드가 끝나면 공개될 주소. 리뷰의 `images`에 넣는다"),
|
|
170
|
+
uploadUrl: z.url().describe("파일 바이트를 그대로 PUT할 주소. 1시간 유효"),
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
export type UploadTicket = z.infer<typeof uploadTicketSchema>;
|
|
174
|
+
|
|
68
175
|
/** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
|
|
69
176
|
export const reviewPageSchema = pageSchema(publicReviewSchema).extend({
|
|
70
177
|
summary: reviewSummarySchema.optional(),
|
package/src/schemas/store.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
|
+
/**
|
|
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
|
+
|
|
3
15
|
/**
|
|
4
16
|
* 상점 공개 설정 — `GET /store`. 스토어프론트가 화면을 그릴 때 읽는 값만 담는다.
|
|
5
17
|
*/
|
|
@@ -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
|
* 장바구니 담기는 된다 — 주문 버튼을 로그인 안내로 바꾸면 된다
|