@withwiz/toolkit 0.3.3 → 0.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.
Files changed (103) hide show
  1. package/dist/auth/core/jwt/cookie.js +4 -1
  2. package/dist/auth/core/jwt/index.js +4 -1
  3. package/dist/auth/index.js +9 -6
  4. package/dist/cache/cache-config.d.ts +0 -32
  5. package/dist/cache/cache-config.js +4 -4
  6. package/dist/cache/cache-defaults.d.ts +2 -28
  7. package/dist/cache/cache-defaults.js +1 -1
  8. package/dist/cache/cache-env.js +3 -3
  9. package/dist/cache/cache-factory.js +10 -10
  10. package/dist/cache/cache-invalidation.js +10 -10
  11. package/dist/cache/cache-redis.js +4 -4
  12. package/dist/cache/cache-wrapper.js +10 -10
  13. package/dist/cache/cache.js +16 -20
  14. package/dist/cache/config.d.ts +0 -8
  15. package/dist/cache/config.js +2 -2
  16. package/dist/cache/hybrid-cache-manager.js +5 -5
  17. package/dist/cache/index.d.ts +0 -1
  18. package/dist/cache/index.js +16 -20
  19. package/dist/cache/noop-cache-manager.d.ts +2 -2
  20. package/dist/cache/noop-cache-manager.js +5 -5
  21. package/dist/cache/redis-cache-manager.d.ts +2 -2
  22. package/dist/cache/redis-cache-manager.js +5 -5
  23. package/dist/{chunk-E54MAI4I.js → chunk-2F6KNGOD.js} +2 -2
  24. package/dist/{chunk-TO5CMMQC.js → chunk-2VMTIYLX.js} +2 -15
  25. package/dist/{chunk-WNF2RKFA.js → chunk-3J7FDOCU.js} +9 -9
  26. package/dist/{chunk-BKJPYZYO.js → chunk-3YUKCYHI.js} +4 -4
  27. package/dist/{chunk-IQQKKUAV.js → chunk-57W32BFZ.js} +4 -30
  28. package/dist/{chunk-JJ3I57N2.js → chunk-5WP57PJK.js} +6 -6
  29. package/dist/chunk-7LJWRKDT.js +45 -0
  30. package/dist/{chunk-S54PFAEU.js → chunk-7VTBRP5M.js} +2 -2
  31. package/dist/{chunk-HCF3C3AQ.js → chunk-AKD4YMJU.js} +0 -61
  32. package/dist/{chunk-6MI4XLWC.js → chunk-AQJAY5FA.js} +2 -2
  33. package/dist/{chunk-XI4MRH5P.js → chunk-BJLLMVWW.js} +11 -39
  34. package/dist/{chunk-TQJDNWBL.js → chunk-BJSEYZBH.js} +3 -3
  35. package/dist/{chunk-JLLMTTQ4.js → chunk-C4TSQUFA.js} +0 -7
  36. package/dist/{chunk-FDRIFPG6.js → chunk-CRWMULHR.js} +4 -4
  37. package/dist/{chunk-KXXROUA5.js → chunk-EOEMOXNT.js} +1 -44
  38. package/dist/{chunk-SV7X6HEN.js → chunk-FUDEEQR3.js} +5 -5
  39. package/dist/{chunk-VF4EVAMV.js → chunk-GFAD4UAT.js} +1 -1
  40. package/dist/{chunk-7IN4WRSO.js → chunk-GGSFZP6T.js} +9 -9
  41. package/dist/{chunk-HUDWNKGY.js → chunk-J5AISIJS.js} +2 -2
  42. package/dist/{chunk-Y2JYA2AR.js → chunk-JNJALNRR.js} +2 -2
  43. package/dist/{chunk-2KDLKHTO.js → chunk-L6AU74EI.js} +2 -14
  44. package/dist/{chunk-BYCFXGQL.js → chunk-N3TAGJHR.js} +2 -2
  45. package/dist/{chunk-AJLUPYCQ.js → chunk-N4D6OPPP.js} +16 -6
  46. package/dist/{chunk-KZUBO2IL.js → chunk-NQQU6UFE.js} +4 -4
  47. package/dist/{chunk-IYXMGIEP.js → chunk-ON4ENPUS.js} +0 -61
  48. package/dist/{chunk-SNVGJPPX.js → chunk-SNTLJ646.js} +0 -80
  49. package/dist/{chunk-TFD3DSM2.js → chunk-UCIUAZQT.js} +14 -18
  50. package/dist/{chunk-7JWIX5BS.js → chunk-WMJ5M45N.js} +1 -1
  51. package/dist/{chunk-AXCB7SKY.js → chunk-X5RMDLLM.js} +15 -15
  52. package/dist/{chunk-RWVGJUON.js → chunk-YSUL3SLC.js} +3 -3
  53. package/dist/{chunk-OIVXOT2X.js → chunk-YUBXS7YI.js} +2 -3
  54. package/dist/{chunk-VDXB5DCY.js → chunk-ZRDPJORV.js} +0 -10
  55. package/dist/components/ui/DataTable.js +2 -2
  56. package/dist/components/ui/data-table/DataTable.js +2 -2
  57. package/dist/constants/error-codes.d.ts +0 -78
  58. package/dist/constants/error-codes.js +1 -1
  59. package/dist/constants/index.js +9 -11
  60. package/dist/constants/pagination.d.ts +0 -5
  61. package/dist/constants/pagination.js +1 -1
  62. package/dist/constants/security.d.ts +0 -6
  63. package/dist/constants/security.js +1 -3
  64. package/dist/constants/validation.d.ts +1 -3
  65. package/dist/error/app-error.d.ts +3 -16
  66. package/dist/error/app-error.js +2 -2
  67. package/dist/error/error-display.js +7 -7
  68. package/dist/error/error-handler.d.ts +0 -24
  69. package/dist/error/error-handler.js +3 -3
  70. package/dist/error/friendly-messages-v2.js +5 -5
  71. package/dist/error/friendly-messages.js +1 -15
  72. package/dist/error/index.js +8 -8
  73. package/dist/error/messages/en.js +1 -1
  74. package/dist/error/messages/index.js +3 -3
  75. package/dist/error/messages/ko.js +1 -1
  76. package/dist/initialize.js +4 -4
  77. package/dist/middleware/auth.js +4 -4
  78. package/dist/middleware/error-handler.js +7 -7
  79. package/dist/middleware/index.js +14 -14
  80. package/dist/middleware/rate-limit.d.ts +1 -1
  81. package/dist/middleware/rate-limit.js +3 -3
  82. package/dist/middleware/wrappers.js +12 -12
  83. package/dist/storage/r2-storage.js +2 -2
  84. package/dist/system/environment.js +3 -3
  85. package/dist/system/health-check.js +4 -4
  86. package/dist/system/index.js +5 -5
  87. package/dist/types/env.d.ts +2 -13
  88. package/dist/types/qr-code.d.ts +1 -1
  89. package/dist/utils/api-helpers.js +2 -2
  90. package/dist/utils/cors.d.ts +6 -4
  91. package/dist/utils/cors.js +1 -1
  92. package/dist/utils/error-message-formatter.js +1 -1
  93. package/dist/utils/error-processor.js +3 -3
  94. package/dist/utils/index.js +5 -5
  95. package/dist/utils/optimistic-lock.d.ts +4 -4
  96. package/dist/utils/optimistic-lock.js +2 -2
  97. package/package.json +1 -1
  98. package/dist/cache/cache-keys-legacy.d.ts +0 -35
  99. package/dist/cache/cache-keys-legacy.js +0 -7
  100. package/dist/chunk-JBCDEAMW.js +0 -35
  101. package/dist/chunk-O7CK3CKJ.js +0 -84
  102. package/dist/{chunk-QMCOX3DP.js → chunk-EBUEBEJX.js} +0 -0
  103. package/dist/{chunk-HB5GFTFD.js → chunk-LX2EYD74.js} +3 -3
