@withwiz/toolkit 0.1.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.
Files changed (380) hide show
  1. package/README.md +162 -0
  2. package/dist/auth/adapters/prisma/index.d.ts +43 -0
  3. package/dist/auth/adapters/prisma/index.js +284 -0
  4. package/dist/auth/core/email/token-generator.d.ts +43 -0
  5. package/dist/auth/core/email/token-generator.js +7 -0
  6. package/dist/auth/core/jwt/client.d.ts +87 -0
  7. package/dist/auth/core/jwt/client.js +36 -0
  8. package/dist/auth/core/jwt/index.d.ts +110 -0
  9. package/dist/auth/core/jwt/index.js +10 -0
  10. package/dist/auth/core/jwt/types.d.ts +6 -0
  11. package/dist/auth/core/jwt/types.js +13 -0
  12. package/dist/auth/core/oauth/index.d.ts +51 -0
  13. package/dist/auth/core/oauth/index.js +12 -0
  14. package/dist/auth/core/password/client-helper.d.ts +44 -0
  15. package/dist/auth/core/password/client-helper.js +28 -0
  16. package/dist/auth/core/password/index.d.ts +71 -0
  17. package/dist/auth/core/password/index.js +14 -0
  18. package/dist/auth/errors/index.d.ts +49 -0
  19. package/dist/auth/errors/index.js +17 -0
  20. package/dist/auth/index.d.ts +21 -0
  21. package/dist/auth/index.js +97 -0
  22. package/dist/auth/types/index.d.ts +213 -0
  23. package/dist/auth/types/index.js +13 -0
  24. package/dist/cache/cache-config.d.ts +73 -0
  25. package/dist/cache/cache-config.js +12 -0
  26. package/dist/cache/cache-defaults.d.ts +141 -0
  27. package/dist/cache/cache-defaults.js +33 -0
  28. package/dist/cache/cache-env.d.ts +75 -0
  29. package/dist/cache/cache-env.js +25 -0
  30. package/dist/cache/cache-factory.d.ts +34 -0
  31. package/dist/cache/cache-factory.js +28 -0
  32. package/dist/cache/cache-invalidation.d.ts +90 -0
  33. package/dist/cache/cache-invalidation.js +24 -0
  34. package/dist/cache/cache-keys-legacy.d.ts +35 -0
  35. package/dist/cache/cache-keys-legacy.js +7 -0
  36. package/dist/cache/cache-redis.d.ts +74 -0
  37. package/dist/cache/cache-redis.js +24 -0
  38. package/dist/cache/cache-types.d.ts +151 -0
  39. package/dist/cache/cache-types.js +9 -0
  40. package/dist/cache/cache-wrapper.d.ts +27 -0
  41. package/dist/cache/cache-wrapper.js +22 -0
  42. package/dist/cache/cache.d.ts +14 -0
  43. package/dist/cache/cache.js +112 -0
  44. package/dist/cache/hybrid-cache-manager.d.ts +148 -0
  45. package/dist/cache/hybrid-cache-manager.js +13 -0
  46. package/dist/cache/index.d.ts +21 -0
  47. package/dist/cache/index.js +112 -0
  48. package/dist/cache/inmemory-cache-manager.d.ts +163 -0
  49. package/dist/cache/inmemory-cache-manager.js +9 -0
  50. package/dist/cache/noop-cache-manager.d.ts +36 -0
  51. package/dist/cache/noop-cache-manager.js +11 -0
  52. package/dist/cache/redis-cache-manager.d.ts +34 -0
  53. package/dist/cache/redis-cache-manager.js +11 -0
  54. package/dist/chunk-26Y7VEYG.js +93 -0
  55. package/dist/chunk-2DVWSDST.js +119 -0
  56. package/dist/chunk-2KAPUVIS.js +155 -0
  57. package/dist/chunk-2TO7WUKK.js +93 -0
  58. package/dist/chunk-34WAGUT5.js +117 -0
  59. package/dist/chunk-3DZA6AGS.js +120 -0
  60. package/dist/chunk-4DPSCTX4.js +212 -0
  61. package/dist/chunk-4KJXENRM.js +64 -0
  62. package/dist/chunk-4NWJ3WCZ.js +28 -0
  63. package/dist/chunk-4ODT3Q4A.js +86 -0
  64. package/dist/chunk-5ATB5D6S.js +40 -0
  65. package/dist/chunk-62FLBG6B.js +34 -0
  66. package/dist/chunk-62Q7DN5G.js +25 -0
  67. package/dist/chunk-65LHDFU3.js +242 -0
  68. package/dist/chunk-6C7HQIX4.js +13 -0
  69. package/dist/chunk-6D3HHYER.js +32 -0
  70. package/dist/chunk-6LTZCXNC.js +326 -0
  71. package/dist/chunk-7VJNLGAS.js +110 -0
  72. package/dist/chunk-7XFHGAJP.js +0 -0
  73. package/dist/chunk-A6EAAWMK.js +50 -0
  74. package/dist/chunk-AHDPGRXS.js +51 -0
  75. package/dist/chunk-AIH3F7JV.js +76 -0
  76. package/dist/chunk-AIHQBQ3E.js +109 -0
  77. package/dist/chunk-BKGVSC6S.js +152 -0
  78. package/dist/chunk-COK4ZXNG.js +0 -0
  79. package/dist/chunk-DEEJBDJE.js +47 -0
  80. package/dist/chunk-DH2ZHGW2.js +53 -0
  81. package/dist/chunk-EBUEBEJX.js +0 -0
  82. package/dist/chunk-EEUBKZV4.js +54 -0
  83. package/dist/chunk-EQYTE7WD.js +139 -0
  84. package/dist/chunk-EUQATJLI.js +180 -0
  85. package/dist/chunk-EZC6ETFW.js +80 -0
  86. package/dist/chunk-EZR55KV2.js +249 -0
  87. package/dist/chunk-F6LCSFSU.js +31 -0
  88. package/dist/chunk-FOKAATUQ.js +62 -0
  89. package/dist/chunk-FW3IEJ7H.js +71 -0
  90. package/dist/chunk-G26T2PRQ.js +53 -0
  91. package/dist/chunk-G4NI37NN.js +257 -0
  92. package/dist/chunk-GCZOXUDV.js +132 -0
  93. package/dist/chunk-GDWEDUHO.js +55 -0
  94. package/dist/chunk-GL2NANFH.js +434 -0
  95. package/dist/chunk-GPBOMJSZ.js +136 -0
  96. package/dist/chunk-H5I5GWAA.js +94 -0
  97. package/dist/chunk-HGC4CCKB.js +29 -0
  98. package/dist/chunk-HV3DGSSH.js +447 -0
  99. package/dist/chunk-I47QEDTX.js +193 -0
  100. package/dist/chunk-IAJNC34M.js +102 -0
  101. package/dist/chunk-IHXRF3BH.js +215 -0
  102. package/dist/chunk-IJEZ7G7S.js +26 -0
  103. package/dist/chunk-IQQKKUAV.js +151 -0
  104. package/dist/chunk-JBCDEAMW.js +35 -0
  105. package/dist/chunk-JLLMTTQ4.js +75 -0
  106. package/dist/chunk-JS5VI3OW.js +143 -0
  107. package/dist/chunk-KAWVMIRJ.js +44 -0
  108. package/dist/chunk-KMCJIL57.js +214 -0
  109. package/dist/chunk-KWTBD4CM.js +145 -0
  110. package/dist/chunk-KXAWBFJN.js +310 -0
  111. package/dist/chunk-L25BNU3E.js +56 -0
  112. package/dist/chunk-L76O3X3D.js +197 -0
  113. package/dist/chunk-LNV2E4I6.js +63 -0
  114. package/dist/chunk-MLGO3HLS.js +329 -0
  115. package/dist/chunk-MRJE6OX5.js +22 -0
  116. package/dist/chunk-MYLGYX4K.js +57 -0
  117. package/dist/chunk-N4YGR5WH.js +310 -0
  118. package/dist/chunk-OIVXOT2X.js +80 -0
  119. package/dist/chunk-ORMEWXMH.js +37 -0
  120. package/dist/chunk-POKGHK3L.js +57 -0
  121. package/dist/chunk-Q7IP4JMW.js +69 -0
  122. package/dist/chunk-RJUVBBZG.js +27 -0
  123. package/dist/chunk-S73334QY.js +89 -0
  124. package/dist/chunk-SLG26KHZ.js +101 -0
  125. package/dist/chunk-SR65BF6X.js +82 -0
  126. package/dist/chunk-SS56XFLI.js +19 -0
  127. package/dist/chunk-T3LJYAMO.js +277 -0
  128. package/dist/chunk-TDZJ6SAI.js +34 -0
  129. package/dist/chunk-TEIYA7U4.js +72 -0
  130. package/dist/chunk-TMVS4F7E.js +88 -0
  131. package/dist/chunk-TRBKJ7JT.js +137 -0
  132. package/dist/chunk-TXGNSECL.js +84 -0
  133. package/dist/chunk-TZAP5T4N.js +188 -0
  134. package/dist/chunk-UCYQNHST.js +24 -0
  135. package/dist/chunk-ULF5RDDX.js +0 -0
  136. package/dist/chunk-UXQRU3EM.js +167 -0
  137. package/dist/chunk-V5K5FYU7.js +200 -0
  138. package/dist/chunk-VDXB5DCY.js +68 -0
  139. package/dist/chunk-VSGKVZB4.js +47 -0
  140. package/dist/chunk-VWODEQ5C.js +204 -0
  141. package/dist/chunk-WDUFQFDP.js +193 -0
  142. package/dist/chunk-WHR7HPWF.js +126 -0
  143. package/dist/chunk-WSQMXMTL.js +122 -0
  144. package/dist/chunk-XHZ5L4FO.js +103 -0
  145. package/dist/chunk-XPASCCUA.js +404 -0
  146. package/dist/chunk-XRRPEBKB.js +231 -0
  147. package/dist/chunk-Y2TUZFCP.js +0 -0
  148. package/dist/chunk-Y3OTJH2S.js +473 -0
  149. package/dist/chunk-YBSHN67U.js +161 -0
  150. package/dist/chunk-YJ3TLEW3.js +100 -0
  151. package/dist/chunk-YJWLWUFK.js +105 -0
  152. package/dist/chunk-Z4D4CMDA.js +488 -0
  153. package/dist/chunk-ZHVUK5OY.js +314 -0
  154. package/dist/chunk-ZTN4X5FN.js +29 -0
  155. package/dist/chunk-ZZIKRBJU.js +96 -0
  156. package/dist/components/ui/Alert.d.ts +12 -0
  157. package/dist/components/ui/Alert.js +10 -0
  158. package/dist/components/ui/Badge.d.ts +7 -0
  159. package/dist/components/ui/Badge.js +8 -0
  160. package/dist/components/ui/Button.d.ts +7 -0
  161. package/dist/components/ui/Button.js +8 -0
  162. package/dist/components/ui/DataTable.d.ts +103 -0
  163. package/dist/components/ui/DataTable.js +606 -0
  164. package/dist/components/ui/DomainDisplay.d.ts +12 -0
  165. package/dist/components/ui/DomainDisplay.js +31 -0
  166. package/dist/components/ui/Input.d.ts +5 -0
  167. package/dist/components/ui/Input.js +8 -0
  168. package/dist/components/ui/Label.d.ts +5 -0
  169. package/dist/components/ui/Label.js +8 -0
  170. package/dist/components/ui/Pagination.d.ts +42 -0
  171. package/dist/components/ui/Pagination.js +20 -0
  172. package/dist/components/ui/Select.d.ts +15 -0
  173. package/dist/components/ui/Select.js +27 -0
  174. package/dist/components/ui/Skeleton.d.ts +6 -0
  175. package/dist/components/ui/Skeleton.js +8 -0
  176. package/dist/components/ui/TimezoneDisplay.d.ts +22 -0
  177. package/dist/components/ui/TimezoneDisplay.js +83 -0
  178. package/dist/components/ui/Tooltip.d.ts +21 -0
  179. package/dist/components/ui/Tooltip.js +94 -0
  180. package/dist/components/ui/WorldMapChart.d.ts +17 -0
  181. package/dist/components/ui/WorldMapChart.js +250 -0
  182. package/dist/components/ui/loading-bar.d.ts +20 -0
  183. package/dist/components/ui/loading-bar.js +15 -0
  184. package/dist/constants/error-codes.d.ts +389 -0
  185. package/dist/constants/error-codes.js +27 -0
  186. package/dist/constants/index.d.ts +11 -0
  187. package/dist/constants/index.js +85 -0
  188. package/dist/constants/messages.d.ts +83 -0
  189. package/dist/constants/messages.js +13 -0
  190. package/dist/constants/pagination.d.ts +43 -0
  191. package/dist/constants/pagination.js +15 -0
  192. package/dist/constants/security.d.ts +66 -0
  193. package/dist/constants/security.js +23 -0
  194. package/dist/constants/validation.d.ts +60 -0
  195. package/dist/constants/validation.js +19 -0
  196. package/dist/error/ErrorBoundary.d.ts +47 -0
  197. package/dist/error/app-error.d.ts +144 -0
  198. package/dist/error/app-error.js +10 -0
  199. package/dist/error/components/EmptyState.d.ts +50 -0
  200. package/dist/error/components/ErrorAlert.d.ts +50 -0
  201. package/dist/error/components/ErrorPage.d.ts +39 -0
  202. package/dist/error/components/LoadingState.d.ts +37 -0
  203. package/dist/error/components/index.d.ts +13 -0
  204. package/dist/error/components/index.js +18 -0
  205. package/dist/error/core/locale-detector.d.ts +44 -0
  206. package/dist/error/core/locale-detector.js +9 -0
  207. package/dist/error/error-display.d.ts +55 -0
  208. package/dist/error/error-display.js +24 -0
  209. package/dist/error/error-handler.d.ts +118 -0
  210. package/dist/error/error-handler.js +18 -0
  211. package/dist/error/friendly-messages-v2.d.ts +46 -0
  212. package/dist/error/friendly-messages-v2.js +15 -0
  213. package/dist/error/friendly-messages.d.ts +22 -0
  214. package/dist/error/friendly-messages.js +12 -0
  215. package/dist/error/hooks/index.d.ts +7 -0
  216. package/dist/error/hooks/index.js +14 -0
  217. package/dist/error/hooks/useErrorHandler.d.ts +67 -0
  218. package/dist/error/hooks/useErrorHandler.js +14 -0
  219. package/dist/error/index.d.ts +26 -0
  220. package/dist/error/index.js +289 -0
  221. package/dist/error/logging/error-logger.d.ts +77 -0
  222. package/dist/error/logging/error-logger.js +10 -0
  223. package/dist/error/logging/index.d.ts +9 -0
  224. package/dist/error/logging/index.js +35 -0
  225. package/dist/error/logging/transports/base.d.ts +30 -0
  226. package/dist/error/logging/transports/base.js +7 -0
  227. package/dist/error/logging/transports/console.d.ts +40 -0
  228. package/dist/error/logging/transports/console.js +9 -0
  229. package/dist/error/logging/transports/file.d.ts +49 -0
  230. package/dist/error/logging/transports/file.js +8 -0
  231. package/dist/error/logging/transports/index.d.ts +12 -0
  232. package/dist/error/logging/transports/index.js +25 -0
  233. package/dist/error/logging/transports/sentry.d.ts +44 -0
  234. package/dist/error/logging/transports/sentry.js +9 -0
  235. package/dist/error/logging/transports/slack.d.ts +51 -0
  236. package/dist/error/logging/transports/slack.js +9 -0
  237. package/dist/error/logging/types.d.ts +83 -0
  238. package/dist/error/logging/types.js +7 -0
  239. package/dist/error/messages/en.d.ts +5 -0
  240. package/dist/error/messages/en.js +7 -0
  241. package/dist/error/messages/index.d.ts +40 -0
  242. package/dist/error/messages/index.js +17 -0
  243. package/dist/error/messages/ko.d.ts +5 -0
  244. package/dist/error/messages/ko.js +7 -0
  245. package/dist/error/messages/types.d.ts +30 -0
  246. package/dist/error/messages/types.js +0 -0
  247. package/dist/error/recovery/circuit-breaker.d.ts +85 -0
  248. package/dist/error/recovery/circuit-breaker.js +9 -0
  249. package/dist/error/recovery/degradation.d.ts +56 -0
  250. package/dist/error/recovery/degradation.js +7 -0
  251. package/dist/error/recovery/fallback.d.ts +55 -0
  252. package/dist/error/recovery/fallback.js +11 -0
  253. package/dist/error/recovery/index.d.ts +12 -0
  254. package/dist/error/recovery/index.js +26 -0
  255. package/dist/error/recovery/retry.d.ts +44 -0
  256. package/dist/error/recovery/retry.js +7 -0
  257. package/dist/geolocation/batch-processor.d.ts +33 -0
  258. package/dist/geolocation/batch-processor.js +10 -0
  259. package/dist/geolocation/index.d.ts +14 -0
  260. package/dist/geolocation/index.js +36 -0
  261. package/dist/geolocation/providers/base-provider.d.ts +33 -0
  262. package/dist/geolocation/providers/base-provider.js +9 -0
  263. package/dist/geolocation/providers/index.d.ts +54 -0
  264. package/dist/geolocation/providers/index.js +29 -0
  265. package/dist/geolocation/providers/ip-api-provider.d.ts +17 -0
  266. package/dist/geolocation/providers/ip-api-provider.js +8 -0
  267. package/dist/geolocation/providers/ipapi-co-provider.d.ts +17 -0
  268. package/dist/geolocation/providers/ipapi-co-provider.js +8 -0
  269. package/dist/geolocation/providers/ipgeolocation-provider.d.ts +18 -0
  270. package/dist/geolocation/providers/ipgeolocation-provider.js +8 -0
  271. package/dist/geolocation/providers/maxmind-provider.d.ts +18 -0
  272. package/dist/geolocation/providers/maxmind-provider.js +8 -0
  273. package/dist/hooks/useDataTable.d.ts +51 -0
  274. package/dist/hooks/useDataTable.js +149 -0
  275. package/dist/hooks/useDebounce.d.ts +7 -0
  276. package/dist/hooks/useDebounce.js +7 -0
  277. package/dist/hooks/useExitIntent.d.ts +35 -0
  278. package/dist/hooks/useExitIntent.js +72 -0
  279. package/dist/hooks/useTimezone.d.ts +19 -0
  280. package/dist/hooks/useTimezone.js +11 -0
  281. package/dist/logger/logger.d.ts +11 -0
  282. package/dist/logger/logger.js +17 -0
  283. package/dist/middleware/auth.d.ts +87 -0
  284. package/dist/middleware/auth.js +20 -0
  285. package/dist/middleware/cors.d.ts +30 -0
  286. package/dist/middleware/cors.js +10 -0
  287. package/dist/middleware/error-handler.d.ts +23 -0
  288. package/dist/middleware/error-handler.js +13 -0
  289. package/dist/middleware/index.d.ts +16 -0
  290. package/dist/middleware/index.js +72 -0
  291. package/dist/middleware/init-request.d.ts +18 -0
  292. package/dist/middleware/init-request.js +8 -0
  293. package/dist/middleware/middleware-chain.d.ts +53 -0
  294. package/dist/middleware/middleware-chain.js +8 -0
  295. package/dist/middleware/rate-limit.d.ts +82 -0
  296. package/dist/middleware/rate-limit.js +14 -0
  297. package/dist/middleware/response-logger.d.ts +22 -0
  298. package/dist/middleware/response-logger.js +8 -0
  299. package/dist/middleware/security.d.ts +31 -0
  300. package/dist/middleware/security.js +9 -0
  301. package/dist/middleware/types.d.ts +45 -0
  302. package/dist/middleware/types.js +0 -0
  303. package/dist/middleware/wrappers.d.ts +91 -0
  304. package/dist/middleware/wrappers.js +32 -0
  305. package/dist/storage/r2-storage.d.ts +38 -0
  306. package/dist/storage/r2-storage.js +105 -0
  307. package/dist/system/cpu.d.ts +2 -0
  308. package/dist/system/cpu.js +9 -0
  309. package/dist/system/disk.d.ts +2 -0
  310. package/dist/system/disk.js +9 -0
  311. package/dist/system/environment.d.ts +8 -0
  312. package/dist/system/environment.js +9 -0
  313. package/dist/system/health-check.d.ts +26 -0
  314. package/dist/system/health-check.js +10 -0
  315. package/dist/system/index.d.ts +51 -0
  316. package/dist/system/index.js +194 -0
  317. package/dist/system/memory.d.ts +2 -0
  318. package/dist/system/memory.js +9 -0
  319. package/dist/system/network.d.ts +2 -0
  320. package/dist/system/network.js +9 -0
  321. package/dist/system/types.d.ts +93 -0
  322. package/dist/system/types.js +0 -0
  323. package/dist/system/utils.d.ts +12 -0
  324. package/dist/system/utils.js +26 -0
  325. package/dist/types/api.d.ts +80 -0
  326. package/dist/types/api.js +0 -0
  327. package/dist/types/database.d.ts +38 -0
  328. package/dist/types/database.js +0 -0
  329. package/dist/types/env.d.ts +105 -0
  330. package/dist/types/env.js +0 -0
  331. package/dist/types/geoip.d.ts +152 -0
  332. package/dist/types/geoip.js +0 -0
  333. package/dist/types/i18n.d.ts +11 -0
  334. package/dist/types/i18n.js +0 -0
  335. package/dist/types/qr-code.d.ts +139 -0
  336. package/dist/types/qr-code.js +75 -0
  337. package/dist/types/user.d.ts +54 -0
  338. package/dist/types/user.js +0 -0
  339. package/dist/utils/api-helpers.d.ts +147 -0
  340. package/dist/utils/api-helpers.js +30 -0
  341. package/dist/utils/client/client-utils.d.ts +3 -0
  342. package/dist/utils/client/client-utils.js +9 -0
  343. package/dist/utils/client/qr-code.d.ts +16 -0
  344. package/dist/utils/client/qr-code.js +215 -0
  345. package/dist/utils/cors.d.ts +40 -0
  346. package/dist/utils/cors.js +21 -0
  347. package/dist/utils/csv-export.d.ts +97 -0
  348. package/dist/utils/csv-export.js +20 -0
  349. package/dist/utils/error-message-formatter.d.ts +17 -0
  350. package/dist/utils/error-message-formatter.js +11 -0
  351. package/dist/utils/error-processor.d.ts +70 -0
  352. package/dist/utils/error-processor.js +34 -0
  353. package/dist/utils/format-number.d.ts +17 -0
  354. package/dist/utils/format-number.js +9 -0
  355. package/dist/utils/index.d.ts +13 -0
  356. package/dist/utils/index.js +160 -0
  357. package/dist/utils/input-validation.d.ts +88 -0
  358. package/dist/utils/input-validation.js +223 -0
  359. package/dist/utils/ip-utils.d.ts +15 -0
  360. package/dist/utils/ip-utils.js +91 -0
  361. package/dist/utils/optimistic-lock.d.ts +27 -0
  362. package/dist/utils/optimistic-lock.js +16 -0
  363. package/dist/utils/sanitizer.d.ts +72 -0
  364. package/dist/utils/sanitizer.js +19 -0
  365. package/dist/utils/shared-utils.d.ts +25 -0
  366. package/dist/utils/shared-utils.js +43 -0
  367. package/dist/utils/short-code-generator.d.ts +24 -0
  368. package/dist/utils/short-code-generator.js +9 -0
  369. package/dist/utils/timezone.d.ts +56 -0
  370. package/dist/utils/timezone.js +29 -0
  371. package/dist/utils/type-guards.d.ts +164 -0
  372. package/dist/utils/type-guards.js +59 -0
  373. package/dist/utils/url-normalizer.d.ts +53 -0
  374. package/dist/utils/url-normalizer.js +21 -0
  375. package/dist/validators/index.d.ts +7 -0
  376. package/dist/validators/index.js +13 -0
  377. package/dist/validators/password-validator.d.ts +86 -0
  378. package/dist/validators/password-validator.js +13 -0
  379. package/dist/world_countries-C2WUL2CQ.js +279 -0
  380. package/package.json +129 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * 보안 관련 상수
