connectbase-client 4.3.0 → 4.4.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 CHANGED
@@ -5713,16 +5713,30 @@ interface UpdatePublicKeyResponse {
5713
5713
  /**
5714
5714
  * Public Key 관리 API
5715
5715
  *
5716
+ * 콘솔 JWT 또는 **service_role 함수**(`ctx.cbAdmin`)로 호출한다. 브라우저에서 Public Key(cb_pk_)
5717
+ * 단독으로는 호출할 수 없다 — 키가 자기 자신을 발급/수정하는 경로를 막는다.
5718
+ *
5719
+ * service_role 함수에서 쓰려면 함수 `management_scopes` 에 스코프를 opt-in 해야 한다:
5720
+ * `publickey:read`(목록 조회) / `publickey:manage`(생성·수정·삭제).
5721
+ *
5722
+ * `payment_mode` 로 키마다 결제 자격증명 모드를 고정할 수 있다 — QA 빌드에 `test` 키를 심으면
5723
+ * 앱 설정과 무관하게 그 키의 결제만 테스트로 처리된다(platform-issue 019f9961).
5724
+ *
5716
5725
  * @example
5717
5726
  * ```typescript
5718
5727
  * // Public Key 목록 조회
5719
5728
  * const keys = await cb.publicKey.getPublicKeys('app-id')
5720
5729
  *
5721
- * // Public Key 생성
5722
- * const newKey = await cb.publicKey.createPublicKey('app-id', { name: 'Production' })
5723
- * console.log(newKey.key) // 전체 키 (이때만 볼 수 있음!)
5730
+ * // QA 빌드용 테스트 결제 키 생성
5731
+ * const newKey = await cb.publicKey.createPublicKey('app-id', {
5732
+ * name: 'QA',
5733
+ * payment_mode: 'test',
5734
+ * })
5735
+ * console.log(newKey.key) // 전체 키 (이때만 볼 수 있음!)
5736
+ * console.log(newKey.payment_mode) // 'test' — 되읽어 검증
5724
5737
  *
5725
- * // Public Key 비활성화
5738
+ * // 모드 변경 / 비활성화
5739
+ * await cb.publicKey.updatePublicKey('app-id', 'key-id', { payment_mode: 'live' })
5726
5740
  * await cb.publicKey.updatePublicKey('app-id', 'key-id', { is_active: false })
5727
5741
  *
5728
5742
  * // Public Key 삭제
@@ -5732,8 +5746,9 @@ interface UpdatePublicKeyResponse {
5732
5746
  declare class PublicKeyAPI {
5733
5747
  private http;
5734
5748
  constructor(http: HttpClient);
5749
+ private ensureServerAuth;
5735
5750
  /**
5736
- * 앱의 Public Key 목록을 조회합니다
5751
+ * 앱의 Public Key 목록을 조회합니다 (management_scope: `publickey:read`)
5737
5752
  * @param appId 앱 ID
5738
5753
  */
5739
5754
  getPublicKeys(appId: string): Promise<FetchPublicKeysResponse>;
@@ -5744,18 +5759,22 @@ declare class PublicKeyAPI {
5744
5759
  * 안전한 곳에 저장하세요.
5745
5760
  *
5746
5761
  * @param appId 앱 ID
5747
- * @param data 생성할 Public Key 정보
5762
+ * @param data 생성할 Public Key 정보 (`payment_mode` 로 결제 모드 고정 가능)
5763
+ *
5764
+ * (management_scope: `publickey:manage`)
5748
5765
  */
5749
5766
  createPublicKey(appId: string, data: CreatePublicKeyRequest): Promise<CreatePublicKeyResponse>;
5750
5767
  /**
5751
- * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화)
5768
+ * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화, `payment_mode` 변경)
5769
+ *
5770
+ * (management_scope: `publickey:manage`)
5752
5771
  * @param appId 앱 ID
5753
5772
  * @param keyId Public Key ID
5754
5773
  * @param data 수정할 정보
5755
5774
  */
5756
5775
  updatePublicKey(appId: string, keyId: string, data: UpdatePublicKeyRequest): Promise<UpdatePublicKeyResponse>;
5757
5776
  /**
5758
- * Public Key 를 삭제합니다
5777
+ * Public Key 를 삭제합니다 (management_scope: `publickey:manage`)
5759
5778
  * @param appId 앱 ID
5760
5779
  * @param keyId Public Key ID
5761
5780
  */
package/dist/index.d.ts CHANGED
@@ -5713,16 +5713,30 @@ interface UpdatePublicKeyResponse {
5713
5713
  /**
5714
5714
  * Public Key 관리 API
5715
5715
  *
5716
+ * 콘솔 JWT 또는 **service_role 함수**(`ctx.cbAdmin`)로 호출한다. 브라우저에서 Public Key(cb_pk_)
5717
+ * 단독으로는 호출할 수 없다 — 키가 자기 자신을 발급/수정하는 경로를 막는다.
5718
+ *
5719
+ * service_role 함수에서 쓰려면 함수 `management_scopes` 에 스코프를 opt-in 해야 한다:
5720
+ * `publickey:read`(목록 조회) / `publickey:manage`(생성·수정·삭제).
5721
+ *
5722
+ * `payment_mode` 로 키마다 결제 자격증명 모드를 고정할 수 있다 — QA 빌드에 `test` 키를 심으면
5723
+ * 앱 설정과 무관하게 그 키의 결제만 테스트로 처리된다(platform-issue 019f9961).
5724
+ *
5716
5725
  * @example
5717
5726
  * ```typescript
5718
5727
  * // Public Key 목록 조회
5719
5728
  * const keys = await cb.publicKey.getPublicKeys('app-id')
5720
5729
  *
5721
- * // Public Key 생성
5722
- * const newKey = await cb.publicKey.createPublicKey('app-id', { name: 'Production' })
5723
- * console.log(newKey.key) // 전체 키 (이때만 볼 수 있음!)
5730
+ * // QA 빌드용 테스트 결제 키 생성
5731
+ * const newKey = await cb.publicKey.createPublicKey('app-id', {
5732
+ * name: 'QA',
5733
+ * payment_mode: 'test',
5734
+ * })
5735
+ * console.log(newKey.key) // 전체 키 (이때만 볼 수 있음!)
5736
+ * console.log(newKey.payment_mode) // 'test' — 되읽어 검증
5724
5737
  *
5725
- * // Public Key 비활성화
5738
+ * // 모드 변경 / 비활성화
5739
+ * await cb.publicKey.updatePublicKey('app-id', 'key-id', { payment_mode: 'live' })
5726
5740
  * await cb.publicKey.updatePublicKey('app-id', 'key-id', { is_active: false })
5727
5741
  *
5728
5742
  * // Public Key 삭제
@@ -5732,8 +5746,9 @@ interface UpdatePublicKeyResponse {
5732
5746
  declare class PublicKeyAPI {
5733
5747
  private http;
5734
5748
  constructor(http: HttpClient);
5749
+ private ensureServerAuth;
5735
5750
  /**
5736
- * 앱의 Public Key 목록을 조회합니다
5751
+ * 앱의 Public Key 목록을 조회합니다 (management_scope: `publickey:read`)
5737
5752
  * @param appId 앱 ID
5738
5753
  */
5739
5754
  getPublicKeys(appId: string): Promise<FetchPublicKeysResponse>;
@@ -5744,18 +5759,22 @@ declare class PublicKeyAPI {
5744
5759
  * 안전한 곳에 저장하세요.
5745
5760
  *
5746
5761
  * @param appId 앱 ID
5747
- * @param data 생성할 Public Key 정보
5762
+ * @param data 생성할 Public Key 정보 (`payment_mode` 로 결제 모드 고정 가능)
5763
+ *
5764
+ * (management_scope: `publickey:manage`)
5748
5765
  */
5749
5766
  createPublicKey(appId: string, data: CreatePublicKeyRequest): Promise<CreatePublicKeyResponse>;
5750
5767
  /**
5751
- * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화)
5768
+ * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화, `payment_mode` 변경)
5769
+ *
5770
+ * (management_scope: `publickey:manage`)
5752
5771
  * @param appId 앱 ID
5753
5772
  * @param keyId Public Key ID
5754
5773
  * @param data 수정할 정보
5755
5774
  */
5756
5775
  updatePublicKey(appId: string, keyId: string, data: UpdatePublicKeyRequest): Promise<UpdatePublicKeyResponse>;
5757
5776
  /**
5758
- * Public Key 를 삭제합니다
5777
+ * Public Key 를 삭제합니다 (management_scope: `publickey:manage`)
5759
5778
  * @param appId 앱 ID
5760
5779
  * @param keyId Public Key ID
5761
5780
  */
package/dist/index.js CHANGED
@@ -6161,11 +6161,19 @@ var PublicKeyAPI = class {
6161
6161
  constructor(http) {
6162
6162
  this.http = http;
6163
6163
  }
6164
+ ensureServerAuth(method) {
6165
+ if (this.http.hasPublicKey() && !this.http.hasJWT()) {
6166
+ throw new Error(
6167
+ `cb.publicKey.${method}() \uB294 \uCF58\uC194 JWT \uB610\uB294 service_role(ctx.cbAdmin, management_scopes: ["publickey:read" | "publickey:manage"]) \uC778\uC99D\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. Public Key(cb_pk_) \uB2E8\uB3C5 SDK \uC778\uC2A4\uD134\uC2A4\uB85C\uB294 \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 Functions \uD658\uACBD\uC5D0\uC11C \uC0AC\uC6A9\uD558\uC138\uC694.`
6168
+ );
6169
+ }
6170
+ }
6164
6171
  /**
6165
- * 앱의 Public Key 목록을 조회합니다
6172
+ * 앱의 Public Key 목록을 조회합니다 (management_scope: `publickey:read`)
6166
6173
  * @param appId 앱 ID
6167
6174
  */
6168
6175
  async getPublicKeys(appId) {
6176
+ this.ensureServerAuth("getPublicKeys");
6169
6177
  return this.http.get(
6170
6178
  `/v1/apps/${appId}/public-keys`
6171
6179
  );
@@ -6177,32 +6185,39 @@ var PublicKeyAPI = class {
6177
6185
  * 안전한 곳에 저장하세요.
6178
6186
  *
6179
6187
  * @param appId 앱 ID
6180
- * @param data 생성할 Public Key 정보
6188
+ * @param data 생성할 Public Key 정보 (`payment_mode` 로 결제 모드 고정 가능)
6189
+ *
6190
+ * (management_scope: `publickey:manage`)
6181
6191
  */
6182
6192
  async createPublicKey(appId, data) {
6193
+ this.ensureServerAuth("createPublicKey");
6183
6194
  return this.http.post(
6184
6195
  `/v1/apps/${appId}/public-keys`,
6185
6196
  data
6186
6197
  );
6187
6198
  }
6188
6199
  /**
6189
- * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화)
6200
+ * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화, `payment_mode` 변경)
6201
+ *
6202
+ * (management_scope: `publickey:manage`)
6190
6203
  * @param appId 앱 ID
6191
6204
  * @param keyId Public Key ID
6192
6205
  * @param data 수정할 정보
6193
6206
  */
6194
6207
  async updatePublicKey(appId, keyId, data) {
6208
+ this.ensureServerAuth("updatePublicKey");
6195
6209
  return this.http.patch(
6196
6210
  `/v1/apps/${appId}/public-keys/${keyId}`,
6197
6211
  data
6198
6212
  );
6199
6213
  }
6200
6214
  /**
6201
- * Public Key 를 삭제합니다
6215
+ * Public Key 를 삭제합니다 (management_scope: `publickey:manage`)
6202
6216
  * @param appId 앱 ID
6203
6217
  * @param keyId Public Key ID
6204
6218
  */
6205
6219
  async deletePublicKey(appId, keyId) {
6220
+ this.ensureServerAuth("deletePublicKey");
6206
6221
  await this.http.delete(`/v1/apps/${appId}/public-keys/${keyId}`);
6207
6222
  }
6208
6223
  };
@@ -10758,8 +10773,16 @@ function sanitizePathForBreadcrumb(rawUrl) {
10758
10773
  }
10759
10774
 
10760
10775
  // src/core/http.ts
10776
+ var COOKIE_BEARING_PUBLIC_PATHS = /* @__PURE__ */ new Set([
10777
+ "/v1/public/app-members/signup",
10778
+ "/v1/public/app-members/signin",
10779
+ "/v1/public/app-members/signout"
10780
+ ]);
10761
10781
  function fetchCredentialsForPath(url) {
10762
10782
  const path = url.split("?")[0];
10783
+ if (COOKIE_BEARING_PUBLIC_PATHS.has(path)) {
10784
+ return "include";
10785
+ }
10763
10786
  return path.startsWith("/v1/public/") ? "omit" : "include";
10764
10787
  }
10765
10788
  var TOKEN_STORAGE_KEY = "cb_auth_tokens";
package/dist/index.mjs CHANGED
@@ -6115,11 +6115,19 @@ var PublicKeyAPI = class {
6115
6115
  constructor(http) {
6116
6116
  this.http = http;
6117
6117
  }
6118
+ ensureServerAuth(method) {
6119
+ if (this.http.hasPublicKey() && !this.http.hasJWT()) {
6120
+ throw new Error(
6121
+ `cb.publicKey.${method}() \uB294 \uCF58\uC194 JWT \uB610\uB294 service_role(ctx.cbAdmin, management_scopes: ["publickey:read" | "publickey:manage"]) \uC778\uC99D\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. Public Key(cb_pk_) \uB2E8\uB3C5 SDK \uC778\uC2A4\uD134\uC2A4\uB85C\uB294 \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 Functions \uD658\uACBD\uC5D0\uC11C \uC0AC\uC6A9\uD558\uC138\uC694.`
6122
+ );
6123
+ }
6124
+ }
6118
6125
  /**
6119
- * 앱의 Public Key 목록을 조회합니다
6126
+ * 앱의 Public Key 목록을 조회합니다 (management_scope: `publickey:read`)
6120
6127
  * @param appId 앱 ID
6121
6128
  */
6122
6129
  async getPublicKeys(appId) {
6130
+ this.ensureServerAuth("getPublicKeys");
6123
6131
  return this.http.get(
6124
6132
  `/v1/apps/${appId}/public-keys`
6125
6133
  );
@@ -6131,32 +6139,39 @@ var PublicKeyAPI = class {
6131
6139
  * 안전한 곳에 저장하세요.
6132
6140
  *
6133
6141
  * @param appId 앱 ID
6134
- * @param data 생성할 Public Key 정보
6142
+ * @param data 생성할 Public Key 정보 (`payment_mode` 로 결제 모드 고정 가능)
6143
+ *
6144
+ * (management_scope: `publickey:manage`)
6135
6145
  */
6136
6146
  async createPublicKey(appId, data) {
6147
+ this.ensureServerAuth("createPublicKey");
6137
6148
  return this.http.post(
6138
6149
  `/v1/apps/${appId}/public-keys`,
6139
6150
  data
6140
6151
  );
6141
6152
  }
6142
6153
  /**
6143
- * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화)
6154
+ * Public Key 를 수정합니다 (이름 변경, 활성화/비활성화, `payment_mode` 변경)
6155
+ *
6156
+ * (management_scope: `publickey:manage`)
6144
6157
  * @param appId 앱 ID
6145
6158
  * @param keyId Public Key ID
6146
6159
  * @param data 수정할 정보
6147
6160
  */
6148
6161
  async updatePublicKey(appId, keyId, data) {
6162
+ this.ensureServerAuth("updatePublicKey");
6149
6163
  return this.http.patch(
6150
6164
  `/v1/apps/${appId}/public-keys/${keyId}`,
6151
6165
  data
6152
6166
  );
6153
6167
  }
6154
6168
  /**
6155
- * Public Key 를 삭제합니다
6169
+ * Public Key 를 삭제합니다 (management_scope: `publickey:manage`)
6156
6170
  * @param appId 앱 ID
6157
6171
  * @param keyId Public Key ID
6158
6172
  */
6159
6173
  async deletePublicKey(appId, keyId) {
6174
+ this.ensureServerAuth("deletePublicKey");
6160
6175
  await this.http.delete(`/v1/apps/${appId}/public-keys/${keyId}`);
6161
6176
  }
6162
6177
  };
@@ -10712,8 +10727,16 @@ function sanitizePathForBreadcrumb(rawUrl) {
10712
10727
  }
10713
10728
 
10714
10729
  // src/core/http.ts
10730
+ var COOKIE_BEARING_PUBLIC_PATHS = /* @__PURE__ */ new Set([
10731
+ "/v1/public/app-members/signup",
10732
+ "/v1/public/app-members/signin",
10733
+ "/v1/public/app-members/signout"
10734
+ ]);
10715
10735
  function fetchCredentialsForPath(url) {
10716
10736
  const path = url.split("?")[0];
10737
+ if (COOKIE_BEARING_PUBLIC_PATHS.has(path)) {
10738
+ return "include";
10739
+ }
10717
10740
  return path.startsWith("/v1/public/") ? "omit" : "include";
10718
10741
  }
10719
10742
  var TOKEN_STORAGE_KEY = "cb_auth_tokens";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "connectbase-client",
3
- "version": "4.3.0",
3
+ "version": "4.4.1",
4
4
  "description": "Connect Base JavaScript/TypeScript SDK for browser and Node.js",
5
5
  "repository": {
6
6
  "type": "git",