@withwiz/toolkit 0.3.0 → 0.3.2

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 (110) hide show
  1. package/dist/auth/config.d.ts +3 -0
  2. package/dist/auth/config.js +1 -1
  3. package/dist/auth/core/jwt/index.js +1 -1
  4. package/dist/auth/index.js +1 -1
  5. package/dist/cache/cache-config.js +5 -5
  6. package/dist/cache/cache-env.js +4 -4
  7. package/dist/cache/cache-factory.js +14 -14
  8. package/dist/cache/cache-invalidation.js +14 -14
  9. package/dist/cache/cache-redis.js +7 -7
  10. package/dist/cache/cache-wrapper.js +14 -14
  11. package/dist/cache/cache.js +25 -25
  12. package/dist/cache/config.d.ts +3 -0
  13. package/dist/cache/config.js +2 -2
  14. package/dist/cache/hybrid-cache-manager.js +9 -9
  15. package/dist/cache/index.js +25 -25
  16. package/dist/cache/inmemory-cache-manager.js +4 -4
  17. package/dist/cache/noop-cache-manager.js +6 -6
  18. package/dist/cache/redis-cache-manager.js +8 -8
  19. package/dist/{chunk-HKJCBV3H.js → chunk-2KDLKHTO.js} +6 -6
  20. package/dist/{chunk-V33BEN6H.js → chunk-3CBGGMIY.js} +15 -7
  21. package/dist/{chunk-ZFFWKCHN.js → chunk-4HBAPPB2.js} +2 -2
  22. package/dist/{chunk-M776IH4D.js → chunk-6MI4XLWC.js} +3 -3
  23. package/dist/{chunk-BY653UR3.js → chunk-6SOQUYOU.js} +2 -2
  24. package/dist/{chunk-3GKJ763I.js → chunk-7IN4WRSO.js} +12 -12
  25. package/dist/{chunk-5P4E6SGV.js → chunk-A6V6XVPZ.js} +6 -6
  26. package/dist/{chunk-PU2LFTI5.js → chunk-AXCB7SKY.js} +2 -2
  27. package/dist/{chunk-YCIYDWJU.js → chunk-AYZJN32D.js} +15 -7
  28. package/dist/{chunk-DC2OFQ43.js → chunk-BKJPYZYO.js} +16 -13
  29. package/dist/{chunk-KAIGEZAL.js → chunk-BYCFXGQL.js} +3 -3
  30. package/dist/{chunk-AWFY2HWG.js → chunk-CUZPD3BF.js} +2 -2
  31. package/dist/{chunk-CZHFHEBG.js → chunk-E54MAI4I.js} +5 -5
  32. package/dist/{chunk-GRGOD3W5.js → chunk-FD2TXDTO.js} +2 -2
  33. package/dist/{chunk-FGA7VLYK.js → chunk-FDRIFPG6.js} +2 -2
  34. package/dist/{chunk-L6M4DZV2.js → chunk-FPESPW6P.js} +1 -1
  35. package/dist/{chunk-Q7NIAITA.js → chunk-G5OMETUS.js} +1 -1
  36. package/dist/{chunk-JNB7MWG4.js → chunk-GFWGLWTS.js} +15 -7
  37. package/dist/{chunk-SNNXLA5F.js → chunk-GQVBWZLH.js} +2 -2
  38. package/dist/{chunk-MVH5ZPFD.js → chunk-HHCDMWEF.js} +1 -1
  39. package/dist/{chunk-XZ4HMXSK.js → chunk-J4TTSXDN.js} +3 -3
  40. package/dist/{chunk-576PAKLR.js → chunk-JOM3N4EJ.js} +1 -1
  41. package/dist/{chunk-FIRLRKET.js → chunk-K3HAYBWX.js} +1 -1
  42. package/dist/{chunk-NE33JZW3.js → chunk-KGHWGLED.js} +4 -4
  43. package/dist/{chunk-4CSSGCW5.js → chunk-KZUBO2IL.js} +3 -3
  44. package/dist/{chunk-ZBU2DYLD.js → chunk-LFQ3IQQB.js} +2 -2
  45. package/dist/{chunk-SR65BF6X.js → chunk-N54KGJPU.js} +9 -1
  46. package/dist/{chunk-NWAN2VRP.js → chunk-NQS7UT6X.js} +9 -9
  47. package/dist/{chunk-C3WPAWID.js → chunk-O7CK3CKJ.js} +1 -1
  48. package/dist/{chunk-RLXRDUBX.js → chunk-OHBAELPZ.js} +15 -7
  49. package/dist/{chunk-STNIT65W.js → chunk-OIRAH57Y.js} +1 -1
  50. package/dist/{chunk-ITSXXSFN.js → chunk-OZE5KUS3.js} +15 -7
  51. package/dist/{chunk-UD7YHLHI.js → chunk-QVWDWROP.js} +1 -1
  52. package/dist/{chunk-2ATBAIRL.js → chunk-R6YVUU6I.js} +1 -1
  53. package/dist/{chunk-BJWG3LH5.js → chunk-RWVGJUON.js} +6 -6
  54. package/dist/{chunk-JGGGHEBC.js → chunk-S5UCZ2T3.js} +1 -1
  55. package/dist/{chunk-5MBKG2ZD.js → chunk-SFPMFVSD.js} +14 -6
  56. package/dist/{chunk-6VNEAK73.js → chunk-SV7X6HEN.js} +4 -4
  57. package/dist/{chunk-JTPLPUI7.js → chunk-TFD3DSM2.js} +18 -10
  58. package/dist/{chunk-USL5SQLZ.js → chunk-TO5CMMQC.js} +2 -2
  59. package/dist/{chunk-FO77EZCU.js → chunk-VF4EVAMV.js} +1 -1
  60. package/dist/{chunk-2LCLLZME.js → chunk-WNF2RKFA.js} +7 -7
  61. package/dist/{chunk-X2QSMX3B.js → chunk-XI4MRH5P.js} +4 -4
  62. package/dist/config/common.d.ts +3 -0
  63. package/dist/config/common.js +1 -1
  64. package/dist/error/error-handler.js +6 -6
  65. package/dist/error/index.js +7 -7
  66. package/dist/geolocation/batch-processor.js +4 -4
  67. package/dist/geolocation/config.d.ts +3 -0
  68. package/dist/geolocation/config.js +1 -1
  69. package/dist/geolocation/index.js +8 -8
  70. package/dist/geolocation/providers/index.js +4 -4
  71. package/dist/geolocation/providers/ipgeolocation-provider.js +2 -2
  72. package/dist/geolocation/providers/maxmind-provider.js +2 -2
  73. package/dist/initialize.js +11 -11
  74. package/dist/logger/config.d.ts +3 -0
  75. package/dist/logger/config.js +1 -1
  76. package/dist/logger/logger.js +3 -3
  77. package/dist/middleware/auth.js +8 -8
  78. package/dist/middleware/cors-config.d.ts +3 -0
  79. package/dist/middleware/cors-config.js +1 -1
  80. package/dist/middleware/cors.js +5 -5
  81. package/dist/middleware/error-handler.js +7 -7
  82. package/dist/middleware/index.js +19 -19
  83. package/dist/middleware/middleware-chain.js +4 -4
  84. package/dist/middleware/rate-limit.js +5 -5
  85. package/dist/middleware/response-logger.js +4 -4
  86. package/dist/middleware/security.js +4 -4
  87. package/dist/middleware/wrappers.js +17 -17
  88. package/dist/storage/config.d.ts +3 -0
  89. package/dist/storage/config.js +1 -1
  90. package/dist/storage/r2-storage.js +2 -2
  91. package/dist/system/cpu.js +5 -5
  92. package/dist/system/disk.js +5 -5
  93. package/dist/system/environment.js +9 -9
  94. package/dist/system/health-check.js +7 -7
  95. package/dist/system/index.js +14 -14
  96. package/dist/system/memory.js +5 -5
  97. package/dist/system/network.js +5 -5
  98. package/dist/system/utils.js +4 -4
  99. package/dist/utils/cors.js +3 -3
  100. package/dist/utils/csv-export.js +4 -4
  101. package/dist/utils/error-processor.js +5 -5
  102. package/dist/utils/index.js +16 -16
  103. package/dist/utils/ip-utils.d.ts +9 -6
  104. package/dist/utils/ip-utils.js +3 -6
  105. package/dist/utils/sanitizer.d.ts +5 -4
  106. package/dist/utils/sanitizer.js +1 -1
  107. package/dist/utils/short-code-generator.d.ts +2 -1
  108. package/dist/utils/short-code-generator.js +3 -1
  109. package/dist/utils/url-normalizer.js +22 -1
  110. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MiddlewareChain
