@withwiz/toolkit 0.7.1 → 0.9.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 (399) hide show
  1. package/README.ko.md +226 -0
  2. package/README.md +66 -44
  3. package/dist/{chunk-V6YD53NH.js → chunk-23LQJYZN.js} +5 -2
  4. package/dist/chunk-2JUFL4KX.js +41 -0
  5. package/dist/{chunk-ZTRASVGZ.js → chunk-34L7HTM7.js} +1 -1
  6. package/dist/{chunk-GSUCBWML.js → chunk-3RK3MKAR.js} +5 -2
  7. package/dist/{chunk-6JXHXIEH.js → chunk-3UIKCS56.js} +2 -2
  8. package/dist/{chunk-MWBEE6VI.js → chunk-4EXZ2SDV.js} +5 -5
  9. package/dist/{chunk-MNYVAEXK.js → chunk-4ROIPF33.js} +16 -3
  10. package/dist/{chunk-JKSABDFT.js → chunk-4TGPAUJV.js} +4 -4
  11. package/dist/{chunk-D2KXIKI4.js → chunk-4XPXZNBX.js} +18 -11
  12. package/dist/{chunk-LG3KM5V3.js → chunk-5I3EQHR4.js} +6 -2
  13. package/dist/chunk-63EKUOJH.js +72 -0
  14. package/dist/chunk-6A5JHOBB.js +134 -0
  15. package/dist/{chunk-N5VOFGF3.js → chunk-75UDFONR.js} +5 -4
  16. package/dist/{chunk-GORISA3L.js → chunk-7KIM5MHV.js} +1 -1
  17. package/dist/{chunk-4L6OSSSG.js → chunk-7S2PCYNT.js} +3 -3
  18. package/dist/{chunk-2SIBG5BG.js → chunk-7YWUKMZD.js} +7 -0
  19. package/dist/{chunk-7X2N4VZM.js → chunk-ATBYGPLP.js} +1 -1
  20. package/dist/{chunk-A74POWYY.js → chunk-B7AJJKOY.js} +1 -1
  21. package/dist/{chunk-W7PEL3DX.js → chunk-BRBOGLFT.js} +4 -4
  22. package/dist/{chunk-IOUNOHP7.js → chunk-BRFW2LL2.js} +1 -1
  23. package/dist/chunk-BTYH4MHU.js +118 -0
  24. package/dist/{chunk-I4NT6G2T.js → chunk-DRTJSTEV.js} +2 -2
  25. package/dist/{chunk-JIYLTMVL.js → chunk-DVCGAI5N.js} +2 -2
  26. package/dist/chunk-E4TKORMQ.js +59 -0
  27. package/dist/{chunk-AV7ELXHG.js → chunk-E5TDIRBJ.js} +2 -2
  28. package/dist/{chunk-UBASOMP5.js → chunk-HGVPZSWW.js} +18 -13
  29. package/dist/{chunk-7F5X6F7X.js → chunk-HV6A6Z5R.js} +1 -1
  30. package/dist/chunk-ILMPKSWS.js +125 -0
  31. package/dist/{chunk-J5NLAZV2.js → chunk-JHUWZ6YW.js} +2 -2
  32. package/dist/{chunk-LON5THYQ.js → chunk-KLMKCYIN.js} +1 -1
  33. package/dist/{chunk-4KJZRI74.js → chunk-KWUOLKDO.js} +1 -1
  34. package/dist/{chunk-GJO2MPC3.js → chunk-LCYDMYZS.js} +1 -1
  35. package/dist/{chunk-WIQAPWTY.js → chunk-LL3VWKY4.js} +1 -1
  36. package/dist/{chunk-IMAFMUZ7.js → chunk-LSS3GJUE.js} +3 -2
  37. package/dist/{chunk-2PFSRVVD.js → chunk-LWHLB2Y6.js} +84 -18
  38. package/dist/{chunk-BBE4RXR7.js → chunk-MTZXWVW3.js} +17 -6
  39. package/dist/{chunk-ORMEWXMH.js → chunk-N3ETBM74.js} +1 -14
  40. package/dist/{chunk-KYAHURXN.js → chunk-N3TCQ5BF.js} +4 -3
  41. package/dist/{chunk-HX4MPCVV.js → chunk-NTZBMWB6.js} +4 -4
  42. package/dist/{chunk-RJGYONRO.js → chunk-PRPMEHRE.js} +2 -2
  43. package/dist/{chunk-KG65BFPK.js → chunk-QAIN3WNN.js} +1 -1
  44. package/dist/{chunk-JJAIVUVD.js → chunk-R7EFDSPZ.js} +2 -2
  45. package/dist/{chunk-VJE4HA2C.js → chunk-RWCPRPEP.js} +3 -2
  46. package/dist/{chunk-B6L5XV7O.js → chunk-SCAFDDJP.js} +11 -11
  47. package/dist/{chunk-KXYDTC4A.js → chunk-SNFPZD6L.js} +11 -2
  48. package/dist/{chunk-B5VRZ2VJ.js → chunk-TNDEYJEL.js} +25 -6
  49. package/dist/{chunk-GDTZMX3L.js → chunk-TRGFXIEF.js} +1 -1
  50. package/dist/{chunk-JRORMRVN.js → chunk-U2TGXJ3A.js} +1 -1
  51. package/dist/{chunk-VNDL2E44.js → chunk-U52U5SK7.js} +2 -2
  52. package/dist/{chunk-54REXMTE.js → chunk-UWOWKOOQ.js} +3 -1
  53. package/dist/{chunk-4PROUAZ5.js → chunk-V3WZFUY3.js} +7 -7
  54. package/dist/{chunk-G4LJN4OZ.js → chunk-VH57Y5Z4.js} +1 -1
  55. package/dist/chunk-VQJY52YF.js +139 -0
  56. package/dist/{chunk-5S7M2AJL.js → chunk-VWAB4PM7.js} +1 -1
  57. package/dist/{chunk-AQZPGOEZ.js → chunk-VWKZMGPJ.js} +5 -4
  58. package/dist/{chunk-4K27YLAE.js → chunk-VZ2PQA4U.js} +2 -2
  59. package/dist/{chunk-ZOWEW4GY.js → chunk-WBHX4MJV.js} +2 -2
  60. package/dist/{chunk-G4SNTXJ3.js → chunk-WSHRBK6Y.js} +7 -6
  61. package/dist/{chunk-UMRKMF3E.js → chunk-WXOWI7BJ.js} +2 -2
  62. package/dist/chunk-XAGPZLRK.js +106 -0
  63. package/dist/{chunk-VPRTPW7C.js → chunk-XF3WUF3F.js} +2 -2
  64. package/dist/{chunk-6TRD7ZW4.js → chunk-XKIBJJA3.js} +25 -21
  65. package/dist/{chunk-ZLYBY3R4.js → chunk-XTGS6JJB.js} +10 -5
  66. package/dist/{chunk-BFZR62LZ.js → chunk-XXPB4C37.js} +7 -7
  67. package/dist/{chunk-LUIYCIF7.js → chunk-Y4ME3Q5K.js} +2 -2
  68. package/dist/{chunk-Q66VOVGN.js → chunk-Y4WPEIKW.js} +1 -1
  69. package/dist/{chunk-MREY2W7N.js → chunk-Y6CPPBJI.js} +1 -1
  70. package/dist/{chunk-6TUDUOGC.js → chunk-ZEHNCHIV.js} +2 -2
  71. package/dist/{chunk-D73ZJQMX.js → chunk-ZZABL54F.js} +13 -0
  72. package/dist/core/auth/adapters/sql/dialect.d.ts +21 -0
  73. package/dist/core/auth/adapters/sql/dialect.js +11 -0
  74. package/dist/core/auth/adapters/sql/email-token-repository.d.ts +17 -0
  75. package/dist/core/auth/adapters/sql/email-token-repository.js +9 -0
  76. package/dist/core/auth/adapters/sql/index.d.ts +7 -0
  77. package/dist/core/auth/adapters/sql/index.js +27 -0
  78. package/dist/core/auth/adapters/sql/oauth-account-repository.d.ts +18 -0
  79. package/dist/core/auth/adapters/sql/oauth-account-repository.js +9 -0
  80. package/dist/core/auth/adapters/sql/types.d.ts +73 -0
  81. package/dist/core/auth/adapters/sql/types.js +7 -0
  82. package/dist/core/auth/adapters/sql/user-repository.d.ts +20 -0
  83. package/dist/core/auth/adapters/sql/user-repository.js +9 -0
  84. package/dist/core/auth/config.d.ts +3 -0
  85. package/dist/core/auth/config.js +3 -3
  86. package/dist/core/auth/email/index.d.ts +3 -3
  87. package/dist/core/auth/email/index.js +3 -3
  88. package/dist/core/auth/email/sender.d.ts +1 -1
  89. package/dist/core/auth/email/sender.js +2 -2
  90. package/dist/core/auth/email/token-generator.d.ts +11 -0
  91. package/dist/core/auth/email/token-generator.js +2 -2
  92. package/dist/core/auth/errors/index.js +1 -1
  93. package/dist/core/auth/index.d.ts +11 -11
  94. package/dist/core/auth/index.js +23 -15
  95. package/dist/core/auth/jwt/client.js +3 -2
  96. package/dist/core/auth/jwt/cookie.d.ts +1 -1
  97. package/dist/core/auth/jwt/cookie.js +4 -4
  98. package/dist/core/auth/jwt/index.d.ts +41 -9
  99. package/dist/core/auth/jwt/index.js +6 -6
  100. package/dist/core/auth/jwt/types.d.ts +1 -1
  101. package/dist/core/auth/jwt/types.js +1 -1
  102. package/dist/core/auth/oauth/index.d.ts +6 -6
  103. package/dist/core/auth/oauth/index.js +5 -5
  104. package/dist/core/auth/oauth/providers/github.d.ts +1 -1
  105. package/dist/core/auth/oauth/providers/github.js +1 -1
  106. package/dist/core/auth/oauth/providers/google.d.ts +1 -1
  107. package/dist/core/auth/oauth/providers/google.js +1 -1
  108. package/dist/core/auth/oauth/providers/index.d.ts +5 -5
  109. package/dist/core/auth/oauth/providers/index.js +4 -4
  110. package/dist/core/auth/oauth/providers/kakao.d.ts +1 -1
  111. package/dist/core/auth/oauth/providers/kakao.js +1 -1
  112. package/dist/core/auth/oauth/providers/meta.d.ts +1 -1
  113. package/dist/core/auth/oauth/providers/meta.js +1 -1
  114. package/dist/core/auth/oauth/providers/microsoft.d.ts +1 -1
  115. package/dist/core/auth/oauth/providers/microsoft.js +1 -1
  116. package/dist/core/auth/oauth/state-cookie.js +1 -1
  117. package/dist/core/auth/password/client-helper.d.ts +9 -9
  118. package/dist/core/auth/password/client-helper.js +5 -3
  119. package/dist/core/auth/password/hasher.d.ts +83 -0
  120. package/dist/core/auth/password/hasher.js +14 -0
  121. package/dist/core/auth/password/index.d.ts +8 -6
  122. package/dist/core/auth/password/index.js +11 -2
  123. package/dist/core/auth/services/email-verification.service.d.ts +1 -1
  124. package/dist/core/auth/services/email-verification.service.js +3 -3
  125. package/dist/core/auth/services/index.d.ts +13 -12
  126. package/dist/core/auth/services/index.js +16 -16
  127. package/dist/core/auth/services/login.service.d.ts +15 -1
  128. package/dist/core/auth/services/login.service.js +6 -6
  129. package/dist/core/auth/services/oauth-callback.service.d.ts +7 -1
  130. package/dist/core/auth/services/oauth-callback.service.js +6 -6
  131. package/dist/core/auth/services/password-reset.service.d.ts +1 -1
  132. package/dist/core/auth/services/password-reset.service.js +3 -3
  133. package/dist/core/auth/services/refresh-token-store.d.ts +39 -0
  134. package/dist/core/auth/services/register.service.d.ts +1 -1
  135. package/dist/core/auth/services/register.service.js +3 -3
  136. package/dist/core/auth/services/token-refresh.service.d.ts +27 -1
  137. package/dist/core/auth/services/token-refresh.service.js +6 -6
  138. package/dist/core/auth/token-delivery.d.ts +47 -0
  139. package/dist/core/auth/token-delivery.js +14 -0
  140. package/dist/core/auth/types/index.d.ts +38 -4
  141. package/dist/core/auth/types/index.js +1 -1
  142. package/dist/core/cache/cache-config.js +4 -4
  143. package/dist/core/cache/cache-defaults.js +1 -1
  144. package/dist/core/cache/cache-env.d.ts +3 -3
  145. package/dist/core/cache/cache-env.js +3 -3
  146. package/dist/core/cache/cache-factory.d.ts +6 -6
  147. package/dist/core/cache/cache-factory.js +11 -11
  148. package/dist/core/cache/cache-invalidation.d.ts +4 -4
  149. package/dist/core/cache/cache-invalidation.js +12 -12
  150. package/dist/core/cache/cache-redis.js +5 -5
  151. package/dist/core/cache/cache-types.js +1 -1
  152. package/dist/core/cache/cache-wrapper.d.ts +1 -1
  153. package/dist/core/cache/cache-wrapper.js +12 -12
  154. package/dist/core/cache/cache.d.ts +2 -2
  155. package/dist/core/cache/cache.js +17 -17
  156. package/dist/core/cache/config.js +2 -2
  157. package/dist/core/cache/hybrid-cache-manager.d.ts +1 -1
  158. package/dist/core/cache/hybrid-cache-manager.js +7 -7
  159. package/dist/core/cache/index.d.ts +15 -15
  160. package/dist/core/cache/index.js +17 -17
  161. package/dist/core/cache/inmemory-cache-manager.d.ts +1 -1
  162. package/dist/core/cache/inmemory-cache-manager.js +3 -3
  163. package/dist/core/cache/noop-cache-manager.d.ts +1 -1
  164. package/dist/core/cache/noop-cache-manager.js +5 -5
  165. package/dist/core/cache/redis-cache-manager.d.ts +2 -2
  166. package/dist/core/cache/redis-cache-manager.js +6 -6
  167. package/dist/core/config/common.js +1 -1
  168. package/dist/core/config/errors.js +1 -1
  169. package/dist/core/config/registry.d.ts +7 -7
  170. package/dist/core/config/registry.js +1 -1
  171. package/dist/core/config/warn.js +1 -1
  172. package/dist/core/constants/error-codes.js +1 -1
  173. package/dist/core/constants/index.d.ts +5 -5
  174. package/dist/core/constants/index.js +10 -8
  175. package/dist/core/constants/messages.js +1 -1
  176. package/dist/core/constants/pagination.js +1 -1
  177. package/dist/core/constants/security.d.ts +15 -0
  178. package/dist/core/constants/security.js +4 -2
  179. package/dist/core/constants/validation.js +1 -1
  180. package/dist/core/cors/index.js +1 -1
  181. package/dist/core/error/app-error.d.ts +2 -2
  182. package/dist/core/error/app-error.js +1 -1
  183. package/dist/core/error/extract-error-info.js +1 -1
  184. package/dist/core/error/friendly-messages-v2.d.ts +3 -3
  185. package/dist/core/error/friendly-messages-v2.js +4 -4
  186. package/dist/core/error/friendly-messages.js +1 -1
  187. package/dist/core/error/index.d.ts +6 -6
  188. package/dist/core/error/index.js +4 -4
  189. package/dist/core/error/messages/en.d.ts +1 -1
  190. package/dist/core/error/messages/en.js +1 -1
  191. package/dist/core/error/messages/index.d.ts +2 -2
  192. package/dist/core/error/messages/index.js +3 -3
  193. package/dist/core/error/messages/ko.d.ts +1 -1
  194. package/dist/core/error/messages/ko.js +1 -1
  195. package/dist/core/geolocation/batch-processor.d.ts +1 -1
  196. package/dist/core/geolocation/batch-processor.js +3 -3
  197. package/dist/core/geolocation/config.js +1 -1
  198. package/dist/core/geolocation/index.d.ts +5 -5
  199. package/dist/core/geolocation/index.js +7 -7
  200. package/dist/core/geolocation/providers/base-provider.d.ts +2 -2
  201. package/dist/core/geolocation/providers/base-provider.js +1 -1
  202. package/dist/core/geolocation/providers/index.d.ts +6 -6
  203. package/dist/core/geolocation/providers/index.js +5 -5
  204. package/dist/core/geolocation/providers/ip-api-provider.d.ts +3 -3
  205. package/dist/core/geolocation/providers/ip-api-provider.js +1 -1
  206. package/dist/core/geolocation/providers/ipapi-co-provider.d.ts +3 -3
  207. package/dist/core/geolocation/providers/ipapi-co-provider.js +1 -1
  208. package/dist/core/geolocation/providers/ipgeolocation-provider.d.ts +3 -3
  209. package/dist/core/geolocation/providers/ipgeolocation-provider.js +1 -1
  210. package/dist/core/geolocation/providers/maxmind-provider.d.ts +3 -3
  211. package/dist/core/geolocation/providers/maxmind-provider.js +1 -1
  212. package/dist/core/logger/config.js +1 -1
  213. package/dist/core/logger/logger.js +2 -2
  214. package/dist/core/storage/config.js +1 -1
  215. package/dist/core/storage/r2-storage.js +1 -1
  216. package/dist/core/system/cpu.d.ts +1 -1
  217. package/dist/core/system/cpu.js +4 -4
  218. package/dist/core/system/disk.d.ts +1 -1
  219. package/dist/core/system/disk.js +4 -4
  220. package/dist/core/system/environment.d.ts +1 -1
  221. package/dist/core/system/environment.js +7 -7
  222. package/dist/core/system/health-check.d.ts +2 -2
  223. package/dist/core/system/health-check.js +5 -5
  224. package/dist/core/system/index.d.ts +7 -7
  225. package/dist/core/system/index.js +17 -17
  226. package/dist/core/system/memory.d.ts +1 -1
  227. package/dist/core/system/memory.js +4 -4
  228. package/dist/core/system/network.d.ts +1 -1
  229. package/dist/core/system/network.js +4 -4
  230. package/dist/core/system/utils.js +3 -3
  231. package/dist/core/types/geoip.d.ts +1 -1
  232. package/dist/core/types/qr-code.js +1 -1
  233. package/dist/core/utils/error-message-formatter.js +1 -1
  234. package/dist/core/utils/format-number.js +1 -1
  235. package/dist/core/utils/index.d.ts +3 -3
  236. package/dist/core/utils/index.js +9 -9
  237. package/dist/core/utils/input-validation.js +52 -16
  238. package/dist/core/utils/ip-utils.js +1 -1
  239. package/dist/core/utils/optimistic-lock.js +1 -1
  240. package/dist/core/utils/sanitizer.js +2 -2
  241. package/dist/core/utils/short-code-generator.js +1 -1
  242. package/dist/core/utils/timezone.js +121 -14
  243. package/dist/core/utils/type-guards.js +1 -1
  244. package/dist/core/utils/url-normalizer.js +1 -1
  245. package/dist/core/validators/index.d.ts +1 -1
  246. package/dist/core/validators/index.js +2 -2
  247. package/dist/core/validators/password-validator.d.ts +3 -3
  248. package/dist/core/validators/password-validator.js +2 -2
  249. package/dist/initialize.d.ts +10 -10
  250. package/dist/initialize.js +7 -7
  251. package/dist/next/auth-handlers/forgot-password.handler.d.ts +1 -1
  252. package/dist/next/auth-handlers/forgot-password.handler.js +4 -4
  253. package/dist/next/auth-handlers/index.d.ts +11 -11
  254. package/dist/next/auth-handlers/index.js +32 -31
  255. package/dist/next/auth-handlers/login.handler.d.ts +1 -1
  256. package/dist/next/auth-handlers/login.handler.js +7 -6
  257. package/dist/next/auth-handlers/logout.handler.d.ts +1 -1
  258. package/dist/next/auth-handlers/logout.handler.js +5 -5
  259. package/dist/next/auth-handlers/me.handler.d.ts +1 -1
  260. package/dist/next/auth-handlers/me.handler.js +7 -6
  261. package/dist/next/auth-handlers/oauth-authorize.handler.d.ts +1 -1
  262. package/dist/next/auth-handlers/oauth-authorize.handler.js +4 -4
  263. package/dist/next/auth-handlers/oauth-callback.handler.d.ts +1 -1
  264. package/dist/next/auth-handlers/oauth-callback.handler.js +9 -9
  265. package/dist/next/auth-handlers/refresh.handler.d.ts +1 -1
  266. package/dist/next/auth-handlers/refresh.handler.js +8 -7
  267. package/dist/next/auth-handlers/register.handler.d.ts +1 -1
  268. package/dist/next/auth-handlers/register.handler.js +4 -4
  269. package/dist/next/auth-handlers/reset-password.handler.d.ts +1 -1
  270. package/dist/next/auth-handlers/reset-password.handler.js +4 -4
  271. package/dist/next/auth-handlers/verify-email.handler.d.ts +1 -1
  272. package/dist/next/auth-handlers/verify-email.handler.js +4 -4
  273. package/dist/next/auth-types/handler-types.d.ts +5 -1
  274. package/dist/next/auth-types/handler-types.js +13 -1
  275. package/dist/next/auth-types/index.d.ts +1 -1
  276. package/dist/next/auth-types/index.js +13 -1
  277. package/dist/next/error/error-handler.js +3 -3
  278. package/dist/next/error/index.d.ts +3 -3
  279. package/dist/next/error/index.js +9 -9
  280. package/dist/next/error/locale-detector.d.ts +1 -1
  281. package/dist/next/error/locale-detector.js +1 -1
  282. package/dist/next/middleware/auth.d.ts +3 -3
  283. package/dist/next/middleware/auth.js +8 -7
  284. package/dist/next/middleware/cors.d.ts +2 -2
  285. package/dist/next/middleware/cors.js +3 -3
  286. package/dist/next/middleware/error-handler.d.ts +1 -1
  287. package/dist/next/middleware/error-handler.js +6 -6
  288. package/dist/next/middleware/index.d.ts +11 -11
  289. package/dist/next/middleware/index.js +19 -18
  290. package/dist/next/middleware/init-request.d.ts +1 -1
  291. package/dist/next/middleware/init-request.js +1 -1
  292. package/dist/next/middleware/middleware-chain.d.ts +1 -1
  293. package/dist/next/middleware/middleware-chain.js +3 -3
  294. package/dist/next/middleware/rate-limit.d.ts +2 -2
  295. package/dist/next/middleware/rate-limit.js +3 -3
  296. package/dist/next/middleware/response-logger.d.ts +1 -1
  297. package/dist/next/middleware/response-logger.js +3 -3
  298. package/dist/next/middleware/security.d.ts +1 -1
  299. package/dist/next/middleware/security.js +3 -3
  300. package/dist/next/middleware/types.d.ts +6 -3
  301. package/dist/next/middleware/wrappers.d.ts +2 -2
  302. package/dist/next/middleware/wrappers.js +18 -17
  303. package/dist/next/utils/api-helpers.d.ts +6 -2
  304. package/dist/next/utils/api-helpers.js +3 -2
  305. package/dist/next/utils/cors.js +2 -2
  306. package/dist/next/utils/csv-export-format.js +1 -1
  307. package/dist/next/utils/csv-export.js +3 -3
  308. package/dist/next/utils/error-processor.d.ts +1 -1
  309. package/dist/next/utils/error-processor.js +3 -3
  310. package/dist/next/utils/index.d.ts +5 -5
  311. package/dist/next/utils/index.js +28 -27
  312. package/dist/prisma/auth-adapter/index.d.ts +1 -1
  313. package/dist/prisma/auth-adapter/index.js +1 -1
  314. package/package.json +96 -52
  315. package/dist/chunk-2P4N4OK2.js +0 -150
  316. package/dist/chunk-4IQWQSEV.js +0 -27
  317. package/dist/chunk-4K76HG4V.js +0 -34
  318. package/dist/chunk-7EXSMZ2O.js +0 -29
  319. package/dist/chunk-7VXRBTRF.js +0 -110
  320. package/dist/chunk-ARXUKGZI.js +0 -58
  321. package/dist/chunk-B5OH43PR.js +0 -31
  322. package/dist/chunk-BW4QO7T6.js +0 -56
  323. package/dist/chunk-EK4TL7VW.js +0 -22
  324. package/dist/chunk-ERKJJDY6.js +0 -117
  325. package/dist/chunk-G4GT4X3J.js +0 -240
  326. package/dist/chunk-GPOSTBDQ.js +0 -193
  327. package/dist/chunk-IRUFNC4L.js +0 -26
  328. package/dist/chunk-J2MAXMIP.js +0 -105
  329. package/dist/chunk-MFMQO6IS.js +0 -127
  330. package/dist/chunk-PBQGXOVX.js +0 -31
  331. package/dist/chunk-STMAKLLG.js +0 -24
  332. package/dist/chunk-WP233RH2.js +0 -80
  333. package/dist/chunk-WWOYFWFB.js +0 -137
  334. package/dist/chunk-X7FGBUA4.js +0 -117
  335. package/dist/chunk-YSPIFSDI.js +0 -136
  336. package/dist/chunk-ZCLKRGZ4.js +0 -81
  337. package/dist/react/components/ui/Alert.d.ts +0 -12
  338. package/dist/react/components/ui/Alert.js +0 -10
  339. package/dist/react/components/ui/Badge.d.ts +0 -7
  340. package/dist/react/components/ui/Badge.js +0 -8
  341. package/dist/react/components/ui/Button.d.ts +0 -7
  342. package/dist/react/components/ui/Button.js +0 -8
  343. package/dist/react/components/ui/DataTable.d.ts +0 -8
  344. package/dist/react/components/ui/DataTable.js +0 -22
  345. package/dist/react/components/ui/DomainDisplay.d.ts +0 -12
  346. package/dist/react/components/ui/DomainDisplay.js +0 -31
  347. package/dist/react/components/ui/Input.d.ts +0 -5
  348. package/dist/react/components/ui/Input.js +0 -8
  349. package/dist/react/components/ui/Label.d.ts +0 -5
  350. package/dist/react/components/ui/Label.js +0 -8
  351. package/dist/react/components/ui/Pagination.d.ts +0 -42
  352. package/dist/react/components/ui/Pagination.js +0 -20
  353. package/dist/react/components/ui/Select.d.ts +0 -15
  354. package/dist/react/components/ui/Select.js +0 -27
  355. package/dist/react/components/ui/Skeleton.d.ts +0 -6
  356. package/dist/react/components/ui/Skeleton.js +0 -8
  357. package/dist/react/components/ui/TimezoneDisplay.d.ts +0 -22
  358. package/dist/react/components/ui/TimezoneDisplay.js +0 -83
  359. package/dist/react/components/ui/Tooltip.d.ts +0 -21
  360. package/dist/react/components/ui/Tooltip.js +0 -94
  361. package/dist/react/components/ui/data-table/DataTable.d.ts +0 -2
  362. package/dist/react/components/ui/data-table/DataTable.js +0 -22
  363. package/dist/react/components/ui/data-table/DataTableBody.d.ts +0 -19
  364. package/dist/react/components/ui/data-table/DataTableBody.js +0 -10
  365. package/dist/react/components/ui/data-table/DataTableBulkActions.d.ts +0 -17
  366. package/dist/react/components/ui/data-table/DataTableBulkActions.js +0 -12
  367. package/dist/react/components/ui/data-table/DataTableFilters.d.ts +0 -15
  368. package/dist/react/components/ui/data-table/DataTableFilters.js +0 -13
  369. package/dist/react/components/ui/data-table/DataTablePagination.d.ts +0 -10
  370. package/dist/react/components/ui/data-table/DataTablePagination.js +0 -11
  371. package/dist/react/components/ui/data-table/DataTableSearch.d.ts +0 -24
  372. package/dist/react/components/ui/data-table/DataTableSearch.js +0 -12
  373. package/dist/react/components/ui/data-table/index.d.ts +0 -13
  374. package/dist/react/components/ui/data-table/index.js +0 -42
  375. package/dist/react/components/ui/data-table/types.d.ts +0 -120
  376. package/dist/react/components/ui/data-table/types.js +0 -9
  377. package/dist/react/components/ui/loading-bar.d.ts +0 -20
  378. package/dist/react/components/ui/loading-bar.js +0 -15
  379. package/dist/react/error/error-display.d.ts +0 -48
  380. package/dist/react/error/error-display.js +0 -30
  381. package/dist/react/error/index.d.ts +0 -6
  382. package/dist/react/error/index.js +0 -30
  383. package/dist/react/hooks/useDataTable.d.ts +0 -96
  384. package/dist/react/hooks/useDataTable.js +0 -151
  385. package/dist/react/hooks/useDebounce.d.ts +0 -7
  386. package/dist/react/hooks/useDebounce.js +0 -7
  387. package/dist/react/hooks/useExitIntent.d.ts +0 -35
  388. package/dist/react/hooks/useExitIntent.js +0 -72
  389. package/dist/react/hooks/useTimezone.d.ts +0 -19
  390. package/dist/react/hooks/useTimezone.js +0 -11
  391. package/dist/react/utils/client-utils.d.ts +0 -3
  392. package/dist/react/utils/client-utils.js +0 -9
  393. package/dist/react/utils/qr-code.d.ts +0 -16
  394. package/dist/react/utils/qr-code.js +0 -215
  395. package/dist/{chunk-7PEVOMBO.js → chunk-AOWUPAPS.js} +0 -0
  396. package/dist/{chunk-VDRLJU6C.js → chunk-E2HYIONP.js} +3 -3
  397. package/dist/{chunk-7WG7XPXC.js → chunk-KKZCNF6U.js} +3 -3
  398. package/dist/{chunk-UQ3Z3ZAF.js → chunk-P7WHMKN5.js} +3 -3
  399. /package/dist/{chunk-M22Z2NO6.js → core/auth/services/refresh-token-store.js} +0 -0
