@sayren/storefront-sdk 0.18.2 → 0.18.4

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.
@@ -1,4 +1,4 @@
1
- import { mt as ApiError, t as createStorefrontClient } from "../client-BNChG_51.mjs";
1
+ import { t as createStorefrontClient, yt as ApiError } from "../client-5Nd-KG-G.mjs";
2
2
  //#region src/auth/index.ts
3
3
  /** 소셜 로그인 실패 — 구매자가 취소했거나(`access_denied`) state가 맞지 않는다 */
4
4
  var IdpCallbackError = class extends Error {
@@ -536,7 +536,8 @@ const paymentStatusSchema = z.object({
536
536
  attemptId: z.string(),
537
537
  category: z.string().describe("`PREPARE_FAILURE`·`DECLINED`·`USER_CANCELED`(값이 추가될 수 있다)"),
538
538
  code: z.string().nullable().describe("PG가 준 실패 코드. 내부 사유는 null입니다. 화면 분기는 `category`로 하십시오"),
539
- message: z.string().nullable().describe("구매자에게 보여 줄 안내 문구")
539
+ message: z.string().nullable().describe("구매자에게 보여 줄 안내 문구"),
540
+ optionUnavailable: z.boolean().optional().describe("true면 상점의 PG 설정 문제처럼 구매자가 고칠 수 없는 실패입니다(이슈 #86). 같은 결제 옵션으로 다시 시도해도 실패하므로 그 옵션을 고르지 못하게 하고 다른 결제수단을 고르게 하십시오. 이때 `message`는 그 안내입니다. 서버는 항상 싣습니다")
540
541
  }).nullable().describe("현재 결제 시도가 실패·취소로 끝났으면 그 내용, 아니면 null"),
541
542
  testPayment: z.boolean().describe("테스트 결제(샌드박스)인가. true면 실제로 돈이 나가지 않았습니다"),
542
543
  expiresAt: z.string().describe("결제 요청 만료 시각")
@@ -1,5 +1,5 @@
1
1
  import { a as ANALYTICS_VISITOR_HEADER, r as ANALYTICS_SESSION_HEADER } from "./analytics-CgD70OqH.mjs";
2
- import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, C as paymentStartSchema, F as checkoutPricingSchema, J as customInputViewSchema, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, U as addonGroupViewSchema, V as myCouponSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, m as easyPayProviderResponseSchema, nt as productFulfillmentViewSchema, p as deliveryQuoteSchema, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, w as paymentStatusSchema, y as paymentMethodSchema } from "./checkout-PJk8g5DY.mjs";
2
+ import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, C as paymentStartSchema, F as checkoutPricingSchema, J as customInputViewSchema, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, U as addonGroupViewSchema, V as myCouponSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, m as easyPayProviderResponseSchema, nt as productFulfillmentViewSchema, p as deliveryQuoteSchema, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, w as paymentStatusSchema, y as paymentMethodSchema } from "./checkout-CCsO8PY2.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/http.ts
5
5
  /** 표준 엔벨로프의 $.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`(랭킹순)은 사진 있는 리뷰 → 평점 높은 순 → 최신 순이다(도움돼요 수 데이터는 없다, #97) */
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 { cartSchema as $, consentKindSchema as A, myClaimSchema as B, createInquiryResultSchema as C, customerInquiryCategorySchema as D, createCustomerInquiryRequestSchema as E, claimReasonSchema as F, productPageSchema as G, productCardSchema as H, claimReturnAddressSchema as I, orderItemStatusSchema as J, productSortSchema as K, claimTypeSchema as L, consentStateSchema as M, consentUpdateRequestSchema as N, customerInquirySchema as O, memberConsentsSchema as P, cartItemSchema as Q, createClaimRequestSchema as R, createInquiryRequestSchema as S, publicInquirySchema as T, productDetailSchema as U, categoryNodeSchema as V, productFacetsSchema as W, pageSchema as X, pageInfoSchema as Y, addCartItemRequestSchema as Z, memberAddressRequestSchema as _, unwrapData as _t, publicReviewSchema as a, idpTokenRequestSchema as at, updateProfileRequestSchema as b, updateReviewRequestSchema as c, memberIdentitiesSchema as ct, deliveryTrackingSchema as d, tokenPairSchema as dt, updateCartItemRequestSchema as et, myOrderItemSchema as f, withdrawRequestSchema as ft, trackingStageResponseSchema as g, toApiError as gt, purchaseDecisionResultSchema as h, buildQuery as ht, createReviewResultSchema as i, idpAuthorizeResponseSchema as it, consentSourceSchema as j, consentActionSchema as k, updateReviewResultSchema as l, signupRequestSchema as lt, orderShippingAddressSchema as m, ApiError as mt, storefrontStoreSchema as n, idpAgreementsSchema as nt, reviewPageSchema as o, linkIdentityRequestSchema as ot, myOrderSchema as p, withdrawalBlockedDetailsSchema as pt, claimStatusSchema as q, createReviewRequestSchema as r, idpAuthorizeRequestSchema as rt, reviewSummarySchema as s, loginRequestSchema as st, createStorefrontClient as t, anonymousSessionSchema as tt, writableReviewSchema as u, socialProviderSchema as ut, memberAddressSchema as v, productInquiryCategorySchema as w, wishlistAddResultSchema as x, memberSchema as y, createClaimResultSchema as z };
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 {
@@ -1023,6 +1023,7 @@ declare const paymentStatusSchema: z.ZodObject<{
1023
1023
  category: z.ZodString;
1024
1024
  code: z.ZodNullable<z.ZodString>;
1025
1025
  message: z.ZodNullable<z.ZodString>;
1026
+ optionUnavailable: z.ZodOptional<z.ZodBoolean>;
1026
1027
  }, z.core.$strip>>;
1027
1028
  testPayment: z.ZodBoolean;
1028
1029
  expiresAt: z.ZodString;
@@ -1546,6 +1547,7 @@ declare const publicReviewSchema: z.ZodObject<{
1546
1547
  content: z.ZodString;
1547
1548
  images: z.ZodArray<z.ZodURL>;
1548
1549
  optionName: z.ZodNullable<z.ZodString>;
1550
+ variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1549
1551
  writerMaskedName: z.ZodString;
1550
1552
  sellerReply: z.ZodNullable<z.ZodObject<{
1551
1553
  content: z.ZodString;
@@ -1560,6 +1562,29 @@ declare const reviewSummarySchema: z.ZodObject<{
1560
1562
  distribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
1561
1563
  }, z.core.$strip>;
1562
1564
  type ReviewSummary = z.infer<typeof reviewSummarySchema>;
1565
+ /**
1566
+ * 내가 쓴 리뷰 (이슈 #95) — `GET /me/reviews`. 수정·삭제(`PUT`·`DELETE /me/reviews/{reviewId}`)에 쓰는 `reviewId`와 상품 링크를 싣는다.
1567
+ * 상품 정보는 주문 시점 값이고, 주문상품을 찾지 못하면 지금 상품의 값이다. 둘 다 없으면 null이다.
1568
+ */
1569
+ declare const myReviewSchema: z.ZodObject<{
1570
+ reviewId: z.ZodString;
1571
+ productId: z.ZodString;
1572
+ productName: z.ZodNullable<z.ZodString>;
1573
+ thumbnailUrl: z.ZodNullable<z.ZodURL>;
1574
+ optionName: z.ZodNullable<z.ZodString>;
1575
+ rating: z.ZodNumber;
1576
+ content: z.ZodString;
1577
+ images: z.ZodArray<z.ZodURL>;
1578
+ sellerReply: z.ZodNullable<z.ZodObject<{
1579
+ content: z.ZodString;
1580
+ repliedAt: z.ZodString;
1581
+ }, z.core.$strip>>;
1582
+ blinded: z.ZodBoolean;
1583
+ editable: z.ZodBoolean;
1584
+ editableUntil: z.ZodString;
1585
+ createdAt: z.ZodString;
1586
+ }, z.core.$strip>;
1587
+ type MyReview = z.infer<typeof myReviewSchema>;
1563
1588
  declare const writableReviewSchema: z.ZodObject<{
1564
1589
  orderItemId: z.ZodString;
1565
1590
  productId: z.ZodString;
@@ -1586,6 +1611,50 @@ declare const updateReviewRequestSchema: z.ZodObject<{
1586
1611
  images: z.ZodOptional<z.ZodArray<z.ZodURL>>;
1587
1612
  }, z.core.$strip>;
1588
1613
  type UpdateReviewRequest = z.infer<typeof updateReviewRequestSchema>;
1614
+ /** 리뷰 정렬 — `helpful`(랭킹순)은 사진 있는 리뷰 → 평점 높은 순 → 최신 순이다(도움돼요 수 데이터는 없다, #97) */
1615
+ declare const productReviewSortSchema: z.ZodEnum<{
1616
+ latest: "latest";
1617
+ ratingDesc: "ratingDesc";
1618
+ ratingAsc: "ratingAsc";
1619
+ helpful: "helpful";
1620
+ }>;
1621
+ type ProductReviewSort = z.infer<typeof productReviewSortSchema>;
1622
+ /** `GET /products/{productId}/reviews` 쿼리 — 문서용이다. 쿼리 문자열이라 값은 문자열로 받는다 */
1623
+ declare const productReviewQuerySchema: z.ZodObject<{
1624
+ rating: z.ZodOptional<z.ZodString>;
1625
+ hasImage: z.ZodOptional<z.ZodString>;
1626
+ variantId: z.ZodOptional<z.ZodString>;
1627
+ sort: z.ZodOptional<z.ZodString>;
1628
+ page: z.ZodOptional<z.ZodString>;
1629
+ size: z.ZodOptional<z.ZodString>;
1630
+ }, z.core.$strip>;
1631
+ /** 리뷰 목록 조회 파라미터 — `catalog.listProductReviews` */
1632
+ interface ProductReviewParams extends PageParams {
1633
+ rating?: number;
1634
+ hasImage?: boolean;
1635
+ /** 이 옵션(조합)으로 산 리뷰만 — 상품 상세 `variants[].variantId` */
1636
+ variantId?: string;
1637
+ sort?: ProductReviewSort;
1638
+ }
1639
+ /**
1640
+ * 리뷰 사진 업로드 자리 발급 (이슈 #96) — `POST /me/uploads`(구매자 로그인). 파일 바이트는 api를 거치지 않는다.
1641
+ * 응답 `uploadUrl`에 파일을 그대로 PUT하면 `url`이 공개 주소가 되고, 그 주소를 리뷰 작성·수정의 `images`에 넣는다.
1642
+ * 형식·크기 제한은 관리 API 상품 이미지(`product-image`)와 같은 정지 이미지 규칙이다(값은 API 문서). 서버가 객체 키를 정하므로 파일명은 확장자만 쓰인다.
1643
+ */
1644
+ declare const reviewImageUploadRequestSchema: z.ZodObject<{
1645
+ filename: z.ZodString;
1646
+ purpose: z.ZodDefault<z.ZodEnum<{
1647
+ "review-image": "review-image";
1648
+ }>>;
1649
+ size: z.ZodOptional<z.ZodNumber>;
1650
+ }, z.core.$strip>;
1651
+ type ReviewImageUploadRequest = z.input<typeof reviewImageUploadRequestSchema>;
1652
+ /** 업로드 자리 — `uploadUrl`은 1시간 유효하다 */
1653
+ declare const uploadTicketSchema: z.ZodObject<{
1654
+ url: z.ZodURL;
1655
+ uploadUrl: z.ZodURL;
1656
+ }, z.core.$strip>;
1657
+ type UploadTicket = z.infer<typeof uploadTicketSchema>;
1589
1658
  /** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
1590
1659
  declare const reviewPageSchema: z.ZodObject<{
1591
1660
  page: z.ZodNumber;
@@ -1598,6 +1667,7 @@ declare const reviewPageSchema: z.ZodObject<{
1598
1667
  content: z.ZodString;
1599
1668
  images: z.ZodArray<z.ZodURL>;
1600
1669
  optionName: z.ZodNullable<z.ZodString>;
1670
+ variantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1601
1671
  writerMaskedName: z.ZodString;
1602
1672
  sellerReply: z.ZodNullable<z.ZodObject<{
1603
1673
  content: z.ZodString;
@@ -1921,11 +1991,8 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
1921
1991
  name: string;
1922
1992
  }[];
1923
1993
  }>;
1924
- listProductReviews: (productId: string, params?: PageParams & {
1925
- rating?: number;
1926
- hasImage?: boolean;
1927
- sort?: "latest" | "ratingDesc" | "ratingAsc" | "helpful";
1928
- }) => Promise<{
1994
+ /** 상품 리뷰 목록 — `variantId`로 옵션(조합)별 리뷰만 받는다(상품 상세 `variants[].variantId`) */
1995
+ listProductReviews: (productId: string, params?: ProductReviewParams) => Promise<{
1929
1996
  page: number;
1930
1997
  size: number;
1931
1998
  totalElements: number;
@@ -1942,6 +2009,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
1942
2009
  repliedAt: string;
1943
2010
  } | null;
1944
2011
  createdAt: string;
2012
+ variantId?: string | null | undefined;
1945
2013
  }[];
1946
2014
  summary?: {
1947
2015
  averageRating: number;
@@ -2310,6 +2378,7 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
2310
2378
  category: string;
2311
2379
  code: string | null;
2312
2380
  message: string | null;
2381
+ optionUnavailable?: boolean | undefined;
2313
2382
  } | null;
2314
2383
  testPayment: boolean;
2315
2384
  expiresAt: string;
@@ -2758,6 +2827,31 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
2758
2827
  removeWishlist: (productId: string) => Promise<void>;
2759
2828
  };
2760
2829
  reviews: {
2830
+ /** 내가 쓴 리뷰 — 최신순. 수정·삭제는 항목의 `reviewId`로 한다(이슈 #95) */
2831
+ listMine: (params?: PageParams) => Promise<{
2832
+ page: number;
2833
+ size: number;
2834
+ totalElements: number;
2835
+ totalPages: number;
2836
+ contents: {
2837
+ reviewId: string;
2838
+ productId: string;
2839
+ productName: string | null;
2840
+ thumbnailUrl: string | null;
2841
+ optionName: string | null;
2842
+ rating: number;
2843
+ content: string;
2844
+ images: string[];
2845
+ sellerReply: {
2846
+ content: string;
2847
+ repliedAt: string;
2848
+ } | null;
2849
+ blinded: boolean;
2850
+ editable: boolean;
2851
+ editableUntil: string;
2852
+ createdAt: string;
2853
+ }[];
2854
+ }>;
2761
2855
  listWritable: () => Promise<{
2762
2856
  orderItemId: string;
2763
2857
  productId: string;
@@ -2766,6 +2860,14 @@ declare function createStorefrontClient(options: StorefrontClientOptions): {
2766
2860
  thumbnailUrl: string | null;
2767
2861
  writableUntil: string;
2768
2862
  }[]>;
2863
+ /**
2864
+ * 리뷰 사진 업로드 자리(이슈 #96) — 응답 `uploadUrl`에 파일을 PUT한 뒤 `url`을 `create`·`update`의 `images`에 넣는다.
2865
+ * 형식·크기가 맞지 않으면 400 `UNSUPPORTED_FILE_TYPE`·413 `FILE_TOO_LARGE`, 연타하면 429 `TOO_MANY_REQUESTS`다
2866
+ */
2867
+ createImageUpload: (body: ReviewImageUploadRequest) => Promise<{
2868
+ url: string;
2869
+ uploadUrl: string;
2870
+ }>;
2769
2871
  create: (orderItemId: string, body: CreateReviewRequest) => Promise<{
2770
2872
  reviewId: string;
2771
2873
  rewardPoint: number;
@@ -3309,4 +3411,4 @@ declare const storefrontStoreSchema: z.ZodObject<{
3309
3411
  }, z.core.$strip>;
3310
3412
  type StorefrontStore = z.infer<typeof storefrontStoreSchema>;
3311
3413
  //#endregion
3312
- export { CreateReviewRequest as $, StartPaymentRequest as $n, lineFulfillmentSchema as $r, couponResultSchema as $t, ANALYTICS_MAX_BATCH_BYTES as A, CashReceiptRequest as An, ProductFacets as Ar, createInquiryResultSchema as At, analyticsBatchSchema as B, KnownPaymentStatus as Bn, ClaimStatus as Br, CheckoutPricing as Bt, PurchaseDecisionResult as C, claimTypeSchema as Cn, residentNumberLike as Cr, updateProfileRequestSchema as Ct, orderShippingAddressSchema as D, AvailablePaymentOption as Dn, CategoryNode as Dr, ProductInquiryCategory as Dt, myOrderSchema as E, myClaimSchema as En, startPaymentRequestSchema as Er, CreateInquiryResult as Et, AnalyticsBatch as F, DeliveryQuoteRequest as Fn, productCardSchema as Fr, CustomerInquiryCategory as Ft, StorefrontClient as G, PaymentMethod as Gn, orderItemStatusSchema as Gr, MIN_PAYMENT_AMOUNT as Gt, analyticsClientEventSchema as H, PAYMENT_STATUS_VALUES as Hn, PageInfo as Hr, CouponApplication as Ht, AnalyticsClientEvent as I, DeliveryQuoteResult as In, productDetailSchema as Ir, createCustomerInquiryRequestSchema as It, STOREFRONT_SESSION_KEYS as J, PaymentStatus as Jn, LineFulfillment as Jr, checkoutPricingRequestSchema as Jt, StorefrontClientOptions as K, PaymentOption as Kn, pageInfoSchema as Kr, MyCoupon as Kt, AnalyticsClientEventName as L, EasyPayProvider as Ln, productFacetsSchema as Lr, customerInquiryCategorySchema as Lt, ANALYTICS_SESSION_HEADER as M, CheckoutDelivery as Mn, ProductSearchParams as Mr, publicInquirySchema as Mt, ANALYTICS_VISITOR_COOKIE as N, CheckoutSession as Nn, ProductSort as Nr, CreateCustomerInquiryRequest as Nt, purchaseDecisionResultSchema as O, CASH_RECEIPT_METHODS as On, ProductCard as Or, PublicInquiry as Ot, ANALYTICS_VISITOR_HEADER as P, CreateCheckoutRequest as Pn, categoryNodeSchema as Pr, CustomerInquiry as Pt, createStorefrontSession as Q, ShippingAddressInput as Qn, UnknownFulfillmentView as Qr, couponBenefitViewSchema as Qt, AnalyticsEventName as R, GuestInfo as Rn, productPageSchema as Rr, customerInquirySchema as Rt, OrderShippingAddress as S, claimReturnAddressSchema as Sn, remoteAreaSchema as Sr, memberSchema as St, myOrderItemSchema as T, createClaimResultSchema as Tn, shippingAddressInputSchema as Tr, CreateInquiryRequest as Tt, analyticsIdSchema as U, PaymentFailureCategory as Un, PageParams as Ur, CouponResult as Ut, analyticsClientEventNameSchema as V, PAYMENT_RESULT_VALUES as Vn, OrderItemStatus as Vr, CheckoutPricingRequest as Vt, analyticsServerEventNameSchema as W, PaymentMessage as Wn, claimStatusSchema as Wr, MAX_COUPONS_PER_CHECKOUT as Wt, StorefrontSession as X, RemoteArea as Xn, ProductCardFulfillment as Xr, couponApplicationListSchema as Xt, SessionStorage as Y, PgProvider as Yn, MyOrderItemFulfillmentSnapshot as Yr, checkoutPricingSchema as Yt, StorefrontSessionOptions as Z, RetryPaymentRequest as Zn, ProductFulfillmentView as Zr, couponApplicationSchema as Zt, normalizeCustomInputValue as _, ClaimType as _n, paymentOptionListSchema as _r, MemberAddressRequest as _t, CustomInputEntry as a, CartItem as ai, ConsentSource as an, checkoutDeliverySchema as ar, UpdateReviewResult as at, MyOrder as b, MyClaim as bn, paymentStatusSchema as br, memberAddressRequestSchema as bt, OptionSelectionView as c, cartItemSchema as ci, MemberConsents as cn, deliveryQuoteRequestSchema as cr, createReviewResultSchema as ct, customInputEntrySchema as d, analyticsIdsFromCookie as di, consentSourceSchema as dn, easyPayProviderSchema as dr, reviewSummarySchema as dt, myOrderItemFulfillmentSnapshotSchema as ei, myCouponListQuerySchema as en, availablePaymentOptionSchema as er, CreateReviewResult as et, customInputLength as f, consentStateSchema as fn, guestInfoSchema as fr, updateReviewRequestSchema as ft, lineSelectionResponseShape as g, ClaimReturnAddress as gn, paymentOptionKey as gr, MemberAddress as gt, lineSelectionRequestShape as h, ClaimReason as hn, paymentMethodSchema as hr, Member as ht, AddonSelection as i, Cart as ii, ConsentKind as in, cashReceiptTypeSchema as ir, UpdateReviewRequest as it, ANALYTICS_SESSION_COOKIE as j, CashReceiptType as jn, ProductPage as jr, productInquiryCategorySchema as jt, trackingStageResponseSchema as k, CashReceiptIdentityType as kn, ProductDetail as kr, createInquiryRequestSchema as kt, addonGroupViewSchema as l, cartSchema as li, consentActionSchema as ln, deliveryQuoteSchema as lr, publicReviewSchema as lt, customInputViewSchema as m, memberConsentsSchema as mn, paymentMessageSchema as mr, writableReviewSchema as mt, storefrontStoreSchema as n, productFulfillmentViewSchema as ni, pricingAmountsSchema as nn, cashReceiptIdentityTypeOf as nr, ReviewPage as nt, CustomInputValueView as o, UpdateCartItemRequest as oi, ConsentState as on, checkoutSessionSchema as or, WritableReview as ot, customInputValueViewSchema as p, consentUpdateRequestSchema as pn, paymentFailureCategorySchema as pr, updateReviewResultSchema as pt, createStorefrontClient as q, PaymentStart as qn, pageSchema as qr, applicableCouponSchema as qt, AddonGroupView as r, AddCartItemRequest as ri, ConsentAction as rn, cashReceiptRequestSchema as rr, ReviewSummary as rt, CustomInputView as s, addCartItemRequestSchema as si, ConsentUpdateRequest as sn, createCheckoutRequestSchema as sr, createReviewRequestSchema as st, StorefrontStore as t, productCardFulfillmentSchema as ti, myCouponSchema as tn, cashReceiptAvailable as tr, PublicReview as tt, addonSelectionSchema as u, updateCartItemRequestSchema as ui, consentKindSchema as un, easyPayProviderResponseSchema as ur, reviewPageSchema as ut, optionSelectionViewSchema as v, CreateClaimRequest as vn, paymentOptionSchema as vr, UpdateProfileRequest as vt, deliveryTrackingSchema as w, createClaimRequestSchema as wn, retryPaymentRequestSchema as wr, wishlistAddResultSchema as wt, MyOrderItem as x, claimReasonSchema as xn, pgProviderSchema as xr, memberAddressSchema as xt, DeliveryTracking as y, CreateClaimResult as yn, paymentStartSchema as yr, WishlistAddResult as yt, AnalyticsServerEventName as z, KnownPaymentResult as zn, productSortSchema as zr, ApplicableCoupon as zt };
3414
+ 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 StartPaymentRequest, $r as lineFulfillmentSchema, $t as couponResultSchema, A as ANALYTICS_MAX_BATCH_BYTES, An as CashReceiptRequest, Ar as ProductFacets, At as createInquiryResultSchema, B as analyticsBatchSchema, Bn as KnownPaymentStatus, Br as ClaimStatus, Bt as CheckoutPricing, C as PurchaseDecisionResult, Cn as claimTypeSchema, Cr as residentNumberLike, Ct as updateProfileRequestSchema, D as orderShippingAddressSchema, Dn as AvailablePaymentOption, Dr as CategoryNode, Dt as ProductInquiryCategory, E as myOrderSchema, En as myClaimSchema, Er as startPaymentRequestSchema, Et as CreateInquiryResult, F as AnalyticsBatch, Fn as DeliveryQuoteRequest, Fr as productCardSchema, Ft as CustomerInquiryCategory, G as StorefrontClient, Gn as PaymentMethod, Gr as orderItemStatusSchema, Gt as MIN_PAYMENT_AMOUNT, H as analyticsClientEventSchema, Hn as PAYMENT_STATUS_VALUES, Hr as PageInfo, Ht as CouponApplication, I as AnalyticsClientEvent, In as DeliveryQuoteResult, Ir as productDetailSchema, It as createCustomerInquiryRequestSchema, J as STOREFRONT_SESSION_KEYS, Jn as PaymentStatus, Jr as LineFulfillment, Jt as checkoutPricingRequestSchema, K as StorefrontClientOptions, Kn as PaymentOption, Kr as pageInfoSchema, Kt as MyCoupon, L as AnalyticsClientEventName, Ln as EasyPayProvider, Lr as productFacetsSchema, Lt as customerInquiryCategorySchema, M as ANALYTICS_SESSION_HEADER, Mn as CheckoutDelivery, Mr as ProductSearchParams, Mt as publicInquirySchema, N as ANALYTICS_VISITOR_COOKIE, Nn as CheckoutSession, Nr as ProductSort, Nt as CreateCustomerInquiryRequest, O as purchaseDecisionResultSchema, On as CASH_RECEIPT_METHODS, Or as ProductCard, Ot as PublicInquiry, P as ANALYTICS_VISITOR_HEADER, Pn as CreateCheckoutRequest, Pr as categoryNodeSchema, Pt as CustomerInquiry, Q as createStorefrontSession, Qn as ShippingAddressInput, Qr as UnknownFulfillmentView, Qt as couponBenefitViewSchema, R as AnalyticsEventName, Rn as GuestInfo, Rr as productPageSchema, Rt as customerInquirySchema, S as OrderShippingAddress, Sn as claimReturnAddressSchema, Sr as remoteAreaSchema, St as memberSchema, T as myOrderItemSchema, Tn as createClaimResultSchema, Tr as shippingAddressInputSchema, Tt as CreateInquiryRequest, U as analyticsIdSchema, Un as PaymentFailureCategory, Ur as PageParams, Ut as CouponResult, V as analyticsClientEventNameSchema, Vn as PAYMENT_RESULT_VALUES, Vr as OrderItemStatus, Vt as CheckoutPricingRequest, W as analyticsServerEventNameSchema, Wn as PaymentMessage, Wr as claimStatusSchema, Wt as MAX_COUPONS_PER_CHECKOUT, X as StorefrontSession, Xn as RemoteArea, Xr as ProductCardFulfillment, Xt as couponApplicationListSchema, Y as SessionStorage, Yn as PgProvider, Yr as MyOrderItemFulfillmentSnapshot, Yt as checkoutPricingSchema, Z as StorefrontSessionOptions, Zn as RetryPaymentRequest, Zr as ProductFulfillmentView, Zt as couponApplicationSchema, _ as normalizeCustomInputValue, _n as ClaimType, _r as paymentOptionListSchema, _t as MemberAddressRequest, a as CustomInputEntry, ai as CartItem, an as ConsentSource, ar as checkoutDeliverySchema, at as UpdateReviewResult, b as MyOrder, bn as MyClaim, br as paymentStatusSchema, bt as memberAddressRequestSchema, c as OptionSelectionView, ci as cartItemSchema, cn as MemberConsents, cr as deliveryQuoteRequestSchema, ct as createReviewResultSchema, d as customInputEntrySchema, di as analyticsIdsFromCookie, dn as consentSourceSchema, dr as easyPayProviderSchema, dt as reviewSummarySchema, ei as myOrderItemFulfillmentSnapshotSchema, en as myCouponListQuerySchema, er as availablePaymentOptionSchema, et as CreateReviewResult, f as customInputLength, fn as consentStateSchema, fr as guestInfoSchema, ft as updateReviewRequestSchema, g as lineSelectionResponseShape, gn as ClaimReturnAddress, gr as paymentOptionKey, gt as MemberAddress, h as lineSelectionRequestShape, hn as ClaimReason, hr as paymentMethodSchema, ht as Member, i as AddonSelection, ii as Cart, in as ConsentKind, ir as cashReceiptTypeSchema, it as UpdateReviewRequest, j as ANALYTICS_SESSION_COOKIE, jn as CashReceiptType, jr as ProductPage, jt as productInquiryCategorySchema, k as trackingStageResponseSchema, kn as CashReceiptIdentityType, kr as ProductDetail, kt as createInquiryRequestSchema, l as addonGroupViewSchema, li as cartSchema, ln as consentActionSchema, lr as deliveryQuoteSchema, lt as publicReviewSchema, m as customInputViewSchema, mn as memberConsentsSchema, mr as paymentMessageSchema, mt as writableReviewSchema, n as storefrontStoreSchema, ni as productFulfillmentViewSchema, nn as pricingAmountsSchema, nr as cashReceiptIdentityTypeOf, nt as ReviewPage, o as CustomInputValueView, oi as UpdateCartItemRequest, on as ConsentState, or as checkoutSessionSchema, ot as WritableReview, p as customInputValueViewSchema, pn as consentUpdateRequestSchema, pr as paymentFailureCategorySchema, pt as updateReviewResultSchema, q as createStorefrontClient, qn as PaymentStart, qr as pageSchema, qt as applicableCouponSchema, r as AddonGroupView, ri as AddCartItemRequest, rn as ConsentAction, rr as cashReceiptRequestSchema, rt as ReviewSummary, s as CustomInputView, si as addCartItemRequestSchema, sn as ConsentUpdateRequest, sr as createCheckoutRequestSchema, st as createReviewRequestSchema, t as StorefrontStore, ti as productCardFulfillmentSchema, tn as myCouponSchema, tr as cashReceiptAvailable, tt as PublicReview, u as addonSelectionSchema, ui as updateCartItemRequestSchema, un as consentKindSchema, ur as easyPayProviderResponseSchema, ut as reviewPageSchema, v as optionSelectionViewSchema, vn as CreateClaimRequest, vr as paymentOptionSchema, vt as UpdateProfileRequest, w as deliveryTrackingSchema, wn as createClaimRequestSchema, wr as retryPaymentRequestSchema, wt as wishlistAddResultSchema, x as MyOrderItem, xn as claimReasonSchema, xr as pgProviderSchema, xt as memberAddressSchema, y as DeliveryTracking, yn as CreateClaimResult, yr as paymentStartSchema, yt as WishlistAddResult, z as AnalyticsServerEventName, zn as KnownPaymentResult, zr as productSortSchema, zt as ApplicableCoupon } from "./index-D2WiGpwr.mjs";
3
- export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, AddCartItemRequest, AddonGroupView, AddonSelection, AnalyticsBatch, AnalyticsClientEvent, AnalyticsClientEventName, AnalyticsEventName, AnalyticsServerEventName, AnonymousSession, ApiError, ApplicableCoupon, AvailablePaymentOption, CASH_RECEIPT_METHODS, Cart, CartItem, CashReceiptIdentityType, CashReceiptRequest, CashReceiptType, CategoryNode, CheckoutDelivery, CheckoutPricing, CheckoutPricingRequest, CheckoutSession, ClaimReason, ClaimReturnAddress, ClaimStatus, ClaimType, ConsentAction, ConsentKind, ConsentSource, ConsentState, ConsentUpdateRequest, CouponApplication, CouponResult, CreateCheckoutRequest, CreateClaimRequest, CreateClaimResult, CreateCustomerInquiryRequest, CreateInquiryRequest, CreateInquiryResult, CreateReviewRequest, CreateReviewResult, CustomInputEntry, CustomInputValueView, CustomInputView, CustomerInquiry, CustomerInquiryCategory, DeliveryQuoteRequest, DeliveryQuoteResult, DeliveryTracking, EasyPayProvider, GuestInfo, IdpAgreements, IdpAuthorizeRequest, IdpTokenRequest, KnownPaymentResult, KnownPaymentStatus, LineFulfillment, LinkIdentityRequest, LoginRequest, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, Member, MemberAddress, MemberAddressRequest, MemberConsents, MemberIdentities, MyClaim, MyCoupon, MyOrder, MyOrderItem, MyOrderItemFulfillmentSnapshot, OptionSelectionView, OrderItemStatus, OrderShippingAddress, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, PageInfo, PageParams, PaymentFailureCategory, PaymentMessage, PaymentMethod, PaymentOption, PaymentStart, PaymentStatus, PgProvider, ProductCard, ProductCardFulfillment, ProductDetail, ProductFacets, ProductFulfillmentView, ProductInquiryCategory, ProductPage, ProductSearchParams, ProductSort, PublicInquiry, PublicReview, PurchaseDecisionResult, type Query, RemoteArea, RetryPaymentRequest, ReviewPage, ReviewSummary, STOREFRONT_SESSION_KEYS, type SessionStorage, ShippingAddressInput, SignupRequest, SocialProvider, StartPaymentRequest, type StorefrontClient, type StorefrontClientOptions, type StorefrontSession, type StorefrontSessionOptions, StorefrontStore, TokenPair, type TokenSource, UnknownFulfillmentView, UpdateCartItemRequest, UpdateProfileRequest, UpdateReviewRequest, UpdateReviewResult, WishlistAddResult, WithdrawRequest, WithdrawalBlockedDetails, WritableReview, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, productInquiryCategorySchema, productPageSchema, productSortSchema, publicInquirySchema, publicReviewSchema, purchaseDecisionResultSchema, remoteAreaSchema, residentNumberLike, retryPaymentRequestSchema, reviewPageSchema, reviewSummarySchema, shippingAddressInputSchema, signupRequestSchema, socialProviderSchema, startPaymentRequestSchema, storefrontStoreSchema, tokenPairSchema, trackingStageResponseSchema, updateCartItemRequestSchema, updateProfileRequestSchema, updateReviewRequestSchema, updateReviewResultSchema, wishlistAddResultSchema, withdrawRequestSchema, withdrawalBlockedDetailsSchema, writableReviewSchema };
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-AQs_Qyhm.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,7 +1,7 @@
1
1
  import { a as ANALYTICS_VISITOR_HEADER, c as analyticsClientEventSchema, i as ANALYTICS_VISITOR_COOKIE, l as analyticsIdSchema, n as ANALYTICS_SESSION_COOKIE, o as analyticsBatchSchema, r as ANALYTICS_SESSION_HEADER, s as analyticsClientEventNameSchema, t as ANALYTICS_MAX_BATCH_BYTES, u as analyticsServerEventNameSchema } from "./analytics-CgD70OqH.mjs";
2
2
  import { t as analyticsIdsFromCookie } from "./analytics-ids-COElZiI3.mjs";
3
- import { $ as cartSchema, A as consentKindSchema, B as myClaimSchema, C as createInquiryResultSchema, D as customerInquiryCategorySchema, E as createCustomerInquiryRequestSchema, F as claimReasonSchema, G as productPageSchema, H as productCardSchema, I as claimReturnAddressSchema, J as orderItemStatusSchema, K as productSortSchema, L as claimTypeSchema, M as consentStateSchema, N as consentUpdateRequestSchema, O as customerInquirySchema, P as memberConsentsSchema, Q as cartItemSchema, R as createClaimRequestSchema, S as createInquiryRequestSchema, T as publicInquirySchema, U as productDetailSchema, V as categoryNodeSchema, W as productFacetsSchema, X as pageSchema, Y as pageInfoSchema, Z as addCartItemRequestSchema, _ as memberAddressRequestSchema, _t as unwrapData, a as publicReviewSchema, at as idpTokenRequestSchema, b as updateProfileRequestSchema, c as updateReviewRequestSchema, ct as memberIdentitiesSchema, d as deliveryTrackingSchema, dt as tokenPairSchema, et as updateCartItemRequestSchema, f as myOrderItemSchema, ft as withdrawRequestSchema, g as trackingStageResponseSchema, gt as toApiError, h as purchaseDecisionResultSchema, ht as buildQuery, i as createReviewResultSchema, it as idpAuthorizeResponseSchema, j as consentSourceSchema, k as consentActionSchema, l as updateReviewResultSchema, lt as signupRequestSchema, m as orderShippingAddressSchema, mt as ApiError, n as storefrontStoreSchema, nt as idpAgreementsSchema, o as reviewPageSchema, ot as linkIdentityRequestSchema, p as myOrderSchema, pt as withdrawalBlockedDetailsSchema, q as claimStatusSchema, r as createReviewRequestSchema, rt as idpAuthorizeRequestSchema, s as reviewSummarySchema, st as loginRequestSchema, t as createStorefrontClient, tt as anonymousSessionSchema, u as writableReviewSchema, ut as socialProviderSchema, v as memberAddressSchema, w as productInquiryCategorySchema, x as wishlistAddResultSchema, y as memberSchema, z as createClaimResultSchema } from "./client-BNChG_51.mjs";
4
- import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, B as myCouponListQuerySchema, C as paymentStartSchema, D as residentNumberLike, E as remoteAreaSchema, F as checkoutPricingSchema, G as customInputEntrySchema, H as pricingAmountsSchema, I as couponApplicationListSchema, J as customInputViewSchema, K as customInputLength, L as couponApplicationSchema, M as MIN_PAYMENT_AMOUNT, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, Q as optionSelectionViewSchema, R as couponBenefitViewSchema, S as paymentOptionSchema, T as pgProviderSchema, U as addonGroupViewSchema, V as myCouponSchema, W as addonSelectionSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, Z as normalizeCustomInputValue, _ as paymentFailureCategorySchema, a as cashReceiptAvailable, b as paymentOptionKey, c as cashReceiptTypeSchema, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, g as guestInfoSchema, h as easyPayProviderSchema, i as availablePaymentOptionSchema, j as MAX_COUPONS_PER_CHECKOUT, k as shippingAddressInputSchema, l as checkoutDeliverySchema, m as easyPayProviderResponseSchema, n as PAYMENT_RESULT_VALUES, nt as productFulfillmentViewSchema, o as cashReceiptIdentityTypeOf, p as deliveryQuoteSchema, q as customInputValueViewSchema, r as PAYMENT_STATUS_VALUES, s as cashReceiptRequestSchema, t as CASH_RECEIPT_METHODS, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, v as paymentMessageSchema, w as paymentStatusSchema, x as paymentOptionListSchema, y as paymentMethodSchema, z as couponResultSchema } from "./checkout-PJk8g5DY.mjs";
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-5Nd-KG-G.mjs";
4
+ import { $ as lineFulfillmentSchema, A as startPaymentRequestSchema, B as myCouponListQuerySchema, C as paymentStartSchema, D as residentNumberLike, E as remoteAreaSchema, F as checkoutPricingSchema, G as customInputEntrySchema, H as pricingAmountsSchema, I as couponApplicationListSchema, J as customInputViewSchema, K as customInputLength, L as couponApplicationSchema, M as MIN_PAYMENT_AMOUNT, N as applicableCouponSchema, O as retryPaymentRequestSchema, P as checkoutPricingRequestSchema, Q as optionSelectionViewSchema, R as couponBenefitViewSchema, S as paymentOptionSchema, T as pgProviderSchema, U as addonGroupViewSchema, V as myCouponSchema, W as addonSelectionSchema, X as lineSelectionResponseShape, Y as lineSelectionRequestShape, Z as normalizeCustomInputValue, _ as paymentFailureCategorySchema, a as cashReceiptAvailable, b as paymentOptionKey, c as cashReceiptTypeSchema, d as createCheckoutRequestSchema, et as myOrderItemFulfillmentSnapshotSchema, f as deliveryQuoteRequestSchema, g as guestInfoSchema, h as easyPayProviderSchema, i as availablePaymentOptionSchema, j as MAX_COUPONS_PER_CHECKOUT, k as shippingAddressInputSchema, l as checkoutDeliverySchema, m as easyPayProviderResponseSchema, n as PAYMENT_RESULT_VALUES, nt as productFulfillmentViewSchema, o as cashReceiptIdentityTypeOf, p as deliveryQuoteSchema, q as customInputValueViewSchema, r as PAYMENT_STATUS_VALUES, s as cashReceiptRequestSchema, t as CASH_RECEIPT_METHODS, tt as productCardFulfillmentSchema, u as checkoutSessionSchema, v as paymentMessageSchema, w as paymentStatusSchema, x as paymentOptionListSchema, y as paymentMethodSchema, z as couponResultSchema } from "./checkout-CCsO8PY2.mjs";
5
5
  //#region src/session.ts
6
6
  /** 세션 키 상수 — SDK가 소유한다. store-sdk와 겹치지 않는 별도 네임스페이스. */
7
7
  const STOREFRONT_SESSION_KEYS = {
@@ -125,4 +125,4 @@ function createStorefrontSession(options) {
125
125
  };
126
126
  }
127
127
  //#endregion
128
- export { ANALYTICS_MAX_BATCH_BYTES, ANALYTICS_SESSION_COOKIE, ANALYTICS_SESSION_HEADER, ANALYTICS_VISITOR_COOKIE, ANALYTICS_VISITOR_HEADER, ApiError, CASH_RECEIPT_METHODS, MAX_COUPONS_PER_CHECKOUT, MIN_PAYMENT_AMOUNT, PAYMENT_RESULT_VALUES, PAYMENT_STATUS_VALUES, STOREFRONT_SESSION_KEYS, addCartItemRequestSchema, addonGroupViewSchema, addonSelectionSchema, analyticsBatchSchema, analyticsClientEventNameSchema, analyticsClientEventSchema, analyticsIdSchema, analyticsIdsFromCookie, analyticsServerEventNameSchema, anonymousSessionSchema, applicableCouponSchema, availablePaymentOptionSchema, buildQuery, cartItemSchema, cartSchema, cashReceiptAvailable, cashReceiptIdentityTypeOf, cashReceiptRequestSchema, cashReceiptTypeSchema, categoryNodeSchema, checkoutDeliverySchema, checkoutPricingRequestSchema, checkoutPricingSchema, checkoutSessionSchema, claimReasonSchema, claimReturnAddressSchema, claimStatusSchema, claimTypeSchema, consentActionSchema, consentKindSchema, consentSourceSchema, consentStateSchema, consentUpdateRequestSchema, couponApplicationListSchema, couponApplicationSchema, couponBenefitViewSchema, couponResultSchema, createCheckoutRequestSchema, createClaimRequestSchema, createClaimResultSchema, createCustomerInquiryRequestSchema, createInquiryRequestSchema, createInquiryResultSchema, createReviewRequestSchema, createReviewResultSchema, createStorefrontClient, createStorefrontSession, customInputEntrySchema, customInputLength, customInputValueViewSchema, customInputViewSchema, customerInquiryCategorySchema, customerInquirySchema, deliveryQuoteRequestSchema, deliveryQuoteSchema, deliveryTrackingSchema, easyPayProviderResponseSchema, easyPayProviderSchema, guestInfoSchema, idpAgreementsSchema, idpAuthorizeRequestSchema, idpAuthorizeResponseSchema, idpTokenRequestSchema, lineFulfillmentSchema, lineSelectionRequestShape, lineSelectionResponseShape, linkIdentityRequestSchema, loginRequestSchema, memberAddressRequestSchema, memberAddressSchema, memberConsentsSchema, memberIdentitiesSchema, memberSchema, myClaimSchema, myCouponListQuerySchema, myCouponSchema, myOrderItemFulfillmentSnapshotSchema, myOrderItemSchema, myOrderSchema, normalizeCustomInputValue, optionSelectionViewSchema, orderItemStatusSchema, orderShippingAddressSchema, pageInfoSchema, pageSchema, paymentFailureCategorySchema, paymentMessageSchema, paymentMethodSchema, paymentOptionKey, paymentOptionListSchema, paymentOptionSchema, paymentStartSchema, paymentStatusSchema, pgProviderSchema, pricingAmountsSchema, productCardFulfillmentSchema, productCardSchema, productDetailSchema, productFacetsSchema, productFulfillmentViewSchema, 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 { $n as StartPaymentRequest, An as CashReceiptRequest, Jn as PaymentStatus, Kn as PaymentOption, Qn as ShippingAddressInput, Rn as GuestInfo, q as createStorefrontClient, qn as PaymentStart } from "../index-D2WiGpwr.mjs";
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-AQs_Qyhm.mjs";
2
2
  //#region src/payments/index.d.ts
3
3
  /**
4
4
  * 스토어프론트 결제 — 브라우저 전용(`@sayren/storefront-sdk/payments`).
@@ -47,6 +47,11 @@ export type PaymentResult = {
47
47
  paymentId: string;
48
48
  code: string;
49
49
  message: string;
50
+ /**
51
+ * 상점의 PG 설정 문제처럼 구매자가 고칠 수 없는 실패다(`lastFailure.optionUnavailable`). 같은 옵션으로 다시 시도해도
52
+ * 실패하므로 그 옵션을 고르지 못하게 하고 다른 결제수단으로 `retry`하게 한다. `message`가 그 안내다
53
+ */
54
+ optionUnavailable?: boolean;
50
55
  } | {
51
56
  /** 결과 확인 중 — `getStatus(paymentId)`로 확정될 때까지 조회한다 */
52
57
  status: "PROCESSING";
@@ -1,4 +1,4 @@
1
- import { v as paymentMessageSchema } from "../checkout-PJk8g5DY.mjs";
1
+ import { v as paymentMessageSchema } from "../checkout-CCsO8PY2.mjs";
2
2
  //#region src/payments/index.ts
3
3
  /** 복귀 주소에 결제 서비스가 붙이는 쿼리 */
4
4
  const RETURN_PAYMENT_ID = "sayrenPaymentId";
@@ -57,7 +57,8 @@ function paymentResultOf(status, options = {}) {
57
57
  status: "FAILED",
58
58
  paymentId,
59
59
  code: lastFailure?.code ?? result,
60
- message: lastFailure?.message ?? (result === "EXPIRED" ? "결제 요청이 만료됐습니다" : "결제에 실패했습니다")
60
+ message: lastFailure?.message ?? (result === "EXPIRED" ? "결제 요청이 만료됐습니다" : "결제에 실패했습니다"),
61
+ ...lastFailure?.optionUnavailable ? { optionUnavailable: true } : {}
61
62
  };
62
63
  if (result === "PENDING") return options.popupClosed ? {
63
64
  status: "CANCELED",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sayren/storefront-sdk",
3
- "version": "0.18.2",
3
+ "version": "0.18.4",
4
4
  "main": "./dist/index.mjs",
5
5
  "types": "./dist/index.d.mts",
6
6
  "exports": {
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
- listProductReviews: (
247
- productId: string,
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",
@@ -64,6 +64,11 @@ export type PaymentResult =
64
64
  paymentId: string;
65
65
  code: string;
66
66
  message: string;
67
+ /**
68
+ * 상점의 PG 설정 문제처럼 구매자가 고칠 수 없는 실패다(`lastFailure.optionUnavailable`). 같은 옵션으로 다시 시도해도
69
+ * 실패하므로 그 옵션을 고르지 못하게 하고 다른 결제수단으로 `retry`하게 한다. `message`가 그 안내다
70
+ */
71
+ optionUnavailable?: boolean;
67
72
  }
68
73
  | {
69
74
  /** 결과 확인 중 — `getStatus(paymentId)`로 확정될 때까지 조회한다 */
@@ -180,6 +185,7 @@ export function paymentResultOf(
180
185
  message:
181
186
  lastFailure?.message ??
182
187
  (result === "EXPIRED" ? "결제 요청이 만료됐습니다" : "결제에 실패했습니다"),
188
+ ...(lastFailure?.optionUnavailable ? { optionUnavailable: true } : {}),
183
189
  };
184
190
  }
185
191
  if (result === "PENDING") {
@@ -499,6 +499,13 @@ export const paymentStatusSchema = z.object({
499
499
  .nullable()
500
500
  .describe("PG가 준 실패 코드. 내부 사유는 null입니다. 화면 분기는 `category`로 하십시오"),
501
501
  message: z.string().nullable().describe("구매자에게 보여 줄 안내 문구"),
502
+ optionUnavailable: z
503
+ .boolean()
504
+ .optional()
505
+ .describe(
506
+ "true면 상점의 PG 설정 문제처럼 구매자가 고칠 수 없는 실패입니다(이슈 #86). 같은 결제 옵션으로 다시 시도해도 실패하므로 " +
507
+ "그 옵션을 고르지 못하게 하고 다른 결제수단을 고르게 하십시오. 이때 `message`는 그 안내입니다. 서버는 항상 싣습니다",
508
+ ),
502
509
  })
503
510
  .nullable()
504
511
  .describe("현재 결제 시도가 실패·취소로 끝났으면 그 내용, 아니면 null"),
@@ -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,75 @@ export const updateReviewRequestSchema = z
65
106
 
66
107
  export type UpdateReviewRequest = z.infer<typeof updateReviewRequestSchema>;
67
108
 
109
+ /** 리뷰 정렬 — `helpful`(랭킹순)은 사진 있는 리뷰 → 평점 높은 순 → 최신 순이다(도움돼요 수 데이터는 없다, #97) */
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(
129
+ "정렬. `latest`(기본, 최신 순)·`ratingDesc`(평점 높은 순)·`ratingAsc`(평점 낮은 순)·" +
130
+ "`helpful`(랭킹순 — 사진 있는 리뷰 먼저, 그다음 평점 높은 순, 같으면 최신 순. 도움돼요 수는 반영하지 않는다)",
131
+ ),
132
+ page: z.string().optional().describe("페이지 번호 (1부터)"),
133
+ size: z.string().optional().describe("페이지 크기"),
134
+ });
135
+
136
+ /** 리뷰 목록 조회 파라미터 — `catalog.listProductReviews` */
137
+ export interface ProductReviewParams extends PageParams {
138
+ rating?: number;
139
+ hasImage?: boolean;
140
+ /** 이 옵션(조합)으로 산 리뷰만 — 상품 상세 `variants[].variantId` */
141
+ variantId?: string;
142
+ sort?: ProductReviewSort;
143
+ }
144
+
145
+ /**
146
+ * 리뷰 사진 업로드 자리 발급 (이슈 #96) — `POST /me/uploads`(구매자 로그인). 파일 바이트는 api를 거치지 않는다.
147
+ * 응답 `uploadUrl`에 파일을 그대로 PUT하면 `url`이 공개 주소가 되고, 그 주소를 리뷰 작성·수정의 `images`에 넣는다.
148
+ * 형식·크기 제한은 관리 API 상품 이미지(`product-image`)와 같은 정지 이미지 규칙이다(값은 API 문서). 서버가 객체 키를 정하므로 파일명은 확장자만 쓰인다.
149
+ */
150
+ export const reviewImageUploadRequestSchema = z.object({
151
+ filename: z
152
+ .string()
153
+ .min(1)
154
+ .max(255)
155
+ .describe("파일명. 확장자로 형식을 판정하고 이름은 저장하지 않는다"),
156
+ purpose: z
157
+ .enum(["review-image"])
158
+ .default("review-image")
159
+ .describe("업로드 용도. 지금은 `review-image`(리뷰 사진)뿐이다"),
160
+ size: z
161
+ .number()
162
+ .int()
163
+ .positive()
164
+ .optional()
165
+ .describe("파일 바이트 크기. 주면 크기 상한을 발급 전에 검사한다"),
166
+ });
167
+
168
+ export type ReviewImageUploadRequest = z.input<typeof reviewImageUploadRequestSchema>;
169
+
170
+ /** 업로드 자리 — `uploadUrl`은 1시간 유효하다 */
171
+ export const uploadTicketSchema = z.object({
172
+ url: z.url().describe("업로드가 끝나면 공개될 주소. 리뷰의 `images`에 넣는다"),
173
+ uploadUrl: z.url().describe("파일 바이트를 그대로 PUT할 주소. 1시간 유효"),
174
+ });
175
+
176
+ export type UploadTicket = z.infer<typeof uploadTicketSchema>;
177
+
68
178
  /** `GET /products/{productId}/reviews` 응답 — 리뷰 페이지와 평점 분포 */
69
179
  export const reviewPageSchema = pageSchema(publicReviewSchema).extend({
70
180
  summary: reviewSummarySchema.optional(),