3
- } from "../chunk-L6M4DZV2.js";
4
- import "../chunk-SNNXLA5F.js";
5
- import "../chunk-RLXRDUBX.js";
6
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-FPESPW6P.js";
4
+ import "../chunk-GQVBWZLH.js";
5
+ import "../chunk-OHBAELPZ.js";
6
+ import "../chunk-SFPMFVSD.js";
7
7
  import "../chunk-K25ICPU4.js";
8
8
  import "../chunk-2QH66EVQ.js";
9
9
  import "../chunk-ORMEWXMH.js";
@@ -2,14 +2,14 @@ import {
2
2
  createRateLimitMiddleware,
3
3
  rateLimitMiddleware,
4
4
  setRateLimitAdapter
5
- } from "../chunk-M776IH4D.js";
5
+ } from "../chunk-6MI4XLWC.js";
6
6
  import "../chunk-KXXROUA5.js";
7
- import "../chunk-SNNXLA5F.js";
8
- import "../chunk-RLXRDUBX.js";
9
- import "../chunk-5MBKG2ZD.js";
7
+ import "../chunk-SNVGJPPX.js";
8
+ import "../chunk-GQVBWZLH.js";
9
+ import "../chunk-OHBAELPZ.js";
10
+ import "../chunk-SFPMFVSD.js";
10
11
  import "../chunk-K25ICPU4.js";