@@ -4,10 +4,7 @@ import {
4
4
  withCustomApi,
5
5
  withOptionalAuthApi,
6
6
  withPublicApi
7
- } from "../chunk-JJ3I57N2.js";
8
- import {
9
- initRequestMiddleware
10
- } from "../chunk-62Q7DN5G.js";
7
+ } from "../chunk-5WP57PJK.js";
11
8
  import {
12
9
  MiddlewareChain
13
10
  } from "../chunk-FPESPW6P.js";
@@ -15,7 +12,7 @@ import {
15
12
  createRateLimitMiddleware,
16
13
  rateLimitMiddleware,
17
14
  setRateLimitAdapter
18
- } from "../chunk-6MI4XLWC.js";
15
+ } from "../chunk-AQJAY5FA.js";
19
16
  import {
20
17
  responseLoggerMiddleware
21
18
  } from "../chunk-OIRAH57Y.js";
@@ -30,25 +27,28 @@ import {
30
27
  initializeAuthMiddleware,
31
28
  optionalAuthMiddleware,
32
29
  setAccessTokenBlacklistChecker
33
- } from "../chunk-HUDWNKGY.js";
30
+ } from "../chunk-J5AISIJS.js";
34
31
  import {
35
32
  corsMiddleware,
36
33
  validateCorsConfiguration
37
34
  } from "../chunk-KGHWGLED.js";