@@ -1,110 +0,0 @@
1
- import {
2
- formatLabel
3
- } from "./chunk-B5OH43PR.js";
4
- import {
5
- Input
6
- } from "./chunk-4IQWQSEV.js";
7
- import {
8
- Button
9
- } from "./chunk-BW4QO7T6.js";
10
-
11
- // src/react/components/ui/data-table/DataTableSearch.tsx
12
- import { isValidElement } from "react";
13
- import { Filter } from "lucide-react";
14
- import { jsx, jsxs } from "react/jsx-runtime";
15
- function DataTableSearch({
16
- onSearch,
17
- onSearchValueChange,
18
- searchValue,
19
- searchPlaceholder,
20
- labels,
21
- filters,
22
- onToggleFilters,
23
- showFilters,
24
- hasActiveFilters,
25
- pagination,
26
- createButton
27
- }) {
28
- const handleSearch = (e) => {
29
- if (e.key === "Enter" && onSearch) {
30
- onSearch(searchValue);
31
- }
32
- };
33
- const handleSearchClick = () => {
34
- if (onSearch) {
35
- onSearch(searchValue);
36
- }
37
- };
38
- const handleSearchInputChange = (value) => {
39
- if (onSearchValueChange) {
40
- onSearchValueChange(value);
41
- }
42
- };
43
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 p-3 bg-muted rounded-lg", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-2", children: [
44
- onSearch && /* @__PURE__ */ jsxs("div", { className: "relative flex-1 min-w-0", children: [
45
- /* @__PURE__ */ jsx(
46
- Input,
47
- {
48
- "data-testid": "search-input",
49
- placeholder: searchPlaceholder,
50
- value: searchValue,
51
- onChange: (e) => handleSearchInputChange(e.target.value),
52
- onKeyPress: handleSearch,
53
- className: "min-w-0 pr-20 h-10"
54
- }
55
- ),
56
- /* @__PURE__ */ jsx(
57
- Button,
58
- {
59
- "data-testid": "search-btn",
60
- size: "sm",
61
- onClick: handleSearchClick,
62
- className: "absolute right-1 top-1/2 transform -translate-y-1/2 h-8 px-3 text-sm",
63
- children: labels.search
64
- }
65
- )
66
- ] }),
67
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
68
- filters.length > 0 && onToggleFilters && /* @__PURE__ */ jsxs(
69
- Button,
70
- {
71
- "data-testid": "filter-toggle-btn",
72
- variant: "outline",
73
- size: "sm",
74
- onClick: () => onToggleFilters(!showFilters),
75
- className: "flex items-center gap-1 h-10 px-3",
76
- children: [
77
- /* @__PURE__ */ jsx(Filter, { className: "h-4 w-4" }),
78
- /* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: labels.filter }),
79
- hasActiveFilters && /* @__PURE__ */ jsx("span", { className: "ml-1 bg-primary text-primary-foreground text-xs px-1.5 py-0.5 rounded-full", children: labels.filterActive })
80
- ]
81
- }
82
- ),
83
- pagination && /* @__PURE__ */ jsx(
84
- "select",
85
- {
86
- "data-testid": "page-size-select",
87
- value: pagination.pageSize,
88
- onChange: (e) => pagination.onPageSizeChange(Number(e.target.value)),
89
- className: "border rounded px-3 py-2 text-sm bg-background h-10 min-w-[100px]",
90
- children: (pagination.pageSizeOptions || [10, 20, 50]).map((size) => /* @__PURE__ */ jsx("option", { value: size, children: formatLabel(labels.perPage, { size }) }, size))
91
- }
92
- ),
93
- createButton && (isValidElement(createButton) ? createButton : /* @__PURE__ */ jsx(
94
- Button,
95
- {
96
- "data-testid": "create-btn",
97
- onClick: createButton.onClick,
98
- variant: "default",
99
- size: "sm",
100
- className: "flex-shrink-0 h-10 px-3",
101
- children: createButton.label
102
- }
103
- ))
104
- ] })
105
- ] }) });
106
- }
107
-
108
- export {
109
- DataTableSearch
110
- };
@@ -1,58 +0,0 @@
1
- import {
2
- JWTService
3
- } from "./chunk-2PFSRVVD.js";
4
- import {
5
- AuthError
6
- } from "./chunk-5GWGARXI.js";
7
- import {
8
- JWT_DEFAULTS
9
- } from "./chunk-2SIBG5BG.js";
10
-
11
- // src/core/auth/services/token-refresh.service.ts
12
- var TokenRefreshService = class {
13
- constructor(config) {
14
- var _a, _b, _c;
15
- this.userRepo = config.userRepository;
16
- this.jwtService = new JWTService({
17
- secret: config.jwtSecret,
18
- accessTokenExpiry: (_a = config.accessTokenExpiry) != null ? _a : JWT_DEFAULTS.DEFAULT_ACCESS_TOKEN_EXPIRES,
19
- refreshTokenExpiry: (_b = config.refreshTokenExpiry) != null ? _b : JWT_DEFAULTS.DEFAULT_REFRESH_TOKEN_EXPIRES,
20
- algorithm: JWT_DEFAULTS.ALGORITHM
21
- }, config.logger);
22
- this.isTokenBlacklisted = config.isTokenBlacklisted;
23
- this.logger = (_c = config.logger) != null ? _c : { debug() {
24
- }, info() {
25
- }, warn() {
26
- }, error() {
27
- } };
28
- }
29
- async refresh(refreshToken) {
30
- var _a, _b;
31
- if (this.isTokenBlacklisted) {
32
- const blacklisted = await this.isTokenBlacklisted(refreshToken);
33
- if (blacklisted) {
34
- throw new AuthError("Token has been revoked", "TOKEN_REVOKED", 401);
35
- }
36
- }
37
- const { userId } = await this.jwtService.verifyRefreshToken(refreshToken);
38
- const user = await this.userRepo.findById(userId);
39
- if (!user) {
40
- throw new AuthError("User not found", "USER_NOT_FOUND", 401);
41
- }
42
- if (user.isActive === false) {
43
- throw new AuthError("Account is disabled", "ACCOUNT_DISABLED", 403);
44
- }
45
- const accessToken = await this.jwtService.createAccessToken({
46
- id: user.id,
47
- userId: user.id,
48
- email: user.email,
49
- role: (_a = user.role) != null ? _a : "USER",
50
- emailVerified: user.emailVerified
51
- });
52
- return { accessToken, user: { id: user.id, email: user.email, role: (_b = user.role) != null ? _b : "USER" } };
53
- }
54
- };
55
-
56
- export {
57
- TokenRefreshService
58
- };
@@ -1,31 +0,0 @@
1
- // src/react/components/ui/data-table/types.ts
2
- var DEFAULT_LABELS = {
3
- search: "Search",
4
- filter: "Filter",
5
- filterActive: "Active",
6
- clearFilters: "Clear Filters",
7
- selectAll: "Select All",
8
- selectAllShort: "All",
9
- selected: "{count} / {total} selected",
10
- processing: "Processing...",
11
- processingItems: "Processing {count} items...",
12
- loading: "Loading data...",
13
- perPage: "{size} per page",
14
- all: "All",
15
- min: "Min",
16
- max: "Max",
17
- previous: "Previous",
18
- next: "Next",
19
- showing: "Showing {start} to {end} of {total} results"
20
- };
21
- function formatLabel(template, values) {
22
- return Object.entries(values).reduce(
23
- (result, [key, value]) => result.replace(new RegExp(`\\{${key}\\}`, "g"), String(value)),
24
- template
25
- );
26
- }
27
-
28
- export {
29
- DEFAULT_LABELS,
30
- formatLabel
31
- };
@@ -1,56 +0,0 @@
1
- import {
2
- cn
3
- } from "./chunk-4K76HG4V.js";
4
- import {
5
- __objRest,
6
- __spreadProps,
7
- __spreadValues
8
- } from "./chunk-ORMEWXMH.js";
9
-
10
- // src/react/components/ui/Button.tsx
11
- import { jsx } from "react/jsx-runtime";
12
- function Button(_a) {
13
- var _b = _a, {
14
- className,
15
- variant = "default",
16
- size = "default",
17
- children
18
- } = _b, props = __objRest(_b, [
19
- "className",
20
- "variant",
21
- "size",
22
- "children"
23
- ]);
24
- const baseClasses = "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50";
25
- const variantClasses = {
26
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
27
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
28
- outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
29
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
30
- ghost: "hover:bg-accent hover:text-accent-foreground",
31
- link: "text-primary underline-offset-4 hover:underline"
32
- };
33
- const sizeClasses = {
34
- default: "h-10 px-4 py-2",
35
- sm: "h-9 rounded-md px-3",
36
- lg: "h-11 rounded-md px-8",
37
- icon: "h-10 w-10"
38
- };
39
- return /* @__PURE__ */ jsx(
40
- "button",
41
- __spreadProps(__spreadValues({
42
- className: cn(
43
- baseClasses,
44
- variantClasses[variant],
45
- sizeClasses[size],
46
- className
47
- )
48
- }, props), {
49
- children
50
- })
51
- );
52
- }
53
-
54
- export {
55
- Button
56
- };
@@ -1,22 +0,0 @@
1
- import {
2
- cn
3
- } from "./chunk-4K76HG4V.js";
4
-
5
- // src/react/components/ui/Skeleton.tsx
6
- import { jsx } from "react/jsx-runtime";
7
- function Skeleton({ className, children }) {
8
- return /* @__PURE__ */ jsx(
9
- "div",
10
- {
11
- className: cn(
12
- "animate-pulse rounded-md bg-muted",
13
- className
14
- ),
15
- children
16
- }
17
- );
18
- }
19
-
20
- export {
21
- Skeleton
22
- };
@@ -1,117 +0,0 @@
1
- import {
2
- getErrorDisplayInfo,
3
- getFriendlyMessage
4
- } from "./chunk-5S7M2AJL.js";
5
- import {
6
- AppError
7
- } from "./chunk-ATAQRXTH.js";
8
- import {
9
- getErrorCategory
10
- } from "./chunk-XQIAXMRY.js";
11
-
12
- // src/react/error/error-display.ts
13
- import { toast } from "sonner";
14
- function getLocale() {
15
- var _a;
16
- if (typeof window === "undefined") return "ko";
17
- const locale = localStorage.getItem("locale") || ((_a = document.cookie.match(/locale=([^;]+)/)) == null ? void 0 : _a[1]);
18
- return locale === "en" ? "en" : "ko";
19
- }
20
- function showFriendlyError(errorOrCode, options) {
21
- var _a;
22
- const { locale = getLocale(), duration = 5e3, showCode = true, onAuthError, onRateLimitError } = options || {};
23
- let code;
24
- let displayInfo;
25
- if (typeof errorOrCode === "number") {
26
- code = errorOrCode;
27
- displayInfo = getErrorDisplayInfo(code, locale);
28
- } else if (errorOrCode instanceof Error) {
29
- if ("code" in errorOrCode && typeof errorOrCode.code === "number") {
30
- code = errorOrCode.code;
31
- } else {
32
- code = 50002;
33
- }
34
- displayInfo = getErrorDisplayInfo(code, locale);
35
- } else {
36
- code = ((_a = errorOrCode.error) == null ? void 0 : _a.code) || 50002;
37
- displayInfo = getErrorDisplayInfo(code, locale);
38
- }
39
- const category = getErrorCategory(code);
40
- if (category === "auth" && onAuthError) onAuthError();
41
- if (category === "rateLimit" && onRateLimitError) onRateLimitError();
42
- const description = showCode ? `${displayInfo.description} [${code}]` : displayInfo.description;
43
- switch (displayInfo.severity) {
44
- case "critical":
45
- case "error":
46
- toast.error(displayInfo.title, { description, duration });
47
- break;
48
- case "warning":
49
- toast.warning(displayInfo.title, { description, duration });
50
- break;
51
- case "info":
52
- default:
53
- toast.info(displayInfo.title, { description, duration });
54
- }
55
- }
56
- async function handleApiResponse(response, options) {
57
- var _a, _b;
58
- if (response.ok) {
59
- const data = await response.json();
60
- return data.data;
61
- }
62
- const errorData = await response.json();
63
- if ((options == null ? void 0 : options.showToast) !== false) {
64
- showFriendlyError(errorData, {
65
- locale: options == null ? void 0 : options.locale,
66
- onAuthError: options == null ? void 0 : options.onAuthError
67
- });
68
- }
69
- const errorCode = (_a = errorData.error) == null ? void 0 : _a.code;
70
- if (errorCode) {
71
- throw new AppError(errorCode, (_b = errorData.error) == null ? void 0 : _b.message);
72
- }
73
- throw AppError.fromKey("SERVER_ERROR", `Request failed with status ${response.status}`);
74
- }
75
- function formatInlineError(code, locale) {
76
- const lang = locale || getLocale();
77
- const { title, description } = getFriendlyMessage(code, lang);
78
- return `${description} [${code}]`;
79
- }
80
- function getErrorIcon(code) {
81
- const category = getErrorCategory(code);
82
- const icons = {
83
- validation: "\u26A0\uFE0F",
84
- auth: "\u{1F510}",
85
- permission: "\u{1F6AB}",
86
- resource: "\u{1F50D}",
87
- conflict: "\u26A1",
88
- business: "\u{1F4CB}",
89
- rateLimit: "\u23F1\uFE0F",
90
- server: "\u{1F527}",
91
- security: "\u{1F6E1}\uFE0F",
92
- unknown: "\u274C"
93
- };
94
- return icons[category] || "\u274C";
95
- }
96
- function getDefaultErrorCode(status) {
97
- const statusMap = {
98
- 400: 40002,
99
- 401: 40101,
100
- 403: 40304,
101
- 404: 40401,
102
- 409: 40904,
103
- 422: 42201,
104
- 429: 42901,
105
- 500: 50002,
106
- 503: 50305
107
- };
108
- return statusMap[status] || 50002;
109
- }
110
-
111
- export {
112
- showFriendlyError,
113
- handleApiResponse,
114
- formatInlineError,
115
- getErrorIcon,
116
- getDefaultErrorCode
117
- };
@@ -1,240 +0,0 @@
1
- import {
2
- DataTableBody
3
- } from "./chunk-2P4N4OK2.js";
4
- import {
5
- DataTableBulkActions
6
- } from "./chunk-ZCLKRGZ4.js";
7
- import {
8
- DataTableFilters
9
- } from "./chunk-YSPIFSDI.js";
10
- import {
11
- DataTablePagination
12
- } from "./chunk-MFMQO6IS.js";
13
- import {
14
- DataTableSearch
15
- } from "./chunk-7VXRBTRF.js";
16
- import {
17
- DEFAULT_LABELS
18
- } from "./chunk-B5OH43PR.js";
19
- import {
20
- Alert,
21
- AlertDescription
22
- } from "./chunk-PBQGXOVX.js";
23
- import {
24
- cn
25
- } from "./chunk-4K76HG4V.js";
26
- import {
27
- __spreadValues
28
- } from "./chunk-ORMEWXMH.js";
29
-
30
- // src/react/components/ui/data-table/DataTable.tsx
31
- import { useState, useEffect, useMemo, useRef } from "react";
32
- import { jsx, jsxs } from "react/jsx-runtime";
33
- var EMPTY_ARRAY = [];
34
- var EMPTY_OBJECT = {};
35
- function DataTable({
36
- data,
37
- columns,
38
- loading = false,
39
- error = null,
40
- pagination,
41
- sort,
42
- bulkActions = EMPTY_ARRAY,
43
- filters = EMPTY_ARRAY,
44
- filterValues = EMPTY_OBJECT,
45
- onFilterChange,
46
- onClearFilters,
47
- selectable = false,
48
- onSelectionChange,
49
- selectedIds = EMPTY_ARRAY,
50
- getRowId,
51
- className,
52
- emptyMessage = "No data",
53
- searchPlaceholder = "Search...",
54
- onSearch,
55
- onSearchValueChange,
56
- searchValue = "",
57
- showFilters = false,
58
- onToggleFilters,
59
- createButton,
60
- labels: customLabels,
61
- syncWithUrl = false
62
- }) {
63
- const customLabelsRef = useRef(customLabels);
64
- const labelsRef = useRef(__spreadValues(__spreadValues({}, DEFAULT_LABELS), customLabels));
65
- if (customLabelsRef.current !== customLabels) {
66
- customLabelsRef.current = customLabels;
67
- labelsRef.current = __spreadValues(__spreadValues({}, DEFAULT_LABELS), customLabels);
68
- }
69
- const labels = labelsRef.current;
70
- const [localSelectedIds, setLocalSelectedIds] = useState(
71
- selectedIds
72
- );
73
- const [bulkActionLoading, setBulkActionLoading] = useState(null);
74
- const prevSelectedIdsRef = useRef(JSON.stringify(selectedIds));
75
- useEffect(() => {
76
- const serialized = JSON.stringify(selectedIds);
77
- if (serialized !== prevSelectedIdsRef.current) {
78
- prevSelectedIdsRef.current = serialized;
79
- setLocalSelectedIds(selectedIds);
80
- }
81
- }, [selectedIds]);
82
- const hasActiveFilters = useMemo(() => {
83
- if (searchValue && searchValue.trim()) return true;
84
- for (const [key, value] of Object.entries(filterValues)) {
85
- if (value === void 0 || value === null || value === "") continue;
86
- if (value === "all") continue;
87
- if (typeof value === "object" && value !== null) {
88
- if (key === "dateRange" && (value.start || value.end)) return true;
89
- if (key === "clickRange" && (value.min || value.max)) return true;
90
- if (key === "lastClickedRange" && (value.start || value.end)) return true;
91
- } else {
92
- if (key === "activeFilter" && value !== "all") return true;
93
- if (key === "publicFilter" && value !== "all") return true;
94
- if (key === "expirationFilter" && value !== "all") return true;
95
- }
96
- }
97
- return false;
98
- }, [searchValue, filterValues]);
99
- useEffect(() => {
100
- if (!syncWithUrl || typeof window === "undefined") return;
101
- const params = new URLSearchParams(window.location.search);
102
- let changed = false;
103
- if (searchValue) {
104
- if (params.get("search") !== searchValue) {
105
- params.set("search", searchValue);
106
- changed = true;
107
- }
108
- } else {
109
- if (params.has("search")) {
110
- params.delete("search");
111
- changed = true;
112
- }
113
- }
114
- if (sort) {
115
- if (params.get("sort") !== sort.sort) {
116
- params.set("sort", sort.sort);
117
- changed = true;
118
- }
119
- if (params.get("order") !== sort.order) {
120
- params.set("order", sort.order);
121
- changed = true;
122
- }
123
- }
124
- if (pagination) {
125
- const pageStr = String(pagination.page);
126
- const pageSizeStr = String(pagination.pageSize);
127
- if (params.get("page") !== pageStr) {
128
- params.set("page", pageStr);
129
- changed = true;
130
- }
131
- if (params.get("pageSize") !== pageSizeStr) {
132
- params.set("pageSize", pageSizeStr);
133
- changed = true;
134
- }
135
- }
136
- if (changed) {
137
- const newUrl = `${window.location.pathname}?${params.toString()}`;
138
- window.history.replaceState(null, "", newUrl);
139
- }
140
- }, [syncWithUrl, searchValue, sort == null ? void 0 : sort.sort, sort == null ? void 0 : sort.order, pagination == null ? void 0 : pagination.page, pagination == null ? void 0 : pagination.pageSize]);
141
- const handleSelectAll = (checked) => {
142
- const newSelection = checked ? data.map((item) => getRowId(item)) : [];
143
- setLocalSelectedIds(newSelection);
144
- onSelectionChange == null ? void 0 : onSelectionChange(newSelection);
145
- };
146
- const handleSelect = (id, checked) => {
147
- const newSelection = checked ? [...localSelectedIds, id] : localSelectedIds.filter((item) => item !== id);
148
- setLocalSelectedIds(newSelection);
149
- onSelectionChange == null ? void 0 : onSelectionChange(newSelection);
150
- };
151
- const handleSort = (columnKey) => {
152
- if (!sort) return;
153
- if (sort.sort === columnKey) {
154
- sort.onSortChange(columnKey, sort.order === "asc" ? "desc" : "asc");
155
- } else {
156
- sort.onSortChange(columnKey, "asc");
157
- }
158
- };
159
- const handleBulkAction = async (action) => {
160
- if (localSelectedIds.length === 0 || bulkActionLoading) return;
161
- setBulkActionLoading(action.key);
162
- try {
163
- await action.onClick(localSelectedIds);
164
- } finally {
165
- setBulkActionLoading(null);
166
- }
167
- };
168
- const visibleColumns = columns.filter((col) => !col.hidden);
169
- return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4", className), children: [
170
- (onSearch || createButton) && /* @__PURE__ */ jsx(
171
- DataTableSearch,
172
- {
173
- onSearch,
174
- onSearchValueChange,
175
- searchValue,
176
- searchPlaceholder,
177
- labels,
178
- filters,
179
- onToggleFilters,
180
- showFilters,
181
- hasActiveFilters,
182
- pagination,
183
- createButton
184
- }
185
- ),
186
- showFilters && filters.length > 0 && /* @__PURE__ */ jsx(
187
- DataTableFilters,
188
- {
189
- filters,
190
- filterValues,
191
- onFilterChange,
192
- onClearFilters,
193
- hasActiveFilters,
194
- labels
195
- }
196
- ),
197
- selectable && bulkActions.length > 0 && /* @__PURE__ */ jsx(
198
- DataTableBulkActions,
199
- {
200
- bulkActions,
201
- localSelectedIds,
202
- dataLength: data.length,
203
- bulkActionLoading,
204
- onSelectAll: handleSelectAll,
205
- onBulkAction: handleBulkAction,
206
- labels
207
- }
208
- ),
209
- error && /* @__PURE__ */ jsx(Alert, { variant: "destructive", children: /* @__PURE__ */ jsx(AlertDescription, { children: error }) }),
210
- /* @__PURE__ */ jsx(
211
- DataTableBody,
212
- {
213
- data,
214
- visibleColumns,
215
- loading,
216
- error,
217
- emptyMessage,
218
- selectable,
219
- localSelectedIds,
220
- getRowId,
221
- onSelectAll: handleSelectAll,
222
- onSelect: handleSelect,
223
- sort,
224
- onSort: handleSort,
225
- labels
226
- }
227
- ),
228
- pagination && pagination.total > 0 && /* @__PURE__ */ jsx(
229
- DataTablePagination,
230
- {
231
- pagination,
232
- labels
233
- }
234
- )
235
- ] });
236
- }
237
-
238
- export {
239
- DataTable
240
- };