11
12
  import "../chunk-2QH66EVQ.js";
12
- import "../chunk-SNVGJPPX.js";
13
13
  import "../chunk-ORMEWXMH.js";
14
14
  export {
15
15
  createRateLimitMiddleware,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  responseLoggerMiddleware
3
- } from "../chunk-STNIT65W.js";
4
- import "../chunk-SNNXLA5F.js";
5
- import "../chunk-RLXRDUBX.js";
6
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-OIRAH57Y.js";
4
+ import "../chunk-GQVBWZLH.js";
5
+ import "../chunk-OHBAELPZ.js";
6
+ import "../chunk-SFPMFVSD.js";
7
7
  import "../chunk-K25ICPU4.js";
8
8
  import "../chunk-2QH66EVQ.js";
9
9
  import "../chunk-ORMEWXMH.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  securityMiddleware,
3
3
  validateSecurityConfiguration
4
- } from "../chunk-UD7YHLHI.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-RLXRDUBX.js";
7
- import "../chunk-5MBKG2ZD.js";
4
+ } from "../chunk-QVWDWROP.js";
5
+ import "../chunk-GQVBWZLH.js";
6
+ import "../chunk-OHBAELPZ.js";
7
+ import "../chunk-SFPMFVSD.js";
8
8
  import "../chunk-K25ICPU4.js";
9
9
  import "../chunk-2QH66EVQ.js";
10
10
  import "../chunk-ORMEWXMH.js";
@@ -4,31 +4,31 @@ import {
4
4
  withCustomApi,
5
5
  withOptionalAuthApi,
6
6
  withPublicApi
7
- } from "../chunk-NWAN2VRP.js";
8
- import "../chunk-DC2OFQ43.js";
7
+ } from "../chunk-NQS7UT6X.js";
9
8
  import "../chunk-62Q7DN5G.js";
10
- import "../chunk-L6M4DZV2.js";
11
- import "../chunk-M776IH4D.js";
12
- import "../chunk-STNIT65W.js";
13
- import "../chunk-UD7YHLHI.js";
14
- import "../chunk-5P4E6SGV.js";
15
- import "../chunk-NE33JZW3.js";
9
+ import "../chunk-FPESPW6P.js";
10
+ import "../chunk-6MI4XLWC.js";
11
+ import "../chunk-OIRAH57Y.js";
12
+ import "../chunk-QVWDWROP.js";
13
+ import "../chunk-A6V6XVPZ.js";
14
+ import "../chunk-KGHWGLED.js";
15
+ import "../chunk-BKJPYZYO.js";
16
16
  import "../chunk-XHZ5L4FO.js";
17
- import "../chunk-HKJCBV3H.js";
17
+ import "../chunk-2KDLKHTO.js";
18
18
  import "../chunk-KXXROUA5.js";
19
19
  import "../chunk-Y2JYA2AR.js";
20
20
  import "../chunk-HCF3C3AQ.js";
21
21
  import "../chunk-IYXMGIEP.js";
22
- import "../chunk-SNNXLA5F.js";
23
- import "../chunk-JNB7MWG4.js";
24
- import "../chunk-RLXRDUBX.js";
25
- import "../chunk-5MBKG2ZD.js";
26
- import "../chunk-ITSXXSFN.js";
22
+ import "../chunk-SNVGJPPX.js";
23
+ import "../chunk-GFWGLWTS.js";
24
+ import "../chunk-OZE5KUS3.js";
25
+ import "../chunk-R6YVUU6I.js";
26
+ import "../chunk-AIH3F7JV.js";
27
+ import "../chunk-GQVBWZLH.js";
28
+ import "../chunk-OHBAELPZ.js";
29
+ import "../chunk-SFPMFVSD.js";
27
30
  import "../chunk-K25ICPU4.js";