38
35
  import {
39
36
  errorHandlerMiddleware
40
- } from "../chunk-BKJPYZYO.js";
37
+ } from "../chunk-3YUKCYHI.js";
38
+ import {
39
+ initRequestMiddleware
40
+ } from "../chunk-62Q7DN5G.js";
41
41
  import "../chunk-XHZ5L4FO.js";
42
- import "../chunk-2KDLKHTO.js";
43
- import "../chunk-KXXROUA5.js";
44
- import "../chunk-Y2JYA2AR.js";
45
- import "../chunk-HCF3C3AQ.js";
46
- import "../chunk-IYXMGIEP.js";
47
- import "../chunk-SNVGJPPX.js";
42
+ import "../chunk-L6AU74EI.js";
43
+ import "../chunk-EOEMOXNT.js";
44
+ import "../chunk-JNJALNRR.js";
45
+ import "../chunk-AKD4YMJU.js";
46
+ import "../chunk-ON4ENPUS.js";
47
+ import "../chunk-SNTLJ646.js";
48
48
  import "../chunk-GFWGLWTS.js";
49
49
  import "../chunk-OZE5KUS3.js";
50
50
  import "../chunk-3GAY2T2A.js";
51
- import "../chunk-AJLUPYCQ.js";
51
+ import "../chunk-N4D6OPPP.js";
52
52
  import "../chunk-AIH3F7JV.js";
53
53
  import "../chunk-GQVBWZLH.js";
54
54
  import "../chunk-OHBAELPZ.js";
@@ -51,7 +51,7 @@ export declare function setRateLimitAdapter(adapter: IRateLimitAdapter): void;
51
51
  export type TRateLimitType = "api" | "auth" | "admin";
52
52
  /**
53
53
  * 확장 가능한 Rate Limit 타입
54
- * URL Shortener 서비스 특화 타입은 extensions/url-shortener/rate-limit-types.ts에 정의
54
+ * 도메인 특화 타입은 소비 프로젝트의 extension 영역에서 정의하세요.
55
55
  */
56
56
  export type TExtendedRateLimitType = TRateLimitType | string;
