@withwiz/toolkit 0.6.5 → 0.7.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.
- package/README.md +99 -57
- package/dist/{chunk-FDFPNSKY.js → chunk-2D3YM34R.js} +1 -1
- package/dist/{chunk-2O72OV5X.js → chunk-2JGSS4RM.js} +2 -2
- package/dist/{chunk-XY3ZVORI.js → chunk-2MYD2BFJ.js} +9 -9
- package/dist/{chunk-7IY3RQQL.js → chunk-2P4N4OK2.js} +9 -10
- package/dist/{chunk-3GAY2T2A.js → chunk-2PFSRVVD.js} +10 -3
- package/dist/{chunk-OFSPZUQD.js → chunk-2QVDB6UO.js} +3 -3
- package/dist/{chunk-C4TSQUFA.js → chunk-2SIBG5BG.js} +1 -1
- package/dist/{chunk-K3OYTLXU.js → chunk-33RIHX7O.js} +9 -3
- package/dist/{chunk-A6FKWYO2.js → chunk-3KYSGBVF.js} +8 -11
- package/dist/{chunk-EUQATJLI.js → chunk-4ETAGZIT.js} +1 -1
- package/dist/{chunk-RJUVBBZG.js → chunk-4IQWQSEV.js} +2 -2
- package/dist/{chunk-LG6GH4V7.js → chunk-4K27YLAE.js} +2 -2
- package/dist/{chunk-62FLBG6B.js → chunk-4K76HG4V.js} +1 -1
- package/dist/{chunk-LRRQ54YJ.js → chunk-4KJZRI74.js} +2 -2
- package/dist/{chunk-YX3XMDDI.js → chunk-4YDBQZ5M.js} +31 -14
- package/dist/{chunk-WSXOKK6N.js → chunk-5BBVV2EX.js} +2 -2
- package/dist/{chunk-AIH3F7JV.js → chunk-5GWGARXI.js} +1 -1
- package/dist/{chunk-7VTBRP5M.js → chunk-5S7M2AJL.js} +3 -3
- package/dist/{chunk-TLZJQR26.js → chunk-65HVR74O.js} +2 -2
- package/dist/chunk-6HQ5JHL4.js +14 -0
- package/dist/{chunk-K25ICPU4.js → chunk-6J2EJVND.js} +1 -1
- package/dist/{chunk-G26T2PRQ.js → chunk-6JXHXIEH.js} +2 -2
- package/dist/{chunk-ZTN4X5FN.js → chunk-7EXSMZ2O.js} +1 -1
- package/dist/{chunk-MEFZZE4M.js → chunk-7VXRBTRF.js} +6 -6
- package/dist/{chunk-JNJALNRR.js → chunk-7WG7XPXC.js} +3 -3
- package/dist/{chunk-KY7JZ54O.js → chunk-7X2N4VZM.js} +1 -1
- package/dist/{chunk-WJWCTCWZ.js → chunk-7ZO5UNTJ.js} +3 -3
- package/dist/{chunk-QYXI45KH.js → chunk-A74POWYY.js} +3 -3
- package/dist/{chunk-AKD4YMJU.js → chunk-AMZWDLJ4.js} +1 -1
- package/dist/{chunk-N6TMHITU.js → chunk-AQZPGOEZ.js} +3 -3
- package/dist/{chunk-SVHD6WCJ.js → chunk-ARXUKGZI.js} +4 -4
- package/dist/{chunk-EOEMOXNT.js → chunk-ATAQRXTH.js} +2 -2
- package/dist/{chunk-545Q34YU.js → chunk-AV7ELXHG.js} +3 -3
- package/dist/{chunk-ENETIGKL.js → chunk-AWIORJAI.js} +3 -3
- package/dist/{chunk-I6Q3WUDT.js → chunk-B5OH43PR.js} +1 -1
- package/dist/{chunk-VWPSQQ7E.js → chunk-B5VRZ2VJ.js} +4 -4
- package/dist/{chunk-Q26CQW7T.js → chunk-BBE4RXR7.js} +4 -4
- package/dist/{chunk-2KG2G35D.js → chunk-BL6QHL5L.js} +6 -6
- package/dist/{chunk-L25BNU3E.js → chunk-BW4QO7T6.js} +2 -2
- package/dist/{chunk-CDLCZB6F.js → chunk-C5CBJC6V.js} +3 -3
- package/dist/{chunk-BJSEYZBH.js → chunk-C6WH7RF5.js} +5 -15
- package/dist/{chunk-AHDPGRXS.js → chunk-CCNZFZW6.js} +1 -1
- package/dist/{chunk-LHIVUV7Q.js → chunk-CRJUFA73.js} +3 -3
- package/dist/{chunk-GDWEDUHO.js → chunk-D73ZJQMX.js} +1 -1
- package/dist/{chunk-7UQZH2OH.js → chunk-DUIQUAHR.js} +4 -4
- package/dist/{chunk-DEEJBDJE.js → chunk-E27YZK7O.js} +2 -2
- package/dist/{chunk-MRJE6OX5.js → chunk-EK4TL7VW.js} +2 -2
- package/dist/{chunk-57W32BFZ.js → chunk-ERFD6YAW.js} +1 -1
- package/dist/{chunk-2QH66EVQ.js → chunk-F3R3UYBF.js} +1 -1
- package/dist/{chunk-RVL5ROWQ.js → chunk-GF3DKZIW.js} +2 -2
- package/dist/{chunk-G2CKET5G.js → chunk-GH3U4WRE.js} +1 -1
- package/dist/{chunk-NW3JIRFK.js → chunk-GJO2MPC3.js} +2 -2
- package/dist/{chunk-LGAV5UU2.js → chunk-GJYHMHTU.js} +3 -3
- package/dist/{chunk-WDUFQFDP.js → chunk-GPOSTBDQ.js} +2 -2
- package/dist/{chunk-VB64KFBD.js → chunk-GSSHHVHF.js} +23 -11
- package/dist/{chunk-N54KGJPU.js → chunk-GSUCBWML.js} +1 -1
- package/dist/{chunk-LNV2E4I6.js → chunk-GTCCVI45.js} +1 -1
- package/dist/{chunk-QOKDGW3F.js → chunk-H5KYXSYZ.js} +2 -2
- package/dist/{chunk-GBLNXNEH.js → chunk-HIZ7USIF.js} +2 -2
- package/dist/{chunk-PT4FA7U4.js → chunk-HKW4JA45.js} +10 -10
- package/dist/{chunk-CVFVL5FL.js → chunk-I4NT6G2T.js} +3 -3
- package/dist/{chunk-LMQSV5UK.js → chunk-IKZB26SK.js} +3 -3
- package/dist/{chunk-TFZOOP3V.js → chunk-IMAFMUZ7.js} +3 -3
- package/dist/{chunk-IJEZ7G7S.js → chunk-IRUFNC4L.js} +2 -2
- package/dist/{chunk-YJWLWUFK.js → chunk-J2MAXMIP.js} +2 -2
- package/dist/{chunk-ZG2XGO44.js → chunk-J5NLAZV2.js} +3 -3
- package/dist/chunk-JLRMET4V.js +49 -0
- package/dist/{chunk-XHZ5L4FO.js → chunk-K2PNAQI4.js} +1 -1
- package/dist/{chunk-A7TN46LC.js → chunk-KCDJIW2F.js} +7 -7
- package/dist/{chunk-NOAU2JG7.js → chunk-KG65BFPK.js} +2 -2
- package/dist/{chunk-KMCJIL57.js → chunk-KXYDTC4A.js} +1 -1
- package/dist/{chunk-XRRPEBKB.js → chunk-LG3KM5V3.js} +1 -1
- package/dist/{chunk-FRY3TNJ6.js → chunk-LON5THYQ.js} +2 -2
- package/dist/{chunk-SOQOAFB2.js → chunk-LUIYCIF7.js} +3 -3
- package/dist/{chunk-B7QWZ5SW.js → chunk-M5ZYAQBB.js} +8 -8
- package/dist/{chunk-WVDYHSHD.js → chunk-MFMQO6IS.js} +3 -3
- package/dist/{chunk-IHXRF3BH.js → chunk-MNYVAEXK.js} +1 -1
- package/dist/{chunk-VSGKVZB4.js → chunk-MRNRC45L.js} +2 -2
- package/dist/{chunk-WC2IYFGC.js → chunk-N5VOFGF3.js} +3 -3
- package/dist/{chunk-CRMXLNLC.js → chunk-NIWVKN6A.js} +4 -4
- package/dist/{chunk-SS56XFLI.js → chunk-O4L6RI5S.js} +1 -1
- package/dist/{chunk-3X7D3NV4.js → chunk-OO2XOASJ.js} +13 -13
- package/dist/{chunk-3LVCK2NQ.js → chunk-P2VPYAJZ.js} +7 -7
- package/dist/{chunk-TBMRGMRP.js → chunk-P4CZVRSG.js} +5 -5
- package/dist/{chunk-F6LCSFSU.js → chunk-PBQGXOVX.js} +2 -2
- package/dist/{chunk-YUBXS7YI.js → chunk-PBVP7CFZ.js} +1 -1
- package/dist/{chunk-UQM35MAO.js → chunk-PRWWB4QY.js} +3 -3
- package/dist/{chunk-WPW4HXW4.js → chunk-PX535BHW.js} +3 -3
- package/dist/{chunk-NQUYNPSD.js → chunk-Q4XDPK5B.js} +6 -6
- package/dist/{chunk-AUDUYK5B.js → chunk-Q5ERE4M3.js} +4 -4
- package/dist/{chunk-TLBY3DUK.js → chunk-Q66VOVGN.js} +2 -2
- package/dist/{chunk-FDRQUDFH.js → chunk-R463CTX4.js} +3 -3
- package/dist/{chunk-UCYQNHST.js → chunk-STMAKLLG.js} +2 -2
- package/dist/{chunk-MGBNIDTP.js → chunk-T4643SEW.js} +10 -5
- package/dist/{chunk-JP7FDGGL.js → chunk-TF5RJ5Q2.js} +8 -8
- package/dist/{chunk-2TO7WUKK.js → chunk-THUQVCTI.js} +1 -1
- package/dist/{chunk-WBWDJUF5.js → chunk-TMTN7H46.js} +37 -13
- package/dist/{chunk-ZRDPJORV.js → chunk-TN75NAPU.js} +1 -1
- package/dist/{chunk-2NCTRLVH.js → chunk-TQ3XHHZK.js} +11 -11
- package/dist/{chunk-F3NGZYL2.js → chunk-TUA5XW5Z.js} +2 -2
- package/dist/{chunk-JXACXHRL.js → chunk-UKPMQBU2.js} +6 -6
- package/dist/{chunk-YTXCKIWE.js → chunk-UMRKMF3E.js} +2 -2
- package/dist/{chunk-HT7HEGH3.js → chunk-UP3VFIVQ.js} +2 -2
- package/dist/{chunk-57HPJEZB.js → chunk-V3GEYUBG.js} +11 -11
- package/dist/{chunk-WMJ5M45N.js → chunk-V6YD53NH.js} +2 -2
- package/dist/{chunk-62Q7DN5G.js → chunk-VC2E6KYQ.js} +2 -2
- package/dist/{chunk-WLXAEHKK.js → chunk-VDRLJU6C.js} +9 -9
- package/dist/{chunk-D6MIC5AU.js → chunk-VJE4HA2C.js} +3 -3
- package/dist/{chunk-34IDAA7V.js → chunk-VNDL2E44.js} +3 -3
- package/dist/{chunk-ON4ENPUS.js → chunk-VUYS3SU7.js} +1 -1
- package/dist/{chunk-EZC6ETFW.js → chunk-WP233RH2.js} +2 -2
- package/dist/{chunk-TRBKJ7JT.js → chunk-WWOYFWFB.js} +1 -1
- package/dist/{chunk-34WAGUT5.js → chunk-X7FGBUA4.js} +2 -2
- package/dist/{chunk-SNTLJ646.js → chunk-XQIAXMRY.js} +1 -1
- package/dist/{chunk-X2UP5PNN.js → chunk-YSPIFSDI.js} +8 -8
- package/dist/{chunk-QXPMO2CO.js → chunk-ZFNIHVVA.js} +7 -7
- package/dist/{chunk-UKE7WA3U.js → chunk-ZLYBY3R4.js} +3 -3
- package/dist/{chunk-QXIQB6OF.js → chunk-ZOWEW4GY.js} +3 -3
- package/dist/{chunk-7DMKTJHU.js → chunk-ZTRASVGZ.js} +16 -7
- package/dist/{chunk-GDX3YQGK.js → chunk-ZVGEGDYF.js} +15 -5
- package/dist/core/auth/config.js +14 -0
- package/dist/{auth → core/auth}/email/index.d.ts +1 -0
- package/dist/core/auth/email/index.js +11 -0
- package/dist/core/auth/email/sender.js +7 -0
- package/dist/{auth/core → core/auth}/email/token-generator.js +1 -1
- package/dist/{auth → core/auth}/errors/index.js +2 -2
- package/dist/{auth → core/auth}/index.d.ts +7 -7
- package/dist/{auth → core/auth}/index.js +24 -23
- package/dist/{auth/core → core/auth}/jwt/client.js +1 -1
- package/dist/{auth/core → core/auth}/jwt/cookie.d.ts +1 -1
- package/dist/core/auth/jwt/cookie.js +13 -0
- package/dist/{auth/core → core/auth}/jwt/index.d.ts +1 -1
- package/dist/core/auth/jwt/index.js +20 -0
- package/dist/{auth/core → core/auth}/jwt/types.d.ts +1 -1
- package/dist/{auth/core → core/auth}/jwt/types.js +1 -1
- package/dist/{auth/core → core/auth}/oauth/index.d.ts +5 -3
- package/dist/core/auth/oauth/index.js +45 -0
- package/dist/{auth/core → core/auth}/oauth/providers/github.d.ts +1 -1
- package/dist/{auth/core → core/auth}/oauth/providers/github.js +2 -2
- package/dist/{auth/core → core/auth}/oauth/providers/google.d.ts +1 -1
- package/dist/{auth/core → core/auth}/oauth/providers/google.js +2 -2
- package/dist/{auth/core → core/auth}/oauth/providers/index.js +11 -11
- package/dist/{auth/core → core/auth}/oauth/providers/kakao.d.ts +1 -1
- package/dist/{auth/core → core/auth}/oauth/providers/kakao.js +2 -2
- package/dist/{auth/core → core/auth}/oauth/providers/meta.d.ts +1 -1
- package/dist/{auth/core → core/auth}/oauth/providers/meta.js +2 -2
- package/dist/{auth/core → core/auth}/oauth/providers/microsoft.d.ts +6 -6
- package/dist/{auth/core → core/auth}/oauth/providers/microsoft.js +2 -2
- package/dist/core/auth/oauth/state-cookie.d.ts +28 -0
- package/dist/core/auth/oauth/state-cookie.js +15 -0
- package/dist/{auth/core → core/auth}/password/client-helper.d.ts +3 -3
- package/dist/{auth/core → core/auth}/password/client-helper.js +3 -3
- package/dist/{auth/core → core/auth}/password/index.d.ts +3 -3
- package/dist/{auth/core → core/auth}/password/index.js +2 -2
- package/dist/core/auth/services/email-verification.service.js +10 -0
- package/dist/core/auth/services/index.js +36 -0
- package/dist/core/auth/services/login.service.js +14 -0
- package/dist/core/auth/services/oauth-callback.service.js +14 -0
- package/dist/core/auth/services/password-reset.service.js +10 -0
- package/dist/core/auth/services/register.service.js +10 -0
- package/dist/core/auth/services/token-refresh.service.js +14 -0
- package/dist/{auth → core/auth}/types/index.js +2 -2
- package/dist/core/cache/cache-config.js +15 -0
- package/dist/{cache → core/cache}/cache-defaults.js +2 -2
- package/dist/{cache → core/cache}/cache-env.d.ts +3 -3
- package/dist/{cache → core/cache}/cache-env.js +7 -7
- package/dist/{cache → core/cache}/cache-factory.d.ts +1 -1
- package/dist/core/cache/cache-factory.js +33 -0
- package/dist/{cache → core/cache}/cache-invalidation.d.ts +3 -3
- package/dist/core/cache/cache-invalidation.js +29 -0
- package/dist/{cache → core/cache}/cache-redis.js +10 -10
- package/dist/{cache → core/cache}/cache-types.js +2 -2
- package/dist/core/cache/cache-wrapper.js +27 -0
- package/dist/{cache → core/cache}/cache.d.ts +1 -1
- package/dist/{cache → core/cache}/cache.js +26 -26
- package/dist/{cache → core/cache}/config.d.ts +5 -0
- package/dist/core/cache/config.js +15 -0
- package/dist/core/cache/hybrid-cache-manager.js +18 -0
- package/dist/{cache → core/cache}/index.js +26 -26
- package/dist/core/cache/inmemory-cache-manager.js +12 -0
- package/dist/core/cache/noop-cache-manager.js +14 -0
- package/dist/core/cache/redis-cache-manager.js +16 -0
- package/dist/core/config/common.js +13 -0
- package/dist/core/config/errors.js +7 -0
- package/dist/{config → core/config}/registry.d.ts +1 -1
- package/dist/{config → core/config}/registry.js +2 -2
- package/dist/core/config/warn.js +7 -0
- package/dist/{constants → core/constants}/error-codes.js +2 -2
- package/dist/{constants → core/constants}/index.js +14 -14
- package/dist/{constants → core/constants}/messages.js +2 -2
- package/dist/{constants → core/constants}/pagination.js +2 -2
- package/dist/{constants → core/constants}/security.js +2 -2
- package/dist/{constants → core/constants}/validation.js +2 -2
- package/dist/core/cors/index.js +13 -0
- package/dist/{error → core/error}/app-error.d.ts +2 -2
- package/dist/core/error/app-error.js +10 -0
- package/dist/core/error/extract-error-info.d.ts +11 -0
- package/dist/core/error/extract-error-info.js +7 -0
- package/dist/core/error/friendly-messages-v2.js +15 -0
- package/dist/{error → core/error}/friendly-messages.js +3 -3
- package/dist/core/error/index.d.ts +12 -0
- package/dist/core/error/index.js +59 -0
- package/dist/core/error/messages/en.js +7 -0
- package/dist/{error → core/error}/messages/index.js +4 -4
- package/dist/core/error/messages/ko.js +7 -0
- package/dist/{geolocation → core/geolocation}/batch-processor.d.ts +1 -1
- package/dist/core/geolocation/batch-processor.js +13 -0
- package/dist/{geolocation → core/geolocation}/config.js +4 -4
- package/dist/{geolocation → core/geolocation}/index.d.ts +3 -3
- package/dist/core/geolocation/index.js +40 -0
- package/dist/{geolocation → core/geolocation}/providers/base-provider.d.ts +2 -2
- package/dist/{geolocation → core/geolocation}/providers/base-provider.js +2 -2
- package/dist/{geolocation → core/geolocation}/providers/index.d.ts +1 -1
- package/dist/core/geolocation/providers/index.js +32 -0
- package/dist/{geolocation → core/geolocation}/providers/ip-api-provider.d.ts +2 -2
- package/dist/core/geolocation/providers/ip-api-provider.js +8 -0
- package/dist/{geolocation → core/geolocation}/providers/ipapi-co-provider.d.ts +2 -2
- package/dist/core/geolocation/providers/ipapi-co-provider.js +8 -0
- package/dist/{geolocation → core/geolocation}/providers/ipgeolocation-provider.d.ts +2 -2
- package/dist/core/geolocation/providers/ipgeolocation-provider.js +11 -0
- package/dist/{geolocation → core/geolocation}/providers/maxmind-provider.d.ts +2 -2
- package/dist/core/geolocation/providers/maxmind-provider.js +11 -0
- package/dist/core/logger/config.js +13 -0
- package/dist/{logger → core/logger}/logger.js +5 -5
- package/dist/core/storage/config.js +13 -0
- package/dist/{storage → core/storage}/r2-storage.js +7 -7
- package/dist/core/system/cpu.js +12 -0
- package/dist/core/system/disk.js +12 -0
- package/dist/core/system/environment.js +18 -0
- package/dist/{system → core/system}/health-check.d.ts +1 -1
- package/dist/core/system/health-check.js +15 -0
- package/dist/{system → core/system}/index.js +20 -20
- package/dist/core/system/memory.js +12 -0
- package/dist/core/system/network.js +12 -0
- package/dist/{system → core/system}/utils.js +6 -6
- package/dist/{types → core/types}/env.d.ts +7 -7
- package/dist/{types → core/types}/qr-code.js +2 -2
- package/dist/{utils → core/utils}/error-message-formatter.js +2 -2
- package/dist/{utils → core/utils}/format-number.js +2 -2
- package/dist/core/utils/index.d.ts +9 -0
- package/dist/core/utils/index.js +71 -0
- package/dist/{utils → core/utils}/input-validation.js +2 -2
- package/dist/{utils → core/utils}/ip-utils.js +2 -2
- package/dist/{utils → core/utils}/optimistic-lock.js +4 -4
- package/dist/{utils → core/utils}/sanitizer.js +2 -2
- package/dist/{utils → core/utils}/short-code-generator.js +2 -2
- package/dist/{utils → core/utils}/timezone.js +2 -2
- package/dist/{utils → core/utils}/type-guards.js +2 -2
- package/dist/{utils → core/utils}/url-normalizer.js +2 -2
- package/dist/{validators → core/validators}/index.js +2 -2
- package/dist/{validators → core/validators}/password-validator.js +2 -2
- package/dist/initialize.d.ts +10 -10
- package/dist/initialize.js +15 -15
- package/dist/{auth/handlers → next/auth-handlers}/forgot-password.handler.d.ts +1 -1
- package/dist/next/auth-handlers/forgot-password.handler.js +11 -0
- package/dist/{auth/handlers → next/auth-handlers}/index.d.ts +1 -1
- package/dist/{auth/handlers → next/auth-handlers}/index.js +43 -42
- package/dist/{auth/handlers → next/auth-handlers}/login.handler.d.ts +1 -1
- package/dist/next/auth-handlers/login.handler.js +14 -0
- package/dist/{auth/handlers → next/auth-handlers}/logout.handler.d.ts +1 -1
- package/dist/next/auth-handlers/logout.handler.js +12 -0
- package/dist/{auth/handlers → next/auth-handlers}/me.handler.d.ts +1 -1
- package/dist/next/auth-handlers/me.handler.js +14 -0
- package/dist/{auth/handlers → next/auth-handlers}/oauth-authorize.handler.d.ts +1 -1
- package/dist/next/auth-handlers/oauth-authorize.handler.js +17 -0
- package/dist/{auth/handlers → next/auth-handlers}/oauth-callback.handler.d.ts +1 -1
- package/dist/next/auth-handlers/oauth-callback.handler.js +24 -0
- package/dist/{auth/handlers → next/auth-handlers}/refresh.handler.d.ts +1 -1
- package/dist/next/auth-handlers/refresh.handler.js +15 -0
- package/dist/{auth/handlers → next/auth-handlers}/register.handler.d.ts +1 -1
- package/dist/next/auth-handlers/register.handler.js +11 -0
- package/dist/{auth/handlers → next/auth-handlers}/reset-password.handler.d.ts +1 -1
- package/dist/next/auth-handlers/reset-password.handler.js +11 -0
- package/dist/{auth/handlers → next/auth-handlers}/verify-email.handler.d.ts +1 -1
- package/dist/next/auth-handlers/verify-email.handler.js +11 -0
- package/dist/{auth/types → next/auth-types}/handler-types.d.ts +1 -1
- package/dist/next/auth-types/handler-types.js +1 -0
- package/dist/next/auth-types/index.d.ts +7 -0
- package/dist/next/auth-types/index.js +1 -0
- package/dist/next/error/error-handler.js +24 -0
- package/dist/next/error/index.d.ts +9 -0
- package/dist/{error → next/error}/index.js +19 -74
- package/dist/{error/core → next/error}/locale-detector.d.ts +1 -1
- package/dist/{error/core → next/error}/locale-detector.js +1 -1
- package/dist/{middleware → next/middleware}/auth.d.ts +2 -2
- package/dist/next/middleware/auth.js +28 -0
- package/dist/{middleware → next/middleware}/cors.d.ts +1 -1
- package/dist/next/middleware/cors.js +16 -0
- package/dist/next/middleware/error-handler.js +18 -0
- package/dist/{middleware → next/middleware}/index.js +29 -29
- package/dist/next/middleware/init-request.js +8 -0
- package/dist/next/middleware/middleware-chain.js +11 -0
- package/dist/{middleware → next/middleware}/rate-limit.d.ts +1 -1
- package/dist/next/middleware/rate-limit.js +17 -0
- package/dist/next/middleware/response-logger.js +11 -0
- package/dist/next/middleware/security.js +15 -0
- package/dist/{middleware → next/middleware}/types.d.ts +1 -1
- package/dist/next/middleware/wrappers.js +40 -0
- package/dist/{utils → next/utils}/api-helpers.js +3 -3
- package/dist/{utils → next/utils}/cors.js +6 -6
- package/dist/{utils → next/utils}/csv-export.js +6 -6
- package/dist/{utils → next/utils}/error-processor.d.ts +1 -1
- package/dist/{utils → next/utils}/error-processor.js +8 -8
- package/dist/{utils → next/utils}/index.d.ts +2 -5
- package/dist/{utils → next/utils}/index.js +13 -81
- package/dist/{auth/adapters/prisma → prisma/auth-adapter}/index.d.ts +1 -1
- package/dist/{auth/adapters/prisma → prisma/auth-adapter}/index.js +2 -2
- package/dist/react/components/ui/Alert.js +10 -0
- package/dist/react/components/ui/Badge.js +8 -0
- package/dist/react/components/ui/Button.js +8 -0
- package/dist/react/components/ui/DataTable.js +22 -0
- package/dist/{components → react/components}/ui/DomainDisplay.js +2 -2
- package/dist/react/components/ui/Input.js +8 -0
- package/dist/react/components/ui/Label.js +8 -0
- package/dist/{components → react/components}/ui/Pagination.js +3 -3
- package/dist/{components → react/components}/ui/Select.js +3 -3
- package/dist/react/components/ui/Skeleton.js +8 -0
- package/dist/{components → react/components}/ui/TimezoneDisplay.js +7 -7
- package/dist/{components → react/components}/ui/Tooltip.js +3 -3
- package/dist/react/components/ui/data-table/DataTable.js +22 -0
- package/dist/react/components/ui/data-table/DataTableBody.js +10 -0
- package/dist/react/components/ui/data-table/DataTableBulkActions.js +12 -0
- package/dist/react/components/ui/data-table/DataTableFilters.js +13 -0
- package/dist/react/components/ui/data-table/DataTablePagination.js +11 -0
- package/dist/react/components/ui/data-table/DataTableSearch.js +12 -0
- package/dist/react/components/ui/data-table/index.js +42 -0
- package/dist/{components → react/components}/ui/data-table/types.d.ts +5 -0
- package/dist/{components → react/components}/ui/data-table/types.js +2 -2
- package/dist/{components → react/components}/ui/loading-bar.js +3 -3
- package/dist/{error → react/error}/error-display.d.ts +2 -9
- package/dist/{error → react/error}/error-display.js +11 -9
- package/dist/react/error/index.d.ts +6 -0
- package/dist/react/error/index.js +30 -0
- package/dist/{hooks → react/hooks}/useDataTable.js +3 -3
- package/dist/react/hooks/useDebounce.js +7 -0
- package/dist/{hooks → react/hooks}/useExitIntent.js +2 -2
- package/dist/{hooks → react/hooks}/useTimezone.js +3 -3
- package/dist/{utils/client → react/utils}/client-utils.js +1 -1
- package/dist/{utils/client → react/utils}/qr-code.d.ts +1 -1
- package/dist/{utils/client → react/utils}/qr-code.js +1 -1
- package/package.json +146 -95
- package/dist/auth/config.js +0 -14
- package/dist/auth/core/jwt/cookie.js +0 -13
- package/dist/auth/core/jwt/index.js +0 -20
- package/dist/auth/core/oauth/index.js +0 -33
- package/dist/auth/email/index.js +0 -7
- package/dist/auth/email/sender.js +0 -7
- package/dist/auth/handlers/forgot-password.handler.js +0 -11
- package/dist/auth/handlers/login.handler.js +0 -14
- package/dist/auth/handlers/logout.handler.js +0 -12
- package/dist/auth/handlers/me.handler.js +0 -14
- package/dist/auth/handlers/oauth-authorize.handler.js +0 -16
- package/dist/auth/handlers/oauth-callback.handler.js +0 -23
- package/dist/auth/handlers/refresh.handler.js +0 -15
- package/dist/auth/handlers/register.handler.js +0 -11
- package/dist/auth/handlers/reset-password.handler.js +0 -11
- package/dist/auth/handlers/verify-email.handler.js +0 -11
- package/dist/auth/services/email-verification.service.js +0 -10
- package/dist/auth/services/index.js +0 -36
- package/dist/auth/services/login.service.js +0 -14
- package/dist/auth/services/oauth-callback.service.js +0 -14
- package/dist/auth/services/password-reset.service.js +0 -10
- package/dist/auth/services/register.service.js +0 -10
- package/dist/auth/services/token-refresh.service.js +0 -14
- package/dist/cache/cache-config.js +0 -15
- package/dist/cache/cache-factory.js +0 -33
- package/dist/cache/cache-invalidation.js +0 -29
- package/dist/cache/cache-wrapper.js +0 -27
- package/dist/cache/config.js +0 -13
- package/dist/cache/hybrid-cache-manager.js +0 -18
- package/dist/cache/inmemory-cache-manager.js +0 -12
- package/dist/cache/noop-cache-manager.js +0 -14
- package/dist/cache/redis-cache-manager.js +0 -16
- package/dist/components/ui/Alert.js +0 -10
- package/dist/components/ui/Badge.js +0 -8
- package/dist/components/ui/Button.js +0 -8
- package/dist/components/ui/DataTable.js +0 -22
- package/dist/components/ui/Input.js +0 -8
- package/dist/components/ui/Label.js +0 -8
- package/dist/components/ui/Skeleton.js +0 -8
- package/dist/components/ui/WorldMapChart.d.ts +0 -17
- package/dist/components/ui/WorldMapChart.js +0 -250
- package/dist/components/ui/data-table/DataTable.js +0 -22
- package/dist/components/ui/data-table/DataTableBody.js +0 -10
- package/dist/components/ui/data-table/DataTableBulkActions.js +0 -12
- package/dist/components/ui/data-table/DataTableFilters.js +0 -13
- package/dist/components/ui/data-table/DataTablePagination.js +0 -11
- package/dist/components/ui/data-table/DataTableSearch.js +0 -12
- package/dist/components/ui/data-table/index.js +0 -42
- package/dist/config/common.js +0 -13
- package/dist/config/errors.js +0 -7
- package/dist/config/warn.js +0 -7
- package/dist/error/app-error.js +0 -10
- package/dist/error/error-handler.js +0 -24
- package/dist/error/friendly-messages-v2.js +0 -15
- package/dist/error/index.d.ts +0 -22
- package/dist/error/messages/en.js +0 -7
- package/dist/error/messages/ko.js +0 -7
- package/dist/geolocation/batch-processor.js +0 -13
- package/dist/geolocation/index.js +0 -40
- package/dist/geolocation/providers/index.js +0 -32
- package/dist/geolocation/providers/ip-api-provider.js +0 -8
- package/dist/geolocation/providers/ipapi-co-provider.js +0 -8
- package/dist/geolocation/providers/ipgeolocation-provider.js +0 -11
- package/dist/geolocation/providers/maxmind-provider.js +0 -11
- package/dist/hooks/useDebounce.js +0 -7
- package/dist/logger/config.js +0 -13
- package/dist/middleware/auth.js +0 -28
- package/dist/middleware/cors-config.js +0 -13
- package/dist/middleware/cors.js +0 -16
- package/dist/middleware/error-handler.js +0 -18
- package/dist/middleware/init-request.js +0 -8
- package/dist/middleware/middleware-chain.js +0 -11
- package/dist/middleware/rate-limit.js +0 -17
- package/dist/middleware/response-logger.js +0 -11
- package/dist/middleware/security.js +0 -15
- package/dist/middleware/wrappers.js +0 -40
- package/dist/storage/config.js +0 -13
- package/dist/system/cpu.js +0 -12
- package/dist/system/disk.js +0 -12
- package/dist/system/environment.js +0 -18
- package/dist/system/health-check.js +0 -15
- package/dist/system/memory.js +0 -12
- package/dist/system/network.js +0 -12
- package/dist/world_countries-C2WUL2CQ.js +0 -279
- /package/dist/{auth/types/handler-types.js → chunk-7PEVOMBO.js} +0 -0
- /package/dist/{chunk-6CLQRZC2.js → chunk-CDALZTPN.js} +0 -0
- /package/dist/{chunk-EBUEBEJX.js → chunk-HH4ZKZHD.js} +0 -0
- /package/dist/{chunk-R4SXQYIT.js → chunk-M22Z2NO6.js} +0 -0
- /package/dist/{auth → core/auth}/config.d.ts +0 -0
- /package/dist/{auth → core/auth}/email/sender.d.ts +0 -0
- /package/dist/{auth/core → core/auth}/email/token-generator.d.ts +0 -0
- /package/dist/{auth → core/auth}/errors/index.d.ts +0 -0
- /package/dist/{auth/core → core/auth}/jwt/client.d.ts +0 -0
- /package/dist/{auth/core → core/auth}/oauth/providers/index.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/email-verification.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/index.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/login.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/oauth-callback.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/password-reset.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/register.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/services/token-refresh.service.d.ts +0 -0
- /package/dist/{auth → core/auth}/types/index.d.ts +0 -0
- /package/dist/{cache → core/cache}/cache-config.d.ts +0 -0
- /package/dist/{cache → core/cache}/cache-defaults.d.ts +0 -0
- /package/dist/{cache → core/cache}/cache-redis.d.ts +0 -0
- /package/dist/{cache → core/cache}/cache-types.d.ts +0 -0
- /package/dist/{cache → core/cache}/cache-wrapper.d.ts +0 -0
- /package/dist/{cache → core/cache}/hybrid-cache-manager.d.ts +0 -0
- /package/dist/{cache → core/cache}/index.d.ts +0 -0
- /package/dist/{cache → core/cache}/inmemory-cache-manager.d.ts +0 -0
- /package/dist/{cache → core/cache}/noop-cache-manager.d.ts +0 -0
- /package/dist/{cache → core/cache}/redis-cache-manager.d.ts +0 -0
- /package/dist/{config → core/config}/common.d.ts +0 -0
- /package/dist/{config → core/config}/errors.d.ts +0 -0
- /package/dist/{config → core/config}/warn.d.ts +0 -0
- /package/dist/{constants → core/constants}/error-codes.d.ts +0 -0
- /package/dist/{constants → core/constants}/index.d.ts +0 -0
- /package/dist/{constants → core/constants}/messages.d.ts +0 -0
- /package/dist/{constants → core/constants}/pagination.d.ts +0 -0
- /package/dist/{constants → core/constants}/security.d.ts +0 -0
- /package/dist/{constants → core/constants}/validation.d.ts +0 -0
- /package/dist/{middleware/cors-config.d.ts → core/cors/index.d.ts} +0 -0
- /package/dist/{error → core/error}/friendly-messages-v2.d.ts +0 -0
- /package/dist/{error → core/error}/friendly-messages.d.ts +0 -0
- /package/dist/{error → core/error}/messages/en.d.ts +0 -0
- /package/dist/{error → core/error}/messages/index.d.ts +0 -0
- /package/dist/{error → core/error}/messages/ko.d.ts +0 -0
- /package/dist/{error → core/error}/messages/types.d.ts +0 -0
- /package/dist/{error → core/error}/messages/types.js +0 -0
- /package/dist/{geolocation → core/geolocation}/config.d.ts +0 -0
- /package/dist/{logger → core/logger}/config.d.ts +0 -0
- /package/dist/{logger → core/logger}/logger.d.ts +0 -0
- /package/dist/{storage → core/storage}/config.d.ts +0 -0
- /package/dist/{storage → core/storage}/r2-storage.d.ts +0 -0
- /package/dist/{system → core/system}/cpu.d.ts +0 -0
- /package/dist/{system → core/system}/disk.d.ts +0 -0
- /package/dist/{system → core/system}/environment.d.ts +0 -0
- /package/dist/{system → core/system}/index.d.ts +0 -0
- /package/dist/{system → core/system}/memory.d.ts +0 -0
- /package/dist/{system → core/system}/network.d.ts +0 -0
- /package/dist/{system → core/system}/types.d.ts +0 -0
- /package/dist/{middleware → core/system}/types.js +0 -0
- /package/dist/{system → core/system}/utils.d.ts +0 -0
- /package/dist/{types → core/types}/api.d.ts +0 -0
- /package/dist/{types → core/types}/api.js +0 -0
- /package/dist/{types → core/types}/database.d.ts +0 -0
- /package/dist/{types → core/types}/database.js +0 -0
- /package/dist/{types → core/types}/env.js +0 -0
- /package/dist/{types → core/types}/geoip.d.ts +0 -0
- /package/dist/{types → core/types}/geoip.js +0 -0
- /package/dist/{types → core/types}/i18n.d.ts +0 -0
- /package/dist/{types → core/types}/i18n.js +0 -0
- /package/dist/{types → core/types}/qr-code.d.ts +0 -0
- /package/dist/{types → core/types}/user.d.ts +0 -0
- /package/dist/{types → core/types}/user.js +0 -0
- /package/dist/{utils → core/utils}/error-message-formatter.d.ts +0 -0
- /package/dist/{utils → core/utils}/format-number.d.ts +0 -0
- /package/dist/{utils → core/utils}/input-validation.d.ts +0 -0
- /package/dist/{utils → core/utils}/ip-utils.d.ts +0 -0
- /package/dist/{utils → core/utils}/optimistic-lock.d.ts +0 -0
- /package/dist/{utils → core/utils}/sanitizer.d.ts +0 -0
- /package/dist/{utils → core/utils}/short-code-generator.d.ts +0 -0
- /package/dist/{utils → core/utils}/timezone.d.ts +0 -0
- /package/dist/{utils → core/utils}/type-guards.d.ts +0 -0
- /package/dist/{utils → core/utils}/url-normalizer.d.ts +0 -0
- /package/dist/{validators → core/validators}/index.d.ts +0 -0
- /package/dist/{validators → core/validators}/password-validator.d.ts +0 -0
- /package/dist/{error → next/error}/ErrorBoundary.d.ts +0 -0
- /package/dist/{error → next/error}/error-handler.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/error-handler.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/index.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/init-request.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/middleware-chain.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/response-logger.d.ts +0 -0
- /package/dist/{middleware → next/middleware}/security.d.ts +0 -0
- /package/dist/{system → next/middleware}/types.js +0 -0
- /package/dist/{middleware → next/middleware}/wrappers.d.ts +0 -0
- /package/dist/{utils → next/utils}/api-helpers.d.ts +0 -0
- /package/dist/{utils → next/utils}/cors.d.ts +0 -0
- /package/dist/{utils → next/utils}/csv-export.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Alert.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Badge.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Button.d.ts +0 -0
- /package/dist/{components → react/components}/ui/DataTable.d.ts +0 -0
- /package/dist/{components → react/components}/ui/DomainDisplay.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Input.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Label.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Pagination.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Select.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Skeleton.d.ts +0 -0
- /package/dist/{components → react/components}/ui/TimezoneDisplay.d.ts +0 -0
- /package/dist/{components → react/components}/ui/Tooltip.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTable.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTableBody.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTableBulkActions.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTableFilters.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTablePagination.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/DataTableSearch.d.ts +0 -0
- /package/dist/{components → react/components}/ui/data-table/index.d.ts +0 -0
- /package/dist/{components → react/components}/ui/loading-bar.d.ts +0 -0
- /package/dist/{hooks → react/hooks}/useDataTable.d.ts +0 -0
- /package/dist/{hooks → react/hooks}/useDebounce.d.ts +0 -0
- /package/dist/{hooks → react/hooks}/useExitIntent.d.ts +0 -0
- /package/dist/{hooks → react/hooks}/useTimezone.d.ts +0 -0
- /package/dist/{utils/client → react/utils}/client-utils.d.ts +0 -0
package/README.md
CHANGED
|
@@ -4,18 +4,20 @@ Shared utility library for [withwiz](https://github.com/greeun) projects — a c
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
7
|
+
- **Composition root** — 단일 `initialize()`로 모든 티어 설정을 한 번에 조립
|
|
8
|
+
- **Framework tiers** — `core` / `next` / `react` / `prisma` 4개 티어로 의존성 분리 (0.7+)
|
|
9
|
+
- **Auth** — JWT, password hashing, OAuth helpers (Google / GitHub / Kakao / Microsoft / Meta), state-cookie CSRF 바인딩, Prisma adapter
|
|
10
|
+
- **Cache** — Redis / in-memory / hybrid / noop 백엔드, factory, invalidation, defaults
|
|
9
11
|
- **Constants** — Error codes, messages, pagination, security constants
|
|
10
|
-
- **Error** — Typed `AppError`,
|
|
12
|
+
- **Error** — Typed `AppError`, framework-aware error handler / display (core · next · react)
|
|
11
13
|
- **Geolocation** — GeoIP lookup, batch processing, provider factory
|
|
12
14
|
- **Hooks** — `useDataTable`, `useDebounce`, `useExitIntent`, `useTimezone`
|
|
13
15
|
- **Logger** — Winston-based structured logger with daily rotation
|
|
14
|
-
- **Middleware** — Auth, rate-limiting, CORS, security middleware wrappers
|
|
16
|
+
- **Middleware** — Auth, rate-limiting, CORS, security middleware wrappers (Next.js)
|
|
15
17
|
- **Storage** — Cloudflare R2 (AWS S3-compatible) storage
|
|
16
|
-
- **System** — Health check
|
|
18
|
+
- **System** — Health check, system monitoring
|
|
17
19
|
- **Types** — Shared TypeScript types (API, DB, env, GeoIP, user, i18n, QR)
|
|
18
|
-
- **Utils** — Sanitizer,
|
|
20
|
+
- **Utils** — Sanitizer, type-guards, CSV export, URL normalizer, timezone, IP utils, ...
|
|
19
21
|
- **Validators** — Password strength validator
|
|
20
22
|
|
|
21
23
|
## Installation
|
|
@@ -28,17 +30,26 @@ pnpm add @withwiz/toolkit
|
|
|
28
30
|
yarn add @withwiz/toolkit
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
### Peer dependencies
|
|
33
|
+
### Peer dependencies (optional)
|
|
34
|
+
|
|
35
|
+
`next` / `react` / `react-dom` 은 **optional** peer입니다 — 사용하는 티어가 요구하는 peer만 설치하세요.
|
|
32
36
|
|
|
33
37
|
```bash
|
|
34
|
-
|
|
38
|
+
# next 티어를 쓸 때
|
|
39
|
+
npm install next
|
|
40
|
+
|
|
41
|
+
# react 티어를 쓸 때
|
|
42
|
+
npm install react react-dom
|
|
43
|
+
|
|
44
|
+
# core 티어만 쓰는 백엔드 / CLI
|
|
45
|
+
# (별도 peer 설치 불필요)
|
|
35
46
|
```
|
|
36
47
|
|
|
37
48
|
## Quick start
|
|
38
49
|
|
|
39
50
|
```ts
|
|
40
51
|
// Auth — JWT
|
|
41
|
-
import { signToken, verifyToken } from '@withwiz/toolkit/auth/
|
|
52
|
+
import { signToken, verifyToken } from '@withwiz/toolkit/core/auth/jwt'
|
|
42
53
|
|
|
43
54
|
const token = await signToken({ userId: 'u_123' })
|
|
44
55
|
const payload = await verifyToken(token)
|
|
@@ -46,21 +57,21 @@ const payload = await verifyToken(token)
|
|
|
46
57
|
|
|
47
58
|
```ts
|
|
48
59
|
// Cache — Redis wrapper
|
|
49
|
-
import { withCache } from '@withwiz/toolkit/cache'
|
|
60
|
+
import { withCache } from '@withwiz/toolkit/core/cache'
|
|
50
61
|
|
|
51
62
|
const data = await withCache('my-key', async () => fetchData(), 3600)
|
|
52
63
|
```
|
|
53
64
|
|
|
54
65
|
```ts
|
|
55
66
|
// Error — typed error class
|
|
56
|
-
import { AppError } from '@withwiz/toolkit/error'
|
|
67
|
+
import { AppError } from '@withwiz/toolkit/core/error'
|
|
57
68
|
|
|
58
69
|
throw new AppError('NOT_FOUND', 'Resource not found', 404)
|
|
59
70
|
```
|
|
60
71
|
|
|
61
72
|
```ts
|
|
62
73
|
// Logger
|
|
63
|
-
import { logInfo, logError } from '@withwiz/toolkit/logger/logger'
|
|
74
|
+
import { logInfo, logError } from '@withwiz/toolkit/core/logger/logger'
|
|
64
75
|
|
|
65
76
|
logInfo('Server started', { port: 3000 })
|
|
66
77
|
logError('Something went wrong', { error })
|
|
@@ -68,7 +79,7 @@ logError('Something went wrong', { error })
|
|
|
68
79
|
|
|
69
80
|
```ts
|
|
70
81
|
// Geolocation
|
|
71
|
-
import { getGeoLocation } from '@withwiz/toolkit/geolocation'
|
|
82
|
+
import { getGeoLocation } from '@withwiz/toolkit/core/geolocation'
|
|
72
83
|
|
|
73
84
|
const geo = await getGeoLocation('8.8.8.8')
|
|
74
85
|
// { country: 'US', city: 'Mountain View', ... }
|
|
@@ -76,68 +87,99 @@ const geo = await getGeoLocation('8.8.8.8')
|
|
|
76
87
|
|
|
77
88
|
```tsx
|
|
78
89
|
// Hooks (React)
|
|
79
|
-
import { useDebounce } from '@withwiz/toolkit/hooks/useDebounce'
|
|
90
|
+
import { useDebounce } from '@withwiz/toolkit/react/hooks/useDebounce'
|
|
80
91
|
|
|
81
92
|
const debouncedQuery = useDebounce(query, 300)
|
|
82
93
|
```
|
|
83
94
|
|
|
84
95
|
```ts
|
|
85
96
|
// Utils
|
|
86
|
-
import { sanitizeInput } from '@withwiz/toolkit/utils/sanitizer'
|
|
87
|
-
import { formatNumber } from '@withwiz/toolkit/utils/format-number'
|
|
88
|
-
import { normalizeUrl } from '@withwiz/toolkit/utils/url-normalizer'
|
|
97
|
+
import { sanitizeInput } from '@withwiz/toolkit/core/utils/sanitizer'
|
|
98
|
+
import { formatNumber } from '@withwiz/toolkit/core/utils/format-number'
|
|
99
|
+
import { normalizeUrl } from '@withwiz/toolkit/core/utils/url-normalizer'
|
|
89
100
|
```
|
|
90
101
|
|
|
91
102
|
## Module reference
|
|
92
103
|
|
|
104
|
+
0.7부터 모든 subpath는 프레임워크 의존성에 따라 4개 티어로 분리됩니다.
|
|
105
|
+
자세한 티어 모델·규칙·마이그레이션 매핑은 [`docs/FRAMEWORK_TIERS.md`](docs/FRAMEWORK_TIERS.md)
|
|
106
|
+
및 [`CHANGELOG.md`](CHANGELOG.md) 의 0.7.0 항목을 참조하세요.
|
|
107
|
+
|
|
108
|
+
### Composition root
|
|
109
|
+
|
|
110
|
+
| Subpath | Description |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `/initialize` | 모든 티어 설정을 단일 객체로 조립하는 통합 진입점 |
|
|
113
|
+
|
|
114
|
+
### `core` — 프레임워크 독립 (pure TS)
|
|
115
|
+
|
|
116
|
+
| Subpath | Description |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `/core/auth` | Full auth (JWT + password + OAuth + services + email + types) |
|
|
119
|
+
| `/core/auth/jwt` | JWT sign / verify |
|
|
120
|
+
| `/core/auth/password` | bcrypt helpers |
|
|
121
|
+
| `/core/auth/oauth` | OAuth utilities (Google / GitHub / Kakao / Microsoft / Meta) |
|
|
122
|
+
| `/core/auth/oauth/providers/{google,github,kakao,microsoft,meta}` | Individual OAuth providers |
|
|
123
|
+
| `/core/auth/services` | Login / token-refresh / oauth-callback services |
|
|
124
|
+
| `/core/auth/email` | Email token generation |
|
|
125
|
+
| `/core/auth/types` | Framework-independent auth types |
|
|
126
|
+
| `/core/cache` | Cache facade (get / set / delete / withCache) |
|
|
127
|
+
| `/core/cache/cache-factory` | Cache backend factory (Redis / in-memory / hybrid / noop) |
|
|
128
|
+
| `/core/cache/cache-invalidation` | Pattern-based cache invalidation |
|
|
129
|
+
| `/core/config` | Config registry |
|
|
130
|
+
| `/core/constants/{error-codes,messages,pagination,security}` | Shared constants |
|
|
131
|
+
| `/core/cors` | Framework-independent CORS config |
|
|
132
|
+
| `/core/error` | `AppError`, error codes, i18n messages, `extractErrorInfo` |
|
|
133
|
+
| `/core/geolocation` | GeoIP lookup, batch processor, provider factory |
|
|
134
|
+
| `/core/logger/logger` | Winston-based structured logger |
|
|
135
|
+
| `/core/storage` | Cloudflare R2 / S3-compatible storage |
|
|
136
|
+
| `/core/system` | Health check, system monitoring |
|
|
137
|
+
| `/core/types/{api,database,env,geoip,i18n,qr-code,user}` | Shared TypeScript types |
|
|
138
|
+
| `/core/utils` | `sanitizer`, `type-guards`, `format-number`, `ip-utils`, `timezone`, ... |
|
|
139
|
+
| `/core/validators` | Password strength validator |
|
|
140
|
+
|
|
141
|
+
### `next` — Next.js 의존
|
|
142
|
+
|
|
93
143
|
| Subpath | Description |
|
|
94
144
|
|---|---|
|
|
95
|
-
| `/
|
|
96
|
-
| `/auth
|
|
97
|
-
| `/auth
|
|
98
|
-
| `/
|
|
99
|
-
| `/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
|
104
|
-
|
|
105
|
-
| `/
|
|
106
|
-
| `/
|
|
107
|
-
| `/
|
|
108
|
-
| `/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
|
113
|
-
|
|
114
|
-
| `/
|
|
115
|
-
| `/middleware` | Next.js middleware helpers |
|
|
116
|
-
| `/middleware/auth` | Auth middleware |
|
|
117
|
-
| `/middleware/rate-limit` | Rate limiting middleware |
|
|
118
|
-
| `/middleware/cors` | CORS middleware |
|
|
119
|
-
| `/middleware/security` | Security headers middleware |
|
|
120
|
-
| `/storage` | Cloudflare R2 / S3 storage client |
|
|
121
|
-
| `/system/health-check` | Health check handler |
|
|
122
|
-
| `/types/api` | API response types |
|
|
123
|
-
| `/types/database` | Database entity types |
|
|
124
|
-
| `/types/env` | Environment variable types |
|
|
125
|
-
| `/types/user` | User types |
|
|
126
|
-
| `/types/geoip` | GeoIP types |
|
|
127
|
-
| `/utils` | All utility functions |
|
|
128
|
-
| `/utils/sanitizer` | Input sanitization |
|
|
129
|
-
| `/utils/url-normalizer` | URL normalization |
|
|
130
|
-
| `/utils/timezone` | Timezone formatting helpers |
|
|
131
|
-
| `/utils/csv-export` | CSV export helper |
|
|
132
|
-
| `/validators/password-validator` | Password strength validator |
|
|
145
|
+
| `/next/middleware` | Auth · rate-limit · CORS · security · wrappers |
|
|
146
|
+
| `/next/auth-handlers` | Route handlers (login / refresh / oauth callback / me) |
|
|
147
|
+
| `/next/auth-types` | Handler types (`NextRequest` signatures) |
|
|
148
|
+
| `/next/error` | `error-handler` (NextResponse), `LocaleDetector`, `ErrorBoundary` |
|
|
149
|
+
| `/next/utils` | `api-helpers`, `cors`, `csv-export`, `error-processor` |
|
|
150
|
+
|
|
151
|
+
### `react` — React 의존
|
|
152
|
+
|
|
153
|
+
| Subpath | Description |
|
|
154
|
+
|---|---|
|
|
155
|
+
| `/react/components/ui/*` | Button, Table, Badge, DataTable, ... |
|
|
156
|
+
| `/react/hooks/{useDataTable,useDebounce,useExitIntent,useTimezone}` | React hooks |
|
|
157
|
+
| `/react/error` | `error-display` (sonner toast) |
|
|
158
|
+
| `/react/utils/{client-utils,qr-code}` | Browser-context utilities |
|
|
159
|
+
|
|
160
|
+
### `prisma` — Prisma 의존
|
|
161
|
+
|
|
162
|
+
| Subpath | Description |
|
|
163
|
+
|---|---|
|
|
164
|
+
| `/prisma/auth-adapter` | `UserRepository` / `OAuthAccountRepository` / `EmailTokenRepository` Prisma 구현체 |
|
|
133
165
|
|
|
134
166
|
## Requirements
|
|
135
167
|
|
|
136
168
|
- Node.js >= 18
|
|
137
|
-
- Next.js >= 14
|
|
138
|
-
- React >= 18
|
|
139
169
|
- TypeScript >= 5
|
|
140
170
|
|
|
171
|
+
### Optional peers
|
|
172
|
+
|
|
173
|
+
`next` / `react` / `react-dom` 은 `optional` peer dependency입니다.
|
|
174
|
+
사용하는 티어가 요구하는 peer만 설치하세요:
|
|
175
|
+
|
|
176
|
+
- `core` 티어만 쓰는 백엔드 / CLI: peer 불필요
|
|
177
|
+
- `next` 티어: Next.js >= 15
|
|
178
|
+
- `react` 티어: React >= 18, React-DOM >= 18
|
|
179
|
+
- `prisma` 티어: Prisma 호환 클라이언트 (덕 타이핑)
|
|
180
|
+
- Prisma 어댑터의 `EmailTokenRepository` 등 일부 모듈: `date-fns >= 3` (optional)
|
|
181
|
+
- 이메일 전송: `nodemailer >= 6` (optional)
|
|
182
|
+
|
|
141
183
|
## Development
|
|
142
184
|
|
|
143
185
|
```bash
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getAuthConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UKPMQBU2.js";
|
|
4
4
|
import {
|
|
5
5
|
__spreadValues
|
|
6
6
|
} from "./chunk-ORMEWXMH.js";
|
|
7
7
|
|
|
8
|
-
// src/auth/
|
|
8
|
+
// src/core/auth/jwt/cookie.ts
|
|
9
9
|
function getDefaultOptions() {
|
|
10
10
|
let secure = false;
|
|
11
11
|
try {
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ATAQRXTH.js";
|
|
4
|
+
import {
|
|
5
|
+
logger
|
|
6
|
+
} from "./chunk-KG65BFPK.js";
|
|
7
|
+
import {
|
|
8
|
+
AuthError
|
|
9
|
+
} from "./chunk-5GWGARXI.js";
|
|
4
10
|
import {
|
|
5
11
|
ERROR_CODES,
|
|
6
12
|
classifyError,
|
|
7
13
|
formatErrorMessage,
|
|
8
14
|
getHttpStatus
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import {
|
|
11
|
-
AuthError
|
|
12
|
-
} from "./chunk-AIH3F7JV.js";
|
|
13
|
-
import {
|
|
14
|
-
logger
|
|
15
|
-
} from "./chunk-NOAU2JG7.js";
|
|
15
|
+
} from "./chunk-XQIAXMRY.js";
|
|
16
16
|
import {
|
|
17
17
|
__spreadProps,
|
|
18
18
|
__spreadValues
|
|
19
19
|
} from "./chunk-ORMEWXMH.js";
|
|
20
20
|
|
|
21
|
-
// src/error/error-handler.ts
|
|
21
|
+
// src/next/error/error-handler.ts
|
|
22
22
|
import { NextResponse } from "next/server";
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
var AUTH_ERROR_CODE_MAP = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LoadingBar
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-X7FGBUA4.js";
|
|
4
4
|
import {
|
|
5
5
|
cn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4K76HG4V.js";
|
|
7
7
|
|
|
8
|
-
// src/components/ui/data-table/DataTableBody.tsx
|
|
8
|
+
// src/react/components/ui/data-table/DataTableBody.tsx
|
|
9
9
|
import { useRef, useEffect } from "react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
function DataTableBody({
|
|
@@ -31,7 +31,7 @@ function DataTableBody({
|
|
|
31
31
|
}, [localSelectedIds, data.length]);
|
|
32
32
|
return /* @__PURE__ */ jsx("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "overflow-x-auto max-w-full", children: /* @__PURE__ */ jsxs("table", { className: "w-full text-sm min-w-full", children: [
|
|
33
33
|
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { className: "border-b bg-muted/50", children: [
|
|
34
|
-
selectable && /* @__PURE__ */ jsx("th", { className: "px-
|
|
34
|
+
selectable && /* @__PURE__ */ jsx("th", { className: "px-3 py-2 text-center font-medium w-12", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
35
35
|
"input",
|
|
36
36
|
{
|
|
37
37
|
"data-testid": "select-all-checkbox",
|
|
@@ -41,16 +41,15 @@ function DataTableBody({
|
|
|
41
41
|
onChange: (e) => onSelectAll(e.target.checked),
|
|
42
42
|
className: "h-4 w-4"
|
|
43
43
|
}
|
|
44
|
-
) }),
|
|
44
|
+
) }) }),
|
|
45
45
|
visibleColumns.map((column) => {
|
|
46
46
|
var _a, _b, _c, _d;
|
|
47
47
|
const width = column.width === "auto" ? void 0 : column.width;
|
|
48
|
-
const minWidth = column.minWidth;
|
|
49
48
|
return /* @__PURE__ */ jsx(
|
|
50
49
|
"th",
|
|
51
50
|
{
|
|
52
51
|
className: cn(
|
|
53
|
-
"px-2 py-2 font-medium",
|
|
52
|
+
"px-2 py-2 font-medium first:pl-4 last:pr-4",
|
|
54
53
|
column.sortable && "cursor-pointer",
|
|
55
54
|
column.className,
|
|
56
55
|
((_a = column.responsive) == null ? void 0 : _a.sm) && "hidden sm:table-cell",
|
|
@@ -60,7 +59,7 @@ function DataTableBody({
|
|
|
60
59
|
),
|
|
61
60
|
style: {
|
|
62
61
|
width,
|
|
63
|
-
minWidth: minWidth || width || void 0,
|
|
62
|
+
minWidth: column.minWidth || width || void 0,
|
|
64
63
|
maxWidth: column.maxWidth || void 0
|
|
65
64
|
},
|
|
66
65
|
onClick: column.sortable ? () => onSort(column.key) : void 0,
|
|
@@ -107,7 +106,7 @@ function DataTableBody({
|
|
|
107
106
|
localSelectedIds.includes(rowId) && "bg-primary/5"
|
|
108
107
|
),
|
|
109
108
|
children: [
|
|
110
|
-
selectable && /* @__PURE__ */ jsx("td", { className: "px-
|
|
109
|
+
selectable && /* @__PURE__ */ jsx("td", { className: "px-3 py-3 text-center w-12", children: /* @__PURE__ */ jsx(
|
|
111
110
|
"input",
|
|
112
111
|
{
|
|
113
112
|
"data-testid": `row-checkbox-${rowId}`,
|
|
@@ -123,7 +122,7 @@ function DataTableBody({
|
|
|
123
122
|
"td",
|
|
124
123
|
{
|
|
125
124
|
className: cn(
|
|
126
|
-
"px-2 py-3 overflow-hidden",
|
|
125
|
+
"px-2 py-3 overflow-hidden first:pl-4 last:pr-4",
|
|
127
126
|
column.className,
|
|
128
127
|
((_a = column.responsive) == null ? void 0 : _a.sm) && "hidden sm:table-cell",
|
|
129
128
|
((_b = column.responsive) == null ? void 0 : _b.md) && "hidden md:table-cell",
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
JWTError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5GWGARXI.js";
|
|
4
|
+
import {
|
|
5
|
+
__spreadProps,
|
|
6
|
+
__spreadValues
|
|
7
|
+
} from "./chunk-ORMEWXMH.js";
|
|
4
8
|
|
|
5
|
-
// src/auth/
|
|
9
|
+
// src/core/auth/jwt/index.ts
|
|
6
10
|
import { SignJWT, jwtVerify } from "jose";
|
|
7
11
|
var JWTManager = class {
|
|
8
12
|
constructor(config, logger) {
|
|
@@ -18,7 +22,7 @@ var JWTManager = class {
|
|
|
18
22
|
*/
|
|
19
23
|
async createAccessToken(payload) {
|
|
20
24
|
try {
|
|
21
|
-
const jwt = await new SignJWT(payload).setProtectedHeader({ alg: this.config.algorithm }).setIssuedAt().setExpirationTime(this.config.accessTokenExpiry).sign(this.secretKey);
|
|
25
|
+
const jwt = await new SignJWT(__spreadProps(__spreadValues({}, payload), { tokenType: "access" })).setProtectedHeader({ alg: this.config.algorithm }).setIssuedAt().setExpirationTime(this.config.accessTokenExpiry).sign(this.secretKey);
|
|
22
26
|
this.logger.debug("Access token created successfully", {
|
|
23
27
|
userId: payload.userId,
|
|
24
28
|
expiresIn: this.config.accessTokenExpiry
|
|
@@ -92,6 +96,9 @@ var JWTManager = class {
|
|
|
92
96
|
if (!userId || !payload.email || !payload.role) {
|
|
93
97
|
throw new JWTError("Invalid JWT payload structure", "INVALID_PAYLOAD");
|
|
94
98
|
}
|
|
99
|
+
if (payload.tokenType !== void 0 && payload.tokenType !== "access") {
|
|
100
|
+
throw new JWTError("Token is not an access token", "INVALID_PAYLOAD");
|
|
101
|
+
}
|
|
95
102
|
this.logger.debug("Access token verified successfully", {
|
|
96
103
|
userId
|
|
97
104
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCommonConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PX535BHW.js";
|
|
4
4
|
import {
|
|
5
5
|
getResolvedCacheConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-T4643SEW.js";
|
|
7
7
|
|
|
8
|
-
// src/cache/cache-env.ts
|
|
8
|
+
// src/core/cache/cache-env.ts
|
|
9
9
|
function _getNodeEnv() {
|
|
10
10
|
try {
|
|
11
11
|
return getCommonConfig().nodeEnv;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OAuthError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5GWGARXI.js";
|
|
4
4
|
|
|
5
|
-
// src/auth/
|
|
5
|
+
// src/core/auth/oauth/providers/meta.ts
|
|
6
6
|
var META_GRAPH_VERSION = "v25.0";
|
|
7
7
|
var MetaOAuthProvider = class {
|
|
8
8
|
constructor() {
|
|
@@ -33,7 +33,11 @@ var MetaOAuthProvider = class {
|
|
|
33
33
|
const errorData = await response.text();
|
|
34
34
|
throw new OAuthError(`Meta token exchange failed: ${errorData}`, "TOKEN_EXCHANGE_FAILED");
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
const data = await response.json();
|
|
37
|
+
if (!data.access_token) {
|
|
38
|
+
throw new OAuthError("Invalid Meta response: missing access_token", "INVALID_RESPONSE");
|
|
39
|
+
}
|
|
40
|
+
return data;
|
|
37
41
|
}
|
|
38
42
|
async getUserInfo(accessToken) {
|
|
39
43
|
var _a, _b, _c, _d;
|
|
@@ -53,6 +57,8 @@ var MetaOAuthProvider = class {
|
|
|
53
57
|
email: data.email,
|
|
54
58
|
name: (_a = data.name) != null ? _a : null,
|
|
55
59
|
image: (_d = (_c = (_b = data.picture) == null ? void 0 : _b.data) == null ? void 0 : _c.url) != null ? _d : null,
|
|
60
|
+
// Graph API는 이메일 검증 신호를 제공하지 않음 → 존재만으로 true.
|
|
61
|
+
// Microsoft(email_verified)/Kakao(is_email_verified) 같은 strict 검증 불가(provider 한계).
|
|
56
62
|
emailVerified: !!data.email
|
|
57
63
|
};
|
|
58
64
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getCorsConfig
|
|
3
|
-
} from "./chunk-WJWCTCWZ.js";
|
|
4
1
|
import {
|
|
5
2
|
logger
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KG65BFPK.js";
|
|
4
|
+
import {
|
|
5
|
+
getCorsConfig
|
|
6
|
+
} from "./chunk-7ZO5UNTJ.js";
|
|
7
7
|
|
|
8
|
-
// src/middleware/cors.ts
|
|
8
|
+
// src/next/middleware/cors.ts
|
|
9
9
|
import { NextResponse } from "next/server";
|
|
10
10
|
var DEFAULT_METHODS = "GET, POST, PUT, DELETE, PATCH, OPTIONS";
|
|
11
11
|
var DEFAULT_HEADERS = "Content-Type, Authorization, X-Requested-With, X-API-Key";
|
|
@@ -25,15 +25,15 @@ function createCorsMiddleware(config) {
|
|
|
25
25
|
const response2 = new NextResponse(null, { status: 204 });
|
|
26
26
|
if (origin && allowedOrigins.includes(origin)) {
|
|
27
27
|
response2.headers.set("Access-Control-Allow-Origin", origin);
|
|
28
|
+
if (allowCredentials) {
|
|
29
|
+
response2.headers.set("Access-Control-Allow-Credentials", "true");
|
|
30
|
+
}
|
|
28
31
|
} else if (allowedOrigins.includes("*")) {
|
|
29
32
|
response2.headers.set("Access-Control-Allow-Origin", "*");
|
|
30
33
|
}
|
|
31
34
|
response2.headers.set("Access-Control-Allow-Methods", allowedMethods);
|
|
32
35
|
response2.headers.set("Access-Control-Allow-Headers", allowedHeaders);
|
|
33
36
|
response2.headers.set("Access-Control-Max-Age", String(maxAge));
|
|
34
|
-
if (allowCredentials) {
|
|
35
|
-
response2.headers.set("Access-Control-Allow-Credentials", "true");
|
|
36
|
-
}
|
|
37
37
|
return response2;
|
|
38
38
|
}
|
|
39
39
|
const response = await next();
|
|
@@ -44,9 +44,6 @@ function createCorsMiddleware(config) {
|
|
|
44
44
|
}
|
|
45
45
|
} else if (allowedOrigins.includes("*")) {
|
|
46
46
|
response.headers.set("Access-Control-Allow-Origin", "*");
|
|
47
|
-
if (allowCredentials) {
|
|
48
|
-
response.headers.set("Access-Control-Allow-Credentials", "true");
|
|
49
|
-
}
|
|
50
47
|
}
|
|
51
48
|
response.headers.set("Access-Control-Allow-Methods", allowedMethods);
|
|
52
49
|
response.headers.set("Access-Control-Allow-Headers", allowedHeaders);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4K76HG4V.js";
|
|
4
4
|
import {
|
|
5
5
|
__objRest,
|
|
6
6
|
__spreadValues
|
|
7
7
|
} from "./chunk-ORMEWXMH.js";
|
|
8
8
|
|
|
9
|
-
// src/components/ui/Input.tsx
|
|
9
|
+
// src/react/components/ui/Input.tsx
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
11
11
|
function Input(_a) {
|
|
12
12
|
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
logger
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KG65BFPK.js";
|
|
4
4
|
import {
|
|
5
5
|
__spreadValues
|
|
6
6
|
} from "./chunk-ORMEWXMH.js";
|
|
7
7
|
|
|
8
|
-
// src/geolocation/batch-processor.ts
|
|
8
|
+
// src/core/geolocation/batch-processor.ts
|
|
9
9
|
var BatchProcessor = class {
|
|
10
10
|
constructor(config) {
|
|
11
11
|
this.config = __spreadValues({
|
|
@@ -1,31 +1,37 @@
|
|
|
1
|
+
import {
|
|
2
|
+
HybridCacheManager
|
|
3
|
+
} from "./chunk-KCDJIW2F.js";
|
|
4
|
+
import {
|
|
5
|
+
InMemoryCacheManager
|
|
6
|
+
} from "./chunk-J5NLAZV2.js";
|
|
1
7
|
import {
|
|
2
8
|
NoopCacheManager
|
|
3
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AWIORJAI.js";
|
|
4
10
|
import {
|
|
5
11
|
RedisCacheManager
|
|
6
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-DUIQUAHR.js";
|
|
7
13
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./chunk-
|
|
14
|
+
getCacheConfig
|
|
15
|
+
} from "./chunk-TUA5XW5Z.js";
|
|
10
16
|
import {
|
|
11
17
|
isRedisAvailableNow,
|
|
12
18
|
isRedisGloballyDisabled
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import {
|
|
15
|
-
InMemoryCacheManager
|
|
16
|
-
} from "./chunk-ZG2XGO44.js";
|
|
19
|
+
} from "./chunk-PRWWB4QY.js";
|
|
17
20
|
import {
|
|
18
21
|
logger
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import {
|
|
21
|
-
getCacheConfig
|
|
22
|
-
} from "./chunk-F3NGZYL2.js";
|
|
22
|
+
} from "./chunk-KG65BFPK.js";
|
|
23
23
|
import {
|
|
24
24
|
getENV,
|
|
25
25
|
isCacheEnabled
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-2QVDB6UO.js";
|
|
27
|
+
import {
|
|
28
|
+
isCacheConfigInitialized
|
|
29
|
+
} from "./chunk-T4643SEW.js";
|
|
30
|
+
import {
|
|
31
|
+
configWarn
|
|
32
|
+
} from "./chunk-6J2EJVND.js";
|
|
27
33
|
|
|
28
|
-
// src/cache/cache-factory.ts
|
|
34
|
+
// src/core/cache/cache-factory.ts
|
|
29
35
|
function getInMemoryConfig() {
|
|
30
36
|
const ENV = getENV();
|
|
31
37
|
return {
|
|
@@ -57,8 +63,19 @@ function getEffectiveCacheBackend() {
|
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
var _noBackendWarningLogged = false;
|
|
66
|
+
var _notInitializedWarningLogged = false;
|
|
60
67
|
function getCacheManager(prefix) {
|
|
61
68
|
var _a, _b, _c, _d;
|
|
69
|
+
if (!isCacheConfigInitialized()) {
|
|
70
|
+
if (!_notInitializedWarningLogged) {
|
|
71
|
+
configWarn(
|
|
72
|
+
"Cache",
|
|
73
|
+
"Cache config not initialized \u2014 caching disabled (degraded to no-op). Call initializeCache() (or initialize()) to enable caching."
|
|
74
|
+
);
|
|
75
|
+
_notInitializedWarningLogged = true;
|
|
76
|
+
}
|
|
77
|
+
return new NoopCacheManager(prefix);
|
|
78
|
+
}
|
|
62
79
|
const cacheConfig = getCacheConfig[prefix];
|
|
63
80
|
if (cacheConfig && !cacheConfig.enabled()) {
|
|
64
81
|
return new NoopCacheManager(prefix);
|