28
31
  import "../chunk-2QH66EVQ.js";
29
- import "../chunk-2ATBAIRL.js";
30
- import "../chunk-AIH3F7JV.js";
31
- import "../chunk-SNVGJPPX.js";
32
32
  import "../chunk-ORMEWXMH.js";
33
33
  export {
34
34
  withAdminApi,
@@ -12,6 +12,9 @@ export interface ResolvedStorageConfig {
12
12
  bucketName: string;
13
13
  publicUrl?: string;
14
14
  }
15
+ declare global {
16
+ var __withwiz_storage_config: ResolvedStorageConfig | undefined;
17
+ }
15
18
  export declare function initializeStorage(config: StorageConfig): void;
16
19
  export declare function getStorageConfig(): ResolvedStorageConfig;
17
20
  export declare function resetStorage(): void;
@@ -2,7 +2,7 @@ import {
2
2
  getStorageConfig,
3
3
  initializeStorage,
4
4
  resetStorage
5
- } from "../chunk-YCIYDWJU.js";
5
+ } from "../chunk-AYZJN32D.js";
6
6
  import "../chunk-K25ICPU4.js";
7
7
  import "../chunk-2QH66EVQ.js";
8
8
  import "../chunk-ORMEWXMH.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  AppError
3
3
  } from "../chunk-KXXROUA5.js";
4
+ import "../chunk-SNVGJPPX.js";
4
5
  import {
5
6
  getStorageConfig
6
- } from "../chunk-YCIYDWJU.js";
7
+ } from "../chunk-AYZJN32D.js";
7
8
  import "../chunk-K25ICPU4.js";
8
9
  import "../chunk-2QH66EVQ.js";
9
- import "../chunk-SNVGJPPX.js";
10
10
  import "../chunk-ORMEWXMH.js";
11
11
 
12
12
  // src/storage/r2-storage.ts
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getCpuInfo
3
- } from "../chunk-GRGOD3W5.js";
4
- import "../chunk-JGGGHEBC.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-RLXRDUBX.js";
7
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-FD2TXDTO.js";
4
+ import "../chunk-S5UCZ2T3.js";
5
+ import "../chunk-GQVBWZLH.js";
6
+ import "../chunk-OHBAELPZ.js";
7
+ import "../chunk-SFPMFVSD.js";
8
8
  import "../chunk-K25ICPU4.js";
9
9
  import "../chunk-2QH66EVQ.js";
10
10
  import "../chunk-ORMEWXMH.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getDiskInfo
3
- } from "../chunk-BY653UR3.js";
4
- import "../chunk-JGGGHEBC.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-RLXRDUBX.js";
7
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-6SOQUYOU.js";
4
+ import "../chunk-S5UCZ2T3.js";
5
+ import "../chunk-GQVBWZLH.js";
6
+ import "../chunk-OHBAELPZ.js";
7
+ import "../chunk-SFPMFVSD.js";
8
8
  import "../chunk-K25ICPU4.js";
9
9
  import "../chunk-2QH66EVQ.js";
10
10
  import "../chunk-ORMEWXMH.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  checkEnvironmentVariables
3
- } from "../chunk-2LCLLZME.js";
4
- import "../chunk-JGGGHEBC.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-V33BEN6H.js";
7
- import "../chunk-RLXRDUBX.js";
8
- import "../chunk-JTPLPUI7.js";
9
- import "../chunk-5MBKG2ZD.js";
10
- import "../chunk-IQQKKUAV.js";
11
- import "../chunk-ITSXXSFN.js";
3
+ } from "../chunk-WNF2RKFA.js";
4
+ import "../chunk-S5UCZ2T3.js";
5
+ import "../chunk-3CBGGMIY.js";
6
+ import "../chunk-OZE5KUS3.js";
7
+ import "../chunk-GQVBWZLH.js";
8
+ import "../chunk-OHBAELPZ.js";
9
+ import "../chunk-SFPMFVSD.js";
10
+ import "../chunk-TFD3DSM2.js";
12
11
  import "../chunk-K25ICPU4.js";
13
12
  import "../chunk-2QH66EVQ.js";
13
+ import "../chunk-IQQKKUAV.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-KAIGEZAL.js";
3
+ } from "../chunk-BYCFXGQL.js";
4
4
  import "../chunk-OIVXOT2X.js";