57
57
  /**
@@ -2,9 +2,9 @@ import {
2
2
  createRateLimitMiddleware,
3
3
  rateLimitMiddleware,
4
4
  setRateLimitAdapter
5
- } from "../chunk-6MI4XLWC.js";
6
- import "../chunk-KXXROUA5.js";
7
- import "../chunk-SNVGJPPX.js";
5
+ } from "../chunk-AQJAY5FA.js";
6
+ import "../chunk-EOEMOXNT.js";
7
+ import "../chunk-SNTLJ646.js";
8
8
  import "../chunk-GQVBWZLH.js";
9
9
  import "../chunk-OHBAELPZ.js";
10
10
  import "../chunk-SFPMFVSD.js";
@@ -4,26 +4,26 @@ import {
4
4
  withCustomApi,
5
5
  withOptionalAuthApi,
6
6
  withPublicApi
7
- } from "../chunk-JJ3I57N2.js";
8
- import "../chunk-62Q7DN5G.js";
7
+ } from "../chunk-5WP57PJK.js";
9
8
  import "../chunk-FPESPW6P.js";
10
- import "../chunk-6MI4XLWC.js";
9
+ import "../chunk-AQJAY5FA.js";
11
10
  import "../chunk-OIRAH57Y.js";
12
11
  import "../chunk-WMQE2YK7.js";
13
- import "../chunk-HUDWNKGY.js";
12
+ import "../chunk-J5AISIJS.js";
14
13
  import "../chunk-KGHWGLED.js";
15
- import "../chunk-BKJPYZYO.js";
14
+ import "../chunk-3YUKCYHI.js";
15
+ import "../chunk-62Q7DN5G.js";
16
16
  import "../chunk-XHZ5L4FO.js";
17
- import "../chunk-2KDLKHTO.js";
18
- import "../chunk-KXXROUA5.js";
19
- import "../chunk-Y2JYA2AR.js";
20
- import "../chunk-HCF3C3AQ.js";
21
- import "../chunk-IYXMGIEP.js";
22
- import "../chunk-SNVGJPPX.js";
17
+ import "../chunk-L6AU74EI.js";
18
+ import "../chunk-EOEMOXNT.js";
19
+ import "../chunk-JNJALNRR.js";
20
+ import "../chunk-AKD4YMJU.js";
21
+ import "../chunk-ON4ENPUS.js";
22
+ import "../chunk-SNTLJ646.js";
23
23
  import "../chunk-GFWGLWTS.js";
24
24
  import "../chunk-OZE5KUS3.js";
25
25
  import "../chunk-3GAY2T2A.js";
26
- import "../chunk-AJLUPYCQ.js";
26
+ import "../chunk-N4D6OPPP.js";
27
27
  import "../chunk-AIH3F7JV.js";
28
28
  import "../chunk-GQVBWZLH.js";
29
29
  import "../chunk-OHBAELPZ.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppError
3
- } from "../chunk-KXXROUA5.js";
4
- import "../chunk-SNVGJPPX.js";
3
+ } from "../chunk-EOEMOXNT.js";
4
+ import "../chunk-SNTLJ646.js";
5
5
  import {
6
6
  getStorageConfig
7
7
  } from "../chunk-AYZJN32D.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  checkEnvironmentVariables
3
- } from "../chunk-WNF2RKFA.js";
3
+ } from "../chunk-3J7FDOCU.js";
4
4
  import "../chunk-S5UCZ2T3.js";
5
5
  import "../chunk-3CBGGMIY.js";
6
6
  import "../chunk-OZE5KUS3.js";
7
7
  import "../chunk-GQVBWZLH.js";
8
8
  import "../chunk-OHBAELPZ.js";
9
+ import "../chunk-UCIUAZQT.js";
9
10
  import "../chunk-SFPMFVSD.js";
10
- import "../chunk-TFD3DSM2.js";
11
11
  import "../chunk-K25ICPU4.js";
12
12
  import "../chunk-2QH66EVQ.js";
13
- import "../chunk-IQQKKUAV.js";
13
+ import "../chunk-57W32BFZ.js";
14
14
  import "../chunk-ORMEWXMH.js";
15
15
  export {
16
16
  checkEnvironmentVariables
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  checkServiceHealth
3
- } from "../chunk-BYCFXGQL.js";
4
- import "../chunk-OIVXOT2X.js";
3
+ } from "../chunk-N3TAGJHR.js";
4
+ import "../chunk-YUBXS7YI.js";
5
5
  import "../chunk-S5UCZ2T3.js";
6
6
  import "../chunk-GQVBWZLH.js";
7
7
  import "../chunk-OHBAELPZ.js";
8
+ import "../chunk-UCIUAZQT.js";
8
9
  import "../chunk-SFPMFVSD.js";
9
- import "../chunk-TFD3DSM2.js";
10
10
  import "../chunk-K25ICPU4.js";
11
11
  import "../chunk-2QH66EVQ.js";
12
- import "../chunk-IQQKKUAV.js";
12
+ import "../chunk-57W32BFZ.js";
13
13
  import "../chunk-ORMEWXMH.js";
14
14
  export {
15
15
  checkServiceHealth
@@ -6,11 +6,11 @@ import {
6
6
  } from "../chunk-6SOQUYOU.js";
7
7
  import {
8
8
  checkEnvironmentVariables
9
- } from "../chunk-WNF2RKFA.js";
9
+ } from "../chunk-3J7FDOCU.js";
10
10
  import {
11
11
  checkServiceHealth
12
- } from "../chunk-BYCFXGQL.js";
13
- import "../chunk-OIVXOT2X.js";
12
+ } from "../chunk-N3TAGJHR.js";
13
+ import "../chunk-YUBXS7YI.js";
14
14
  import {
15
15
  getMemoryInfo
16
16
  } from "../chunk-LFQ3IQQB.js";
@@ -27,11 +27,11 @@ import {
27
27
  logger
28
28
  } from "../chunk-GQVBWZLH.js";
29
29
  import "../chunk-OHBAELPZ.js";
30
+ import "../chunk-UCIUAZQT.js";
30
31
  import "../chunk-SFPMFVSD.js";
31
- import "../chunk-TFD3DSM2.js";
32
32
  import "../chunk-K25ICPU4.js";
33
33
  import "../chunk-2QH66EVQ.js";
34
- import "../chunk-IQQKKUAV.js";
34
+ import "../chunk-57W32BFZ.js";
35
35
  import "../chunk-ORMEWXMH.js";
36
36
 
37
37
  // src/system/index.ts
@@ -42,10 +42,6 @@ export interface ICacheTTLConfig {
42
42
  SETTINGS: number;
43
43
  ANALYTICS: number;
44
44
  USER: number;
45
- LINK: number;
46
- ALIAS: number;
47
- COMMUNITY: number;
48
- RESERVED_WORDS: number;
49
45
  }
50
46
  /**
51
47
  * 캐시 백엔드 타입
@@ -83,22 +79,15 @@ export interface ICacheEnv {
83
79
  USER: ICacheCategoryConfig;
84
80
  GEOIP: ICacheCategoryConfig;
85
81
  SETTINGS: ICacheCategoryConfig;
86
- RESERVED_WORDS: ICacheCategoryConfig;
87
- ALIAS: ICacheCategoryConfig;
88
- COMMUNITY: ICacheCategoryConfig;
89
- LINK: ICacheCategoryConfig;
90
82
  RATE_LIMIT: ICacheCategoryConfig;
91
- URL_TOKEN: ICacheCategoryConfig;
92
- API_KEY: ICacheCategoryConfig;
93
- API_CONFIG: ICacheCategoryConfig;
94
83
  }
95
84
  /**
96
85
  * Raw 환경 변수 인터페이스 (직접 접근용)
97
86
  */
