ts-packages 2.0.0 → 3.0.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/package.json +1 -1
- package/packages/cache/README.md +105 -9
- package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.d.ts +1 -54
- package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.js +75 -281
- package/packages/cache/dist/cjs/adapters/memory/MemoryCache.js +76 -22
- package/packages/cache/dist/cjs/adapters/redis/RedisCache.js +84 -26
- package/packages/cache/dist/cjs/core/BaseCache.js +13 -4
- package/packages/cache/dist/cjs/core/factory.js +26 -4
- package/packages/cache/dist/cjs/errors/CacheError.d.ts +10 -7
- package/packages/cache/dist/cjs/errors/CacheError.js +6 -11
- package/packages/cache/dist/cjs/errors/cacheErrorCodes.d.ts +22 -0
- package/packages/cache/dist/cjs/errors/cacheErrorCodes.js +24 -0
- package/packages/cache/dist/cjs/errors/index.js +3 -0
- package/packages/cache/dist/cjs/middleware/express/cacheMiddleware.js +8 -8
- package/packages/cache/dist/cjs/session/SessionStore.js +84 -28
- package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.d.ts +1 -54
- package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.js +75 -281
- package/packages/cache/dist/esm/adapters/memory/MemoryCache.js +76 -22
- package/packages/cache/dist/esm/adapters/redis/RedisCache.js +84 -26
- package/packages/cache/dist/esm/core/BaseCache.js +13 -4
- package/packages/cache/dist/esm/core/factory.js +26 -4
- package/packages/cache/dist/esm/errors/CacheError.d.ts +10 -7
- package/packages/cache/dist/esm/errors/CacheError.js +6 -11
- package/packages/cache/dist/esm/errors/cacheErrorCodes.d.ts +22 -0
- package/packages/cache/dist/esm/errors/cacheErrorCodes.js +21 -0
- package/packages/cache/dist/esm/errors/index.js +3 -0
- package/packages/cache/dist/esm/middleware/express/cacheMiddleware.js +8 -8
- package/packages/cache/dist/esm/session/SessionStore.js +84 -28
- package/packages/cache/dist/types/adapters/memcache/MemcacheCache.d.ts +1 -54
- package/packages/cache/dist/types/errors/CacheError.d.ts +10 -7
- package/packages/cache/dist/types/errors/cacheErrorCodes.d.ts +22 -0
- package/packages/cache/package.json +8 -6
- package/packages/cache/src/adapters/memcache/MemcacheCache.ts +79 -352
- package/packages/cache/src/adapters/memory/MemoryCache.ts +76 -77
- package/packages/cache/src/adapters/redis/RedisCache.ts +84 -86
- package/packages/cache/src/core/BaseCache.ts +13 -14
- package/packages/cache/src/core/factory.ts +27 -16
- package/packages/cache/src/errors/CacheError.ts +16 -17
- package/packages/cache/src/errors/cacheErrorCodes.ts +24 -0
- package/packages/cache/src/errors/index.ts +5 -0
- package/packages/cache/src/middleware/express/cacheMiddleware.ts +8 -8
- package/packages/cache/src/session/SessionStore.ts +84 -84
- package/packages/errors-utils/README.md +54 -57
- package/packages/errors-utils/dist/cjs/constants/errorCodes.d.ts +28 -23
- package/packages/errors-utils/dist/cjs/constants/errorCodes.js +57 -22
- package/packages/errors-utils/dist/cjs/constants/errorMessages.d.ts +8 -1
- package/packages/errors-utils/dist/cjs/constants/errorMessages.js +72 -29
- package/packages/errors-utils/dist/cjs/error/AppError.d.ts +2 -2
- package/packages/errors-utils/dist/cjs/error/AppError.js +2 -2
- package/packages/errors-utils/dist/cjs/error/ServiceUnavailableError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/ServiceUnavailableError.js +11 -0
- package/packages/errors-utils/dist/cjs/error/TokenExpiredError.d.ts +2 -2
- package/packages/errors-utils/dist/cjs/error/TokenExpiredError.js +2 -2
- package/packages/errors-utils/dist/cjs/error/TokenMalformedError.d.ts +2 -2
- package/packages/errors-utils/dist/cjs/error/TokenMalformedError.js +2 -2
- package/packages/errors-utils/dist/cjs/error/UnauthorizedError.d.ts +1 -2
- package/packages/errors-utils/dist/cjs/error/UnauthorizedError.js +2 -2
- package/packages/errors-utils/dist/cjs/error/index.d.ts +14 -0
- package/packages/errors-utils/dist/cjs/error/index.js +39 -0
- package/packages/errors-utils/dist/cjs/errorRegistry/errorRegistry.d.ts +19 -0
- package/packages/errors-utils/dist/cjs/errorRegistry/errorRegistry.js +63 -0
- package/packages/errors-utils/dist/cjs/errorRegistry/index.d.ts +3 -0
- package/packages/errors-utils/dist/cjs/errorRegistry/index.js +6 -0
- package/packages/errors-utils/dist/cjs/index.d.ts +3 -9
- package/packages/errors-utils/dist/cjs/index.js +12 -9
- package/packages/errors-utils/dist/cjs/middleware/express/{errorHandler.js → errorHandler.middleware.js} +4 -4
- package/packages/errors-utils/dist/cjs/middleware/express/index.d.ts +2 -2
- package/packages/errors-utils/dist/cjs/middleware/express/index.js +2 -2
- package/packages/errors-utils/dist/esm/constants/errorCodes.d.ts +28 -23
- package/packages/errors-utils/dist/esm/constants/errorCodes.js +57 -22
- package/packages/errors-utils/dist/esm/constants/errorMessages.d.ts +8 -1
- package/packages/errors-utils/dist/esm/constants/errorMessages.js +72 -29
- package/packages/errors-utils/dist/esm/error/AppError.d.ts +2 -2
- package/packages/errors-utils/dist/esm/error/AppError.js +2 -2
- package/packages/errors-utils/dist/esm/error/ServiceUnavailableError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/ServiceUnavailableError.js +7 -0
- package/packages/errors-utils/dist/esm/error/TokenExpiredError.d.ts +2 -2
- package/packages/errors-utils/dist/esm/error/TokenExpiredError.js +2 -2
- package/packages/errors-utils/dist/esm/error/TokenMalformedError.d.ts +2 -2
- package/packages/errors-utils/dist/esm/error/TokenMalformedError.js +2 -2
- package/packages/errors-utils/dist/esm/error/UnauthorizedError.d.ts +1 -2
- package/packages/errors-utils/dist/esm/error/UnauthorizedError.js +2 -2
- package/packages/errors-utils/dist/esm/error/index.d.ts +14 -0
- package/packages/errors-utils/dist/esm/error/index.js +23 -0
- package/packages/errors-utils/dist/esm/errorRegistry/errorRegistry.d.ts +19 -0
- package/packages/errors-utils/dist/esm/errorRegistry/errorRegistry.js +59 -0
- package/packages/errors-utils/dist/esm/errorRegistry/index.d.ts +3 -0
- package/packages/errors-utils/dist/esm/errorRegistry/index.js +3 -0
- package/packages/errors-utils/dist/esm/index.d.ts +3 -9
- package/packages/errors-utils/dist/esm/index.js +12 -9
- package/packages/errors-utils/dist/esm/middleware/express/{errorHandler.js → errorHandler.middleware.js} +5 -5
- package/packages/errors-utils/dist/esm/middleware/express/index.d.ts +2 -2
- package/packages/errors-utils/dist/esm/middleware/express/index.js +2 -2
- package/packages/errors-utils/dist/types/constants/errorCodes.d.ts +28 -23
- package/packages/errors-utils/dist/types/constants/errorMessages.d.ts +8 -1
- package/packages/errors-utils/dist/types/error/AppError.d.ts +2 -2
- package/packages/errors-utils/dist/types/error/ServiceUnavailableError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/TokenExpiredError.d.ts +2 -2
- package/packages/errors-utils/dist/types/error/TokenMalformedError.d.ts +2 -2
- package/packages/errors-utils/dist/types/error/UnauthorizedError.d.ts +1 -2
- package/packages/errors-utils/dist/types/error/index.d.ts +14 -0
- package/packages/errors-utils/dist/types/errorRegistry/errorRegistry.d.ts +19 -0
- package/packages/errors-utils/dist/types/errorRegistry/index.d.ts +3 -0
- package/packages/errors-utils/dist/types/index.d.ts +3 -9
- package/packages/errors-utils/dist/types/middleware/express/index.d.ts +2 -2
- package/packages/errors-utils/package.json +4 -4
- package/packages/errors-utils/src/constants/errorCodes.ts +64 -23
- package/packages/errors-utils/src/constants/errorMessages.ts +91 -34
- package/packages/errors-utils/src/error/AppError.ts +3 -2
- package/packages/errors-utils/src/error/ServiceUnavailableError.ts +8 -0
- package/packages/errors-utils/src/error/TokenExpiredError.ts +2 -2
- package/packages/errors-utils/src/error/TokenMalformedError.ts +2 -2
- package/packages/errors-utils/src/error/UnauthorizedError.ts +8 -8
- package/packages/errors-utils/src/error/index.ts +26 -0
- package/packages/errors-utils/src/errorRegistry/errorRegistry.ts +74 -0
- package/packages/errors-utils/src/errorRegistry/index.ts +4 -0
- package/packages/errors-utils/src/index.ts +12 -10
- package/packages/errors-utils/src/middleware/express/{errorHandler.ts → errorHandler.middleware.ts} +5 -5
- package/packages/errors-utils/src/middleware/express/index.ts +2 -2
- package/packages/js-extensions/README.md +174 -425
- package/packages/js-extensions/dist/cjs/array/array-extensions.js +84 -50
- package/packages/js-extensions/dist/cjs/core/performance.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/core/performance.js +6 -0
- package/packages/js-extensions/dist/cjs/core/version.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/core/version.js +9 -0
- package/packages/js-extensions/dist/cjs/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/index.js +1 -0
- package/packages/js-extensions/dist/cjs/number/number-extensions.js +85 -97
- package/packages/js-extensions/dist/cjs/object/object-extensions.js +102 -103
- package/packages/js-extensions/dist/cjs/string/string-extensions.js +66 -43
- package/packages/js-extensions/dist/cjs/types/global-augmentations.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/utils/defineExtension.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/utils/defineExtension.js +13 -0
- package/packages/js-extensions/dist/cjs/utils/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/utils/index.js +1 -0
- package/packages/js-extensions/dist/esm/array/array-extensions.js +84 -50
- package/packages/js-extensions/dist/esm/core/performance.d.ts +1 -0
- package/packages/js-extensions/dist/esm/core/performance.js +5 -0
- package/packages/js-extensions/dist/esm/core/version.d.ts +1 -0
- package/packages/js-extensions/dist/esm/core/version.js +5 -0
- package/packages/js-extensions/dist/esm/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/index.js +1 -0
- package/packages/js-extensions/dist/esm/number/number-extensions.js +86 -98
- package/packages/js-extensions/dist/esm/object/object-extensions.js +102 -103
- package/packages/js-extensions/dist/esm/string/string-extensions.js +66 -43
- package/packages/js-extensions/dist/esm/types/global-augmentations.d.ts +1 -0
- package/packages/js-extensions/dist/esm/utils/defineExtension.d.ts +1 -0
- package/packages/js-extensions/dist/esm/utils/defineExtension.js +10 -0
- package/packages/js-extensions/dist/esm/utils/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/utils/index.js +1 -0
- package/packages/js-extensions/dist/types/core/performance.d.ts +1 -0
- package/packages/js-extensions/dist/types/core/version.d.ts +1 -0
- package/packages/js-extensions/dist/types/index.d.ts +1 -0
- package/packages/js-extensions/dist/types/types/global-augmentations.d.ts +1 -0
- package/packages/js-extensions/dist/types/utils/defineExtension.d.ts +1 -0
- package/packages/js-extensions/dist/types/utils/index.d.ts +1 -0
- package/packages/js-extensions/package.json +8 -4
- package/packages/js-extensions/src/array/array-extensions.ts +268 -150
- package/packages/js-extensions/src/core/performance.ts +11 -0
- package/packages/js-extensions/src/core/version.ts +7 -0
- package/packages/js-extensions/src/index.ts +2 -0
- package/packages/js-extensions/src/number/number-extensions.ts +90 -123
- package/packages/js-extensions/src/object/object-extensions.ts +102 -130
- package/packages/js-extensions/src/string/string-extensions.ts +80 -76
- package/packages/js-extensions/src/types/global-augmentations.ts +2 -1
- package/packages/js-extensions/src/utils/defineExtension.ts +14 -0
- package/packages/js-extensions/src/utils/index.ts +1 -0
- package/packages/response-utils/README.md +156 -198
- package/packages/response-utils/dist/cjs/core/BaseResponder.js +20 -4
- package/packages/response-utils/dist/cjs/index.d.ts +0 -1
- package/packages/response-utils/dist/cjs/index.js +1 -25
- package/packages/response-utils/dist/esm/core/BaseResponder.js +20 -4
- package/packages/response-utils/dist/esm/index.d.ts +0 -1
- package/packages/response-utils/dist/esm/index.js +0 -2
- package/packages/response-utils/dist/types/index.d.ts +0 -1
- package/packages/response-utils/package.json +1 -1
- package/packages/response-utils/src/core/BaseResponder.ts +25 -4
- package/packages/response-utils/src/index.ts +0 -3
- package/packages/response-utils/src/middleware/express/expressMiddleware.ts +1 -1
- package/packages/security/README.md +153 -355
- package/packages/security/dist/cjs/core/crypto/cryptoManager.js +34 -17
- package/packages/security/dist/cjs/core/jwt/decode.js +4 -1
- package/packages/security/dist/cjs/core/jwt/generateTokens.js +4 -1
- package/packages/security/dist/cjs/core/jwt/jwtManager.d.ts +19 -43
- package/packages/security/dist/cjs/core/jwt/jwtManager.js +84 -199
- package/packages/security/dist/cjs/core/jwt/parseDuration.js +3 -2
- package/packages/security/dist/cjs/core/jwt/signToken.js +2 -1
- package/packages/security/dist/cjs/core/jwt/validateToken.d.ts +10 -7
- package/packages/security/dist/cjs/core/jwt/validateToken.js +19 -10
- package/packages/security/dist/cjs/core/jwt/verify.d.ts +8 -9
- package/packages/security/dist/cjs/core/jwt/verify.js +59 -14
- package/packages/security/dist/cjs/core/password/hash.js +4 -4
- package/packages/security/dist/cjs/core/password/passwordManager.d.ts +1 -1
- package/packages/security/dist/cjs/core/password/passwordManager.js +36 -80
- package/packages/security/dist/cjs/core/password/strength.js +12 -6
- package/packages/security/dist/cjs/core/password/utils.d.ts +12 -0
- package/packages/security/dist/cjs/core/password/utils.js +16 -1
- package/packages/security/dist/cjs/core/password/verify.js +4 -4
- package/packages/security/dist/cjs/index.d.ts +2 -7
- package/packages/security/dist/esm/core/crypto/cryptoManager.js +34 -17
- package/packages/security/dist/esm/core/jwt/decode.js +4 -1
- package/packages/security/dist/esm/core/jwt/generateTokens.js +4 -1
- package/packages/security/dist/esm/core/jwt/jwtManager.d.ts +19 -43
- package/packages/security/dist/esm/core/jwt/jwtManager.js +85 -200
- package/packages/security/dist/esm/core/jwt/parseDuration.js +3 -2
- package/packages/security/dist/esm/core/jwt/signToken.js +2 -1
- package/packages/security/dist/esm/core/jwt/validateToken.d.ts +10 -7
- package/packages/security/dist/esm/core/jwt/validateToken.js +19 -10
- package/packages/security/dist/esm/core/jwt/verify.d.ts +8 -9
- package/packages/security/dist/esm/core/jwt/verify.js +58 -13
- package/packages/security/dist/esm/core/password/hash.js +4 -4
- package/packages/security/dist/esm/core/password/passwordManager.d.ts +1 -1
- package/packages/security/dist/esm/core/password/passwordManager.js +36 -80
- package/packages/security/dist/esm/core/password/strength.js +12 -6
- package/packages/security/dist/esm/core/password/utils.d.ts +12 -0
- package/packages/security/dist/esm/core/password/utils.js +16 -1
- package/packages/security/dist/esm/core/password/verify.js +4 -4
- package/packages/security/dist/esm/index.d.ts +2 -7
- package/packages/security/dist/types/core/jwt/jwtManager.d.ts +19 -43
- package/packages/security/dist/types/core/jwt/validateToken.d.ts +10 -7
- package/packages/security/dist/types/core/jwt/verify.d.ts +8 -9
- package/packages/security/dist/types/core/password/passwordManager.d.ts +1 -1
- package/packages/security/dist/types/core/password/utils.d.ts +12 -0
- package/packages/security/dist/types/index.d.ts +2 -7
- package/packages/security/package.json +3 -3
- package/packages/security/src/core/crypto/cryptoManager.ts +53 -21
- package/packages/security/src/core/jwt/decode.ts +4 -1
- package/packages/security/src/core/jwt/generateTokens.ts +4 -1
- package/packages/security/src/core/jwt/jwtManager.ts +105 -257
- package/packages/security/src/core/jwt/parseDuration.ts +4 -2
- package/packages/security/src/core/jwt/signToken.ts +2 -1
- package/packages/security/src/core/jwt/validateToken.ts +21 -13
- package/packages/security/src/core/jwt/verify.ts +82 -20
- package/packages/security/src/core/password/hash.ts +10 -4
- package/packages/security/src/core/password/passwordManager.ts +38 -108
- package/packages/security/src/core/password/strength.ts +13 -8
- package/packages/security/src/core/password/utils.ts +19 -3
- package/packages/security/src/core/password/verify.ts +6 -4
- package/packages/server-utils/README.md +1 -1
- package/packages/server-utils/dist/cjs/core/server.js +6 -6
- package/packages/server-utils/dist/cjs/middleware/auth.middleware.d.ts +1 -2
- package/packages/server-utils/dist/cjs/middleware/auth.middleware.js +17 -14
- package/packages/server-utils/dist/cjs/middleware/cache.middleware.js +2 -2
- package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.d.ts +1 -1
- package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.js +34 -17
- package/packages/server-utils/dist/cjs/middleware/session.middleware.js +8 -8
- package/packages/server-utils/dist/cjs/middleware/validation.middleware.js +2 -2
- package/packages/server-utils/dist/esm/core/server.js +6 -6
- package/packages/server-utils/dist/esm/middleware/auth.middleware.d.ts +1 -2
- package/packages/server-utils/dist/esm/middleware/auth.middleware.js +18 -15
- package/packages/server-utils/dist/esm/middleware/cache.middleware.js +2 -2
- package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.d.ts +1 -1
- package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.js +34 -17
- package/packages/server-utils/dist/esm/middleware/session.middleware.js +8 -8
- package/packages/server-utils/dist/esm/middleware/validation.middleware.js +2 -2
- package/packages/server-utils/dist/types/middleware/auth.middleware.d.ts +1 -2
- package/packages/server-utils/dist/types/middleware/errorHandler.middleware.d.ts +1 -1
- package/packages/server-utils/package.json +4 -4
- package/packages/server-utils/src/core/server.ts +6 -6
- package/packages/server-utils/src/middleware/auth.middleware.ts +40 -27
- package/packages/server-utils/src/middleware/cache.middleware.ts +2 -2
- package/packages/server-utils/src/middleware/errorHandler.middleware.ts +39 -24
- package/packages/server-utils/src/middleware/session.middleware.ts +11 -8
- package/packages/server-utils/src/middleware/validation.middleware.ts +2 -3
- package/packages/errors-utils/dist/cjs/error/RateLimitError.d.ts +0 -4
- package/packages/errors-utils/dist/cjs/error/RateLimitError.js +0 -11
- package/packages/errors-utils/dist/cjs/utils/mapAppErrorToResponder.d.ts +0 -3
- package/packages/errors-utils/dist/cjs/utils/mapAppErrorToResponder.js +0 -27
- package/packages/errors-utils/dist/esm/error/RateLimitError.d.ts +0 -4
- package/packages/errors-utils/dist/esm/error/RateLimitError.js +0 -7
- package/packages/errors-utils/dist/esm/utils/mapAppErrorToResponder.d.ts +0 -3
- package/packages/errors-utils/dist/esm/utils/mapAppErrorToResponder.js +0 -24
- package/packages/errors-utils/dist/types/error/RateLimitError.d.ts +0 -4
- package/packages/errors-utils/dist/types/utils/mapAppErrorToResponder.d.ts +0 -3
- package/packages/errors-utils/src/error/RateLimitError.ts +0 -8
- package/packages/errors-utils/src/utils/mapAppErrorToResponder.ts +0 -38
- package/packages/response-utils/src/legacy.ts +0 -30
- /package/packages/errors-utils/dist/cjs/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
- /package/packages/errors-utils/dist/cjs/middleware/express/{errorConverter.js → errorConverter.middleware.js} +0 -0
- /package/packages/errors-utils/dist/cjs/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
- /package/packages/errors-utils/dist/esm/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
- /package/packages/errors-utils/dist/esm/middleware/express/{errorConverter.js → errorConverter.middleware.js} +0 -0
- /package/packages/errors-utils/dist/esm/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
- /package/packages/errors-utils/dist/types/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
- /package/packages/errors-utils/dist/types/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
- /package/packages/errors-utils/src/middleware/express/{errorConverter.ts → errorConverter.middleware.ts} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CACHE_ERROR_CODES } from 'src/errors/cacheErrorCodes'
|
|
1
2
|
import { BaseCache } from '../../core/BaseCache'
|
|
2
3
|
import { CacheError } from '../../errors'
|
|
3
4
|
import type { HealthCheckResponse, MemoryCacheConfig } from '../../types'
|
|
@@ -52,13 +53,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
52
53
|
|
|
53
54
|
this.recordHit()
|
|
54
55
|
return entry.value
|
|
55
|
-
} catch (
|
|
56
|
-
throw new CacheError(
|
|
57
|
-
|
|
58
|
-
'
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_KEY_NOT_FOUND, {
|
|
58
|
+
adapter: 'memory',
|
|
59
|
+
operation: 'get',
|
|
60
|
+
details: { key },
|
|
61
|
+
cause: error instanceof Error ? error : undefined,
|
|
62
|
+
})
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -84,13 +85,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
84
85
|
|
|
85
86
|
this.store.set(fullKey, { value, expiresAt })
|
|
86
87
|
this.recordSet()
|
|
87
|
-
} catch (
|
|
88
|
-
throw new CacheError(
|
|
89
|
-
|
|
90
|
-
'
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
)
|
|
88
|
+
} catch (error) {
|
|
89
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
90
|
+
adapter: 'memory',
|
|
91
|
+
operation: 'set',
|
|
92
|
+
details: { key },
|
|
93
|
+
cause: error instanceof Error ? error : undefined,
|
|
94
|
+
})
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
|
|
@@ -105,13 +106,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
105
106
|
this.recordDelete()
|
|
106
107
|
}
|
|
107
108
|
return deleted
|
|
108
|
-
} catch (
|
|
109
|
-
throw new CacheError(
|
|
110
|
-
|
|
111
|
-
'
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
)
|
|
109
|
+
} catch (error) {
|
|
110
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
111
|
+
adapter: 'memory',
|
|
112
|
+
operation: 'delete',
|
|
113
|
+
details: { key },
|
|
114
|
+
cause: error instanceof Error ? error : undefined,
|
|
115
|
+
})
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
|
|
@@ -134,13 +135,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
return true
|
|
137
|
-
} catch (
|
|
138
|
-
throw new CacheError(
|
|
139
|
-
|
|
140
|
-
'
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
)
|
|
138
|
+
} catch (error) {
|
|
139
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
140
|
+
adapter: 'memory',
|
|
141
|
+
operation: 'exists',
|
|
142
|
+
details: { key },
|
|
143
|
+
cause: error instanceof Error ? error : undefined,
|
|
144
|
+
})
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
147
|
|
|
@@ -160,13 +161,12 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
160
161
|
// Clear all
|
|
161
162
|
this.store.clear()
|
|
162
163
|
}
|
|
163
|
-
} catch (
|
|
164
|
-
throw new CacheError(
|
|
165
|
-
'
|
|
166
|
-
'
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
)
|
|
164
|
+
} catch (error) {
|
|
165
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_OPERATION_TIMEOUT, {
|
|
166
|
+
adapter: 'memory',
|
|
167
|
+
operation: 'clear',
|
|
168
|
+
cause: error instanceof Error ? error : undefined,
|
|
169
|
+
})
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -200,13 +200,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
return result
|
|
203
|
-
} catch (
|
|
204
|
-
throw new CacheError(
|
|
205
|
-
'
|
|
206
|
-
'
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
)
|
|
203
|
+
} catch (error) {
|
|
204
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
205
|
+
adapter: 'memory',
|
|
206
|
+
operation: 'getMultiple',
|
|
207
|
+
details: { keys },
|
|
208
|
+
cause: error instanceof Error ? error : undefined,
|
|
209
|
+
})
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
|
|
@@ -224,13 +224,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
this.stats.sets += Object.keys(data).length
|
|
227
|
-
} catch (
|
|
228
|
-
throw new CacheError(
|
|
229
|
-
'
|
|
230
|
-
'
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
)
|
|
227
|
+
} catch (error) {
|
|
228
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
229
|
+
adapter: 'memory',
|
|
230
|
+
operation: 'setMultiple',
|
|
231
|
+
details: { keys: Object.keys(data) },
|
|
232
|
+
cause: error instanceof Error ? error : undefined,
|
|
233
|
+
})
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
|
|
@@ -248,13 +248,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
248
248
|
}
|
|
249
249
|
this.stats.deletes += count
|
|
250
250
|
return count
|
|
251
|
-
} catch (
|
|
252
|
-
throw new CacheError(
|
|
253
|
-
'
|
|
254
|
-
'
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
)
|
|
251
|
+
} catch (error) {
|
|
252
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
253
|
+
adapter: 'memory',
|
|
254
|
+
operation: 'deleteMultiple',
|
|
255
|
+
details: { keys },
|
|
256
|
+
cause: error instanceof Error ? error : undefined,
|
|
257
|
+
})
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
|
|
@@ -280,13 +280,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
280
280
|
|
|
281
281
|
this.store.set(fullKey, { value: value as T, expiresAt })
|
|
282
282
|
return value
|
|
283
|
-
} catch (
|
|
284
|
-
throw new CacheError(
|
|
285
|
-
|
|
286
|
-
'
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
)
|
|
283
|
+
} catch (error) {
|
|
284
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
285
|
+
adapter: 'memory',
|
|
286
|
+
operation: 'increment',
|
|
287
|
+
details: { key },
|
|
288
|
+
cause: error instanceof Error ? error : undefined,
|
|
289
|
+
})
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
|
|
@@ -312,13 +312,13 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
312
312
|
|
|
313
313
|
this.store.set(fullKey, { value: value as T, expiresAt })
|
|
314
314
|
return value
|
|
315
|
-
} catch (
|
|
316
|
-
throw new CacheError(
|
|
317
|
-
|
|
318
|
-
'
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
)
|
|
315
|
+
} catch (error) {
|
|
316
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
317
|
+
adapter: 'memory',
|
|
318
|
+
operation: 'decrement',
|
|
319
|
+
details: { key },
|
|
320
|
+
cause: error instanceof Error ? error : undefined,
|
|
321
|
+
})
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
|
|
@@ -343,13 +343,12 @@ export class MemoryCache<T = unknown> extends BaseCache<T> {
|
|
|
343
343
|
this.cleanupInterval = null
|
|
344
344
|
}
|
|
345
345
|
this.store.clear()
|
|
346
|
-
} catch (
|
|
347
|
-
throw new CacheError(
|
|
348
|
-
'
|
|
349
|
-
'
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
)
|
|
346
|
+
} catch (error) {
|
|
347
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
348
|
+
adapter: 'memory',
|
|
349
|
+
operation: 'close',
|
|
350
|
+
cause: error instanceof Error ? error : undefined,
|
|
351
|
+
})
|
|
353
352
|
}
|
|
354
353
|
}
|
|
355
354
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createClient, createCluster } from 'redis'
|
|
2
2
|
import type { RedisClientOptions } from 'redis'
|
|
3
|
+
import { CACHE_ERROR_CODES } from 'src/errors/cacheErrorCodes'
|
|
3
4
|
import { BaseCache } from '../../core/BaseCache'
|
|
4
5
|
import { CacheError } from '../../errors'
|
|
5
6
|
import type { HealthCheckResponse, RedisCacheConfig } from '../../types'
|
|
@@ -81,13 +82,12 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
81
82
|
await this.client.connect()
|
|
82
83
|
this.isConnected = true
|
|
83
84
|
}
|
|
84
|
-
} catch (
|
|
85
|
-
throw new CacheError(
|
|
86
|
-
|
|
87
|
-
'
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
)
|
|
85
|
+
} catch (error) {
|
|
86
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_CONNECTION_FAILED, {
|
|
87
|
+
adapter: 'redis',
|
|
88
|
+
operation: 'connect',
|
|
89
|
+
cause: error instanceof Error ? error : undefined,
|
|
90
|
+
})
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -116,13 +116,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
116
116
|
|
|
117
117
|
this.recordHit()
|
|
118
118
|
return this.deserialize(value)
|
|
119
|
-
} catch (
|
|
120
|
-
throw new CacheError(
|
|
121
|
-
|
|
122
|
-
'
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
)
|
|
119
|
+
} catch (error) {
|
|
120
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
121
|
+
adapter: 'redis',
|
|
122
|
+
operation: 'get',
|
|
123
|
+
details: { key },
|
|
124
|
+
cause: error instanceof Error ? error : undefined,
|
|
125
|
+
})
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
@@ -143,13 +143,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
this.recordSet()
|
|
146
|
-
} catch (
|
|
147
|
-
throw new CacheError(
|
|
148
|
-
|
|
149
|
-
'
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
)
|
|
146
|
+
} catch (error) {
|
|
147
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
148
|
+
adapter: 'redis',
|
|
149
|
+
operation: 'set',
|
|
150
|
+
details: { key },
|
|
151
|
+
cause: error instanceof Error ? error : undefined,
|
|
152
|
+
})
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -163,13 +163,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
163
163
|
const result = await this.client!.del(fullKey)
|
|
164
164
|
this.recordDelete()
|
|
165
165
|
return result > 0
|
|
166
|
-
} catch (
|
|
167
|
-
throw new CacheError(
|
|
168
|
-
|
|
169
|
-
'
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
)
|
|
166
|
+
} catch (error) {
|
|
167
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
168
|
+
adapter: 'redis',
|
|
169
|
+
operation: 'delete',
|
|
170
|
+
details: { key },
|
|
171
|
+
cause: error instanceof Error ? error : undefined,
|
|
172
|
+
})
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
|
|
@@ -182,13 +182,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
182
182
|
const fullKey = this.buildKey(key)
|
|
183
183
|
const result = await this.client!.exists(fullKey)
|
|
184
184
|
return result > 0
|
|
185
|
-
} catch (
|
|
186
|
-
throw new CacheError(
|
|
187
|
-
|
|
188
|
-
'
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
)
|
|
185
|
+
} catch (error) {
|
|
186
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
187
|
+
adapter: 'redis',
|
|
188
|
+
operation: 'exists',
|
|
189
|
+
details: { key },
|
|
190
|
+
cause: error instanceof Error ? error : undefined,
|
|
191
|
+
})
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -214,13 +214,12 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
214
214
|
console.warn('Clear operation not supported in cluster mode')
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
} catch (
|
|
218
|
-
throw new CacheError(
|
|
219
|
-
|
|
220
|
-
'
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
)
|
|
217
|
+
} catch (error) {
|
|
218
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_OPERATION_TIMEOUT, {
|
|
219
|
+
adapter: 'redis',
|
|
220
|
+
operation: 'clear',
|
|
221
|
+
cause: error instanceof Error ? error : undefined,
|
|
222
|
+
})
|
|
224
223
|
}
|
|
225
224
|
}
|
|
226
225
|
|
|
@@ -246,13 +245,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
246
245
|
})
|
|
247
246
|
|
|
248
247
|
return result
|
|
249
|
-
} catch (
|
|
250
|
-
throw new CacheError(
|
|
251
|
-
|
|
252
|
-
'
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
)
|
|
248
|
+
} catch (error) {
|
|
249
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
250
|
+
adapter: 'redis',
|
|
251
|
+
operation: 'getMultiple',
|
|
252
|
+
details: { keys },
|
|
253
|
+
cause: error instanceof Error ? error : undefined,
|
|
254
|
+
})
|
|
256
255
|
}
|
|
257
256
|
}
|
|
258
257
|
|
|
@@ -284,13 +283,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
284
283
|
}
|
|
285
284
|
|
|
286
285
|
this.stats.sets += Object.keys(data).length
|
|
287
|
-
} catch (
|
|
288
|
-
throw new CacheError(
|
|
289
|
-
|
|
290
|
-
'
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
)
|
|
286
|
+
} catch (error) {
|
|
287
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
288
|
+
adapter: 'redis',
|
|
289
|
+
operation: 'setMultiple',
|
|
290
|
+
details: { keys: Object.keys(data) },
|
|
291
|
+
cause: error instanceof Error ? error : undefined,
|
|
292
|
+
})
|
|
294
293
|
}
|
|
295
294
|
}
|
|
296
295
|
|
|
@@ -304,13 +303,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
304
303
|
const result = await this.client!.del(fullKeys)
|
|
305
304
|
this.stats.deletes += result
|
|
306
305
|
return result
|
|
307
|
-
} catch (
|
|
308
|
-
throw new CacheError(
|
|
309
|
-
|
|
310
|
-
'
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
)
|
|
306
|
+
} catch (error) {
|
|
307
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
308
|
+
adapter: 'redis',
|
|
309
|
+
operation: 'deleteMultiple',
|
|
310
|
+
details: { keys },
|
|
311
|
+
cause: error instanceof Error ? error : undefined,
|
|
312
|
+
})
|
|
314
313
|
}
|
|
315
314
|
}
|
|
316
315
|
|
|
@@ -322,13 +321,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
322
321
|
await this.ensureConnected()
|
|
323
322
|
const fullKey = this.buildKey(key)
|
|
324
323
|
return await this.client!.incrBy(fullKey, amount)
|
|
325
|
-
} catch (
|
|
326
|
-
throw new CacheError(
|
|
327
|
-
|
|
328
|
-
'
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
)
|
|
324
|
+
} catch (error) {
|
|
325
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
326
|
+
adapter: 'redis',
|
|
327
|
+
operation: 'increment',
|
|
328
|
+
details: { key },
|
|
329
|
+
cause: error instanceof Error ? error : undefined,
|
|
330
|
+
})
|
|
332
331
|
}
|
|
333
332
|
}
|
|
334
333
|
|
|
@@ -340,13 +339,13 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
340
339
|
await this.ensureConnected()
|
|
341
340
|
const fullKey = this.buildKey(key)
|
|
342
341
|
return await this.client!.decrBy(fullKey, amount)
|
|
343
|
-
} catch (
|
|
344
|
-
throw new CacheError(
|
|
345
|
-
|
|
346
|
-
'
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
)
|
|
342
|
+
} catch (error) {
|
|
343
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
344
|
+
adapter: 'redis',
|
|
345
|
+
operation: 'decrement',
|
|
346
|
+
details: { key },
|
|
347
|
+
cause: error instanceof Error ? error : undefined,
|
|
348
|
+
})
|
|
350
349
|
}
|
|
351
350
|
}
|
|
352
351
|
|
|
@@ -374,12 +373,12 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
374
373
|
adapter: 'redis',
|
|
375
374
|
timestamp: new Date(),
|
|
376
375
|
}
|
|
377
|
-
} catch (
|
|
376
|
+
} catch (error) {
|
|
378
377
|
return {
|
|
379
378
|
isAlive: false,
|
|
380
379
|
adapter: 'redis',
|
|
381
380
|
timestamp: new Date(),
|
|
382
|
-
error: (
|
|
381
|
+
error: (error as Error).message,
|
|
383
382
|
}
|
|
384
383
|
}
|
|
385
384
|
}
|
|
@@ -394,13 +393,12 @@ export class RedisCache<T = unknown> extends BaseCache<T> {
|
|
|
394
393
|
this.isConnected = false
|
|
395
394
|
this.client = null
|
|
396
395
|
}
|
|
397
|
-
} catch (
|
|
398
|
-
throw new CacheError(
|
|
399
|
-
|
|
400
|
-
'
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
)
|
|
396
|
+
} catch (error) {
|
|
397
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_ERROR, {
|
|
398
|
+
adapter: 'redis',
|
|
399
|
+
operation: 'close',
|
|
400
|
+
cause: error instanceof Error ? error : undefined,
|
|
401
|
+
})
|
|
404
402
|
}
|
|
405
403
|
}
|
|
406
404
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CACHE_ERROR_CODES } from 'src/errors/cacheErrorCodes'
|
|
1
2
|
import { CacheError } from '../errors'
|
|
2
3
|
|
|
3
4
|
import type {
|
|
@@ -39,13 +40,12 @@ export abstract class BaseCache<T = unknown> implements ICache<T> {
|
|
|
39
40
|
protected deserialize(data: string): T {
|
|
40
41
|
try {
|
|
41
42
|
return JSON.parse(data)
|
|
42
|
-
} catch (
|
|
43
|
-
throw new CacheError(
|
|
44
|
-
|
|
45
|
-
'
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
)
|
|
43
|
+
} catch (error) {
|
|
44
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_DESERIALIZE_ERROR, {
|
|
45
|
+
adapter: this.config.adapter,
|
|
46
|
+
operation: 'deserialize',
|
|
47
|
+
cause: error instanceof Error ? error : undefined,
|
|
48
|
+
})
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -55,13 +55,12 @@ export abstract class BaseCache<T = unknown> implements ICache<T> {
|
|
|
55
55
|
protected serialize(value: T): string {
|
|
56
56
|
try {
|
|
57
57
|
return JSON.stringify(value)
|
|
58
|
-
} catch (
|
|
59
|
-
throw new CacheError(
|
|
60
|
-
|
|
61
|
-
'
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
)
|
|
58
|
+
} catch (error) {
|
|
59
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_SERIALIZE_ERROR, {
|
|
60
|
+
adapter: this.config.adapter,
|
|
61
|
+
operation: 'serialize',
|
|
62
|
+
cause: error instanceof Error ? error : undefined,
|
|
63
|
+
})
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
66
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CACHE_ERROR_CODES } from 'src/errors/cacheErrorCodes'
|
|
1
2
|
import { MemcacheCache } from '../adapters/memcache'
|
|
2
3
|
import { MemoryCache } from '../adapters/memory'
|
|
3
4
|
import { RedisCache } from '../adapters/redis'
|
|
@@ -25,18 +26,25 @@ export class CacheFactory {
|
|
|
25
26
|
|
|
26
27
|
// Validate: can't use both single + cluster
|
|
27
28
|
if (redisConfig.host && redisConfig.cluster) {
|
|
28
|
-
throw new CacheError(
|
|
29
|
-
|
|
30
|
-
'
|
|
31
|
-
|
|
29
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_INVALID_CONFIG, {
|
|
30
|
+
adapter: 'redis',
|
|
31
|
+
operation: 'create',
|
|
32
|
+
details: {
|
|
33
|
+
reason:
|
|
34
|
+
'Redis config cannot have both "host" and "cluster" defined',
|
|
35
|
+
},
|
|
36
|
+
})
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
// Require either single or cluster
|
|
35
40
|
if (!redisConfig.host && !redisConfig.cluster) {
|
|
36
|
-
throw new CacheError(
|
|
37
|
-
|
|
38
|
-
'
|
|
39
|
-
|
|
41
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_INVALID_CONFIG, {
|
|
42
|
+
adapter: 'redis',
|
|
43
|
+
operation: 'create',
|
|
44
|
+
details: {
|
|
45
|
+
reason: 'Redis requires either host or cluster config',
|
|
46
|
+
},
|
|
47
|
+
})
|
|
40
48
|
}
|
|
41
49
|
return new RedisCache<T>(redisConfig)
|
|
42
50
|
|
|
@@ -47,10 +55,10 @@ export class CacheFactory {
|
|
|
47
55
|
return new MemoryCache<T>(config as MemoryCacheConfig)
|
|
48
56
|
|
|
49
57
|
default:
|
|
50
|
-
throw new CacheError(
|
|
51
|
-
|
|
52
|
-
'
|
|
53
|
-
)
|
|
58
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_UNSUPPORTED_ADAPTER, {
|
|
59
|
+
adapter: config.adapter,
|
|
60
|
+
operation: 'create',
|
|
61
|
+
})
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
|
|
@@ -84,9 +92,12 @@ export class CacheFactory {
|
|
|
84
92
|
}
|
|
85
93
|
|
|
86
94
|
// No fallback, throw error
|
|
87
|
-
throw new CacheError(
|
|
88
|
-
|
|
89
|
-
'
|
|
90
|
-
|
|
95
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_CONNECTION_FAILED, {
|
|
96
|
+
adapter: config.adapter,
|
|
97
|
+
operation: 'createWithFallback',
|
|
98
|
+
details: {
|
|
99
|
+
reason: `${config.adapter} cache is not alive and fallback is disabled`,
|
|
100
|
+
},
|
|
101
|
+
})
|
|
91
102
|
}
|
|
92
103
|
}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export class CacheError extends
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
public readonly originalError?: Error
|
|
1
|
+
import { AppError, type ErrorCode } from '@naman_deep_singh/errors-utils'
|
|
2
|
+
import type { CacheErrorCode } from './cacheErrorCodes'
|
|
3
|
+
|
|
4
|
+
export class CacheError extends AppError {
|
|
5
|
+
readonly adapter?: string
|
|
6
|
+
readonly operation?: string
|
|
8
7
|
|
|
9
8
|
constructor(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
code: CacheErrorCode,
|
|
10
|
+
options?: {
|
|
11
|
+
adapter?: string
|
|
12
|
+
operation?: string
|
|
13
|
+
details?: unknown
|
|
14
|
+
cause?: Error
|
|
15
|
+
},
|
|
14
16
|
) {
|
|
15
|
-
super(
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.adapter = adapter
|
|
19
|
-
this.originalError = originalError
|
|
20
|
-
Object.setPrototypeOf(this, CacheError.prototype)
|
|
17
|
+
super(code as ErrorCode, undefined, options?.details, options?.cause)
|
|
18
|
+
this.adapter = options?.adapter
|
|
19
|
+
this.operation = options?.operation
|
|
21
20
|
}
|
|
22
21
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const CACHE_ERROR_CODES = {
|
|
2
|
+
CACHE_ERROR: 'Temporary caching issue, please retry',
|
|
3
|
+
CACHE_CONNECTION_FAILED: 'Failed to connect to the cache server',
|
|
4
|
+
CACHE_UNSUPPORTED_ADAPTER: 'The specified cache adapter is not supported',
|
|
5
|
+
CACHE_INVALID_CONFIG: 'The provided cache configuration is invalid',
|
|
6
|
+
CACHE_KEY_NOT_FOUND: 'The requested cache key was not found',
|
|
7
|
+
CACHE_OPERATION_TIMEOUT: 'The cache operation timed out',
|
|
8
|
+
CACHE_SERIALIZE_ERROR: 'Failed to serialize cached data',
|
|
9
|
+
CACHE_DESERIALIZE_ERROR: 'Failed to deserialize cached data',
|
|
10
|
+
SESSION_CREATE_ERROR: 'Failed to create a new session',
|
|
11
|
+
SESSION_GET_ERROR: 'Failed to get session data',
|
|
12
|
+
SESSION_UPDATE_ERROR: 'Failed to update session data',
|
|
13
|
+
SESSION_DELETE_ERROR: 'Failed to delete session data',
|
|
14
|
+
SESSION_EXISTS_ERROR: 'Failed to check session existence',
|
|
15
|
+
SESSION_CLEAR_ERROR: 'Failed to clear sessions',
|
|
16
|
+
SESSION_GET_MULTIPLE_ERROR: 'Failed to get multiple sessions',
|
|
17
|
+
SESSION_DELETE_MULTIPLE_ERROR: 'Failed to delete multiple sessions',
|
|
18
|
+
SESSION_EXTEND_ERROR: 'Failed to extend session expiry',
|
|
19
|
+
SESSION_GET_EXTEND_ERROR: 'Failed to get and extend session data',
|
|
20
|
+
SESSION_NOT_FOUND: 'Session not found',
|
|
21
|
+
} as const
|
|
22
|
+
|
|
23
|
+
export type CacheErrorCode =
|
|
24
|
+
(typeof CACHE_ERROR_CODES)[keyof typeof CACHE_ERROR_CODES]
|