5
- import "../chunk-JGGGHEBC.js";
6
- import "../chunk-SNNXLA5F.js";
7
- import "../chunk-RLXRDUBX.js";
8
- import "../chunk-JTPLPUI7.js";
9
- import "../chunk-5MBKG2ZD.js";
10
- import "../chunk-IQQKKUAV.js";
5
+ import "../chunk-S5UCZ2T3.js";
6
+ import "../chunk-GQVBWZLH.js";
7
+ import "../chunk-OHBAELPZ.js";
8
+ import "../chunk-SFPMFVSD.js";
9
+ import "../chunk-TFD3DSM2.js";
11
10
  import "../chunk-K25ICPU4.js";
12
11
  import "../chunk-2QH66EVQ.js";
12
+ import "../chunk-IQQKKUAV.js";
13
13
  import "../chunk-ORMEWXMH.js";
14
14
  export {
15
15
  checkServiceHealth
@@ -1,37 +1,37 @@
1
1
  import {
2
2
  getCpuInfo
3
- } from "../chunk-GRGOD3W5.js";
3
+ } from "../chunk-FD2TXDTO.js";
4
4
  import {
5
5
  getDiskInfo
6
- } from "../chunk-BY653UR3.js";
6
+ } from "../chunk-6SOQUYOU.js";
7
7
  import {
8
8
  checkEnvironmentVariables
9
- } from "../chunk-2LCLLZME.js";
9
+ } from "../chunk-WNF2RKFA.js";
10
10
  import {
11
11
  checkServiceHealth
12
- } from "../chunk-KAIGEZAL.js";
12
+ } from "../chunk-BYCFXGQL.js";
13
13
  import "../chunk-OIVXOT2X.js";
14
14
  import {
15
15
  getMemoryInfo
16
- } from "../chunk-ZBU2DYLD.js";
16
+ } from "../chunk-LFQ3IQQB.js";
17
17
  import {
18
18
  getNetworkInfo
19
- } from "../chunk-ZFFWKCHN.js";
19
+ } from "../chunk-4HBAPPB2.js";
20
20
  import {
21
21
  getPlatform,
22
22
  getRecommendedCommands
23
- } from "../chunk-JGGGHEBC.js";
23
+ } from "../chunk-S5UCZ2T3.js";
24
+ import "../chunk-3CBGGMIY.js";
25
+ import "../chunk-OZE5KUS3.js";
24
26
  import {
25
27
  logger
26
- } from "../chunk-SNNXLA5F.js";
27
- import "../chunk-V33BEN6H.js";
28
- import "../chunk-RLXRDUBX.js";
29
- import "../chunk-JTPLPUI7.js";
30
- import "../chunk-5MBKG2ZD.js";
31
- import "../chunk-IQQKKUAV.js";
32
- import "../chunk-ITSXXSFN.js";
28
+ } from "../chunk-GQVBWZLH.js";
29
+ import "../chunk-OHBAELPZ.js";
30
+ import "../chunk-SFPMFVSD.js";
31
+ import "../chunk-TFD3DSM2.js";
33
32
  import "../chunk-K25ICPU4.js";
34
33
  import "../chunk-2QH66EVQ.js";
34
+ import "../chunk-IQQKKUAV.js";
35
35
  import "../chunk-ORMEWXMH.js";
36
36
 
37
37
  // src/system/index.ts
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getMemoryInfo
3
- } from "../chunk-ZBU2DYLD.js";
4
- import "../chunk-JGGGHEBC.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-RLXRDUBX.js";
7
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-LFQ3IQQB.js";
4
+ import "../chunk-S5UCZ2T3.js";
5
+ import "../chunk-GQVBWZLH.js";
6
+ import "../chunk-OHBAELPZ.js";
7
+ import "../chunk-SFPMFVSD.js";
8
8
  import "../chunk-K25ICPU4.js";
9
9
  import "../chunk-2QH66EVQ.js";
10
10
  import "../chunk-ORMEWXMH.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getNetworkInfo
3
- } from "../chunk-ZFFWKCHN.js";
4
- import "../chunk-JGGGHEBC.js";
5
- import "../chunk-SNNXLA5F.js";
6
- import "../chunk-RLXRDUBX.js";
7
- import "../chunk-5MBKG2ZD.js";
3
+ } from "../chunk-4HBAPPB2.js";
4
+ import "../chunk-S5UCZ2T3.js";
5
+ import "../chunk-GQVBWZLH.js";
6
+ import "../chunk-OHBAELPZ.js";
7
+ import "../chunk-SFPMFVSD.js";
8
8
  import "../chunk-K25ICPU4.js";
9
9
  import "../chunk-2QH66EVQ.js";
10
10
  import "../chunk-ORMEWXMH.js";