3
+ * 프레임워크 독립적인 보안 설정
4
+ */
5
+ export declare const JWT_DEFAULTS: {
6
+ /** 알고리즘 */
7
+ readonly ALGORITHM: "HS256";
8
+ /** 기본 액세스 토큰 만료 기간 */
9
+ readonly DEFAULT_ACCESS_TOKEN_EXPIRES: "7d";
10
+ /** 기본 리프레시 토큰 만료 기간 */
11
+ readonly DEFAULT_REFRESH_TOKEN_EXPIRES: "30d";
12
+ /** 토큰 타입 */
13
+ readonly TOKEN_TYPE: "Bearer";
14
+ };
15
+ export declare const EMAIL_VERIFICATION: {
16
+ /** 토큰 만료 시간 (시간 단위) */
17
+ readonly TOKEN_EXPIRES_HOURS: 24;
18
+ /** 토큰 길이 (바이트) */
19
+ readonly TOKEN_LENGTH: 32;
20
+ };
21
+ export declare const PASSWORD_RESET: {
22
+ /** 토큰 만료 시간 (시간 단위) */
23
+ readonly TOKEN_EXPIRES_HOURS: 1;
24
+ /** 토큰 길이 (바이트) */
25
+ readonly TOKEN_LENGTH: 32;
26
+ };
27
+ export declare const MAGIC_LINK: {
28
+ /** 토큰 만료 시간 (분 단위) */
29
+ readonly TOKEN_EXPIRES_MINUTES: 15;
30
+ /** 토큰 길이 (바이트) */
31
+ readonly TOKEN_LENGTH: 32;
32
+ };
33
+ export declare const API_KEY: {
34
+ /** 키 길이 (문자) */
35
+ readonly LENGTH: 32;
36
+ /** 키 접두사 */
37
+ readonly PREFIX: "tlog_";
38
+ };
39
+ export declare const SESSION: {
40
+ /** 세션 쿠키 이름 */
41
+ readonly COOKIE_NAME: "session";
42
+ /** 세션 만료 시간 (일 단위) */
43
+ readonly EXPIRES_DAYS: 30;
44
+ };
45
+ export declare const OAUTH: {
46
+ /** 상태 토큰 길이 */
47
+ readonly STATE_LENGTH: 32;
48
+ /** 상태 토큰 만료 시간 (분) */
49
+ readonly STATE_EXPIRES_MINUTES: 10;
50
+ };
51
+ export declare const CSRF: {
52
+ /** 토큰 길이 */
53
+ readonly TOKEN_LENGTH: 32;
54
+ /** 헤더 이름 */
55
+ readonly HEADER_NAME: "X-CSRF-Token";
56
+ };
57
+ export declare const SECURITY_HEADERS: {
58
+ /** Content Security Policy */
59
+ readonly CSP: "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';";
60
+ /** X-Frame-Options */
61
+ readonly X_FRAME_OPTIONS: "DENY";
62
+ /** X-Content-Type-Options */
63
+ readonly X_CONTENT_TYPE_OPTIONS: "nosniff";
64
+ /** Referrer-Policy */
65
+ readonly REFERRER_POLICY: "strict-origin-when-cross-origin";
66
+ };
@@ -0,0 +1,23 @@
1
+ import {
2
+ API_KEY,
3
+ CSRF,
4
+ EMAIL_VERIFICATION,
5
+ JWT_DEFAULTS,
6
+ MAGIC_LINK,
7
+ OAUTH,
8
+ PASSWORD_RESET,
9
+ SECURITY_HEADERS,
10
+ SESSION
11
+ } from "../chunk-JLLMTTQ4.js";
12
+ import "../chunk-ORMEWXMH.js";
13
+ export {
14
+ API_KEY,
15
+ CSRF,
16
+ EMAIL_VERIFICATION,
17
+ JWT_DEFAULTS,
18
+ MAGIC_LINK,
19
+ OAUTH,
20
+ PASSWORD_RESET,
21
+ SECURITY_HEADERS,
22
+ SESSION
23
+ };
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 데이터 검증 관련 상수 (범용 유틸리티)
3
+ *
4
+ * 이 파일은 프로젝트 독립적인 범용 검증 상수들만 포함합니다.
5
+ * URL shortener 비즈니스 로직 관련 상수는 <your-project>/constants/ 에 위치합니다.
6
+ *
7
+ * @see <your-project>/constants/alias.ts - Alias, Link, ShortCode 관련 상수
8
+ */
9
+ export declare const PASSWORD: {
10
+ /** 최소 길이 */
11
+ readonly MIN_LENGTH: 8;
12
+ /** 최대 길이 */
13
+ readonly MAX_LENGTH: 128;
14
+ };
15
+ export declare const USER_INPUT: {
16
+ /** 이메일 최대 길이 */
17
+ readonly EMAIL_MAX_LENGTH: 255;
18
+ /** 이름 최대 길이 */
19
+ readonly NAME_MAX_LENGTH: 100;
20
+ /** 사용자명 최대 길이 */
21
+ readonly USERNAME_MAX_LENGTH: 30;
22
+ /** 검색어 최대 길이 */
23
+ readonly SEARCH_MAX_LENGTH: 100;
24
+ };
25
+ export declare const URL: {
26
+ /** URL 최대 길이 */
27
+ readonly MAX_LENGTH: 2048;
28
+ /** URL 최소 길이 */
29
+ readonly MIN_LENGTH: 3;
30
+ };
31
+ export declare const TEXT: {
32
+ /** 제목 최대 길이 */
33
+ readonly TITLE_MAX_LENGTH: 200;
34
+ /** 설명 최대 길이 */
35
+ readonly DESCRIPTION_MAX_LENGTH: 1000;
36
+ /** 메모 최대 길이 */
37
+ readonly NOTE_MAX_LENGTH: 500;
38
+ };
39
+ export declare const NUMERIC: {
40
+ /** 양수만 허용 (최소값) */
41
+ readonly POSITIVE_MIN: 1;
42
+ /** 백분율 최대값 */
43
+ readonly PERCENTAGE_MAX: 100;
44
+ /** 정수 최대값 */
45
+ readonly MAX_INT: 2147483647;
46
+ };
47
+ export declare const DATE: {
48
+ /** 최대 미래 날짜 (년 단위) */
49
+ readonly MAX_FUTURE_YEARS: 10;
50
+ /** 최대 과거 날짜 (년 단위) */
51
+ readonly MAX_PAST_YEARS: 100;
52
+ };
53
+ export declare const FILE_UPLOAD: {
54
+ /** 최대 파일 크기 (바이트) - 5MB */
55
+ readonly MAX_SIZE: number;
56
+ /** 허용되는 이미지 확장자 */
57
+ readonly ALLOWED_IMAGE_EXTENSIONS: readonly ["jpg", "jpeg", "png", "gif", "webp"];
58
+ /** 허용되는 문서 확장자 */
59
+ readonly ALLOWED_DOC_EXTENSIONS: readonly ["pdf", "doc", "docx", "txt"];
60
+ };
@@ -0,0 +1,19 @@
1
+ import {
2
+ DATE,
3
+ FILE_UPLOAD,
4
+ NUMERIC,
5
+ PASSWORD,
6
+ TEXT,
7
+ URL,
8
+ USER_INPUT
9
+ } from "../chunk-LNV2E4I6.js";
10
+ import "../chunk-ORMEWXMH.js";
11
+ export {
12
+ DATE,
13
+ FILE_UPLOAD,
14
+ NUMERIC,
15
+ PASSWORD,
16
+ TEXT,
17
+ URL,
18
+ USER_INPUT
19
+ };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 통합 에러 바운더리 컴포넌트
3
+ * React 에러 바운더리로 전역 에러를 캐치하고 친화적 UI 표시
4
+ */
5
+ import React, { Component, type ReactNode } from 'react';
6
+ interface IProps {
7
+ children: ReactNode;
8
+ fallback?: ReactNode;
9
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
10
+ showDetails?: boolean;
11
+ locale?: 'ko' | 'en';
12
+ }
13
+ interface IState {
14
+ hasError: boolean;
15
+ error: Error | null;
16
+ errorCode: number;
17
+ }
18
+ /**
19
+ * 전역 에러 바운더리
20
+ */
21
+ export declare class ErrorBoundary extends Component<IProps, IState> {
22
+ constructor(props: IProps);
23
+ static getDerivedStateFromError(error: Error): IState;
24
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
25
+ handleReset: () => void;
26
+ handleRefresh: () => void;
27
+ render(): ReactNode;
28
+ }
29
+ /**
30
+ * 에러 카드 컴포넌트 (개별 섹션용)
31
+ */
32
+ export declare function ErrorCard({ code, message, locale, onRetry, className, }: {
33
+ code?: number;
34
+ message?: string;
35
+ locale?: 'ko' | 'en';
36
+ onRetry?: () => void;
37
+ className?: string;
38
+ }): React.ReactElement;
39
+ /**
40
+ * 인라인 에러 메시지 컴포넌트 (폼 필드용)
41
+ */
42
+ export declare function InlineError({ code, message, locale, }: {
43
+ code?: number;
44
+ message?: string;
45
+ locale?: 'ko' | 'en';
46
+ }): React.ReactElement | null;
47
+ export default ErrorBoundary;
@@ -0,0 +1,144 @@
1
+ /**
2
+ * AppError - 애플리케이션 통합 에러 클래스
3
+ *
4
+ * HTTP 상태 코드를 확장한 5자리 에러 코드 체계 (XXXYY)
5
+ * - XXX: HTTP 상태 코드
6
+ * - YY: 세부 순번
7
+ *
8
+ * 사용자 친화적 메시지 제공 (에러 코드는 별도 필드로 제공)
9
+ */
10
+ import { getErrorCategory } from "@withwiz/constants/error-codes";
11
+ import type { ErrorCodeKey, IErrorCodeInfo } from "@withwiz/constants/error-codes";
12
+ /**
13
+ * 에러 상세 정보 인터페이스
14
+ */
15
+ export interface IErrorDetails {
16
+ field?: string;
17
+ value?: unknown;
18
+ constraint?: string;
19
+ [key: string]: unknown;
20
+ }
21
+ /**
22
+ * 직렬화된 에러 형식
23
+ */
24
+ export interface ISerializedError {
25
+ code: number;
26
+ message: string;
27
+ status: number;
28
+ key: string;
29
+ category: ReturnType<typeof getErrorCategory>;
30
+ details?: IErrorDetails;
31
+ timestamp: string;
32
+ requestId?: string;
33
+ }
34
+ /**
35
+ * AppError - 통합 애플리케이션 에러
36
+ *
37
+ * @example
38
+ * // 에러 코드 키로 생성
39
+ * throw AppError.fromKey('NOT_FOUND', '링크를 찾을 수 없습니다');
40
+ *
41
+ * // 직접 생성
42
+ * throw new AppError(40403, '링크를 찾을 수 없습니다');
43
+ *
44
+ * // 팩토리 메서드 사용
45
+ * throw AppError.notFound('링크를 찾을 수 없습니다');
46
+ */
47
+ export declare class AppError extends Error {
48
+ readonly code: number;
49
+ readonly status: number;
50
+ readonly key: string;
51
+ readonly category: ReturnType<typeof getErrorCategory>;
52
+ readonly details?: IErrorDetails;
53
+ readonly timestamp: Date;
54
+ requestId?: string;
55
+ constructor(code: number, message?: string, details?: IErrorDetails, requestId?: string);
56
+ /**
57
+ * 에러 코드로 에러 키 찾기
58
+ */
59
+ private findErrorKey;
60
+ /**
61
+ * JSON 직렬화
62
+ */
63
+ toJSON(): ISerializedError;
64
+ /**
65
+ * 사용자 친화적 메시지 반환
66
+ */
67
+ toFriendlyMessage(): string;
68
+ /**
69
+ * 에러가 특정 카테고리인지 확인
70
+ */
71
+ isCategory(category: ReturnType<typeof getErrorCategory>): boolean;
72
+ /**
73
+ * 로깅용 문자열 반환
74
+ */
75
+ toLogString(): string;
76
+ /**
77
+ * 에러 코드 키로 에러 생성
78
+ */
79
+ static fromKey(key: ErrorCodeKey, customMessage?: string, details?: IErrorDetails): AppError;
80
+ /**
81
+ * 에러 정보로 에러 생성
82
+ */
83
+ static fromErrorInfo(errorInfo: IErrorCodeInfo, customMessage?: string, details?: IErrorDetails): AppError;
84
+ /**
85
+ * 알 수 없는 에러를 AppError로 변환
86
+ */
87
+ static from(error: unknown, fallbackMessage?: string): AppError;
88
+ static validation(message?: string, details?: IErrorDetails): AppError;
89
+ static badRequest(message?: string, details?: IErrorDetails): AppError;
90
+ static invalidInput(message?: string, details?: IErrorDetails): AppError;
91
+ static missingField(fieldName: string): AppError;
92
+ static invalidUrl(url?: string): AppError;
93
+ static invalidEmail(email?: string): AppError;
94
+ static weakPassword(): AppError;
95
+ static invalidAlias(alias?: string): AppError;
96
+ static unauthorized(message?: string): AppError;
97
+ static invalidToken(): AppError;
98
+ static tokenExpired(): AppError;
99
+ static invalidCredentials(): AppError;
100
+ static sessionExpired(): AppError;
101
+ static forbidden(message?: string): AppError;
102
+ static emailNotVerified(): AppError;
103
+ static accountDisabled(): AppError;
104
+ static accountLocked(): AppError;
105
+ static notFound(message?: string): AppError;
106
+ static userNotFound(): AppError;
107
+ static linkNotFound(): AppError;
108
+ static tagNotFound(): AppError;
109
+ static favoriteNotFound(): AppError;
110
+ static groupNotFound(): AppError;
111
+ static conflict(message?: string): AppError;
112
+ static duplicate(resourceName?: string): AppError;
113
+ static emailExists(email?: string): AppError;
114
+ static aliasExists(alias?: string): AppError;
115
+ static businessRule(message?: string, details?: IErrorDetails): AppError;
116
+ static invalidOperation(message?: string): AppError;
117
+ static quotaExceeded(quotaType?: string): AppError;
118
+ static linkExpired(): AppError;
119
+ static linkInactive(): AppError;
120
+ static linkPasswordRequired(): AppError;
121
+ static linkPasswordIncorrect(): AppError;
122
+ static reservedWord(word?: string): AppError;
123
+ static alreadyFavorited(): AppError;
124
+ static cannotDeleteOwnAccount(): AppError;
125
+ static fileTooLarge(maxSize?: string): AppError;
126
+ static unsupportedFileType(fileType?: string): AppError;
127
+ static rateLimit(retryAfter?: number): AppError;
128
+ static dailyLimit(): AppError;
129
+ static apiQuotaExceeded(): AppError;
130
+ static serverError(message?: string): AppError;
131
+ static internalError(message?: string): AppError;
132
+ static databaseError(message?: string): AppError;
133
+ static emailSendFailed(): AppError;
134
+ static cacheError(): AppError;
135
+ static fileUploadFailed(): AppError;
136
+ static externalServiceError(serviceName?: string): AppError;
137
+ static serviceUnavailable(message?: string): AppError;
138
+ static accessBlocked(reason?: string): AppError;
139
+ static securityValidationFailed(): AppError;
140
+ static blockedUrl(url?: string): AppError;
141
+ static suspiciousActivity(): AppError;
142
+ static ipBlocked(ip?: string): AppError;
143
+ }
144
+ export default AppError;
@@ -0,0 +1,10 @@
1
+ import {
2
+ AppError,
3
+ app_error_default
4
+ } from "../chunk-MLGO3HLS.js";
5
+ import "../chunk-Y3OTJH2S.js";
6
+ import "../chunk-ORMEWXMH.js";
7
+ export {
8
+ AppError,
9
+ app_error_default as default
10
+ };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * EmptyState 컴포넌트
3
+ *
4
+ * 데이터가 없는 상태 표시
5
+ */
6
+ import React from 'react';
7
+ import type { TLocale } from '@withwiz/error/messages';
8
+ export interface IEmptyStateProps {
9
+ /** 제목 */
10
+ title?: string;
11
+ /** 설명 */
12
+ description?: string;
13
+ /** 로케일 (기본값: 'ko') */
14
+ locale?: TLocale;
15
+ /** 아이콘 (이모지 또는 SVG) */
16
+ icon?: string | React.ReactNode;
17
+ /** 액션 버튼 텍스트 */
18
+ actionText?: string;
19
+ /** 액션 핸들러 */
20
+ onAction?: () => void;
21
+ /** 크기 */
22
+ size?: 'sm' | 'md' | 'lg';
23
+ }
24
+ /**
25
+ * EmptyState 컴포넌트
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * // 기본 빈 상태
30
+ * <EmptyState
31
+ * title="데이터가 없습니다"
32
+ * description="아직 등록된 항목이 없습니다."
33
+ * />
34
+ *
35
+ * // 액션 버튼 포함
36
+ * <EmptyState
37
+ * title="링크가 없습니다"
38
+ * description="첫 번째 링크를 생성해보세요."
39
+ * actionText="링크 생성"
40
+ * onAction={() => router.push('/create')}
41
+ * />
42
+ *
43
+ * // 커스텀 아이콘
44
+ * <EmptyState
45
+ * icon="📭"
46
+ * title="받은 메일함이 비어있습니다"
47
+ * />
48
+ * ```
49
+ */
50
+ export declare function EmptyState({ title, description, locale, icon, actionText, onAction, size, }: IEmptyStateProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ErrorAlert 컴포넌트
3
+ *
4
+ * 배너형 에러 알림 (섹션별 에러 표시)
5
+ */
6
+ import type { TLocale } from '@withwiz/error/messages';
7
+ export interface IErrorAlertProps {
8
+ /** 에러 코드 (예: 40907, 50001) */
9
+ code: number;
10
+ /** 로케일 (기본값: 'ko') */
11
+ locale?: TLocale;
12
+ /** 닫기 버튼 표시 여부 */
13
+ dismissible?: boolean;
14
+ /** 닫기 핸들러 */
15
+ onDismiss?: () => void;
16
+ /** 액션 버튼 텍스트 */
17
+ actionText?: string;
18
+ /** 액션 핸들러 */
19
+ onAction?: () => void;
20
+ /** 추가 메시지 */
21
+ additionalMessage?: string;
22
+ /** 커스텀 아이콘 */
23
+ icon?: string;
24
+ /** 스타일 변형 */
25
+ variant?: 'filled' | 'outlined';
26
+ }
27
+ /**
28
+ * ErrorAlert 컴포넌트
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * // 기본 사용
33
+ * <ErrorAlert code={40907} />
34
+ *
35
+ * // 닫기 가능
36
+ * <ErrorAlert
37
+ * code={50001}
38
+ * dismissible
39
+ * onDismiss={() => console.log('dismissed')}
40
+ * />
41
+ *
42
+ * // 액션 버튼 포함
43
+ * <ErrorAlert
44
+ * code={42203}
45
+ * actionText="플랜 업그레이드"
46
+ * onAction={() => router.push('/pricing')}
47
+ * />
48
+ * ```
49
+ */
50
+ export declare function ErrorAlert({ code, locale, dismissible, onDismiss, actionText, onAction, additionalMessage, icon: customIcon, variant, }: IErrorAlertProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ErrorPage 컴포넌트
3
+ *
4
+ * 전체 페이지 에러 표시 (404, 500 등)
5
+ */
6
+ import type { TLocale } from '@withwiz/error/messages';
7
+ export interface IErrorPageProps {
8
+ /** 에러 코드 (예: 40401, 50001) */
9
+ code: number;
10
+ /** 로케일 (기본값: 'ko') */
11
+ locale?: TLocale;
12
+ /** 홈으로 돌아가기 버튼 표시 여부 */
13
+ showHomeButton?: boolean;
14
+ /** 홈 URL (기본값: '/') */
15
+ homeUrl?: string;
16
+ /** 재시도 버튼 표시 여부 */
17
+ showRetryButton?: boolean;
18
+ /** 재시도 핸들러 */
19
+ onRetry?: () => void;
20
+ /** 추가 메시지 */
21
+ additionalMessage?: string;
22
+ }
23
+ /**
24
+ * ErrorPage 컴포넌트
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * // 404 페이지
29
+ * <ErrorPage code={40401} showHomeButton />
30
+ *
31
+ * // 500 페이지 (재시도 가능)
32
+ * <ErrorPage
33
+ * code={50001}
34
+ * showRetryButton
35
+ * onRetry={() => window.location.reload()}
36
+ * />
37
+ * ```
38
+ */
39
+ export declare function ErrorPage({ code, locale, showHomeButton, homeUrl, showRetryButton, onRetry, additionalMessage, }: IErrorPageProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * LoadingState 컴포넌트
3
+ *
4
+ * 로딩 상태 표시
5
+ */
6
+ import type { TLocale } from '@withwiz/error/messages';
7
+ export interface ILoadingStateProps {
8
+ /** 로딩 메시지 */
9
+ message?: string;
10
+ /** 로케일 (기본값: 'ko') */
11
+ locale?: TLocale;
12
+ /** 크기 */
13
+ size?: 'sm' | 'md' | 'lg';
14
+ /** 전체 화면 로딩 여부 */
15
+ fullScreen?: boolean;
16
+ /** 스피너 타입 */
17
+ variant?: 'spinner' | 'dots' | 'pulse';
18
+ }
19
+ /**
20
+ * LoadingState 컴포넌트
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * // 기본 로딩
25
+ * <LoadingState />
26
+ *
27
+ * // 커스텀 메시지
28
+ * <LoadingState message="데이터를 불러오는 중..." />
29
+ *
30
+ * // 전체 화면 로딩
31
+ * <LoadingState fullScreen message="처리 중..." />
32
+ *
33
+ * // Dots 애니메이션
34
+ * <LoadingState variant="dots" />
35
+ * ```
36
+ */
37
+ export declare function LoadingState({ message, locale, size, fullScreen, variant, }: ILoadingStateProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * UI 컴포넌트
3
+ *
4
+ * 통합 에러 처리 시스템의 UI 컴포넌트
5
+ */
6
+ export { ErrorPage } from './ErrorPage';
7
+ export type { IErrorPageProps } from './ErrorPage';
8
+ export { ErrorAlert } from './ErrorAlert';
9
+ export type { IErrorAlertProps } from './ErrorAlert';
10
+ export { LoadingState } from './LoadingState';
11
+ export type { ILoadingStateProps } from './LoadingState';
12
+ export { EmptyState } from './EmptyState';
13
+ export type { IEmptyStateProps } from './EmptyState';
@@ -0,0 +1,18 @@
1
+ import {
2
+ EmptyState,
3
+ ErrorAlert,
4
+ ErrorPage,
5
+ LoadingState
6
+ } from "../../chunk-ZHVUK5OY.js";
7
+ import "../../chunk-POKGHK3L.js";
8
+ import "../../chunk-EEUBKZV4.js";
9
+ import "../../chunk-N4YGR5WH.js";
10
+ import "../../chunk-KXAWBFJN.js";
11
+ import "../../chunk-Y3OTJH2S.js";
12
+ import "../../chunk-ORMEWXMH.js";
13
+ export {
14
+ EmptyState,
15
+ ErrorAlert,
16
+ ErrorPage,
17
+ LoadingState
18
+ };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 로케일 감지 유틸리티
3
+ * 클라이언트와 서버에서 사용자 언어를 감지
4
+ */
5
+ import { NextRequest } from 'next/server';
6
+ import type { TLocale } from '@withwiz/error/messages/types';
7
+ /**
8
+ * 로케일 감지기
9
+ */
10
+ export declare class LocaleDetector {
11
+ /**
12
+ * 클라이언트 측 로케일 감지
13
+ * 우선순위: localStorage > cookie > navigator.language > 기본값
14
+ *
15
+ * @returns 감지된 로케일
16
+ */
17
+ static detectClient(): TLocale;
18
+ /**
19
+ * 서버 측 로케일 감지
20
+ * 우선순위: Cookie > Accept-Language 헤더 > 기본값
21
+ *
22
+ * @param request - NextRequest 객체
23
+ * @returns 감지된 로케일
24
+ */
25
+ static detectServer(request: NextRequest): TLocale;
26
+ /**
27
+ * 유효한 로케일인지 확인
28
+ *
29
+ * @param locale - 확인할 로케일
30
+ * @returns 유효 여부
31
+ */
32
+ private static isValidLocale;
33
+ /**
34
+ * 클라이언트에서 로케일 설정 (localStorage + cookie)
35
+ *
36
+ * @param locale - 설정할 로케일
37
+ */
38
+ static setClientLocale(locale: TLocale): void;
39
+ /**
40
+ * 클라이언트에서 로케일 제거
41
+ */
42
+ static clearClientLocale(): void;
43
+ }
44
+ export default LocaleDetector;
@@ -0,0 +1,9 @@
1
+ import {
2
+ LocaleDetector,
3
+ locale_detector_default
4
+ } from "../../chunk-XHZ5L4FO.js";
5
+ import "../../chunk-ORMEWXMH.js";
6
+ export {
7
+ LocaleDetector,
8
+ locale_detector_default as default
9
+ };