@designbasekorea/figma-license-core 0.2.1 → 0.3.0

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.
@@ -8,7 +8,7 @@
8
8
  - 키가 있는지 (`hasLicenseKey`)
9
9
  - 실제 유효 등록인지 (`isLicenseRegistered`)
10
10
  - 유료/무료 티어별 사용 범위 통일
11
- - 일일 N회, 월간 N회, 무제한
11
+ - 일일 N회, 주간 N회, 월간 N회, 무제한
12
12
  - 티어별 기능 제한 통일
13
13
  - 예: 무료는 무제한 사용 가능하지만 일부 기능 차단
14
14
 
@@ -211,7 +211,7 @@ import { PageLicense } from '@designbasekorea/figma-ui';
211
211
  - `planTier`
212
212
  - `remainingUsage`
213
213
  - `usageUsed`
214
- - `usageReset` (`none`/`daily`/`monthly`)
214
+ - `usageReset` (`none`/`daily`/`weekly`/`monthly`)
215
215
  - `usageReason` (`USAGE_LIMIT_REACHED`/`FEATURE_NOT_ALLOWED`)
216
216
  - `licenseStatus`
217
217
  - `licenseSource`
@@ -223,6 +223,7 @@ import { PageLicense } from '@designbasekorea/figma-ui';
223
223
  UI 예시:
224
224
 
225
225
  - FREE + daily + 10회 정책: "오늘 남은 횟수 6/10"
226
+ - FREE + weekly + 30회 정책: "이번 주 남은 횟수 18/30"
226
227
  - PRO + monthly + 20회 정책: "이번 달 남은 횟수 12/20"
227
228
  - FREE + unlimited + feature deny: "사용 횟수 제한 없음, 고급 기능 잠김"
228
229
 
@@ -241,7 +242,9 @@ parent.postMessage({ pluginMessage: { type: 'check-feature-access', featureKey:
241
242
 
242
243
  ## 5) 사용량 소모 처리
243
244
 
244
- 기능 성공 후 사용량 소모:
245
+ 기능 실행 전 접근 가능 여부를 확인하고, 실제 작업을 시작하기 직전에 사용량을 소모합니다.
246
+ `amount`가 남은 수량보다 크면 코어가 소비하지 않습니다. 소비된 시도는 작업이
247
+ 외부 API 오류로 실패하더라도 재시도로 한도를 우회하지 못하도록 사용량에 포함됩니다.
245
248
 
246
249
  ```ts
247
250
  parent.postMessage({ pluginMessage: { type: 'consume-usage', amount: 1, featureKey: 'bulk_apply' } }, '*');
@@ -249,7 +252,7 @@ parent.postMessage({ pluginMessage: { type: 'consume-usage', amount: 1, featureK
249
252
 
250
253
  응답: `usage-consume-result`
251
254
 
252
- - `success`가 `true`면 소모 완료
255
+ - `success`가 `true`면 소모 완료. 마지막 1회 소비도 `success: true`, `remaining: 0`입니다.
253
256
  - `success`가 `false`면 차단 상태
254
257
 
255
258
  ## 6) 정책 샘플
@@ -267,6 +270,16 @@ policy: {
267
270
  }
268
271
  ```
269
272
 
273
+ ### A-1. 무료 주 30회
274
+
275
+ ```ts
276
+ policy: {
277
+ usageByTier: {
278
+ FREE: { limit: 30, reset: 'weekly' },
279
+ },
280
+ }
281
+ ```
282
+
270
283
  ### B. 무료 무제한 + 일부 기능 제한
271
284
 
272
285
  ```ts
@@ -297,7 +310,8 @@ policy: {
297
310
  ## 7) 기존 controller.ts 마이그레이션 팁
298
311
 
299
312
  - 기존 `StatusManager` 인터페이스를 즉시 제거하지 말고, 1차로 호환 어댑터를 두세요.
300
- - `decrementUsageCount`는 내부적으로 `consume-usage` 또는 `incrementUsage`로 연결하세요.
313
+ - `decrementUsageCount`는 내부적으로 `consumeUsage` 또는 `consume-usage`로 연결하세요.
314
+ 기존 `incrementUsage`는 호환용 저수준 API로만 남기고 새 기능에서는 사용하지 마세요.
301
315
  - UI에서 `usageCount`만 보던 경우, 앞으로는 `remainingUsage` + `usageReset` 조합으로 표기하세요.
302
316
 
303
317
  ## 8) 운영 체크리스트
@@ -313,3 +327,5 @@ policy: {
313
327
  - 라이브러리 변경은 Changeset으로 `figma-license-core`와 `figma-ui` 버전을 함께 올린 뒤 패키지를 배포합니다.
314
328
  - 플러그인은 테스트 단계에서 새 버전을 정확히 고정하고, Face Dummy에서 활성·만료·철회·요청 제한·네트워크 실패를 확인한 다음 다른 플러그인으로 확장합니다.
315
329
  - 운영 플러그인에 `masterCode`를 넣지 않고, WordPress 서버를 권한의 최종 원천으로 유지합니다.
330
+ - 무료 한도와 차단 기능은 각 플러그인의 임의 상태 관리자가 아니라 `figma-license-core`의
331
+ `policy.usageByTier`와 `policy.featuresByTier`에서 선언합니다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designbasekorea/figma-license-core",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Figma plugin license core and status manager for reusable license workflows",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -21,12 +21,12 @@
21
21
  "devDependencies": {
22
22
  "@rollup/plugin-commonjs": "^25.0.4",
23
23
  "@rollup/plugin-node-resolve": "^15.2.1",
24
- "@rollup/plugin-typescript": "^11.1.3",
24
+ "@rollup/plugin-typescript": "^12.3.0",
25
25
  "@types/jest": "^29.5.5",
26
26
  "jest": "^29.6.4",
27
27
  "jest-environment-jsdom": "^29.6.4",
28
28
  "rimraf": "^5.0.1",
29
- "rollup": "^3.29.2",
29
+ "rollup": "^4.63.1",
30
30
  "typescript": "^5.2.2"
31
31
  },
32
32
  "publishConfig": {