@@ -9,10 +9,10 @@ import {
9
9
  runMacCommand,
10
10
  runPlatformCommand,
11
11
  runSafeCommand
12
- } from "../chunk-JGGGHEBC.js";
13
- import "../chunk-SNNXLA5F.js";
14
- import "../chunk-RLXRDUBX.js";
15
- import "../chunk-5MBKG2ZD.js";
12
+ } from "../chunk-S5UCZ2T3.js";
13
+ import "../chunk-GQVBWZLH.js";
14
+ import "../chunk-OHBAELPZ.js";
15
+ import "../chunk-SFPMFVSD.js";
16
16
  import "../chunk-K25ICPU4.js";
17
17
  import "../chunk-2QH66EVQ.js";
18
18
  import "../chunk-ORMEWXMH.js";
@@ -7,9 +7,9 @@ import {
7
7
  withCORS,
8
8
  withPublicCORS,
9
9
  withRestrictedCORS
10
- } from "../chunk-USL5SQLZ.js";
11
- import "../chunk-JNB7MWG4.js";
12
- import "../chunk-5MBKG2ZD.js";
10
+ } from "../chunk-TO5CMMQC.js";
11
+ import "../chunk-GFWGLWTS.js";
12
+ import "../chunk-SFPMFVSD.js";
13
13
  import "../chunk-K25ICPU4.js";
14
14
  import "../chunk-2QH66EVQ.js";
15
15
  import "../chunk-ORMEWXMH.js";
@@ -6,10 +6,10 @@ import {
6
6
  dateFormatter,
7
7
  escapeCsvField,
8
8
  rowToCsv
9
- } from "../chunk-FIRLRKET.js";
10
- import "../chunk-SNNXLA5F.js";
11
- import "../chunk-RLXRDUBX.js";
12
- import "../chunk-5MBKG2ZD.js";
9
+ } from "../chunk-K3HAYBWX.js";
10
+ import "../chunk-GQVBWZLH.js";
11
+ import "../chunk-OHBAELPZ.js";
12
+ import "../chunk-SFPMFVSD.js";
13
13
  import "../chunk-K25ICPU4.js";
14
14
  import "../chunk-2QH66EVQ.js";
15
15
  import "../chunk-ORMEWXMH.js";
@@ -12,14 +12,14 @@ import {
12
12
  throwUnauthorizedError,
13
13
  throwValidationError,
14
14
  withErrorHandling
15
- } from "../chunk-CZHFHEBG.js";
15
+ } from "../chunk-E54MAI4I.js";
16
16
  import "../chunk-KXXROUA5.js";
17
- import "../chunk-SNNXLA5F.js";
18
- import "../chunk-RLXRDUBX.js";
19
- import "../chunk-5MBKG2ZD.js";
17
+ import "../chunk-SNVGJPPX.js";
18
+ import "../chunk-GQVBWZLH.js";
19
+ import "../chunk-OHBAELPZ.js";
20
+ import "../chunk-SFPMFVSD.js";
20
21
  import "../chunk-K25ICPU4.js";
21
22
  import "../chunk-2QH66EVQ.js";
22
- import "../chunk-SNVGJPPX.js";
23
23
  import "../chunk-ORMEWXMH.js";