98
87
  export interface IRawEnv {
99
88
  NODE_ENV: 'development' | 'production' | 'test';
100
- UPSTASH_REDIS_REST_URL?: string;
101
- UPSTASH_REDIS_REST_TOKEN?: string;
89
+ REDIS_REST_URL?: string;
90
+ REDIS_REST_TOKEN?: string;
102
91
  CACHE_ENABLED: boolean;
103
92
  }
104
93
  /**
@@ -31,7 +31,7 @@ export interface IQRCodeStats {
31
31
  totalClicks: number;
32
32
  qrClicks: number;
33
33
  normalClicks: number;
34
- aliasClicks: number;
34
+ clicks: number;
35
35
  apiClicks: number;
36
36
  qrUsageRate: number;
37
37
  }
@@ -11,8 +11,8 @@ import {
11
11
  parseSort,
12
12
  requireAdmin,
13
13
  validateAndParse
14
- } from "../chunk-7JWIX5BS.js";
15
- import "../chunk-SNVGJPPX.js";
14
+ } from "../chunk-WMJ5M45N.js";
15
+ import "../chunk-SNTLJ646.js";
16
16
  import "../chunk-ORMEWXMH.js";
17
17
  export {
18
18
  createPaginatedResponse,
@@ -25,12 +25,14 @@ export declare function initCorsConfig(config: CorsConfig): void;
25
25
  */
26
26
  export declare function getCorsConfig(): CorsConfig;
27
27
  /**
28
- * 허용된 도메인 목록 (런타임 환경 변수 기반)
28
+ * 허용된 도메인 목록
29
29
  *
30
30
  * 우선순위:
31
- * 1. ALLOWED_ORIGINS 환경 변수 (쉼표로 구분)
32
- * 2. BASE_URL 또는 NEXT_PUBLIC_BASE_URL에서 자동 추출
33
- * 3. 개발 환경에서는 localhost 자동 추가
31
+ * 1. 미들웨어 CORS 설정의 allowedOrigins
32
+ * 2. baseUrl(설정/미들웨어)에서 자동 추출한 도메인
33
+ * 3. additionalOrigins(호출자 직접 추가)
34
+ *
35
+ * 개발 환경의 localhost 등은 호출자가 additionalOrigins로 명시 주입해야 합니다.
34
36
  */
