@sayren/storefront-sdk 0.18.2 → 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-BNChG_51.mjs → client-nLYVG_HJ.mjs} +63 -1
- package/dist/{index-D2WiGpwr.d.mts → index-jE8JxvGj.d.mts} +108 -8
- 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/review.ts +108 -1
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 {
|
|
@@ -714,6 +714,7 @@ const publicReviewSchema = z.object({
|
|
|
714
714
|
content: z.string(),
|
|
715
715
|
images: z.array(z.url()),
|
|
716
716
|
optionName: z.string().nullable(),
|
|
717
|
+
variantId: z.string().nullable().optional().describe("리뷰를 쓴 주문상품의 옵션(조합) id(이슈 #91). 상품 상세 `variants[].variantId`와 같은 값이고 리뷰 목록의 `variantId` 필터 키다. 옵션 없는 상품도 기본 조합 id가 있다. 주문상품을 찾지 못한 리뷰는 null이다. 서버는 항상 싣는다"),
|
|
717
718
|
writerMaskedName: z.string(),
|
|
718
719
|
sellerReply: z.object({
|
|
719
720
|
content: z.string(),
|
|
@@ -726,6 +727,28 @@ const reviewSummarySchema = z.object({
|
|
|
726
727
|
totalCount: z.number().int(),
|
|
727
728
|
distribution: z.record(z.string(), z.number().int())
|
|
728
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
|
+
});
|
|
729
752
|
const writableReviewSchema = z.object({
|
|
730
753
|
orderItemId: z.string(),
|
|
731
754
|
productId: z.string(),
|
|
@@ -748,6 +771,37 @@ const updateReviewRequestSchema = z.object({
|
|
|
748
771
|
content: z.string().min(10).max(2e3).optional(),
|
|
749
772
|
images: z.array(z.url()).max(5).optional()
|
|
750
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
|
+
});
|
|
751
805
|
/** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
|
|
752
806
|
const reviewPageSchema = pageSchema(publicReviewSchema).extend({ summary: reviewSummarySchema.optional() });
|
|
753
807
|
/** `PUT /me/reviews/{reviewId}` 응답 */
|
|
@@ -880,6 +934,7 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
880
934
|
listCategories: () => http.request("GET", "/categories", z.array(categoryNodeSchema)),
|
|
881
935
|
searchProducts: (params) => http.request("GET", "/products", productPageSchema, { query: params }),
|
|
882
936
|
getProduct: (productId) => http.request("GET", path`/products/${productId}`, productDetailSchema),
|
|
937
|
+
/** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
|
|
883
938
|
listProductReviews: (productId, params) => http.request("GET", path`/products/${productId}/reviews`, reviewPageSchema, { query: params }),
|
|
884
939
|
listProductInquiries: (productId, params) => http.request("GET", path`/products/${productId}/inquiries`, pageSchema(publicInquirySchema), { query: params }),
|
|
885
940
|
createInquiry: (productId, body) => http.requestVoid("POST", path`/products/${productId}/inquiries`, { body })
|
|
@@ -977,7 +1032,14 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
977
1032
|
removeWishlist: (productId) => http.requestVoid("DELETE", path`/me/wishlist/${productId}`)
|
|
978
1033
|
},
|
|
979
1034
|
reviews: {
|
|
1035
|
+
/** 내가 쓴 리뷰 — 최신순. 수정·삭제는 항목의 `reviewId`로 한다(이슈 #95) */
|
|
1036
|
+
listMine: (params) => http.request("GET", "/me/reviews", pageSchema(myReviewSchema), { query: params }),
|
|
980
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) }),
|
|
981
1043
|
create: (orderItemId, body) => http.request("POST", path`/me/order-items/${orderItemId}/review`, createReviewResultSchema, { body: createReviewRequestSchema.parse(body) }),
|
|
982
1044
|
update: (reviewId, body) => http.requestVoid("PUT", path`/me/reviews/${reviewId}`, { body: updateReviewRequestSchema.parse(body) }),
|
|
983
1045
|
remove: (reviewId) => http.requestVoid("DELETE", path`/me/reviews/${reviewId}`)
|
|
@@ -995,4 +1057,4 @@ get: () => http.request("GET", "/store", storefrontStoreSchema) },
|
|
|
995
1057
|
};
|
|
996
1058
|
}
|
|
997
1059
|
//#endregion
|
|
998
|
-
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 };
|
|
@@ -328,12 +328,12 @@ declare const productDetailSchema: z.ZodObject<{
|
|
|
328
328
|
}, z.core.$strip>;
|
|
329
329
|
type ProductDetail = z.infer<typeof productDetailSchema>;
|
|
330
330
|
declare const productSortSchema: z.ZodEnum<{
|
|
331
|
-
latest: "latest";
|
|
332
|
-
ratingDesc: "ratingDesc";
|
|
333
331
|
reviewCount: "reviewCount";
|
|
334
332
|
recommend: "recommend";
|
|
333
|
+
latest: "latest";
|
|
335
334
|
priceAsc: "priceAsc";
|
|
336
335
|
priceDesc: "priceDesc";
|
|
336
|
+
ratingDesc: "ratingDesc";
|
|
337
337
|
}>;
|
|
338
338
|
type ProductSort = z.infer<typeof productSortSchema>;
|
|
339
339
|
interface ProductSearchParams extends PageParams {
|
|
@@ -1546,6 +1546,7 @@ declare const publicReviewSchema: z.ZodObject<{
|
|
|
1546
1546
|
content: z.ZodString;
|
|
1547
1547
|
images: z.ZodArray<z.ZodURL>;
|
|
1548
1548
|
optionName: z.ZodNullable<z.ZodString>;
|
|
1549
|
+
variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1549
1550
|
writerMaskedName: z.ZodString;
|
|
1550
1551
|
sellerReply: z.ZodNullable<z.ZodObject<{
|
|
1551
1552
|
content: z.ZodString;
|
|
@@ -1560,6 +1561,29 @@ declare const reviewSummarySchema: z.ZodObject<{
|
|
|
1560
1561
|
distribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
1561
1562
|
}, z.core.$strip>;
|
|
1562
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>;
|
|
1563
1587
|
declare const writableReviewSchema: z.ZodObject<{
|
|
1564
1588
|
orderItemId: z.ZodString;
|
|
1565
1589
|
productId: z.ZodString;
|
|
@@ -1586,6 +1610,50 @@ declare const updateReviewRequestSchema: z.ZodObject<{
|
|
|
1586
1610
|
images: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
1587
1611
|
}, z.core.$strip>;
|
|
1588
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>;
|
|
1589
1657
|
/** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
|
|
1590
1658
|
declare const reviewPageSchema: z.ZodObject<{
|
|
1591
1659
|
page: z.ZodNumber;
|
|
@@ -1598,6 +1666,7 @@ declare const reviewPageSchema: z.ZodObject<{
|
|
|
1598
1666
|
content: z.ZodString;
|
|
1599
1667
|
images: z.ZodArray<z.ZodURL>;
|
|
1600
1668
|
optionName: z.ZodNullable<z.ZodString>;
|
|
1669
|
+
variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1601
1670
|
writerMaskedName: z.ZodString;
|
|
1602
1671
|
sellerReply: z.ZodNullable<z.ZodObject<{
|
|
1603
1672
|
content: z.ZodString;
|
|
@@ -1921,11 +1990,8 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1921
1990
|
name: string;
|
|
1922
1991
|
}[];
|
|
1923
1992
|
}>;
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
hasImage?: boolean;
|
|
1927
|
-
sort?: "latest" | "ratingDesc" | "ratingAsc" | "helpful";
|
|
1928
|
-
}) => Promise<{
|
|
1993
|
+
/** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
|
|
1994
|
+
listProductReviews: (productId: string, params?: ProductReviewParams) => Promise<{
|
|
1929
1995
|
page: number;
|
|
1930
1996
|
size: number;
|
|
1931
1997
|
totalElements: number;
|
|
@@ -1942,6 +2008,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
1942
2008
|
repliedAt: string;
|
|
1943
2009
|
} | null;
|
|
1944
2010
|
createdAt: string;
|
|
2011
|
+
variantId?: string | null | undefined;
|
|
1945
2012
|
}[];
|
|
1946
2013
|
summary?: {
|
|
1947
2014
|
averageRating: number;
|
|
@@ -2758,6 +2825,31 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2758
2825
|
removeWishlist: (productId: string) => Promise<void>;
|
|
2759
2826
|
};
|
|
2760
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
|
+
}>;
|
|
2761
2853
|
listWritable: () => Promise<{
|
|
2762
2854
|
orderItemId: string;
|
|
2763
2855
|
productId: string;
|
|
@@ -2766,6 +2858,14 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
|
|
|
2766
2858
|
thumbnailUrl: string | null;
|
|
2767
2859
|
writableUntil: string;
|
|
2768
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
|
+
}>;
|
|
2769
2869
|
create: (orderItemId: string, body: CreateReviewRequest) => Promise<{
|
|
2770
2870
|
reviewId: string;
|
|
2771
2871
|
rewardPoint: number;
|
|
@@ -3309,4 +3409,4 @@ declare const storefrontStoreSchema: z.ZodObject<{
|
|
|
3309
3409
|
}, z.core.$strip>;
|
|
3310
3410
|
type StorefrontStore = z.infer<typeof storefrontStoreSchema>;
|
|
3311
3411
|
//#endregion
|
|
3312
|
-
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, 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 };
|
|
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, 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 };
|
|
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/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(),
|