24
24
  export {
25
25
  ErrorProcessor,
@@ -1,3 +1,11 @@
1
+ import {
2
+ removeEventHandlers,
3
+ sanitizeArray,
4
+ sanitizeHtml,
5
+ sanitizeInput,
6
+ sanitizeObjectFields,
7
+ sanitizeUrl
8
+ } from "../chunk-N54KGJPU.js";
1
9
  import {
2
10
  isApiErrorResponse,
3
11
  isApiSuccessResponse,
@@ -26,14 +34,6 @@ import {
26
34
  isValidJSON,
27
35
  isValidUrl
28
36
  } from "../chunk-EUQATJLI.js";
29
- import {
30
- removeEventHandlers,
31
- sanitizeArray,
32
- sanitizeHtml,
33
- sanitizeInput,
34
- sanitizeObjectFields,
35
- sanitizeUrl
36
- } from "../chunk-SR65BF6X.js";
37
37
  import {
38
38
  createPaginatedResponse,
39
39
  getReferer,
@@ -57,7 +57,7 @@ import {
57
57
  withCORS,
58
58
  withPublicCORS,
59
59
  withRestrictedCORS
60
- } from "../chunk-USL5SQLZ.js";
60
+ } from "../chunk-TO5CMMQC.js";
61
61
  import {
62
62
  boolFormatter,
63
63
  createCsvHeader,
@@ -66,7 +66,7 @@ import {
66
66
  dateFormatter,
67
67
  escapeCsvField,
68
68
  rowToCsv
69
- } from "../chunk-FIRLRKET.js";
69
+ } from "../chunk-K3HAYBWX.js";
70
70
  import {
71
71
  ErrorProcessor,
72
72
  errorToResponse,
@@ -80,15 +80,15 @@ import {
80
80
  throwUnauthorizedError,
81
81
  throwValidationError,
82
82
  withErrorHandling
83
- } from "../chunk-CZHFHEBG.js";
83
+ } from "../chunk-E54MAI4I.js";
84
84
  import "../chunk-KXXROUA5.js";
85
- import "../chunk-SNNXLA5F.js";
86
- import "../chunk-JNB7MWG4.js";
87
- import "../chunk-RLXRDUBX.js";
88
- import "../chunk-5MBKG2ZD.js";
85
+ import "../chunk-SNVGJPPX.js";
86
+ import "../chunk-GFWGLWTS.js";
87
+ import "../chunk-GQVBWZLH.js";
88
+ import "../chunk-OHBAELPZ.js";
89
+ import "../chunk-SFPMFVSD.js";
89
90
  import "../chunk-K25ICPU4.js";
90
91
  import "../chunk-2QH66EVQ.js";
91
- import "../chunk-SNVGJPPX.js";
92
92
  import "../chunk-ORMEWXMH.js";
93
93
  export {
94
94
  ErrorProcessor,
@@ -4,12 +4,15 @@ export declare function normalizeIP(ip: string): string;
4
4
  /**
5
5
  * 클라이언트 IP 주소 추출 (서버에서만 사용)
6
6
  *
7
- * Cloudflare 환경 최적화:
8
- * 1. CF-Connecting-IP: Cloudflare가 설정하는 실제 클라이언트 IP (가장 신뢰)
9
- * 2. True-Client-IP: Cloudflare Enterprise에서 사용
10
- * 3. X-Real-IP: Nginx 신뢰할 있는 리버스 프록시
11
- * 4. X-Forwarded-For: 첫 번째 IP가 실제 클라이언트 (Cloudflare가 추가)
12
- * 5. X-Client-IP: 일부 프록시에서 사용
7
+ * 신뢰 가능한 프록시 헤더만 사용:
8
+ * 1. CF-Connecting-IP: Cloudflare Proxy강제 설정 (스푸핑 불가)
9
+ * 2. True-Client-IP: Cloudflare Enterprise에서 설정
10
+ * 3. X-Forwarded-For: 마지막 IP = 직전 프록시가 추가한 실제 클라이언트 IP
11
+ *
12
+ * 보안 참고:
13
+ * - X-Real-IP, X-Client-IP 등 클라이언트가 임의 설정 가능한 헤더는 사용하지 않음
14
+ * - X-Forwarded-For의 첫 번째 IP는 클라이언트가 조작 가능하므로 마지막 IP를 사용
15
+ * - Cloudflare Proxy 환경에서는 CF-Connecting-IP가 항상 설정되므로 폴백에 도달하지 않음
13
16
  */
14
17
  export declare function extractClientIp(headers: Headers): string | null;
15
18
  export declare function isValidIP(ip: string): boolean;
@@ -54,17 +54,14 @@ function extractClientIp(headers) {
54
54
  if (cf && isValidIP(cf.trim())) return cf.trim();
55
55
  const trueClientIp = headers.get("true-client-ip");
56
56
  if (trueClientIp && isValidIP(trueClientIp.trim())) return trueClientIp.trim();
57
- const xri = headers.get("x-real-ip");
58
- if (xri && isValidIP(xri.trim())) return xri.trim();
59
57
  const xff = headers.get("x-forwarded-for");
60
58
  if (xff) {
61
59
  const ips = xff.split(",").map((ip) => ip.trim()).filter(Boolean);
62
- if (ips.length > 0 && isValidIP(ips[0])) {
63
- return ips[0];
60
+ const lastIp = ips[ips.length - 1];
61
+ if (lastIp && isValidIP(lastIp)) {
62
+ return lastIp;
64
63
  }
65
64
  }
66
- const xc = headers.get("x-client-ip");
67
- if (xc && isValidIP(xc.trim())) return xc.trim();
68
65
  return null;
69
66
  }
70
67
  function isValidIP(ip) {
@@ -8,15 +8,16 @@
8
8
  */
9
9
  /**
10
10
  * XSS 방지를 위한 HTML 태그 제거
11
- * - 모든 HTML 태그 제거
12
- * - 이스케이프된 HTML 엔티티 처리
11
+ * - 모든 HTML 태그 제거 (named + numeric 엔티티로 인코딩된 태그 포함)
12
+ * - 닫는 >가 없는 불완전 태그 제거 (HTML5 파서 우회 방지)
13
+ * - HTML 엔티티를 디코딩하여 원본 텍스트 반환
13
14
  * - 공백 정리
14
15
  *
15
16
  * @param input - 정제할 문자열
16
- * @returns 정제된 문자열
17
+ * @returns 태그가 제거된 순수 텍스트 (React 등 텍스트 컨텍스트에서 사용)
17
18
  *
18
19
  * @example
19
- * sanitizeHtml('<script>alert("xss")</script>Hello') // 'Hello'
20
+ * sanitizeHtml('<script>alert("xss")</script>Hello') // 'alert("xss")Hello'
20
21
  * sanitizeHtml('Hello <b>World</b>') // 'Hello World'
21
22
  */
22
23
  export declare function sanitizeHtml(input: string): string;
@@ -6,7 +6,7 @@ import {
6
6
  sanitizeObjectFields,
7
7
  sanitizeUrl,
8
8
  sanitizer_default
9
- } from "../chunk-SR65BF6X.js";
9
+ } from "../chunk-N54KGJPU.js";
10
10
  import "../chunk-ORMEWXMH.js";
11
11
  export {
12
12
  sanitizer_default as default,
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * 단축 코드 생성 전용 유틸리티
3
- * 순수 함수로 구현하여 외부 의존성 없음
3
+ * 암호학적으로 안전한 난수 생성기(CSPRNG) 사용
4
4
  */
5
5
  /**
6
6
  * 기본 단축 코드 생성 함수
7
+ * crypto.randomBytes를 사용하여 예측 불가능한 코드 생성
7
8
  * @param length - 생성할 코드 길이 (기본값: 8)
8
9
  * @returns 생성된 단축 코드
9
10
  */
@@ -1,14 +1,16 @@
1
1
  import "../chunk-ORMEWXMH.js";
2
2
 
3
3
  // src/utils/short-code-generator.ts
4
+ import { randomBytes } from "crypto";
4
5
  function generateShortCode(length = 8) {
5
6
  if (!Number.isInteger(length) || length <= 0) {
6
7
  throw new Error("length must be a positive integer");
7
8
  }
8
9
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
10
+ const bytes = randomBytes(length);
9
11
  let result = "";
10
12
  for (let i = 0; i < length; i++) {
11
- result += chars.charAt(Math.floor(Math.random() * chars.length));
13
+ result += chars.charAt(bytes[i] % chars.length);
12
14
  }
13
15
  return result;
14
16
  }
@@ -39,11 +39,21 @@ var SUPPORTED_SCHEMES = [
39
39
  "maps:",
40
40
  "geo:"
41
41
  ];
42
+ var DANGEROUS_SCHEMES = [
43
+ "javascript:",
44
+ "vbscript:",
45
+ "data:",
46
+ "file:",
47
+ "blob:"
48
+ ];
42
49
  var CUSTOM_SCHEME_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
43
50
  function hasValidScheme(url) {
44
51
  try {
45
52
  const urlObj = new URL(url);
46
- const protocol = urlObj.protocol;
53
+ const protocol = urlObj.protocol.toLowerCase();
54
+ if (DANGEROUS_SCHEMES.includes(protocol)) {
55
+ return false;
56
+ }
47
57
  if (SUPPORTED_SCHEMES.includes(protocol)) {
48
58
  return true;
49
59
  }
@@ -69,6 +79,9 @@ function normalizeUrl(url) {
69
79
  }
70
80
  const scheme = extractScheme(normalized);
71
81
  if (scheme) {
82
+ if (DANGEROUS_SCHEMES.includes(scheme.toLowerCase() + ":")) {
83
+ return "";
84
+ }
72
85
  return normalized;
73
86
  }
74
87
  if (normalized.startsWith("//")) {
@@ -88,6 +101,14 @@ function validateUrl(url, options) {
88
101
  try {
89
102
  const urlObj = new URL(normalized);
90
103
  const protocol = urlObj.protocol;
104
+ if (DANGEROUS_SCHEMES.includes(protocol.toLowerCase())) {
105
+ return {
106
+ isValid: false,
107
+ message: `\uBCF4\uC548\uC0C1 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uB294 \uD504\uB85C\uD1A0\uCF5C\uC785\uB2C8\uB2E4: ${protocol}`,
108
+ messageKey: "unsupportedProtocol",
109
+ messageParams: { protocol }
110
+ };
111
+ }
91
112
  const isSupported = SUPPORTED_SCHEMES.includes(protocol);
92
113
  const isCustom = CUSTOM_SCHEME_PATTERN.test(normalized);
93
114
  if (!isSupported && !isCustom) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@withwiz/toolkit",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Shared utility library for withwiz projects",
5
5
  "license": "MIT",
6
6
  "private": false,