35
37
  export declare function getAllowedOrigins(): string[];
36
38
  export declare function isOriginAllowed(origin: string | null | undefined): boolean;
@@ -7,7 +7,7 @@ import {
7
7
  withCORS,
8
8
  withPublicCORS,
9
9
  withRestrictedCORS
10
- } from "../chunk-TO5CMMQC.js";
10
+ } from "../chunk-2VMTIYLX.js";
11
11
  import "../chunk-GFWGLWTS.js";
12
12
  import "../chunk-SFPMFVSD.js";
13
13
  import "../chunk-K25ICPU4.js";
@@ -2,7 +2,7 @@ import {
2
2
  formatDatabaseError,
3
3
  formatGenericError,
4
4
  formatRedisError
5
- } from "../chunk-OIVXOT2X.js";
5
+ } from "../chunk-YUBXS7YI.js";
6
6
  import "../chunk-ORMEWXMH.js";
7
7
  export {
8
8
  formatDatabaseError,
@@ -12,9 +12,9 @@ import {
12
12
  throwUnauthorizedError,
13
13
  throwValidationError,
14
14
  withErrorHandling
15
- } from "../chunk-E54MAI4I.js";
16
- import "../chunk-KXXROUA5.js";
17
- import "../chunk-SNVGJPPX.js";
15
+ } from "../chunk-2F6KNGOD.js";
16
+ import "../chunk-EOEMOXNT.js";
17
+ import "../chunk-SNTLJ646.js";
18
18
  import "../chunk-GQVBWZLH.js";
19
19
  import "../chunk-OHBAELPZ.js";
20
20
  import "../chunk-SFPMFVSD.js";
@@ -47,7 +47,7 @@ import {
47
47
  parseSort,
48
48
  requireAdmin,
49
49
  validateAndParse
50
- } from "../chunk-7JWIX5BS.js";
50
+ } from "../chunk-WMJ5M45N.js";
51
51
  import {
52
52
  getAllowedOrigins,
53
53
  getCorsConfig,
@@ -57,7 +57,7 @@ import {
57
57
  withCORS,
58
58
  withPublicCORS,
59
59
  withRestrictedCORS
60
- } from "../chunk-TO5CMMQC.js";
60
+ } from "../chunk-2VMTIYLX.js";
61
61
  import {
62
62
  boolFormatter,
63
63
  createCsvHeader,
@@ -80,9 +80,9 @@ import {
80
80
  throwUnauthorizedError,
81
81
  throwValidationError,
82
82
  withErrorHandling
83
- } from "../chunk-E54MAI4I.js";
84
- import "../chunk-KXXROUA5.js";
85
- import "../chunk-SNVGJPPX.js";
83
+ } from "../chunk-2F6KNGOD.js";
84
+ import "../chunk-EOEMOXNT.js";
85
+ import "../chunk-SNTLJ646.js";
86
86
  import "../chunk-GFWGLWTS.js";
87
87
  import "../chunk-GQVBWZLH.js";
88
88
  import "../chunk-OHBAELPZ.js";
@@ -14,11 +14,11 @@
14
14
  * @example
15
15
  * ```typescript
16
16
  * await withOptimisticLock(
17
- * () => prisma.link.updateMany({
18
- * where: { id: linkId, version: currentVersion },
19
- * data: { title: newTitle, version: { increment: 1 } },
17
+ * () => prisma.entity.updateMany({
18
+ * where: { id, version: currentVersion },
19
+ * data: { name: newName, version: { increment: 1 } },
20
20
  * }),
21
- * 'Link'
21
+ * 'Entity'
22
22
  * );
23
23
  * ```
24
24
  */
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppError
3
- } from "../chunk-KXXROUA5.js";
4
- import "../chunk-SNVGJPPX.js";
3
+ } from "../chunk-EOEMOXNT.js";
4
+ import "../chunk-SNTLJ646.js";
5
5
  import "../chunk-ORMEWXMH.js";
6
6
 
7
7
  // src/utils/optimistic-lock.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@withwiz/toolkit",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
4
4
  "description": "Shared utility library for withwiz projects",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -1,35 +0,0 @@
