@sayren/store-sdk 0.14.0 → 0.14.1
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/index.d.mts +3 -3
- package/dist/index.mjs +13 -13
- package/package.json +1 -1
- package/src/schemas/order.ts +4 -4
- package/src/schemas/payment.ts +3 -3
- package/src/schemas/product.ts +1 -1
- package/src/schemas/store.ts +4 -4
- package/src/session.ts +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -165,8 +165,8 @@ export declare const auditLogPageSchema: z.ZodObject<{
|
|
|
165
165
|
}, z.core.$strip>;
|
|
166
166
|
export type AuditLogPage = z.infer<typeof auditLogPageSchema>;
|
|
167
167
|
export declare const agentPolicyDecisionSchema: z.ZodEnum<{
|
|
168
|
-
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
169
168
|
DENIED: "DENIED";
|
|
169
|
+
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
170
170
|
ALLOW: "ALLOW";
|
|
171
171
|
}>;
|
|
172
172
|
export type AgentPolicyDecision = z.infer<typeof agentPolicyDecisionSchema>;
|
|
@@ -190,8 +190,8 @@ export type WritePreview = z.infer<typeof writePreviewSchema>;
|
|
|
190
190
|
export declare const writeDryRunResultSchema: z.ZodObject<{
|
|
191
191
|
dryRun: z.ZodLiteral<true>;
|
|
192
192
|
decision: z.ZodEnum<{
|
|
193
|
-
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
194
193
|
DENIED: "DENIED";
|
|
194
|
+
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
195
195
|
ALLOW: "ALLOW";
|
|
196
196
|
}>;
|
|
197
197
|
reason: z.ZodNullable<z.ZodString>;
|
|
@@ -3207,7 +3207,7 @@ export declare const TOSS_WIDGET_CLIENT_KEY_PATTERN: RegExp;
|
|
|
3207
3207
|
/** 토스페이먼츠 결제위젯 시크릿 키 접두사. {@link TOSS_WIDGET_CLIENT_KEY_PATTERN} 참고 */
|
|
3208
3208
|
export declare const TOSS_WIDGET_SECRET_KEY_PATTERN: RegExp;
|
|
3209
3209
|
/** 결제위젯 키를 거부할 때의 필드 메시지 */
|
|
3210
|
-
export declare const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를
|
|
3210
|
+
export declare const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를 입력해주십시오";
|
|
3211
3211
|
export declare const tossPaymentsCredentialsInputSchema: z.ZodObject<{
|
|
3212
3212
|
clientKey: z.ZodString;
|
|
3213
3213
|
secretKey: z.ZodOptional<z.ZodString>;
|
package/dist/index.mjs
CHANGED
|
@@ -1577,7 +1577,7 @@ const TOSS_WIDGET_CLIENT_KEY_PATTERN = /^(test|live)_gck_/;
|
|
|
1577
1577
|
/** 토스페이먼츠 결제위젯 시크릿 키 접두사. {@link TOSS_WIDGET_CLIENT_KEY_PATTERN} 참고 */
|
|
1578
1578
|
const TOSS_WIDGET_SECRET_KEY_PATTERN = /^(test|live)_gsk_/;
|
|
1579
1579
|
/** 결제위젯 키를 거부할 때의 필드 메시지 */
|
|
1580
|
-
const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를
|
|
1580
|
+
const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를 입력해주십시오";
|
|
1581
1581
|
const tossPaymentsCredentialsInputSchema = z.object({
|
|
1582
1582
|
clientKey: z.string().trim().min(8).max(200).describe("클라이언트 키 (`test_ck_…`/`live_ck_…`). 공개 값 — 결제창에서 쓰인다"),
|
|
1583
1583
|
secretKey: secretInput().optional().describe("시크릿 키 (`test_sk_…`/`live_sk_…`). 비밀 값. 최초 연결 시 필수, 수정 시 생략하면 기존 값을 유지한다"),
|
|
@@ -1624,12 +1624,12 @@ const updatePaymentProviderRequestSchema = z.object({
|
|
|
1624
1624
|
enabled: z.boolean().optional().describe("사용 여부. 켜려면 활성 환경(샌드박스면 TEST, 아니면 LIVE) 자격 증명이 모두 저장돼 있어야 한다(`PAYMENT_PROVIDER_INCOMPLETE`)"),
|
|
1625
1625
|
sandboxMode: z.boolean().optional().describe("샌드박스 스위치. `true`면 새 결제에 TEST 세트를 쓴다(항상 허용). `false`(라이브 전환)는 라이브 개방 조건을 모두 충족해야 한다(`LIVE_GATE_NOT_MET`)"),
|
|
1626
1626
|
easyPayProviders: z.array(easyPayProviderSchema).max(easyPayProviderSchema.options.length).optional().describe("이 PG로 받는 간편결제사 — 통째로 바꾼다. PG 계약(포트원은 채널)에 추가한 간편결제만 켠다. 켠 간편결제사마다 스토어프론트 결제 옵션이 하나씩 생긴다(포트원은 간편결제를 받는 채널이 있어야 한다)")
|
|
1627
|
-
}).refine((body) => body.enabled !== void 0 || body.sandboxMode !== void 0 || body.easyPayProviders !== void 0, { message: "enabled·sandboxMode·easyPayProviders 중 하나는 보내야
|
|
1627
|
+
}).refine((body) => body.enabled !== void 0 || body.sandboxMode !== void 0 || body.easyPayProviders !== void 0, { message: "enabled·sandboxMode·easyPayProviders 중 하나는 보내야 합니다" });
|
|
1628
1628
|
const verifyPaymentProviderRequestSchema = z.object({ environment: pgEnvironmentSchema.optional().describe("연결 테스트할 자격 증명 세트. 생략하면 활성 환경(샌드박스면 TEST, 아니면 LIVE)") });
|
|
1629
1629
|
const updatePaymentSettingsRequestSchema = z.object({
|
|
1630
1630
|
priority: z.array(pgProviderSchema).min(1).max(50).optional().describe("PG 우선순위(앞이 1순위) — 스토어프론트 결제 옵션 목록의 PG 순서다. 연결된 PG 수만큼 **모두 한 번씩** 나열한다(길이 상한 50은 안전장치다). 빠지거나 중복되거나 연결되지 않은 PG가 있으면 `INVALID_PRIORITY`"),
|
|
1631
1631
|
checkoutOrigins: z.array(z.string().max(200)).max(20).optional().describe("결제 도메인 — 통째로 바꾼다. 결제를 마친 구매자가 돌아올 스토어프론트 origin(`https://shop.example.com`, https·경로 없음). 결제 시작의 `returnUrl`은 이 목록 안이어야 한다. 비어 있으면 실결제를 시작할 수 없다(테스트 결제는 localhost 허용). 같은 도메인을 PG 가맹 정보에도 등록한다. 형식이 틀리면 `INVALID_CHECKOUT_ORIGIN`")
|
|
1632
|
-
}).refine((body) => body.priority !== void 0 || body.checkoutOrigins !== void 0, { message: "priority 또는 checkoutOrigins 중 하나는 보내야
|
|
1632
|
+
}).refine((body) => body.priority !== void 0 || body.checkoutOrigins !== void 0, { message: "priority 또는 checkoutOrigins 중 하나는 보내야 합니다" });
|
|
1633
1633
|
const maskedSecretSchema = z.object({
|
|
1634
1634
|
field: z.string().describe("비밀 필드 이름 (`secretKey`·`apiSecret`·`webhookSecret`)"),
|
|
1635
1635
|
configured: z.boolean().describe("값이 저장돼 있는가"),
|
|
@@ -1888,7 +1888,7 @@ const orderSummarySchema = z.object({
|
|
|
1888
1888
|
totalAmount: z.number().int(),
|
|
1889
1889
|
representativeStatus: orderItemStatusSchema,
|
|
1890
1890
|
orderedAt: z.string(),
|
|
1891
|
-
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
1891
|
+
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오")
|
|
1892
1892
|
});
|
|
1893
1893
|
const shippingAddressSchema = z.object({
|
|
1894
1894
|
receiverName: z.string(),
|
|
@@ -1928,7 +1928,7 @@ const orderItemSchema = z.object({
|
|
|
1928
1928
|
orderedAt: z.string(),
|
|
1929
1929
|
lastChangedAt: z.string(),
|
|
1930
1930
|
lastChangedType: changeTypeSchema,
|
|
1931
|
-
testPayment: z.boolean().describe("소속 주문이 테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
1931
|
+
testPayment: z.boolean().describe("소속 주문이 테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다")
|
|
1932
1932
|
});
|
|
1933
1933
|
const orderSchema = z.object({
|
|
1934
1934
|
orderId: z.string(),
|
|
@@ -1957,14 +1957,14 @@ const orderSchema = z.object({
|
|
|
1957
1957
|
paidAt: z.string().nullable(),
|
|
1958
1958
|
cashReceipt: cashReceiptSchema.nullable().optional().default(null).describe("현금영수증. 구매자가 계좌이체·가상계좌 결제에서 신청했을 때만 있고 그 밖에는 null. 서버는 항상 싣는다")
|
|
1959
1959
|
}),
|
|
1960
|
-
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
1960
|
+
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오"),
|
|
1961
1961
|
items: z.array(orderItemSchema)
|
|
1962
1962
|
});
|
|
1963
1963
|
/** 주문 목록 응답 — `GET /v1/orders` */
|
|
1964
1964
|
const orderSummaryPageSchema = pageSchema(orderSummarySchema);
|
|
1965
1965
|
/** 주문상품 변경 목록 응답 — `GET /v1/order-items` */
|
|
1966
1966
|
const orderItemPageSchema = pageSchema(orderItemSchema);
|
|
1967
|
-
const testPaymentQuery = z.enum(["true", "false"]).optional().describe("테스트 결제(샌드박스 결제) 필터. `true`면 테스트 결제만, `false`면 실결제만, 생략하면
|
|
1967
|
+
const testPaymentQuery = z.enum(["true", "false"]).optional().describe("테스트 결제(샌드박스 결제) 필터. `true`면 테스트 결제만, `false`면 실결제만, 생략하면 전부입니다");
|
|
1968
1968
|
const pageQuery = { page: z.string().optional().describe("페이지 번호 (1부터, 기본 1)") };
|
|
1969
1969
|
/**
|
|
1970
1970
|
* `GET /v1/orders` 쿼리 — OpenAPI 문서용 형태(값은 쿼리 문자열). 검증 규칙은 서버가 적용한다:
|
|
@@ -2524,7 +2524,7 @@ const ADDRESS_DESCRIPTIONS = {
|
|
|
2524
2524
|
};
|
|
2525
2525
|
const productCreateRequestSchema = z.object({
|
|
2526
2526
|
name: z.string().min(1).max(100),
|
|
2527
|
-
categoryId: z.string().min(1, "카테고리를
|
|
2527
|
+
categoryId: z.string().min(1, "카테고리를 선택해주십시오"),
|
|
2528
2528
|
salePrice: z.number().int().min(10).multipleOf(10, "판매가는 10원 단위여야 합니다 (INVALID_PRICE_UNIT)").describe("판매가. 원(KRW) 단위 정수, 최소 10원, 10원 단위"),
|
|
2529
2529
|
originalPrice: z.number().int().optional().describe("정가(할인 전 표시 가격). 원 단위"),
|
|
2530
2530
|
description: z.string().optional(),
|
|
@@ -3080,7 +3080,7 @@ const RESERVED_STORE_CODES = [
|
|
|
3080
3080
|
function isReservedStoreCode(code) {
|
|
3081
3081
|
return RESERVED_STORE_CODES.includes(code.toLowerCase());
|
|
3082
3082
|
}
|
|
3083
|
-
const storeCodeSchema = z.string().regex(STORE_CODE_PATTERN, "소문자·숫자·하이픈 3~30자여야 하고 하이픈으로 시작하거나 끝날 수
|
|
3083
|
+
const storeCodeSchema = z.string().regex(STORE_CODE_PATTERN, "소문자·숫자·하이픈 3~30자여야 하고 하이픈으로 시작하거나 끝날 수 없습니다").refine((code) => !isReservedStoreCode(code), "플랫폼이 쓰는 이름이라 스토어 코드로 쓸 수 없습니다");
|
|
3084
3084
|
/** `https://shop.example.com`처럼 경로·쿼리 없는 http(s) 오리진인가 */
|
|
3085
3085
|
function isWebOrigin(value) {
|
|
3086
3086
|
try {
|
|
@@ -3091,7 +3091,7 @@ function isWebOrigin(value) {
|
|
|
3091
3091
|
}
|
|
3092
3092
|
}
|
|
3093
3093
|
/** 방문 분석을 보낼 수 있는 스토어프론트 오리진 — 스킴·호스트(·포트)만. 서버가 소문자·끝 슬래시 제거로 정규화한다 */
|
|
3094
|
-
const analyticsOriginSchema = z.string().trim().max(255).refine(isWebOrigin, "https://shop.example.com 형식(경로 없이)으로 입력해
|
|
3094
|
+
const analyticsOriginSchema = z.string().trim().max(255).refine(isWebOrigin, "https://shop.example.com 형식(경로 없이)으로 입력해 주십시오").describe("스토어프론트 오리진. 예: `https://shop.example.com`");
|
|
3095
3095
|
/** 허용 오리진 상한 */
|
|
3096
3096
|
const MAX_ANALYTICS_ALLOWED_ORIGINS = 20;
|
|
3097
3097
|
/** 자동 배송완료·자동 구매확정 대기일 상한 */
|
|
@@ -3105,7 +3105,7 @@ const policyVersionSchema = z.string().trim().min(1).max(20).describe("약관
|
|
|
3105
3105
|
* 약관 문서 주소 — 구매자에게 보여 주는 약관 본문의 주소다. 동의 시점 값이 이력 행에 복사되므로
|
|
3106
3106
|
* 나중에 주소를 바꿔도 "무엇에 동의했는지"가 남는다. `null`로 지울 수 있다.
|
|
3107
3107
|
*/
|
|
3108
|
-
const policyDocumentUrlSchema = z.url().max(500).refine((value) => value.startsWith("https://"), "https 주소만 쓸 수
|
|
3108
|
+
const policyDocumentUrlSchema = z.url().max(500).refine((value) => value.startsWith("https://"), "https 주소만 쓸 수 있습니다").nullable();
|
|
3109
3109
|
const autoDeliverDaysDescription = "발송 후 자동 배송완료까지의 일수(0~30, 기본 7). 발송(`DISPATCHED`)·배송중(`DELIVERING`) 주문상품을 이 기간이 지나면 배송완료(`DELIVERED`)로 바꾼다. `0`이면 자동 배송완료를 하지 않는다";
|
|
3110
3110
|
const autoConfirmDaysDescription = "배송완료 후 자동 구매확정까지의 일수(0~30, 기본 7). 배송완료 시점에 구매확정 예정일(`autoDecisionDate`)을 이 값으로 잡고, 그 날짜가 지나면 구매확정(`PURCHASE_DECIDED`)으로 바꾼다. 진행 중인 클레임이 있으면 건너뛴다. `0`이면 자동 구매확정을 하지 않는다";
|
|
3111
3111
|
/** `PATCH /v1/store` 본문 — 바꿀 필드만 보낸다 */
|
|
@@ -4130,9 +4130,9 @@ function createStoreSession(options) {
|
|
|
4130
4130
|
async function handleCallback(code, state) {
|
|
4131
4131
|
const raw = storage.get(STORE_SESSION_KEYS.pkce);
|
|
4132
4132
|
storage.remove(STORE_SESSION_KEYS.pkce);
|
|
4133
|
-
if (!raw) throw new Error("로그인 세션이 만료되었습니다. 다시
|
|
4133
|
+
if (!raw) throw new Error("로그인 세션이 만료되었습니다. 다시 시도해주십시오");
|
|
4134
4134
|
const saved = JSON.parse(raw);
|
|
4135
|
-
if (saved.state !== state) throw new Error("state가 일치하지 않습니다. 다시
|
|
4135
|
+
if (saved.state !== state) throw new Error("state가 일치하지 않습니다. 다시 시도해주십시오");
|
|
4136
4136
|
const tokens = await exchangeAuthorizationCode({
|
|
4137
4137
|
baseUrl,
|
|
4138
4138
|
clientId,
|
package/package.json
CHANGED
package/src/schemas/order.ts
CHANGED
|
@@ -12,7 +12,7 @@ export const orderSummarySchema = z.object({
|
|
|
12
12
|
testPayment: z
|
|
13
13
|
.boolean()
|
|
14
14
|
.describe(
|
|
15
|
-
"테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
15
|
+
"테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오",
|
|
16
16
|
),
|
|
17
17
|
});
|
|
18
18
|
|
|
@@ -61,7 +61,7 @@ export const orderItemSchema = z.object({
|
|
|
61
61
|
testPayment: z
|
|
62
62
|
.boolean()
|
|
63
63
|
.describe(
|
|
64
|
-
"소속 주문이 테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
64
|
+
"소속 주문이 테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다",
|
|
65
65
|
),
|
|
66
66
|
});
|
|
67
67
|
|
|
@@ -118,7 +118,7 @@ export const orderSchema = z.object({
|
|
|
118
118
|
testPayment: z
|
|
119
119
|
.boolean()
|
|
120
120
|
.describe(
|
|
121
|
-
"테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지
|
|
121
|
+
"테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오",
|
|
122
122
|
),
|
|
123
123
|
items: z.array(orderItemSchema),
|
|
124
124
|
});
|
|
@@ -137,7 +137,7 @@ const testPaymentQuery = z
|
|
|
137
137
|
.enum(["true", "false"])
|
|
138
138
|
.optional()
|
|
139
139
|
.describe(
|
|
140
|
-
"테스트 결제(샌드박스 결제) 필터. `true`면 테스트 결제만, `false`면 실결제만, 생략하면
|
|
140
|
+
"테스트 결제(샌드박스 결제) 필터. `true`면 테스트 결제만, `false`면 실결제만, 생략하면 전부입니다",
|
|
141
141
|
);
|
|
142
142
|
|
|
143
143
|
const pageQuery = {
|
package/src/schemas/payment.ts
CHANGED
|
@@ -59,7 +59,7 @@ export const TOSS_WIDGET_CLIENT_KEY_PATTERN = /^(test|live)_gck_/;
|
|
|
59
59
|
/** 토스페이먼츠 결제위젯 시크릿 키 접두사. {@link TOSS_WIDGET_CLIENT_KEY_PATTERN} 참고 */
|
|
60
60
|
export const TOSS_WIDGET_SECRET_KEY_PATTERN = /^(test|live)_gsk_/;
|
|
61
61
|
/** 결제위젯 키를 거부할 때의 필드 메시지 */
|
|
62
|
-
export const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를
|
|
62
|
+
export const TOSS_WIDGET_KEY_MESSAGE = "결제위젯 키가 아니라 API 개별 연동 키를 입력해주십시오";
|
|
63
63
|
|
|
64
64
|
export const tossPaymentsCredentialsInputSchema = z
|
|
65
65
|
.object({
|
|
@@ -187,7 +187,7 @@ export const updatePaymentProviderRequestSchema = z
|
|
|
187
187
|
body.enabled !== undefined ||
|
|
188
188
|
body.sandboxMode !== undefined ||
|
|
189
189
|
body.easyPayProviders !== undefined,
|
|
190
|
-
{ message: "enabled·sandboxMode·easyPayProviders 중 하나는 보내야
|
|
190
|
+
{ message: "enabled·sandboxMode·easyPayProviders 중 하나는 보내야 합니다" },
|
|
191
191
|
);
|
|
192
192
|
export type UpdatePaymentProviderRequest = z.infer<typeof updatePaymentProviderRequestSchema>;
|
|
193
193
|
|
|
@@ -221,7 +221,7 @@ export const updatePaymentSettingsRequestSchema = z
|
|
|
221
221
|
),
|
|
222
222
|
})
|
|
223
223
|
.refine((body) => body.priority !== undefined || body.checkoutOrigins !== undefined, {
|
|
224
|
-
message: "priority 또는 checkoutOrigins 중 하나는 보내야
|
|
224
|
+
message: "priority 또는 checkoutOrigins 중 하나는 보내야 합니다",
|
|
225
225
|
});
|
|
226
226
|
export type UpdatePaymentSettingsRequest = z.infer<typeof updatePaymentSettingsRequestSchema>;
|
|
227
227
|
|
package/src/schemas/product.ts
CHANGED
|
@@ -284,7 +284,7 @@ const ADDRESS_DESCRIPTIONS = {
|
|
|
284
284
|
export const productCreateRequestSchema = z
|
|
285
285
|
.object({
|
|
286
286
|
name: z.string().min(1).max(100),
|
|
287
|
-
categoryId: z.string().min(1, "카테고리를
|
|
287
|
+
categoryId: z.string().min(1, "카테고리를 선택해주십시오"),
|
|
288
288
|
salePrice: z
|
|
289
289
|
.number()
|
|
290
290
|
.int()
|
package/src/schemas/store.ts
CHANGED
|
@@ -68,11 +68,11 @@ export const storeCodeSchema = z
|
|
|
68
68
|
.string()
|
|
69
69
|
.regex(
|
|
70
70
|
STORE_CODE_PATTERN,
|
|
71
|
-
"소문자·숫자·하이픈 3~30자여야 하고 하이픈으로 시작하거나 끝날 수
|
|
71
|
+
"소문자·숫자·하이픈 3~30자여야 하고 하이픈으로 시작하거나 끝날 수 없습니다",
|
|
72
72
|
)
|
|
73
73
|
.refine(
|
|
74
74
|
(code) => !isReservedStoreCode(code),
|
|
75
|
-
"플랫폼이 쓰는 이름이라 스토어 코드로 쓸 수
|
|
75
|
+
"플랫폼이 쓰는 이름이라 스토어 코드로 쓸 수 없습니다",
|
|
76
76
|
);
|
|
77
77
|
|
|
78
78
|
/** `https://shop.example.com`처럼 경로·쿼리 없는 http(s) 오리진인가 */
|
|
@@ -98,7 +98,7 @@ export const analyticsOriginSchema = z
|
|
|
98
98
|
.string()
|
|
99
99
|
.trim()
|
|
100
100
|
.max(255)
|
|
101
|
-
.refine(isWebOrigin, "https://shop.example.com 형식(경로 없이)으로 입력해
|
|
101
|
+
.refine(isWebOrigin, "https://shop.example.com 형식(경로 없이)으로 입력해 주십시오")
|
|
102
102
|
.describe("스토어프론트 오리진. 예: `https://shop.example.com`");
|
|
103
103
|
|
|
104
104
|
/** 허용 오리진 상한 */
|
|
@@ -125,7 +125,7 @@ export const policyVersionSchema = z
|
|
|
125
125
|
export const policyDocumentUrlSchema = z
|
|
126
126
|
.url()
|
|
127
127
|
.max(500)
|
|
128
|
-
.refine((value) => value.startsWith("https://"), "https 주소만 쓸 수
|
|
128
|
+
.refine((value) => value.startsWith("https://"), "https 주소만 쓸 수 있습니다")
|
|
129
129
|
.nullable();
|
|
130
130
|
|
|
131
131
|
const autoDeliverDaysDescription =
|
package/src/session.ts
CHANGED
|
@@ -203,10 +203,10 @@ export function createStoreSession(options: StoreSessionOptions): StoreSession {
|
|
|
203
203
|
async function handleCallback(code: string, state: string): Promise<void> {
|
|
204
204
|
const raw = storage.get(STORE_SESSION_KEYS.pkce);
|
|
205
205
|
storage.remove(STORE_SESSION_KEYS.pkce); // 1회용
|
|
206
|
-
if (!raw) throw new Error("로그인 세션이 만료되었습니다. 다시
|
|
206
|
+
if (!raw) throw new Error("로그인 세션이 만료되었습니다. 다시 시도해주십시오");
|
|
207
207
|
const saved = JSON.parse(raw) as PkceBlob;
|
|
208
208
|
if (saved.state !== state) {
|
|
209
|
-
throw new Error("state가 일치하지 않습니다. 다시
|
|
209
|
+
throw new Error("state가 일치하지 않습니다. 다시 시도해주십시오");
|
|
210
210
|
}
|
|
211
211
|
const tokens = await exchangeAuthorizationCode({
|
|
212
212
|
baseUrl,
|