@sayren/store-sdk 0.28.0 → 0.28.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.
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
 
3
3
  /**
4
- * 요금제·구독 — `GET /v1/store/subscription`(스코프 `store:r`). 구독 단위는 스토어다.
5
- * 결제 수단·청구 금액은 싣지 않는다. 요금제 변경은 셀러 콘솔에서만 한다.
4
+ * 요금제·구독 — `GET /v1/store/subscription`(스코프 `store:r`). 구독 단위는 상점이다.
5
+ * 결제 수단·청구 금액은 싣지 않는다. 요금제 변경은 상점 플랫폼에서만 한다.
6
6
  */
7
7
 
8
8
  /** 요금제 코드 — 이름(`plan.name`)이 바뀌어도 코드는 바뀌지 않는다. 값은 추가만 한다 */
@@ -58,7 +58,7 @@ export const subscriptionUsageSchema = z.object({
58
58
  adminApiRequests: z
59
59
  .number()
60
60
  .int()
61
- .describe("이번 기간 관리 API 요청 수(API 토큰·앱·에이전트 호출, 셀러 콘솔 제외)"),
61
+ .describe("이번 기간 관리 API 요청 수(API 토큰·앱·에이전트 호출, 상점 플랫폼 제외)"),
62
62
  emails: z.number().int().describe("이번 기간 초대·양도 알림 메일 수(한도 없음, 표시만)"),
63
63
  storefrontPreviewMinutes: z.number().int().describe("이번 기간 편집 미리보기 분(끝난 세션)"),
64
64
  storefrontBuildMinutes: z.number().int().describe("이번 기간 빌드 분(끝난 빌드)"),
@@ -89,7 +89,7 @@ export const storeSubscriptionSchema = z.object({
89
89
  features: z.object({
90
90
  adminApi: z.boolean().describe("관리 API(개인 액세스 토큰·외부 앱 토큰 호출)를 쓸 수 있다"),
91
91
  analytics: z.boolean().describe("애널리틱스 조회를 쓸 수 있다"),
92
- storeClone: z.boolean().describe("더 쓰지 않는다 — 스토어 복제 기능을 없애 항상 false"),
92
+ storeClone: z.boolean().describe("더 쓰지 않는다 — 상점 복제 기능을 없애 항상 false"),
93
93
  removeBadge: z.boolean().describe("더 쓰지 않는다 — 배지 키를 없애 항상 false"),
94
94
  }),
95
95
  usage: subscriptionUsageSchema,
@@ -123,12 +123,12 @@ export const planErrorDetailsSchema = z
123
123
  used: z.number().optional(),
124
124
  plan: responsePlanCodeSchema.optional(),
125
125
  resetsAt: z.string().optional().describe("월 한도가 초기화되는 시각(ISO 8601)"),
126
- upgradeUrl: z.string().optional().describe("요금제 화면 주소(셀러 콘솔)"),
126
+ upgradeUrl: z.string().optional().describe("요금제 화면 주소(상점 플랫폼)"),
127
127
  reason: z
128
128
  .string()
129
129
  .optional()
130
130
  .describe(
131
- "스토어 수 한도의 이유 — `OWNED_STORES`(소유 스토어 수). `FREE_STORES`는 더 쓰지 않는다",
131
+ "상점 수 한도의 이유 — `OWNED_STORES`(소유 상점 수). `FREE_STORES`는 더 쓰지 않는다",
132
132
  ),
133
133
  })
134
134
  .loose();
@@ -138,7 +138,7 @@ const limitOrContract = (description: string) =>
138
138
  z.number().int().nullable().describe(`${description}. null이면 계약(엔터프라이즈)·한도 없음`);
139
139
 
140
140
  /**
141
- * 요금제 기능 키 값 — 요금제 비교표·콘솔 요금제 화면이 쓴다. 키는 서버 판정의 기능 키와 같다(추가만 한다). 상위 요금제는 하위 요금제
141
+ * 요금제 기능 키 값 — 요금제 비교표·상점 플랫폼 요금제 화면이 쓴다. 키는 서버 판정의 기능 키와 같다(추가만 한다). 상위 요금제는 하위 요금제
142
142
  * 기능을 모두 포함한다
143
143
  */
144
144
  export const planEntitlementsSchema = z
@@ -146,7 +146,7 @@ export const planEntitlementsSchema = z
146
146
  "features.admin_api": z
147
147
  .boolean()
148
148
  .describe(
149
- "관리 API(개인 액세스 토큰·외부 앱 토큰 호출). 셀러 콘솔·CLI·MCP는 모든 요금제에서 쓴다",
149
+ "관리 API(개인 액세스 토큰·외부 앱 토큰 호출). 상점 플랫폼·CLI·MCP는 모든 요금제에서 쓴다",
150
150
  ),
151
151
  "features.analytics": z.boolean().describe("애널리틱스 화면·조회 API"),
152
152
  "limits.ai_reads_monthly": limitOrContract("MCP 읽기 월 한도"),
@@ -8,7 +8,7 @@ import { z } from "zod";
8
8
  * 세는 것이다. 그 숫자가 규칙과 안내를 고치는 근거가 된다.
9
9
  *
10
10
  * **보내지 않는 것**: 파일 경로·소스 코드·위반 상세(`detail`)·토큰·사람 식별자. 규칙 id와 개수뿐이다.
11
- * 테넌트는 요청 토큰이 정한다(본문에 스토어 id가 없다). 옵트아웃은 클라이언트의 `SAYREN_TELEMETRY=0`이다.
11
+ * 테넌트는 요청 토큰이 정한다(본문에 상점 id가 없다). 옵트아웃은 클라이언트의 `SAYREN_TELEMETRY=0`이다.
12
12
  *
13
13
  * 알 수 없는 키는 저장하지 않고 버린다(`.strict()`를 쓰지 않는다) — 새 버전 클라이언트가 필드를
14
14
  * 하나 더 실었다고 계측 전체가 400으로 날아가면 그 버전의 숫자가 통째로 빈다.
@@ -64,7 +64,7 @@ export const mcpToolEventSchema = z.object({
64
64
  results: z
65
65
  .array(mcpRuleResultSchema)
66
66
  .max(MCP_TELEMETRY_MAX_RESULTS)
67
- // 규칙 하나당 한 줄이다. 같은 id를 여러 줄로 실으면 집계가 한 스토어의 한 규칙을 몇 번 세야
67
+ // 규칙 하나당 한 줄이다. 같은 id를 여러 줄로 실으면 집계가 한 상점의 한 규칙을 몇 번 세야
68
68
  // 하는지 정할 수 없고, 상한만큼 같은 규칙을 반복해 보내는 것이 저장을 부풀리는 길이 된다.
69
69
  .refine((results) => new Set(results.map((result) => result.ruleId)).size === results.length, {
70
70
  message: "같은 규칙 id를 두 번 실을 수 없습니다",
@@ -52,7 +52,7 @@ export interface UploadRejection {
52
52
 
53
53
  /**
54
54
  * 용도 제한 위반 여부. 통과하면 `null`.
55
- * 서버가 던지는 오류와 콘솔이 먼저 띄우는 안내가 갈리지 않도록 한 함수로 판정한다.
55
+ * 서버가 던지는 오류와 상점 플랫폼이 먼저 띄우는 안내가 갈리지 않도록 한 함수로 판정한다.
56
56
  */
57
57
  export function uploadRejection(
58
58
  purpose: UploadPurpose,
@@ -28,7 +28,7 @@ export {
28
28
  const envelopeFields = {
29
29
  id: z.string().describe("이벤트 ID (`evt_…`, 테스트 전송은 `evt_test_…`). 중복 제거 키"),
30
30
  createdAt: z.string().describe("이벤트 발생 일시 (ISO 8601)"),
31
- storeId: z.string().describe("이벤트가 발생한 스토어 ID"),
31
+ storeId: z.string().describe("이벤트가 발생한 상점 ID"),
32
32
  sequence: z
33
33
  .number()
34
34
  .int()
package/src/session.ts CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  import { type MyAccount, myAccountSchema } from "./schemas/auth";
10
10
 
11
11
  /**
12
- * SDK 세션 매니저 — 콘솔(액세스 토큰)의 저장·무음 갱신·회전을 캡슐화한다.
12
+ * SDK 세션 매니저 — 상점 플랫폼(액세스 토큰)의 저장·무음 갱신·회전을 캡슐화한다.
13
13
  *
14
14
  * 저장 매체(쿠키/localStorage/…)와 그 속성(Max-Age·SameSite·Secure·Path)은 **어댑터(앱) 책임**이다.
15
15
  * SDK는 "무엇을 어떤 키로 저장할지"만 알고, "어떻게 저장할지"는 SessionStorage 어댑터에 위임한다.