1
- /**
2
- * Legacy Cache Keys
3
- *
4
- * @deprecated CacheKeys (<your-project>/config/cache-keys.ts)를 사용하세요.
5
- *
6
- * 캐시 키 생성 헬퍼 함수들 (레거시 호환성 유지)
7
- */
8
- /**
9
- * @deprecated CacheKeys (<your-project>/config/cache-keys.ts)를 사용하세요.
10
- * 이 객체는 레거시 호환성을 위해 유지됩니다.
11
- */
12
- export declare const cacheKeys: {
13
- geographyStats: (linkId: string) => string;
14
- timelineStats: (linkId: string) => string;
15
- deviceStats: (linkId: string) => string;
16
- browserStats: (linkId: string) => string;
17
- osStats: (linkId: string) => string;
18
- adminCountryStats: () => string;
19
- adminCityStats: () => string;
20
- adminDailyStats: () => string;
21
- adminDeviceStats: () => string;
22
- adminBrowserStats: () => string;
23
- userLinks: (userId: string) => string;
24
- userStats: (userId: string) => string;
25
- linkInfo: (linkId: string) => string;
26
- linkClicks: (linkId: string) => string;
27
- geoLocation: (ipAddress: string) => string;
28
- community: {
29
- popularTags: (period: string, limit: number) => string;
30
- tagLinks: (tagId: string, page: number, pageSize: number, sortBy: string, period: string) => string;
31
- recentLinks: (page: number, pageSize: number) => string;
32
- trendingLinks: (period: string, algorithm: string, limit: number) => string;
33
- searchLinks: (query: string, tagIds: string, sortBy: string, page: number, pageSize: number) => string;
34
- };
35
- };
@@ -1,7 +0,0 @@
1
- import {
2
- cacheKeys
3
- } from "../chunk-JBCDEAMW.js";
4
- import "../chunk-ORMEWXMH.js";
5
- export {
6
- cacheKeys
7
- };
@@ -1,35 +0,0 @@
1
- // src/cache/cache-keys-legacy.ts
2
- var cacheKeys = {
3
- // 분석 데이터 캐시 키
4
- geographyStats: (linkId) => `geography:${linkId}`,
5
- timelineStats: (linkId) => `timeline:${linkId}`,
6
- deviceStats: (linkId) => `devices:${linkId}`,
7
- browserStats: (linkId) => `browsers:${linkId}`,
8
- osStats: (linkId) => `os:${linkId}`,
9
- // 관리자 통계 캐시 키
10
- adminCountryStats: () => "admin:stats:country",
11
- adminCityStats: () => "admin:stats:city",
12
- adminDailyStats: () => "admin:stats:daily",
13
- adminDeviceStats: () => "admin:stats:device",
14
- adminBrowserStats: () => "admin:stats:browser",
15
- // 사용자 데이터 캐시 키
16
- userLinks: (userId) => `user:links:${userId}`,
17
- userStats: (userId) => `user:stats:${userId}`,
18
- // 링크 데이터 캐시 키
19
- linkInfo: (linkId) => `link:info:${linkId}`,
20
- linkClicks: (linkId) => `link:clicks:${linkId}`,
21
- // GeoLocation 캐시 키
22
- geoLocation: (ipAddress) => `geo:${ipAddress}`,
23
- // 커뮤니티 캐시 키
24
- community: {
25
- popularTags: (period, limit) => `popular-tags:${period}:${limit}`,
26
- tagLinks: (tagId, page, pageSize, sortBy, period) => `tag-links:${tagId}:${page}:${pageSize}:${sortBy}:${period}`,
27
- recentLinks: (page, pageSize) => `recent-links:${page}:${pageSize}`,
28
- trendingLinks: (period, algorithm, limit) => `trending-links:${period}:${algorithm}:${limit}`,
29
- searchLinks: (query, tagIds, sortBy, page, pageSize) => `search:${query}:${tagIds}:${sortBy}:${page}:${pageSize}`
30
- }
31
- };
32
-
33
- export {
34
- cacheKeys
35
- };
@@ -1,84 +0,0 @@
1
- import {
2
- getENV,
3
- isCacheEnabled
4
- } from "./chunk-XI4MRH5P.js";
5
-
6
- // src/cache/cache-config.ts
7
- var getCacheConfig = {
8
- // Analytics 캐시 설정
9
- analytics: {
10
- enabled: () => getENV().CACHE.ANALYTICS.ENABLED && isCacheEnabled(),
11
- duration: () => getENV().CACHE.ANALYTICS.DURATION
12
- },
13
- // User 캐시 설정
14
- user: {
15
- enabled: () => getENV().CACHE.USER.ENABLED && isCacheEnabled(),
16
- duration: () => getENV().CACHE.USER.DURATION
17
- },
18
- // GeoIP 캐시 설정
19
- geoip: {
20
- enabled: () => getENV().CACHE.GEOIP.ENABLED && isCacheEnabled(),
21
- duration: () => getENV().CACHE.GEOIP.DURATION
22
- },
23
- // Settings 캐시 설정
24
- settings: {
25
- enabled: () => getENV().CACHE.SETTINGS.ENABLED && isCacheEnabled(),
26
- duration: () => getENV().CACHE.SETTINGS.DURATION
27
- },
28
- // Reserved Words 캐시 설정
29
- reservedWords: {
30
- enabled: () => getENV().CACHE.RESERVED_WORDS.ENABLED && isCacheEnabled(),
31
- duration: () => getENV().CACHE.RESERVED_WORDS.DURATION
32
- },
33
- // Alias 캐시 설정
34
- alias: {
35
- enabled: () => getENV().CACHE.ALIAS.ENABLED && isCacheEnabled(),
36
- duration: () => getENV().CACHE.ALIAS.DURATION
37
- },
38
- // Community 캐시 설정
39
- community: {
40
- enabled: () => getENV().CACHE.COMMUNITY.ENABLED && isCacheEnabled(),
41
- duration: () => getENV().CACHE.COMMUNITY.DURATION
42
- },
43
- // Link 캐시 설정
44
- link: {
45
- enabled: () => getENV().CACHE.LINK.ENABLED && isCacheEnabled(),
46
- duration: () => getENV().CACHE.LINK.DURATION
47
- },
48
- // Rate Limiter 캐시 설정
49
- rateLimit: {
50
- enabled: () => getENV().CACHE.RATE_LIMIT.ENABLED && isCacheEnabled(),
51
- duration: () => getENV().CACHE.RATE_LIMIT.DURATION
52
- },
53
- // URL Shortener Token 캐시 설정
54
- urlToken: {
55
- enabled: () => getENV().CACHE.URL_TOKEN.ENABLED && isCacheEnabled(),
56
- duration: () => getENV().CACHE.URL_TOKEN.DURATION
57
- },
58
- // API Key 캐시 설정
59
- apiKey: {
60
- enabled: () => getENV().CACHE.API_KEY.ENABLED && isCacheEnabled(),
61
- duration: () => getENV().CACHE.API_KEY.DURATION
62
- },
63
- // API Config 캐시 설정
64
- apiConfig: {
65
- enabled: () => getENV().CACHE.API_CONFIG.ENABLED && isCacheEnabled(),
66
- duration: () => getENV().CACHE.API_CONFIG.DURATION
67
- }
68
- };
69
- var getCacheTTL = {
70
- settings: () => getCacheConfig.settings.duration(),
71
- reservedWords: () => getCacheConfig.reservedWords.duration(),
72
- alias: () => getCacheConfig.alias.duration(),
73
- user: () => getCacheConfig.user.duration(),
74
- analytics: () => getCacheConfig.analytics.duration(),
75
- geoip: () => getCacheConfig.geoip.duration(),
76
- community: () => getCacheConfig.community.duration(),
77
- link: () => getCacheConfig.link.duration(),
78
- default: () => getCacheConfig.analytics.duration()
79
- };
80
-
81
- export {
82
- getCacheConfig,
83
- getCacheTTL
84
- };
File without changes
@@ -1,3 +1,6 @@
1
+ import {
2
+ DataTableBody
3
+ } from "./chunk-7IY3RQQL.js";
1
4
  import {
2
5
  DataTableBulkActions
3
6
  } from "./chunk-MAATEX2R.js";
@@ -13,9 +16,6 @@ import {
13
16
  import {
14
17
  DEFAULT_LABELS
15
18
  } from "./chunk-NY5QXT33.js";
16
- import {
17
- DataTableBody
18
- } from "./chunk-7IY3RQQL.js";
19
19
  import {
20
20
  Alert,
21
21
  AlertDescription