ts-packages 1.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/biome.json +53 -0
- package/organize-imports.sh +87 -0
- package/package.json +25 -8
- package/packages/cache/README.md +791 -0
- package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.d.ts +18 -0
- package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.js +173 -0
- package/packages/cache/dist/cjs/adapters/memcache/index.d.ts +1 -0
- package/packages/cache/dist/cjs/adapters/memcache/index.js +5 -0
- package/packages/cache/dist/cjs/adapters/memory/MemoryCache.d.ts +63 -0
- package/packages/cache/dist/cjs/adapters/memory/MemoryCache.js +331 -0
- package/packages/cache/dist/cjs/adapters/memory/index.d.ts +1 -0
- package/packages/cache/dist/cjs/adapters/memory/index.js +5 -0
- package/packages/cache/dist/cjs/adapters/redis/RedisCache.d.ts +67 -0
- package/packages/cache/dist/cjs/adapters/redis/RedisCache.js +383 -0
- package/packages/cache/dist/cjs/adapters/redis/index.d.ts +1 -0
- package/packages/cache/dist/cjs/adapters/redis/index.js +5 -0
- package/packages/cache/dist/cjs/core/BaseCache.d.ts +78 -0
- package/packages/cache/dist/cjs/core/BaseCache.js +147 -0
- package/packages/cache/dist/cjs/core/factory.d.ts +16 -0
- package/packages/cache/dist/cjs/core/factory.js +82 -0
- package/packages/cache/dist/cjs/core/interfaces/ICache.d.ts +58 -0
- package/packages/cache/dist/cjs/core/interfaces/ICache.js +2 -0
- package/packages/cache/dist/cjs/core/interfaces/ISession.d.ts +30 -0
- package/packages/cache/dist/cjs/core/interfaces/ISession.js +2 -0
- package/packages/cache/dist/cjs/core/interfaces/index.d.ts +2 -0
- package/packages/cache/dist/cjs/core/interfaces/index.js +2 -0
- package/packages/cache/dist/cjs/errors/CacheError.d.ts +12 -0
- package/packages/cache/dist/cjs/errors/CacheError.js +12 -0
- 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.d.ts +1 -0
- package/packages/cache/dist/cjs/errors/index.js +8 -0
- package/packages/cache/dist/cjs/index.d.ts +10 -0
- package/packages/cache/dist/cjs/index.js +27 -0
- package/packages/cache/dist/cjs/middleware/express/cacheMiddleware.d.ts +22 -0
- package/packages/cache/dist/cjs/middleware/express/cacheMiddleware.js +116 -0
- package/packages/cache/dist/cjs/middleware/express/index.d.ts +1 -0
- package/packages/cache/dist/cjs/middleware/express/index.js +7 -0
- package/packages/cache/dist/cjs/session/SessionStore.d.ts +57 -0
- package/packages/cache/dist/cjs/session/SessionStore.js +217 -0
- package/packages/cache/dist/cjs/session/index.d.ts +2 -0
- package/packages/cache/dist/cjs/session/index.js +5 -0
- package/packages/cache/dist/cjs/types.d.ts +102 -0
- package/packages/cache/dist/cjs/types.js +2 -0
- package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.d.ts +18 -0
- package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.js +166 -0
- package/packages/cache/dist/esm/adapters/memcache/index.d.ts +1 -0
- package/packages/cache/dist/esm/adapters/memcache/index.js +1 -0
- package/packages/cache/dist/esm/adapters/memory/MemoryCache.d.ts +63 -0
- package/packages/cache/dist/esm/adapters/memory/MemoryCache.js +327 -0
- package/packages/cache/dist/esm/adapters/memory/index.d.ts +1 -0
- package/packages/cache/dist/esm/adapters/memory/index.js +1 -0
- package/packages/cache/dist/esm/adapters/redis/RedisCache.d.ts +67 -0
- package/packages/cache/dist/esm/adapters/redis/RedisCache.js +379 -0
- package/packages/cache/dist/esm/adapters/redis/index.d.ts +1 -0
- package/packages/cache/dist/esm/adapters/redis/index.js +1 -0
- package/packages/cache/dist/esm/core/BaseCache.d.ts +78 -0
- package/packages/cache/dist/esm/core/BaseCache.js +143 -0
- package/packages/cache/dist/esm/core/factory.d.ts +16 -0
- package/packages/cache/dist/esm/core/factory.js +78 -0
- package/packages/cache/dist/esm/core/interfaces/ICache.d.ts +58 -0
- package/packages/cache/dist/esm/core/interfaces/ICache.js +1 -0
- package/packages/cache/dist/esm/core/interfaces/ISession.d.ts +30 -0
- package/packages/cache/dist/esm/core/interfaces/ISession.js +1 -0
- package/packages/cache/dist/esm/core/interfaces/index.d.ts +2 -0
- package/packages/cache/dist/esm/core/interfaces/index.js +1 -0
- package/packages/cache/dist/esm/errors/CacheError.d.ts +12 -0
- package/packages/cache/dist/esm/errors/CacheError.js +8 -0
- 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.d.ts +1 -0
- package/packages/cache/dist/esm/errors/index.js +4 -0
- package/packages/cache/dist/esm/index.d.ts +10 -0
- package/packages/cache/dist/esm/index.js +14 -0
- package/packages/cache/dist/esm/middleware/express/cacheMiddleware.d.ts +22 -0
- package/packages/cache/dist/esm/middleware/express/cacheMiddleware.js +111 -0
- package/packages/cache/dist/esm/middleware/express/index.d.ts +1 -0
- package/packages/cache/dist/esm/middleware/express/index.js +1 -0
- package/packages/cache/dist/esm/session/SessionStore.d.ts +57 -0
- package/packages/cache/dist/esm/session/SessionStore.js +213 -0
- package/packages/cache/dist/esm/session/index.d.ts +2 -0
- package/packages/cache/dist/esm/session/index.js +1 -0
- package/packages/cache/dist/esm/types.d.ts +102 -0
- package/packages/cache/dist/esm/types.js +1 -0
- package/packages/cache/dist/types/adapters/memcache/MemcacheCache.d.ts +18 -0
- package/packages/cache/dist/types/adapters/memcache/index.d.ts +1 -0
- package/packages/cache/dist/types/adapters/memory/MemoryCache.d.ts +63 -0
- package/packages/cache/dist/types/adapters/memory/index.d.ts +1 -0
- package/packages/cache/dist/types/adapters/redis/RedisCache.d.ts +67 -0
- package/packages/cache/dist/types/adapters/redis/index.d.ts +1 -0
- package/packages/cache/dist/types/core/BaseCache.d.ts +78 -0
- package/packages/cache/dist/types/core/factory.d.ts +16 -0
- package/packages/cache/dist/types/core/interfaces/ICache.d.ts +58 -0
- package/packages/cache/dist/types/core/interfaces/ISession.d.ts +30 -0
- package/packages/cache/dist/types/core/interfaces/index.d.ts +2 -0
- package/packages/cache/dist/types/errors/CacheError.d.ts +12 -0
- package/packages/cache/dist/types/errors/cacheErrorCodes.d.ts +22 -0
- package/packages/cache/dist/types/errors/index.d.ts +1 -0
- package/packages/cache/dist/types/index.d.ts +10 -0
- package/packages/cache/dist/types/middleware/express/cacheMiddleware.d.ts +22 -0
- package/packages/cache/dist/types/middleware/express/index.d.ts +1 -0
- package/packages/cache/dist/types/session/SessionStore.d.ts +57 -0
- package/packages/cache/dist/types/session/index.d.ts +2 -0
- package/packages/cache/dist/types/types.d.ts +102 -0
- package/packages/cache/node_modules/.bin/rimraf +21 -0
- package/packages/cache/node_modules/.bin/tsc +21 -0
- package/packages/cache/node_modules/.bin/tsserver +21 -0
- package/packages/cache/package.json +52 -0
- package/packages/cache/src/adapters/memcache/MemcacheCache.ts +179 -0
- package/packages/cache/src/adapters/memcache/index.ts +1 -0
- package/packages/cache/src/adapters/memory/MemoryCache.ts +354 -0
- package/packages/cache/src/adapters/memory/index.ts +1 -0
- package/packages/cache/src/adapters/redis/RedisCache.ts +404 -0
- package/packages/cache/src/adapters/redis/index.ts +1 -0
- package/packages/cache/src/core/BaseCache.ts +176 -0
- package/packages/cache/src/core/factory.ts +103 -0
- package/packages/cache/src/core/interfaces/ICache.ts +71 -0
- package/packages/cache/src/core/interfaces/ISession.ts +36 -0
- package/packages/cache/src/core/interfaces/index.ts +2 -0
- package/packages/cache/src/errors/CacheError.ts +21 -0
- package/packages/cache/src/errors/cacheErrorCodes.ts +24 -0
- package/packages/cache/src/errors/index.ts +6 -0
- package/packages/cache/src/index.ts +40 -0
- package/packages/cache/src/middleware/express/cacheMiddleware.ts +145 -0
- package/packages/cache/src/middleware/express/index.ts +5 -0
- package/packages/cache/src/session/SessionStore.ts +236 -0
- package/packages/cache/src/session/index.ts +2 -0
- package/packages/cache/src/types.ts +111 -0
- package/packages/cache/tsconfig.base.json +17 -0
- package/packages/cache/tsconfig.cjs.json +10 -0
- package/packages/cache/tsconfig.esm.json +10 -0
- package/packages/errors-utils/README.md +197 -0
- package/packages/errors-utils/dist/cjs/constants/errorCodes.d.ts +37 -0
- package/packages/errors-utils/dist/cjs/constants/errorCodes.js +69 -0
- package/packages/errors-utils/dist/cjs/constants/errorMessages.d.ts +9 -0
- package/packages/errors-utils/dist/cjs/constants/errorMessages.js +77 -0
- package/packages/errors-utils/dist/cjs/constants/index.d.ts +2 -0
- package/packages/errors-utils/dist/cjs/constants/index.js +18 -0
- package/packages/errors-utils/dist/cjs/error/AppError.d.ts +15 -0
- package/packages/errors-utils/dist/cjs/error/AppError.js +26 -0
- package/packages/errors-utils/dist/cjs/error/BadRequestError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/BadRequestError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/ConflictError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/ConflictError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/CryptoIntegrityError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/CryptoIntegrityError.js +11 -0
- package/packages/errors-utils/dist/cjs/error/ForbiddenError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/ForbiddenError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/HTTPError.d.ts +6 -0
- package/packages/errors-utils/dist/cjs/error/HTTPError.js +11 -0
- package/packages/errors-utils/dist/cjs/error/InternalServerError.d.ts +5 -0
- package/packages/errors-utils/dist/cjs/error/InternalServerError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/NotFoundError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/NotFoundError.js +12 -0
- 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 +4 -0
- package/packages/errors-utils/dist/cjs/error/TokenExpiredError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/TokenMalformedError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/TokenMalformedError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/TooManyRequestsError.d.ts +5 -0
- package/packages/errors-utils/dist/cjs/error/TooManyRequestsError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/UnauthorizedError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/UnauthorizedError.js +12 -0
- package/packages/errors-utils/dist/cjs/error/ValidationError.d.ts +4 -0
- package/packages/errors-utils/dist/cjs/error/ValidationError.js +12 -0
- 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 +4 -0
- package/packages/errors-utils/dist/cjs/index.js +29 -0
- package/packages/errors-utils/dist/cjs/middleware/express/errorConverter.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/cjs/middleware/express/errorConverter.middleware.js +39 -0
- package/packages/errors-utils/dist/cjs/middleware/express/errorHandler.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/cjs/middleware/express/errorHandler.middleware.js +19 -0
- package/packages/errors-utils/dist/cjs/middleware/express/index.d.ts +2 -0
- package/packages/errors-utils/dist/cjs/middleware/express/index.js +18 -0
- package/packages/errors-utils/dist/esm/constants/errorCodes.d.ts +37 -0
- package/packages/errors-utils/dist/esm/constants/errorCodes.js +66 -0
- package/packages/errors-utils/dist/esm/constants/errorMessages.d.ts +9 -0
- package/packages/errors-utils/dist/esm/constants/errorMessages.js +74 -0
- package/packages/errors-utils/dist/esm/constants/index.d.ts +2 -0
- package/packages/errors-utils/dist/esm/constants/index.js +2 -0
- package/packages/errors-utils/dist/esm/error/AppError.d.ts +15 -0
- package/packages/errors-utils/dist/esm/error/AppError.js +22 -0
- package/packages/errors-utils/dist/esm/error/BadRequestError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/BadRequestError.js +8 -0
- package/packages/errors-utils/dist/esm/error/ConflictError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/ConflictError.js +8 -0
- package/packages/errors-utils/dist/esm/error/CryptoIntegrityError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/CryptoIntegrityError.js +7 -0
- package/packages/errors-utils/dist/esm/error/ForbiddenError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/ForbiddenError.js +8 -0
- package/packages/errors-utils/dist/esm/error/HTTPError.d.ts +6 -0
- package/packages/errors-utils/dist/esm/error/HTTPError.js +7 -0
- package/packages/errors-utils/dist/esm/error/InternalServerError.d.ts +5 -0
- package/packages/errors-utils/dist/esm/error/InternalServerError.js +8 -0
- package/packages/errors-utils/dist/esm/error/NotFoundError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/NotFoundError.js +8 -0
- 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 +4 -0
- package/packages/errors-utils/dist/esm/error/TokenExpiredError.js +8 -0
- package/packages/errors-utils/dist/esm/error/TokenMalformedError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/TokenMalformedError.js +8 -0
- package/packages/errors-utils/dist/esm/error/TooManyRequestsError.d.ts +5 -0
- package/packages/errors-utils/dist/esm/error/TooManyRequestsError.js +8 -0
- package/packages/errors-utils/dist/esm/error/UnauthorizedError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/UnauthorizedError.js +8 -0
- package/packages/errors-utils/dist/esm/error/ValidationError.d.ts +4 -0
- package/packages/errors-utils/dist/esm/error/ValidationError.js +8 -0
- 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 +4 -0
- package/packages/errors-utils/dist/esm/index.js +13 -0
- package/packages/errors-utils/dist/esm/middleware/express/errorConverter.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/esm/middleware/express/errorConverter.middleware.js +36 -0
- package/packages/errors-utils/dist/esm/middleware/express/errorHandler.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/esm/middleware/express/errorHandler.middleware.js +16 -0
- package/packages/errors-utils/dist/esm/middleware/express/index.d.ts +2 -0
- package/packages/errors-utils/dist/esm/middleware/express/index.js +2 -0
- package/packages/errors-utils/dist/types/constants/errorCodes.d.ts +37 -0
- package/packages/errors-utils/dist/types/constants/errorMessages.d.ts +9 -0
- package/packages/errors-utils/dist/types/constants/index.d.ts +2 -0
- package/packages/errors-utils/dist/types/error/AppError.d.ts +15 -0
- package/packages/errors-utils/dist/types/error/BadRequestError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/ConflictError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/CryptoIntegrityError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/ForbiddenError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/HTTPError.d.ts +6 -0
- package/packages/errors-utils/dist/types/error/InternalServerError.d.ts +5 -0
- package/packages/errors-utils/dist/types/error/NotFoundError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/ServiceUnavailableError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/TokenExpiredError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/TokenMalformedError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/TooManyRequestsError.d.ts +5 -0
- package/packages/errors-utils/dist/types/error/UnauthorizedError.d.ts +4 -0
- package/packages/errors-utils/dist/types/error/ValidationError.d.ts +4 -0
- 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 +4 -0
- package/packages/errors-utils/dist/types/middleware/express/errorConverter.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/types/middleware/express/errorHandler.middleware.d.ts +2 -0
- package/packages/errors-utils/dist/types/middleware/express/index.d.ts +2 -0
- package/packages/errors-utils/node_modules/.bin/rimraf +21 -0
- package/packages/errors-utils/node_modules/.bin/tsc +21 -0
- package/packages/errors-utils/node_modules/.bin/tsserver +21 -0
- package/packages/errors-utils/package.json +42 -0
- package/packages/errors-utils/src/constants/errorCodes.ts +78 -0
- package/packages/errors-utils/src/constants/errorMessages.ts +94 -0
- package/packages/errors-utils/src/constants/index.ts +2 -0
- package/packages/errors-utils/src/error/AppError.ts +36 -0
- package/packages/errors-utils/src/error/BadRequestError.ts +14 -0
- package/packages/errors-utils/src/error/ConflictError.ts +14 -0
- package/packages/errors-utils/src/error/CryptoIntegrityError.ts +8 -0
- package/packages/errors-utils/src/error/ForbiddenError.ts +14 -0
- package/packages/errors-utils/src/error/HTTPError.ts +17 -0
- package/packages/errors-utils/src/error/InternalServerError.ts +18 -0
- package/packages/errors-utils/src/error/NotFoundError.ts +14 -0
- package/packages/errors-utils/src/error/ServiceUnavailableError.ts +8 -0
- package/packages/errors-utils/src/error/TokenExpiredError.ts +14 -0
- package/packages/errors-utils/src/error/TokenMalformedError.ts +14 -0
- package/packages/errors-utils/src/error/TooManyRequestsError.ts +13 -0
- package/packages/errors-utils/src/error/UnauthorizedError.ts +14 -0
- package/packages/errors-utils/src/error/ValidationError.ts +14 -0
- 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 +13 -0
- package/packages/errors-utils/src/middleware/express/errorConverter.middleware.ts +52 -0
- package/packages/errors-utils/src/middleware/express/errorHandler.middleware.ts +32 -0
- package/packages/errors-utils/src/middleware/express/index.ts +2 -0
- package/packages/errors-utils/tsconfig.base.json +17 -0
- package/packages/errors-utils/tsconfig.cjs.json +9 -0
- package/packages/errors-utils/tsconfig.esm.json +9 -0
- package/packages/errors-utils/tsconfig.json +21 -0
- package/packages/js-extensions/README.md +218 -0
- package/packages/js-extensions/dist/cjs/array/array-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/array/array-extensions.js +154 -0
- package/packages/js-extensions/dist/cjs/array/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/array/index.js +5 -0
- package/packages/js-extensions/dist/cjs/core/index.d.ts +2 -0
- package/packages/js-extensions/dist/cjs/core/index.js +19 -0
- package/packages/js-extensions/dist/cjs/core/performance.d.ts +17 -0
- package/packages/js-extensions/dist/cjs/core/performance.js +82 -0
- package/packages/js-extensions/dist/cjs/core/validation.d.ts +4 -0
- package/packages/js-extensions/dist/cjs/core/validation.js +31 -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/extensions/index.d.ts +4 -0
- package/packages/js-extensions/dist/cjs/extensions/index.js +21 -0
- package/packages/js-extensions/dist/cjs/index.d.ts +61 -0
- package/packages/js-extensions/dist/cjs/index.js +77 -0
- package/packages/js-extensions/dist/cjs/init/index.d.ts +2 -0
- package/packages/js-extensions/dist/cjs/init/index.js +19 -0
- package/packages/js-extensions/dist/cjs/init/initializer.d.ts +3 -0
- package/packages/js-extensions/dist/cjs/init/initializer.js +28 -0
- package/packages/js-extensions/dist/cjs/init/options.d.ts +3 -0
- package/packages/js-extensions/dist/cjs/init/options.js +23 -0
- package/packages/js-extensions/dist/cjs/number/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/number/index.js +5 -0
- package/packages/js-extensions/dist/cjs/number/number-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/number/number-extensions.js +125 -0
- package/packages/js-extensions/dist/cjs/object/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/object/index.js +5 -0
- package/packages/js-extensions/dist/cjs/object/object-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/object/object-extensions.js +146 -0
- package/packages/js-extensions/dist/cjs/string/index.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/string/index.js +5 -0
- package/packages/js-extensions/dist/cjs/string/string-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/cjs/string/string-extensions.js +123 -0
- package/packages/js-extensions/dist/cjs/types/extension-types.d.ts +9 -0
- package/packages/js-extensions/dist/cjs/types/extension-types.js +2 -0
- package/packages/js-extensions/dist/cjs/types/global-augmentations.d.ts +72 -0
- package/packages/js-extensions/dist/cjs/types/global-augmentations.js +2 -0
- package/packages/js-extensions/dist/cjs/types/index.d.ts +2 -0
- package/packages/js-extensions/dist/cjs/types/index.js +19 -0
- package/packages/js-extensions/dist/cjs/utils/config.d.ts +4 -0
- package/packages/js-extensions/dist/cjs/utils/config.js +25 -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/helpers.d.ts +5 -0
- package/packages/js-extensions/dist/cjs/utils/helpers.js +37 -0
- package/packages/js-extensions/dist/cjs/utils/index.d.ts +3 -0
- package/packages/js-extensions/dist/cjs/utils/index.js +20 -0
- package/packages/js-extensions/dist/esm/array/array-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/esm/array/array-extensions.js +151 -0
- package/packages/js-extensions/dist/esm/array/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/array/index.js +1 -0
- package/packages/js-extensions/dist/esm/core/index.d.ts +2 -0
- package/packages/js-extensions/dist/esm/core/index.js +3 -0
- package/packages/js-extensions/dist/esm/core/performance.d.ts +17 -0
- package/packages/js-extensions/dist/esm/core/performance.js +74 -0
- package/packages/js-extensions/dist/esm/core/validation.d.ts +4 -0
- package/packages/js-extensions/dist/esm/core/validation.js +25 -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/extensions/index.d.ts +4 -0
- package/packages/js-extensions/dist/esm/extensions/index.js +5 -0
- package/packages/js-extensions/dist/esm/index.d.ts +61 -0
- package/packages/js-extensions/dist/esm/index.js +68 -0
- package/packages/js-extensions/dist/esm/init/index.d.ts +2 -0
- package/packages/js-extensions/dist/esm/init/index.js +3 -0
- package/packages/js-extensions/dist/esm/init/initializer.d.ts +3 -0
- package/packages/js-extensions/dist/esm/init/initializer.js +24 -0
- package/packages/js-extensions/dist/esm/init/options.d.ts +3 -0
- package/packages/js-extensions/dist/esm/init/options.js +19 -0
- package/packages/js-extensions/dist/esm/number/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/number/index.js +1 -0
- package/packages/js-extensions/dist/esm/number/number-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/esm/number/number-extensions.js +122 -0
- package/packages/js-extensions/dist/esm/object/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/object/index.js +1 -0
- package/packages/js-extensions/dist/esm/object/object-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/esm/object/object-extensions.js +143 -0
- package/packages/js-extensions/dist/esm/string/index.d.ts +1 -0
- package/packages/js-extensions/dist/esm/string/index.js +1 -0
- package/packages/js-extensions/dist/esm/string/string-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/esm/string/string-extensions.js +120 -0
- package/packages/js-extensions/dist/esm/types/extension-types.d.ts +9 -0
- package/packages/js-extensions/dist/esm/types/extension-types.js +1 -0
- package/packages/js-extensions/dist/esm/types/global-augmentations.d.ts +72 -0
- package/packages/js-extensions/dist/esm/types/global-augmentations.js +1 -0
- package/packages/js-extensions/dist/esm/types/index.d.ts +2 -0
- package/packages/js-extensions/dist/esm/types/index.js +3 -0
- package/packages/js-extensions/dist/esm/utils/config.d.ts +4 -0
- package/packages/js-extensions/dist/esm/utils/config.js +20 -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/helpers.d.ts +5 -0
- package/packages/js-extensions/dist/esm/utils/helpers.js +30 -0
- package/packages/js-extensions/dist/esm/utils/index.d.ts +3 -0
- package/packages/js-extensions/dist/esm/utils/index.js +4 -0
- package/packages/js-extensions/dist/types/array/array-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/types/array/index.d.ts +1 -0
- package/packages/js-extensions/dist/types/core/index.d.ts +2 -0
- package/packages/js-extensions/dist/types/core/performance.d.ts +17 -0
- package/packages/js-extensions/dist/types/core/validation.d.ts +4 -0
- package/packages/js-extensions/dist/types/core/version.d.ts +1 -0
- package/packages/js-extensions/dist/types/extensions/index.d.ts +4 -0
- package/packages/js-extensions/dist/types/index.d.ts +61 -0
- package/packages/js-extensions/dist/types/init/index.d.ts +2 -0
- package/packages/js-extensions/dist/types/init/initializer.d.ts +3 -0
- package/packages/js-extensions/dist/types/init/options.d.ts +3 -0
- package/packages/js-extensions/dist/types/number/index.d.ts +1 -0
- package/packages/js-extensions/dist/types/number/number-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/types/object/index.d.ts +1 -0
- package/packages/js-extensions/dist/types/object/object-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/types/string/index.d.ts +1 -0
- package/packages/js-extensions/dist/types/string/string-extensions.d.ts +1 -0
- package/packages/js-extensions/dist/types/types/extension-types.d.ts +9 -0
- package/packages/js-extensions/dist/types/types/global-augmentations.d.ts +72 -0
- package/packages/js-extensions/dist/types/types/index.d.ts +2 -0
- package/packages/js-extensions/dist/types/utils/config.d.ts +4 -0
- package/packages/js-extensions/dist/types/utils/defineExtension.d.ts +1 -0
- package/packages/js-extensions/dist/types/utils/helpers.d.ts +5 -0
- package/packages/js-extensions/dist/types/utils/index.d.ts +3 -0
- package/packages/js-extensions/node_modules/.bin/rimraf +21 -0
- package/packages/js-extensions/node_modules/.bin/tsc +21 -0
- package/packages/js-extensions/node_modules/.bin/tsserver +21 -0
- package/packages/js-extensions/package.json +48 -0
- package/packages/js-extensions/src/array/array-extensions.ts +292 -0
- package/packages/js-extensions/src/array/index.ts +1 -0
- package/packages/js-extensions/src/core/index.ts +3 -0
- package/packages/js-extensions/src/core/performance.ts +103 -0
- package/packages/js-extensions/src/core/validation.ts +42 -0
- package/packages/js-extensions/src/core/version.ts +7 -0
- package/packages/js-extensions/src/extensions/index.ts +5 -0
- package/packages/js-extensions/src/index.ts +122 -0
- package/packages/js-extensions/src/init/index.ts +3 -0
- package/packages/js-extensions/src/init/initializer.ts +32 -0
- package/packages/js-extensions/src/init/options.ts +32 -0
- package/packages/js-extensions/src/number/index.ts +1 -0
- package/packages/js-extensions/src/number/number-extensions.ts +129 -0
- package/packages/js-extensions/src/object/index.ts +1 -0
- package/packages/js-extensions/src/object/object-extensions.ts +143 -0
- package/packages/js-extensions/src/string/index.ts +1 -0
- package/packages/js-extensions/src/string/string-extensions.ts +142 -0
- package/packages/js-extensions/src/types/extension-types.ts +12 -0
- package/packages/js-extensions/src/types/global-augmentations.ts +81 -0
- package/packages/js-extensions/src/types/index.ts +3 -0
- package/packages/js-extensions/src/utils/config.ts +33 -0
- package/packages/js-extensions/src/utils/defineExtension.ts +14 -0
- package/packages/js-extensions/src/utils/helpers.ts +35 -0
- package/packages/js-extensions/src/utils/index.ts +4 -0
- package/packages/js-extensions/tsconfig.base.json +18 -0
- package/packages/js-extensions/tsconfig.cjs.json +9 -0
- package/packages/js-extensions/tsconfig.esm.json +9 -0
- package/packages/js-extensions/tsconfig.json +22 -0
- package/packages/response-utils/README.md +189 -95
- package/packages/response-utils/dist/cjs/adapters/express/ExpressResponder.d.ts +18 -0
- package/packages/response-utils/dist/cjs/adapters/express/ExpressResponder.js +46 -0
- package/packages/response-utils/dist/cjs/constants/httpStatus.d.ts +54 -0
- package/packages/response-utils/dist/cjs/constants/httpStatus.js +34 -0
- package/packages/response-utils/dist/cjs/core/BaseResponder.d.ts +31 -0
- package/packages/response-utils/dist/cjs/core/BaseResponder.js +116 -0
- package/packages/response-utils/dist/cjs/core/config.d.ts +15 -0
- package/packages/response-utils/dist/cjs/core/config.js +15 -0
- package/packages/response-utils/dist/cjs/core/factory.d.ts +3 -0
- package/packages/response-utils/dist/cjs/core/factory.js +10 -0
- package/packages/response-utils/dist/cjs/core/types.d.ts +32 -0
- package/packages/response-utils/dist/cjs/core/types.js +2 -0
- package/packages/response-utils/dist/cjs/index.d.ts +8 -0
- package/packages/response-utils/dist/cjs/index.js +32 -0
- package/packages/response-utils/dist/cjs/legacy.d.ts +19 -0
- package/packages/response-utils/dist/cjs/legacy.js +23 -0
- package/packages/response-utils/dist/cjs/middleware/express/expressMiddleware.d.ts +3 -0
- package/packages/response-utils/dist/cjs/middleware/express/expressMiddleware.js +13 -0
- package/packages/response-utils/dist/esm/adapters/express/ExpressResponder.d.ts +18 -0
- package/packages/response-utils/dist/esm/adapters/express/ExpressResponder.js +42 -0
- package/packages/response-utils/dist/esm/constants/httpStatus.d.ts +54 -0
- package/packages/response-utils/dist/esm/constants/httpStatus.js +31 -0
- package/packages/response-utils/dist/esm/core/BaseResponder.d.ts +31 -0
- package/packages/response-utils/dist/esm/core/BaseResponder.js +112 -0
- package/packages/response-utils/dist/esm/core/config.d.ts +15 -0
- package/packages/response-utils/dist/esm/core/config.js +12 -0
- package/packages/response-utils/dist/esm/core/factory.d.ts +3 -0
- package/packages/response-utils/dist/esm/core/factory.js +6 -0
- package/packages/response-utils/dist/esm/core/types.d.ts +32 -0
- package/packages/response-utils/dist/esm/core/types.js +1 -0
- package/packages/response-utils/dist/esm/index.d.ts +8 -0
- package/packages/response-utils/dist/esm/index.js +10 -0
- package/packages/response-utils/dist/esm/legacy.d.ts +19 -0
- package/packages/response-utils/dist/esm/legacy.js +18 -0
- package/packages/response-utils/dist/esm/middleware/express/expressMiddleware.d.ts +3 -0
- package/packages/response-utils/dist/esm/middleware/express/expressMiddleware.js +9 -0
- package/packages/response-utils/dist/types/adapters/express/ExpressResponder.d.ts +18 -0
- package/packages/response-utils/dist/types/constants/httpStatus.d.ts +54 -0
- package/packages/response-utils/dist/types/core/BaseResponder.d.ts +31 -0
- package/packages/response-utils/dist/types/core/config.d.ts +15 -0
- package/packages/response-utils/dist/types/core/factory.d.ts +3 -0
- package/packages/response-utils/dist/types/core/types.d.ts +32 -0
- package/packages/response-utils/dist/types/index.d.ts +8 -0
- package/packages/response-utils/dist/types/legacy.d.ts +19 -0
- package/packages/response-utils/dist/types/middleware/express/expressMiddleware.d.ts +3 -0
- package/packages/response-utils/node_modules/.bin/rimraf +21 -0
- package/packages/response-utils/node_modules/.bin/tsc +21 -0
- package/packages/response-utils/node_modules/.bin/tsserver +21 -0
- package/packages/response-utils/package.json +38 -10
- package/packages/response-utils/src/adapters/express/ExpressResponder.ts +64 -0
- package/packages/response-utils/src/constants/httpStatus.ts +42 -0
- package/packages/response-utils/src/core/BaseResponder.ts +198 -0
- package/packages/response-utils/src/core/config.ts +29 -0
- package/packages/response-utils/src/core/factory.ts +11 -0
- package/packages/response-utils/src/core/types.ts +34 -0
- package/packages/response-utils/src/index.ts +13 -168
- package/packages/response-utils/src/middleware/express/expressMiddleware.ts +14 -0
- package/packages/response-utils/tsconfig.base.json +11 -0
- package/packages/response-utils/tsconfig.cjs.json +9 -0
- package/packages/response-utils/tsconfig.esm.json +9 -0
- package/packages/security/README.md +298 -86
- package/packages/security/dist/cjs/core/crypto/cryptoManager.d.ts +111 -0
- package/packages/security/dist/cjs/core/crypto/cryptoManager.js +208 -0
- package/packages/security/dist/cjs/core/crypto/decrypt.d.ts +1 -0
- package/packages/security/dist/cjs/core/crypto/decrypt.js +21 -0
- package/packages/security/dist/cjs/core/crypto/encrypt.d.ts +1 -0
- package/packages/security/dist/cjs/core/crypto/encrypt.js +16 -0
- package/packages/security/dist/cjs/core/crypto/hmac.d.ts +8 -0
- package/packages/security/dist/cjs/core/crypto/hmac.js +24 -0
- package/packages/security/dist/cjs/core/crypto/index.d.ts +5 -0
- package/packages/security/dist/cjs/core/crypto/index.js +28 -0
- package/packages/security/dist/cjs/core/crypto/random.d.ts +8 -0
- package/packages/security/dist/cjs/core/crypto/random.js +21 -0
- package/packages/security/dist/cjs/core/jwt/decode.d.ts +12 -0
- package/packages/security/dist/cjs/core/jwt/decode.js +28 -0
- package/packages/security/dist/cjs/core/jwt/extractToken.d.ts +11 -0
- package/packages/security/dist/cjs/core/jwt/extractToken.js +54 -0
- package/packages/security/dist/cjs/core/jwt/generateTokens.d.ts +4 -0
- package/packages/security/dist/cjs/core/jwt/generateTokens.js +37 -0
- package/packages/security/dist/cjs/core/jwt/index.d.ts +8 -0
- package/packages/security/dist/cjs/core/jwt/index.js +24 -0
- package/packages/security/dist/cjs/core/jwt/jwtManager.d.ts +43 -0
- package/packages/security/dist/cjs/core/jwt/jwtManager.js +188 -0
- package/packages/security/dist/cjs/core/jwt/parseDuration.d.ts +1 -0
- package/packages/security/dist/cjs/core/jwt/parseDuration.js +30 -0
- package/packages/security/dist/cjs/core/jwt/signToken.d.ts +2 -0
- package/packages/security/dist/cjs/core/jwt/signToken.js +27 -0
- package/packages/security/dist/cjs/core/jwt/types.d.ts +22 -0
- package/packages/security/dist/cjs/core/jwt/types.js +2 -0
- package/packages/security/dist/cjs/core/jwt/validateToken.d.ts +16 -0
- package/packages/security/dist/cjs/core/jwt/validateToken.js +46 -0
- package/packages/security/dist/cjs/core/jwt/verify.d.ts +18 -0
- package/packages/security/dist/cjs/core/jwt/verify.js +89 -0
- package/packages/security/dist/cjs/core/password/hash.d.ts +10 -0
- package/packages/security/dist/cjs/core/password/hash.js +45 -0
- package/packages/security/dist/cjs/core/password/index.d.ts +3 -0
- package/packages/security/dist/cjs/core/password/index.js +19 -0
- package/packages/security/dist/cjs/core/password/passwordManager.d.ts +29 -0
- package/packages/security/dist/cjs/core/password/passwordManager.js +212 -0
- package/packages/security/dist/cjs/core/password/strength.d.ts +2 -0
- package/packages/security/dist/cjs/core/password/strength.js +27 -0
- package/packages/security/dist/cjs/core/password/types.d.ts +7 -0
- package/packages/security/dist/cjs/core/password/types.js +2 -0
- package/packages/security/dist/cjs/core/password/utils.d.ts +16 -0
- package/packages/security/dist/cjs/core/password/utils.js +53 -0
- package/packages/security/dist/cjs/core/password/verify.d.ts +10 -0
- package/packages/security/dist/cjs/core/password/verify.js +46 -0
- package/packages/security/dist/cjs/index.d.ts +40 -0
- package/packages/security/dist/cjs/index.js +56 -0
- package/packages/security/dist/cjs/interfaces/jwt.interface.d.ts +47 -0
- package/packages/security/dist/cjs/interfaces/jwt.interface.js +2 -0
- package/packages/security/dist/cjs/interfaces/password.interface.d.ts +60 -0
- package/packages/security/dist/cjs/interfaces/password.interface.js +2 -0
- package/packages/security/dist/esm/core/crypto/cryptoManager.d.ts +111 -0
- package/packages/security/dist/esm/core/crypto/cryptoManager.js +203 -0
- package/packages/security/dist/esm/core/crypto/decrypt.d.ts +1 -0
- package/packages/security/dist/esm/core/crypto/decrypt.js +14 -0
- package/packages/security/dist/esm/core/crypto/encrypt.d.ts +1 -0
- package/packages/security/dist/esm/core/crypto/encrypt.js +9 -0
- package/packages/security/dist/esm/core/crypto/hmac.d.ts +8 -0
- package/packages/security/dist/esm/core/crypto/hmac.js +16 -0
- package/packages/security/dist/esm/core/crypto/index.d.ts +5 -0
- package/packages/security/dist/esm/core/crypto/index.js +5 -0
- package/packages/security/dist/esm/core/crypto/random.d.ts +8 -0
- package/packages/security/dist/esm/core/crypto/random.js +13 -0
- package/packages/security/dist/esm/core/jwt/decode.d.ts +12 -0
- package/packages/security/dist/esm/core/jwt/decode.js +24 -0
- package/packages/security/dist/esm/core/jwt/extractToken.d.ts +11 -0
- package/packages/security/dist/esm/core/jwt/extractToken.js +51 -0
- package/packages/security/dist/esm/core/jwt/generateTokens.d.ts +4 -0
- package/packages/security/dist/esm/core/jwt/generateTokens.js +32 -0
- package/packages/security/dist/esm/core/jwt/index.d.ts +8 -0
- package/packages/security/dist/esm/core/jwt/index.js +8 -0
- package/packages/security/dist/esm/core/jwt/jwtManager.d.ts +43 -0
- package/packages/security/dist/esm/core/jwt/jwtManager.js +181 -0
- package/packages/security/dist/esm/core/jwt/parseDuration.d.ts +1 -0
- package/packages/security/dist/esm/core/jwt/parseDuration.js +27 -0
- package/packages/security/dist/esm/core/jwt/signToken.d.ts +2 -0
- package/packages/security/dist/esm/core/jwt/signToken.js +23 -0
- package/packages/security/dist/esm/core/jwt/types.d.ts +22 -0
- package/packages/security/dist/esm/core/jwt/types.js +1 -0
- package/packages/security/dist/esm/core/jwt/validateToken.d.ts +16 -0
- package/packages/security/dist/esm/core/jwt/validateToken.js +42 -0
- package/packages/security/dist/esm/core/jwt/verify.d.ts +18 -0
- package/packages/security/dist/esm/core/jwt/verify.js +82 -0
- package/packages/security/dist/esm/core/password/hash.d.ts +10 -0
- package/packages/security/dist/esm/core/password/hash.js +35 -0
- package/packages/security/dist/esm/core/password/index.d.ts +3 -0
- package/packages/security/dist/esm/core/password/index.js +3 -0
- package/packages/security/dist/esm/core/password/passwordManager.d.ts +29 -0
- package/packages/security/dist/esm/core/password/passwordManager.js +205 -0
- package/packages/security/dist/esm/core/password/strength.d.ts +2 -0
- package/packages/security/dist/esm/core/password/strength.js +23 -0
- package/packages/security/dist/esm/core/password/types.d.ts +7 -0
- package/packages/security/dist/esm/core/password/types.js +1 -0
- package/packages/security/dist/esm/core/password/utils.d.ts +16 -0
- package/packages/security/dist/esm/core/password/utils.js +44 -0
- package/packages/security/dist/esm/core/password/verify.d.ts +10 -0
- package/packages/security/dist/esm/core/password/verify.js +36 -0
- package/packages/security/dist/esm/index.d.ts +40 -0
- package/packages/security/dist/esm/index.js +13 -0
- package/packages/security/dist/esm/interfaces/jwt.interface.d.ts +47 -0
- package/packages/security/dist/esm/interfaces/jwt.interface.js +1 -0
- package/packages/security/dist/esm/interfaces/password.interface.d.ts +60 -0
- package/packages/security/dist/esm/interfaces/password.interface.js +1 -0
- package/packages/security/dist/types/core/crypto/cryptoManager.d.ts +111 -0
- package/packages/security/dist/types/core/crypto/decrypt.d.ts +1 -0
- package/packages/security/dist/types/core/crypto/encrypt.d.ts +1 -0
- package/packages/security/dist/types/core/crypto/hmac.d.ts +8 -0
- package/packages/security/dist/types/core/crypto/index.d.ts +5 -0
- package/packages/security/dist/types/core/crypto/random.d.ts +8 -0
- package/packages/security/dist/types/core/jwt/decode.d.ts +12 -0
- package/packages/security/dist/types/core/jwt/extractToken.d.ts +11 -0
- package/packages/security/dist/types/core/jwt/generateTokens.d.ts +4 -0
- package/packages/security/dist/types/core/jwt/index.d.ts +8 -0
- package/packages/security/dist/types/core/jwt/jwtManager.d.ts +43 -0
- package/packages/security/dist/types/core/jwt/parseDuration.d.ts +1 -0
- package/packages/security/dist/types/core/jwt/signToken.d.ts +2 -0
- package/packages/security/dist/types/core/jwt/types.d.ts +22 -0
- package/packages/security/dist/types/core/jwt/validateToken.d.ts +16 -0
- package/packages/security/dist/types/core/jwt/verify.d.ts +18 -0
- package/packages/security/dist/types/core/password/hash.d.ts +10 -0
- package/packages/security/dist/types/core/password/index.d.ts +3 -0
- package/packages/security/dist/types/core/password/passwordManager.d.ts +29 -0
- package/packages/security/dist/types/core/password/strength.d.ts +2 -0
- package/packages/security/dist/types/core/password/types.d.ts +7 -0
- package/packages/security/dist/types/core/password/utils.d.ts +16 -0
- package/packages/security/dist/types/core/password/verify.d.ts +10 -0
- package/packages/security/dist/types/index.d.ts +40 -0
- package/packages/security/dist/types/interfaces/jwt.interface.d.ts +47 -0
- package/packages/security/dist/types/interfaces/password.interface.d.ts +60 -0
- package/packages/security/node_modules/.bin/bcrypt +21 -0
- package/packages/security/node_modules/.bin/rimraf +21 -0
- package/packages/security/node_modules/.bin/tsc +21 -0
- package/packages/security/node_modules/.bin/tsserver +21 -0
- package/packages/security/package.json +23 -4
- package/packages/security/src/core/crypto/cryptoManager.ts +324 -0
- package/packages/security/src/core/crypto/decrypt.ts +20 -0
- package/packages/security/src/core/crypto/encrypt.ts +14 -0
- package/packages/security/src/core/crypto/hmac.ts +23 -0
- package/packages/security/src/core/crypto/index.ts +5 -0
- package/packages/security/src/core/crypto/random.ts +15 -0
- package/packages/security/src/core/jwt/decode.ts +28 -0
- package/packages/security/src/core/jwt/extractToken.ts +59 -0
- package/packages/security/src/core/jwt/generateTokens.ts +51 -0
- package/packages/security/src/core/jwt/index.ts +8 -0
- package/packages/security/src/core/jwt/jwtManager.ts +233 -0
- package/packages/security/src/core/jwt/parseDuration.ts +34 -0
- package/packages/security/src/core/jwt/signToken.ts +32 -0
- package/packages/security/src/core/jwt/types.ts +29 -0
- package/packages/security/src/core/jwt/validateToken.ts +60 -0
- package/packages/security/src/core/jwt/verify.ts +117 -0
- package/packages/security/src/core/password/hash.ts +46 -0
- package/packages/security/src/core/password/index.ts +3 -0
- package/packages/security/src/core/password/passwordManager.ts +244 -0
- package/packages/security/src/core/password/strength.ts +40 -0
- package/packages/security/src/core/password/types.ts +7 -0
- package/packages/security/src/core/password/utils.ts +47 -0
- package/packages/security/src/core/password/verify.ts +49 -0
- package/packages/security/src/index.ts +21 -39
- package/packages/security/src/interfaces/jwt.interface.ts +58 -0
- package/packages/security/src/interfaces/password.interface.ts +54 -0
- package/packages/security/tsconfig.base.json +17 -0
- package/packages/security/tsconfig.cjs.json +9 -0
- package/packages/security/tsconfig.esm.json +9 -0
- package/packages/server-utils/README.md +412 -49
- package/packages/server-utils/dist/cjs/core/health.d.ts +5 -0
- package/packages/server-utils/dist/cjs/core/health.js +45 -0
- package/packages/server-utils/dist/cjs/core/periodic-health.d.ts +11 -0
- package/packages/server-utils/dist/cjs/core/periodic-health.js +68 -0
- package/packages/server-utils/dist/cjs/core/server.d.ts +73 -0
- package/packages/server-utils/dist/cjs/core/server.js +437 -0
- package/packages/server-utils/dist/cjs/core/shutdown.d.ts +5 -0
- package/packages/server-utils/dist/cjs/core/shutdown.js +58 -0
- package/packages/server-utils/dist/cjs/index.d.ts +46 -0
- package/packages/server-utils/dist/cjs/index.js +91 -0
- package/packages/server-utils/dist/cjs/middleware/auth.middleware.d.ts +6 -0
- package/packages/server-utils/dist/cjs/middleware/auth.middleware.js +44 -0
- package/packages/server-utils/dist/cjs/middleware/cache.middleware.d.ts +2 -0
- package/packages/server-utils/dist/cjs/middleware/cache.middleware.js +58 -0
- package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.d.ts +2 -0
- package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.js +47 -0
- package/packages/server-utils/dist/cjs/middleware/index.d.ts +10 -0
- package/packages/server-utils/dist/cjs/middleware/index.js +40 -0
- package/packages/server-utils/dist/cjs/middleware/logging.middleware.d.ts +2 -0
- package/packages/server-utils/dist/cjs/middleware/logging.middleware.js +19 -0
- package/packages/server-utils/dist/cjs/middleware/plugins.middleware.d.ts +14 -0
- package/packages/server-utils/dist/cjs/middleware/plugins.middleware.js +58 -0
- package/packages/server-utils/dist/cjs/middleware/rateLimiter.middleware.d.ts +8 -0
- package/packages/server-utils/dist/cjs/middleware/rateLimiter.middleware.js +35 -0
- package/packages/server-utils/dist/cjs/middleware/requestId.middleware.d.ts +2 -0
- package/packages/server-utils/dist/cjs/middleware/requestId.middleware.js +12 -0
- package/packages/server-utils/dist/cjs/middleware/session.middleware.d.ts +2 -0
- package/packages/server-utils/dist/cjs/middleware/session.middleware.js +53 -0
- package/packages/server-utils/dist/cjs/middleware/validation.middleware.d.ts +11 -0
- package/packages/server-utils/dist/cjs/middleware/validation.middleware.js +67 -0
- package/packages/server-utils/dist/cjs/types/index.d.ts +87 -0
- package/packages/server-utils/dist/cjs/types/index.js +2 -0
- package/packages/server-utils/dist/cjs/utils/utils.d.ts +3 -0
- package/packages/server-utils/dist/cjs/utils/utils.js +43 -0
- package/packages/server-utils/dist/esm/core/health.d.ts +5 -0
- package/packages/server-utils/dist/esm/core/health.js +40 -0
- package/packages/server-utils/dist/esm/core/periodic-health.d.ts +11 -0
- package/packages/server-utils/dist/esm/core/periodic-health.js +64 -0
- package/packages/server-utils/dist/esm/core/server.d.ts +73 -0
- package/packages/server-utils/dist/esm/core/server.js +396 -0
- package/packages/server-utils/dist/esm/core/shutdown.d.ts +5 -0
- package/packages/server-utils/dist/esm/core/shutdown.js +53 -0
- package/packages/server-utils/dist/esm/index.d.ts +46 -0
- package/packages/server-utils/dist/esm/index.js +58 -0
- package/packages/server-utils/dist/esm/middleware/auth.middleware.d.ts +6 -0
- package/packages/server-utils/dist/esm/middleware/auth.middleware.js +41 -0
- package/packages/server-utils/dist/esm/middleware/cache.middleware.d.ts +2 -0
- package/packages/server-utils/dist/esm/middleware/cache.middleware.js +55 -0
- package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.d.ts +2 -0
- package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.js +44 -0
- package/packages/server-utils/dist/esm/middleware/index.d.ts +10 -0
- package/packages/server-utils/dist/esm/middleware/index.js +20 -0
- package/packages/server-utils/dist/esm/middleware/logging.middleware.d.ts +2 -0
- package/packages/server-utils/dist/esm/middleware/logging.middleware.js +16 -0
- package/packages/server-utils/dist/esm/middleware/plugins.middleware.d.ts +14 -0
- package/packages/server-utils/dist/esm/middleware/plugins.middleware.js +47 -0
- package/packages/server-utils/dist/esm/middleware/rateLimiter.middleware.d.ts +8 -0
- package/packages/server-utils/dist/esm/middleware/rateLimiter.middleware.js +32 -0
- package/packages/server-utils/dist/esm/middleware/requestId.middleware.d.ts +2 -0
- package/packages/server-utils/dist/esm/middleware/requestId.middleware.js +9 -0
- package/packages/server-utils/dist/esm/middleware/session.middleware.d.ts +2 -0
- package/packages/server-utils/dist/esm/middleware/session.middleware.js +50 -0
- package/packages/server-utils/dist/esm/middleware/validation.middleware.d.ts +11 -0
- package/packages/server-utils/dist/esm/middleware/validation.middleware.js +64 -0
- package/packages/server-utils/dist/esm/types/index.d.ts +87 -0
- package/packages/server-utils/dist/esm/types/index.js +1 -0
- package/packages/server-utils/dist/esm/utils/utils.d.ts +3 -0
- package/packages/server-utils/dist/esm/utils/utils.js +38 -0
- package/packages/server-utils/dist/types/core/health.d.ts +5 -0
- package/packages/server-utils/dist/types/core/periodic-health.d.ts +11 -0
- package/packages/server-utils/dist/types/core/server.d.ts +73 -0
- package/packages/server-utils/dist/types/core/shutdown.d.ts +5 -0
- package/packages/server-utils/dist/types/index.d.ts +46 -0
- package/packages/server-utils/dist/types/middleware/auth.middleware.d.ts +6 -0
- package/packages/server-utils/dist/types/middleware/cache.middleware.d.ts +2 -0
- package/packages/server-utils/dist/types/middleware/errorHandler.middleware.d.ts +2 -0
- package/packages/server-utils/dist/types/middleware/index.d.ts +10 -0
- package/packages/server-utils/dist/types/middleware/logging.middleware.d.ts +2 -0
- package/packages/server-utils/dist/types/middleware/plugins.middleware.d.ts +14 -0
- package/packages/server-utils/dist/types/middleware/rateLimiter.middleware.d.ts +8 -0
- package/packages/server-utils/dist/types/middleware/requestId.middleware.d.ts +2 -0
- package/packages/server-utils/dist/types/middleware/session.middleware.d.ts +2 -0
- package/packages/server-utils/dist/types/middleware/validation.middleware.d.ts +11 -0
- package/packages/server-utils/dist/types/types/index.d.ts +87 -0
- package/packages/server-utils/dist/types/utils/utils.d.ts +3 -0
- package/packages/server-utils/node_modules/.bin/rimraf +21 -0
- package/packages/server-utils/node_modules/.bin/tsc +21 -0
- package/packages/server-utils/node_modules/.bin/tsserver +21 -0
- package/packages/server-utils/package.json +30 -6
- package/packages/server-utils/src/core/health.ts +58 -0
- package/packages/server-utils/src/core/periodic-health.ts +88 -0
- package/packages/server-utils/src/core/server.ts +650 -0
- package/packages/server-utils/src/core/shutdown.ts +78 -0
- package/packages/server-utils/src/express-augment.d.ts +35 -0
- package/packages/server-utils/src/index.ts +132 -95
- package/packages/server-utils/src/middleware/auth.middleware.ts +79 -0
- package/packages/server-utils/src/middleware/cache.middleware.ts +68 -0
- package/packages/server-utils/src/middleware/errorHandler.middleware.ts +59 -0
- package/packages/server-utils/src/middleware/index.ts +46 -0
- package/packages/server-utils/src/middleware/logging.middleware.ts +29 -0
- package/packages/server-utils/src/middleware/plugins.middleware.ts +64 -0
- package/packages/server-utils/src/middleware/rateLimiter.middleware.ts +59 -0
- package/packages/server-utils/src/middleware/requestId.middleware.ts +16 -0
- package/packages/server-utils/src/middleware/session.middleware.ts +69 -0
- package/packages/server-utils/src/middleware/validation.middleware.ts +100 -0
- package/packages/server-utils/src/types/index.ts +114 -0
- package/packages/server-utils/src/utils/utils.ts +43 -0
- package/packages/server-utils/tsconfig.base.json +17 -0
- package/packages/server-utils/tsconfig.cjs.json +9 -0
- package/packages/server-utils/tsconfig.esm.json +9 -0
- package/packages/server-utils/src/health.ts +0 -47
- package/packages/server-utils/src/middleware.ts +0 -275
- package/packages/server-utils/src/server.ts +0 -320
- package/packages/server-utils/src/shutdown.ts +0 -60
- package/packages/server-utils/src/types.ts +0 -64
- package/packages/server-utils/src/utils.ts +0 -34
- /package/packages/{response-utils → cache}/tsconfig.json +0 -0
|
@@ -0,0 +1,791 @@
|
|
|
1
|
+
# @naman_deep_singh/cache
|
|
2
|
+
|
|
3
|
+
**Version:** 1.4.0 (with Redis Clustering support)
|
|
4
|
+
|
|
5
|
+
A flexible, extensible caching layer with support for Redis, Memcache, and in-memory caches. Includes session management, health checks, and Express middleware.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🚀 **Multiple Adapters**: Redis, Memcache, and in-memory cache support
|
|
10
|
+
- 🔄 **Automatic Fallback**: Gracefully fall back to in-memory cache if primary adapter fails
|
|
11
|
+
- 📦 **Namespacing**: Organize cache keys with optional prefixes to prevent collisions
|
|
12
|
+
- 🎯 **Generic Types**: Full TypeScript support with generics for type-safe caching
|
|
13
|
+
- 📊 **Statistics**: Track cache hits, misses, sets, and deletes
|
|
14
|
+
- 💾 **Session Management**: Built-in SessionStore wrapper for session handling
|
|
15
|
+
- 🌐 **Express Middleware**: Pre-built middleware for session management and response caching
|
|
16
|
+
- ⚡ **Async/Await**: Modern async API throughout
|
|
17
|
+
- 🔌 **Production Ready**: Error handling, health checks, and connection management
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @naman_deep_singh/cache redis memcached
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Peer Dependencies
|
|
26
|
+
|
|
27
|
+
- `redis` (for Redis adapter)
|
|
28
|
+
- `memcached` (for Memcache adapter)
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
### Using the Factory
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
|
|
36
|
+
Both are optional if you're only using the memory adapter.
|
|
37
|
+
|
|
38
|
+
All cache-related failures throw a CacheError, which:
|
|
39
|
+
|
|
40
|
+
Extends AppError
|
|
41
|
+
|
|
42
|
+
Uses cache-specific error codes
|
|
43
|
+
|
|
44
|
+
Supports adapter & operation metadata
|
|
45
|
+
|
|
46
|
+
Integrates with centralized error message resolution via errorMessageRegistry
|
|
47
|
+
|
|
48
|
+
Integrates with centralized error message resolution via errorMessageRegistry
|
|
49
|
+
|
|
50
|
+
import { CacheError } from '@naman_deep_singh/cache'
|
|
51
|
+
import { CACHE_ERROR_CODES } from '@naman_deep_singh/cache/errors'
|
|
52
|
+
|
|
53
|
+
Cache Error Codes
|
|
54
|
+
|
|
55
|
+
Cache-specific error codes are scoped to this package and are not mixed with global application error codes.
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
|
|
59
|
+
CACHE_ERROR
|
|
60
|
+
|
|
61
|
+
CACHE_CONNECTION_FAILED
|
|
62
|
+
|
|
63
|
+
CACHE_UNSUPPORTED_ADAPTER
|
|
64
|
+
|
|
65
|
+
CACHE_INVALID_CONFIG
|
|
66
|
+
|
|
67
|
+
CACHE_KEY_NOT_FOUND
|
|
68
|
+
|
|
69
|
+
CACHE_OPERATION_TIMEOUT
|
|
70
|
+
|
|
71
|
+
CACHE_SERIALIZE_ERROR
|
|
72
|
+
|
|
73
|
+
CACHE_DESERIALIZE_ERROR
|
|
74
|
+
|
|
75
|
+
SESSION_CREATE_ERROR
|
|
76
|
+
|
|
77
|
+
SESSION_GET_ERROR
|
|
78
|
+
|
|
79
|
+
SESSION_UPDATE_ERROR
|
|
80
|
+
|
|
81
|
+
SESSION_DELETE_ERROR
|
|
82
|
+
|
|
83
|
+
SESSION_EXISTS_ERROR
|
|
84
|
+
|
|
85
|
+
SESSION_CLEAR_ERROR
|
|
86
|
+
|
|
87
|
+
SESSION_GET_MULTIPLE_ERROR
|
|
88
|
+
|
|
89
|
+
SESSION_DELETE_MULTIPLE_ERROR
|
|
90
|
+
|
|
91
|
+
SESSION_EXTEND_ERROR
|
|
92
|
+
|
|
93
|
+
SESSION_GET_EXTEND_ERROR
|
|
94
|
+
|
|
95
|
+
SESSION_NOT_FOUND
|
|
96
|
+
|
|
97
|
+
These codes are registered internally using errorMessageRegistry, ensuring consistent messaging across services.
|
|
98
|
+
|
|
99
|
+
Example: Handling Cache Errors
|
|
100
|
+
try {
|
|
101
|
+
await cache.get('user:123')
|
|
102
|
+
} catch (error) {
|
|
103
|
+
if (error instanceof CacheError) {
|
|
104
|
+
console.error('Cache error occurred', {
|
|
105
|
+
code: error.code,
|
|
106
|
+
adapter: error.adapter,
|
|
107
|
+
operation: error.operation,
|
|
108
|
+
details: error.details,
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
Example: Adapter-Level Error Throwing
|
|
114
|
+
|
|
115
|
+
throw new CacheError(CACHE_ERROR_CODES.CACHE_CONNECTION_FAILED, {
|
|
116
|
+
adapter: 'memcache',
|
|
117
|
+
operation: 'connect',
|
|
118
|
+
cause: error,
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
Design Notes
|
|
122
|
+
|
|
123
|
+
❌ Cache errors do not extend HTTP error classes
|
|
124
|
+
|
|
125
|
+
❌ Cache errors do not pollute global ErrorCode
|
|
126
|
+
|
|
127
|
+
✅ Cache errors are package-scoped
|
|
128
|
+
|
|
129
|
+
✅ Error messages remain centralized and overridable
|
|
130
|
+
|
|
131
|
+
✅ Metadata (adapter, operation) is preserved for observability
|
|
132
|
+
|
|
133
|
+
import { CacheFactory, SessionStore } from '@naman_deep_singh/cache';
|
|
134
|
+
|
|
135
|
+
// Create a Redis cache
|
|
136
|
+
const cache = CacheFactory.create({
|
|
137
|
+
adapter: 'redis',
|
|
138
|
+
host: 'localhost',
|
|
139
|
+
port: 6379,
|
|
140
|
+
namespace: 'myapp',
|
|
141
|
+
ttl: 3600
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Or with fallback support
|
|
145
|
+
const cacheWithFallback = await CacheFactory.createWithFallback({
|
|
146
|
+
adapter: 'redis',
|
|
147
|
+
host: 'localhost',
|
|
148
|
+
port: 6379,
|
|
149
|
+
fallback: true // Falls back to memory cache if Redis fails
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Basic Cache Operations
|
|
154
|
+
|
|
155
|
+
All adapters (Redis, Memcache, Memory) implement the same `ICache<T>` interface and work identically:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// Set a value (with TTL in seconds)
|
|
159
|
+
await cache.set('user:123', { id: 123, name: 'John' }, 3600); // 1 hour
|
|
160
|
+
|
|
161
|
+
// Get a value
|
|
162
|
+
const user = await cache.get('user:123');
|
|
163
|
+
console.log(user); // { id: 123, name: 'John' } or null if not found
|
|
164
|
+
|
|
165
|
+
// Check existence
|
|
166
|
+
const exists = await cache.exists('user:123'); // true or false
|
|
167
|
+
|
|
168
|
+
// Delete a value
|
|
169
|
+
const deleted = await cache.delete('user:123'); // true if existed, false otherwise
|
|
170
|
+
|
|
171
|
+
// Clear all cache (respects namespace)
|
|
172
|
+
await cache.clear();
|
|
173
|
+
|
|
174
|
+
// Increment/Decrement (for numeric values)
|
|
175
|
+
await cache.set('visits', 0);
|
|
176
|
+
const visits = await cache.increment('visits'); // 1
|
|
177
|
+
const decremented = await cache.decrement('visits'); // 0
|
|
178
|
+
await cache.increment('visits', 5); // increment by 5 -> 5
|
|
179
|
+
await cache.decrement('counter', 2); // decrement by 2
|
|
180
|
+
|
|
181
|
+
// Batch get operations
|
|
182
|
+
const users = await cache.getMultiple(['user:1', 'user:2', 'user:3']);
|
|
183
|
+
// Returns: { 'user:1': userData1, 'user:2': null, 'user:3': userData3 }
|
|
184
|
+
|
|
185
|
+
// Batch set operations
|
|
186
|
+
await cache.setMultiple({
|
|
187
|
+
'user:1': user1,
|
|
188
|
+
'user:2': user2,
|
|
189
|
+
'user:3': user3
|
|
190
|
+
}, 3600); // All with same TTL
|
|
191
|
+
|
|
192
|
+
// Batch delete operations
|
|
193
|
+
const deletedCount = await cache.deleteMultiple(['user:1', 'user:2', 'user:3']);
|
|
194
|
+
console.log(`Deleted ${deletedCount} keys`);
|
|
195
|
+
|
|
196
|
+
// Get cache statistics
|
|
197
|
+
const stats = await cache.getStats();
|
|
198
|
+
console.log(`Cache hits: ${stats.hits}`);
|
|
199
|
+
console.log(`Cache misses: ${stats.misses}`);
|
|
200
|
+
console.log(`Total sets: ${stats.sets}`);
|
|
201
|
+
console.log(`Total deletes: ${stats.deletes}`);
|
|
202
|
+
|
|
203
|
+
// Health check (verify connection)
|
|
204
|
+
const health = await cache.isAlive();
|
|
205
|
+
console.log(`Cache status:`, health);
|
|
206
|
+
// { isAlive: true, adapter: 'redis', timestamp: Date, error?: undefined }
|
|
207
|
+
|
|
208
|
+
// Close connection (cleanup)
|
|
209
|
+
await cache.close();
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Session Management
|
|
213
|
+
|
|
214
|
+
SessionStore provides a convenient wrapper around any cache adapter for session handling.
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
import { CacheFactory, SessionStore } from '@naman_deep_singh/cache';
|
|
218
|
+
|
|
219
|
+
// Create cache (any adapter works the same way)
|
|
220
|
+
const cache = CacheFactory.create({
|
|
221
|
+
adapter: 'redis', // or 'memcache' or 'memory'
|
|
222
|
+
host: 'localhost',
|
|
223
|
+
port: 6379,
|
|
224
|
+
namespace: 'sessions'
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Initialize session store
|
|
228
|
+
const sessionStore = new SessionStore(cache, {
|
|
229
|
+
ttl: 86400, // 24 hours default
|
|
230
|
+
serialize: (data) => JSON.stringify(data),
|
|
231
|
+
deserialize: (data) => JSON.parse(data)
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Create a new session
|
|
235
|
+
await sessionStore.create('session:abc123', {
|
|
236
|
+
userId: 123,
|
|
237
|
+
username: 'john',
|
|
238
|
+
roles: ['admin'],
|
|
239
|
+
permissions: ['read', 'write']
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// Retrieve session data
|
|
243
|
+
const session = await sessionStore.get('session:abc123');
|
|
244
|
+
console.log(session); // { userId: 123, username: 'john', ... }
|
|
245
|
+
|
|
246
|
+
// Check if session exists
|
|
247
|
+
const sessionExists = await sessionStore.exists('session:abc123'); // true
|
|
248
|
+
|
|
249
|
+
// Update/merge session data
|
|
250
|
+
await sessionStore.update('session:abc123', {
|
|
251
|
+
lastActivity: new Date(),
|
|
252
|
+
permissions: ['read', 'write', 'delete']
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// Extend session expiry (keep user logged in)
|
|
256
|
+
await sessionStore.extend('session:abc123', 86400); // 24 more hours
|
|
257
|
+
|
|
258
|
+
// Get session and extend in one operation (useful for every request)
|
|
259
|
+
const sessionData = await sessionStore.getAndExtend('session:abc123');
|
|
260
|
+
|
|
261
|
+
// Get multiple sessions
|
|
262
|
+
const sessions = await sessionStore.getMultiple([
|
|
263
|
+
'session:user1',
|
|
264
|
+
'session:user2',
|
|
265
|
+
'session:user3'
|
|
266
|
+
]);
|
|
267
|
+
|
|
268
|
+
// Delete a single session (logout)
|
|
269
|
+
const deleted = await sessionStore.delete('session:abc123'); // true if existed
|
|
270
|
+
|
|
271
|
+
// Delete multiple sessions
|
|
272
|
+
const deletedCount = await sessionStore.deleteMultiple([
|
|
273
|
+
'session:user1',
|
|
274
|
+
'session:user2'
|
|
275
|
+
]);
|
|
276
|
+
|
|
277
|
+
// Clear all sessions (e.g., on server maintenance)
|
|
278
|
+
await sessionStore.clear();
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Adapters
|
|
282
|
+
|
|
283
|
+
All adapters implement the same `ICache<T>` interface and can be used interchangeably. Switching between adapters requires only changing the configuration!
|
|
284
|
+
|
|
285
|
+
### Redis Cache
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
import { RedisCache } from '@naman_deep_singh/cache';
|
|
289
|
+
|
|
290
|
+
const cache = new RedisCache({
|
|
291
|
+
adapter: 'redis',
|
|
292
|
+
host: 'localhost',
|
|
293
|
+
port: 6379,
|
|
294
|
+
username: 'default', // Optional, for auth
|
|
295
|
+
password: 'your_password', // Optional
|
|
296
|
+
db: 0, // Optional, database number (0-15)
|
|
297
|
+
tls: false, // Optional, enable TLS/SSL
|
|
298
|
+
namespace: 'myapp', // Optional, key prefix
|
|
299
|
+
ttl: 3600 // Default TTL in seconds
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
// All ICache methods available
|
|
303
|
+
await cache.set('key', value);
|
|
304
|
+
await cache.get('key');
|
|
305
|
+
await cache.delete('key');
|
|
306
|
+
// ... and all other methods
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Redis Cluster Support
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
import { CacheFactory } from '@naman_deep_singh/cache';
|
|
313
|
+
|
|
314
|
+
// Single cluster configuration with array notation
|
|
315
|
+
const clusterCache = CacheFactory.create({
|
|
316
|
+
adapter: 'redis',
|
|
317
|
+
cluster: [
|
|
318
|
+
{ host: 'redis-node-1.example.com', port: 6379 },
|
|
319
|
+
{ host: 'redis-node-2.example.com', port: 6379 },
|
|
320
|
+
{ host: 'redis-node-3.example.com', port: 6379 }
|
|
321
|
+
],
|
|
322
|
+
namespace: 'myapp',
|
|
323
|
+
ttl: 3600
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
// Or with detailed cluster config
|
|
327
|
+
const clusterCacheAlt = CacheFactory.create({
|
|
328
|
+
adapter: 'redis',
|
|
329
|
+
cluster: {
|
|
330
|
+
nodes: [
|
|
331
|
+
{ host: 'redis-node-1.example.com', port: 6379 },
|
|
332
|
+
{ host: 'redis-node-2.example.com', port: 6379 }
|
|
333
|
+
],
|
|
334
|
+
options: {
|
|
335
|
+
enableReadyCheck: true,
|
|
336
|
+
maxRedirections: 3,
|
|
337
|
+
retryDelayOnFailover: 100,
|
|
338
|
+
retryDelayOnClusterDown: 300
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// Use exactly like single instance - same ICache interface
|
|
344
|
+
await clusterCache.set('key', value);
|
|
345
|
+
const data = await clusterCache.get('key');
|
|
346
|
+
await clusterCache.delete('key');
|
|
347
|
+
|
|
348
|
+
// Cluster automatically handles key distribution across nodes
|
|
349
|
+
// No changes needed to your application logic
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Note:** Cannot mix single-instance (`host`/`port`) and cluster (`cluster`) config. Choose one or the other.
|
|
353
|
+
|
|
354
|
+
### Memcache Adapter
|
|
355
|
+
|
|
356
|
+
```typescript
|
|
357
|
+
import { MemcacheCache } from '@naman_deep_singh/cache';
|
|
358
|
+
|
|
359
|
+
const cache = new MemcacheCache({
|
|
360
|
+
adapter: 'memcache',
|
|
361
|
+
servers: 'localhost:11211', // Single server as string
|
|
362
|
+
// OR
|
|
363
|
+
// servers: ['localhost:11211', 'localhost:11212'], // Multiple servers
|
|
364
|
+
username: 'user', // Optional
|
|
365
|
+
password: 'pass', // Optional
|
|
366
|
+
namespace: 'myapp', // Optional, key prefix
|
|
367
|
+
ttl: 3600 // Default TTL in seconds
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
// Same ICache interface as Redis
|
|
371
|
+
await cache.set('key', value);
|
|
372
|
+
await cache.get('key');
|
|
373
|
+
await cache.delete('key');
|
|
374
|
+
// ... and all other methods
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Memory Cache (For Development/Testing)
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
import { MemoryCache } from '@naman_deep_singh/cache';
|
|
381
|
+
|
|
382
|
+
const cache = new MemoryCache({
|
|
383
|
+
adapter: 'memory',
|
|
384
|
+
namespace: 'myapp', // Optional, key prefix
|
|
385
|
+
ttl: 3600, // Default TTL in seconds
|
|
386
|
+
maxSize: 1000 // Optional, max items (oldest removed when exceeded)
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
// Same ICache interface - perfect for testing without external dependencies
|
|
390
|
+
await cache.set('key', value);
|
|
391
|
+
await cache.get('key');
|
|
392
|
+
await cache.delete('key');
|
|
393
|
+
// ... and all other methods
|
|
394
|
+
|
|
395
|
+
// Note: Memory cache automatically cleans up expired items every 30 seconds
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Using Adapters Interchangeably
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
// Development: use memory cache
|
|
402
|
+
let cache: ICache;
|
|
403
|
+
if (process.env.NODE_ENV === 'development') {
|
|
404
|
+
cache = new MemoryCache({ adapter: 'memory' });
|
|
405
|
+
} else if (process.env.REDIS_URL) {
|
|
406
|
+
cache = new RedisCache({ adapter: 'redis', host: 'localhost' });
|
|
407
|
+
} else {
|
|
408
|
+
cache = new MemcacheCache({ adapter: 'memcache', servers: 'localhost:11211' });
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// All subsequent code works the same regardless of adapter
|
|
412
|
+
await cache.set('user:1', userData);
|
|
413
|
+
const user = await cache.get('user:1');
|
|
414
|
+
const health = await cache.isAlive();
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## Express Middleware
|
|
418
|
+
|
|
419
|
+
### Session Management Middleware
|
|
420
|
+
|
|
421
|
+
```typescript
|
|
422
|
+
import express from 'express';
|
|
423
|
+
import cookieParser from 'cookie-parser';
|
|
424
|
+
import { CacheFactory, SessionStore, cacheSessionMiddleware } from '@naman_deep_singh/cache';
|
|
425
|
+
|
|
426
|
+
const app = express();
|
|
427
|
+
app.use(cookieParser());
|
|
428
|
+
|
|
429
|
+
const cache = CacheFactory.create({
|
|
430
|
+
adapter: 'redis',
|
|
431
|
+
host: 'localhost',
|
|
432
|
+
port: 6379,
|
|
433
|
+
namespace: 'sessions'
|
|
434
|
+
});
|
|
435
|
+
|
|
436
|
+
const sessionStore = new SessionStore(cache);
|
|
437
|
+
|
|
438
|
+
app.use(
|
|
439
|
+
cacheSessionMiddleware(sessionStore, {
|
|
440
|
+
sessionIdHeader: 'x-session-id', // Or use cookie
|
|
441
|
+
sessionDataKey: 'session' // req.session
|
|
442
|
+
})
|
|
443
|
+
);
|
|
444
|
+
|
|
445
|
+
app.get('/profile', (req, res) => {
|
|
446
|
+
const session = (req as any).session;
|
|
447
|
+
if (!session) {
|
|
448
|
+
return res.status(401).json({ error: 'No session' });
|
|
449
|
+
}
|
|
450
|
+
res.json({ user: session });
|
|
451
|
+
});
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Cache Health Check Middleware
|
|
455
|
+
|
|
456
|
+
Expose cache health status at a dedicated endpoint:
|
|
457
|
+
|
|
458
|
+
```typescript
|
|
459
|
+
import { CacheFactory, cacheHealthCheckMiddleware } from '@naman_deep_singh/cache';
|
|
460
|
+
|
|
461
|
+
const cache = CacheFactory.create({
|
|
462
|
+
adapter: 'redis',
|
|
463
|
+
host: 'localhost'
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
// Add middleware
|
|
467
|
+
app.use(cacheHealthCheckMiddleware(cache, '/.health/cache'));
|
|
468
|
+
|
|
469
|
+
// Usage:
|
|
470
|
+
// GET /.health/cache
|
|
471
|
+
// Response:
|
|
472
|
+
// {
|
|
473
|
+
// "isAlive": true,
|
|
474
|
+
// "adapter": "redis",
|
|
475
|
+
// "timestamp": "2024-01-01T12:00:00.000Z"
|
|
476
|
+
// }
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### Response Caching Middleware
|
|
480
|
+
|
|
481
|
+
Automatically cache HTTP responses for GET requests:
|
|
482
|
+
|
|
483
|
+
```typescript
|
|
484
|
+
import { CacheFactory, cacheResponseMiddleware } from '@naman_deep_singh/cache';
|
|
485
|
+
|
|
486
|
+
const cache = CacheFactory.create({
|
|
487
|
+
adapter: 'redis',
|
|
488
|
+
host: 'localhost'
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
// Add middleware
|
|
492
|
+
app.use(
|
|
493
|
+
cacheResponseMiddleware(cache, {
|
|
494
|
+
ttl: 300, // Cache for 5 minutes
|
|
495
|
+
keyPrefix: 'response:', // All keys start with this
|
|
496
|
+
excludeStatusCodes: [404, 500, 502, 503] // Don't cache errors
|
|
497
|
+
})
|
|
498
|
+
);
|
|
499
|
+
|
|
500
|
+
// Usage in routes
|
|
501
|
+
app.get('/api/users', (req, res) => {
|
|
502
|
+
// First request: fetches from database, caches response
|
|
503
|
+
// Subsequent requests: returns from cache
|
|
504
|
+
res.json({ users: [...] });
|
|
505
|
+
// Response headers will include X-Cache: HIT or MISS
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
app.get('/api/data', async (req, res) => {
|
|
509
|
+
// Expensive operation
|
|
510
|
+
const data = await expensiveQuery();
|
|
511
|
+
res.json(data);
|
|
512
|
+
// X-Cache: MISS (first time)
|
|
513
|
+
// X-Cache: HIT (subsequent requests within 5 minutes)
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
// Client can check cache status
|
|
517
|
+
app.get('/api/stats', (req, res) => {
|
|
518
|
+
// Not cached (responses with statusCode >= 300)
|
|
519
|
+
res.status(201).json({ created: true });
|
|
520
|
+
// X-Cache: MISS
|
|
521
|
+
});
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
## Error Handling
|
|
525
|
+
|
|
526
|
+
```typescript
|
|
527
|
+
import { CacheError } from '@naman_deep_singh/cache';
|
|
528
|
+
|
|
529
|
+
try {
|
|
530
|
+
await cache.get('key');
|
|
531
|
+
} catch (error) {
|
|
532
|
+
if (error instanceof CacheError) {
|
|
533
|
+
console.log(`Error: ${error.message}`);
|
|
534
|
+
console.log(`Code: ${error.code}`);
|
|
535
|
+
console.log(`Adapter: ${error.adapter}`);
|
|
536
|
+
console.log(`Original error:`, error.originalError);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Error codes:
|
|
541
|
+
// - CACHE_ERROR: Generic cache error
|
|
542
|
+
// - REDIS_CONNECTION_ERROR: Failed to connect to Redis
|
|
543
|
+
// - REDIS_GET_ERROR, REDIS_SET_ERROR, etc.
|
|
544
|
+
// - MEMCACHE_CONNECTION_ERROR: Failed to connect to Memcache
|
|
545
|
+
// - MEMCACHE_GET_ERROR, MEMCACHE_SET_ERROR, etc.
|
|
546
|
+
// - MEMORY_GET_ERROR, MEMORY_SET_ERROR, etc.
|
|
547
|
+
// - SESSION_NOT_FOUND: Session doesn't exist
|
|
548
|
+
// - SESSION_CREATE_ERROR, SESSION_UPDATE_ERROR, etc.
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
## Complete API Reference
|
|
552
|
+
|
|
553
|
+
### ICache<T> Interface
|
|
554
|
+
|
|
555
|
+
Every adapter implements this interface:
|
|
556
|
+
|
|
557
|
+
```typescript
|
|
558
|
+
interface ICache<T = unknown> {
|
|
559
|
+
// Single item operations
|
|
560
|
+
get(key: string): Promise<T | null>;
|
|
561
|
+
set(key: string, value: T, ttl?: number): Promise<void>;
|
|
562
|
+
delete(key: string): Promise<boolean>;
|
|
563
|
+
exists(key: string): Promise<boolean>;
|
|
564
|
+
|
|
565
|
+
// Batch operations
|
|
566
|
+
getMultiple(keys: string[]): Promise<Record<string, T | null>>;
|
|
567
|
+
setMultiple(data: Record<string, T>, ttl?: number): Promise<void>;
|
|
568
|
+
deleteMultiple(keys: string[]): Promise<number>;
|
|
569
|
+
|
|
570
|
+
// Numeric operations
|
|
571
|
+
increment(key: string, amount?: number): Promise<number>;
|
|
572
|
+
decrement(key: string, amount?: number): Promise<number>;
|
|
573
|
+
|
|
574
|
+
// Utility operations
|
|
575
|
+
clear(): Promise<void>;
|
|
576
|
+
getStats?(): Promise<CacheStats>;
|
|
577
|
+
isAlive(): Promise<HealthCheckResponse>;
|
|
578
|
+
close(): Promise<void>;
|
|
579
|
+
}
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### CacheFactory
|
|
583
|
+
|
|
584
|
+
```typescript
|
|
585
|
+
// Create a cache instance
|
|
586
|
+
const cache = CacheFactory.create({
|
|
587
|
+
adapter: 'redis' | 'memcache' | 'memory',
|
|
588
|
+
// ... adapter-specific config
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
// Create with automatic fallback to memory cache
|
|
592
|
+
const cacheWithFallback = await CacheFactory.createWithFallback({
|
|
593
|
+
adapter: 'redis',
|
|
594
|
+
// ... config
|
|
595
|
+
fallback: true // Falls back to memory if primary fails
|
|
596
|
+
});
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### SessionStore
|
|
600
|
+
|
|
601
|
+
```typescript
|
|
602
|
+
const sessionStore = new SessionStore(cache, {
|
|
603
|
+
ttl: 3600,
|
|
604
|
+
serialize: (data) => JSON.stringify(data),
|
|
605
|
+
deserialize: (data) => JSON.parse(data)
|
|
606
|
+
});
|
|
607
|
+
|
|
608
|
+
// Methods
|
|
609
|
+
await sessionStore.create(sessionId, data, ttl?);
|
|
610
|
+
await sessionStore.get(sessionId);
|
|
611
|
+
await sessionStore.update(sessionId, partialData);
|
|
612
|
+
await sessionStore.delete(sessionId);
|
|
613
|
+
await sessionStore.exists(sessionId);
|
|
614
|
+
await sessionStore.extend(sessionId, ttl?);
|
|
615
|
+
await sessionStore.getAndExtend(sessionId, ttl?);
|
|
616
|
+
await sessionStore.getMultiple(sessionIds);
|
|
617
|
+
await sessionStore.deleteMultiple(sessionIds);
|
|
618
|
+
await sessionStore.clear();
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
## Configuration Examples
|
|
622
|
+
|
|
623
|
+
### Development
|
|
624
|
+
|
|
625
|
+
```typescript
|
|
626
|
+
const cache = CacheFactory.create({
|
|
627
|
+
adapter: 'memory',
|
|
628
|
+
namespace: 'dev',
|
|
629
|
+
ttl: 600
|
|
630
|
+
});
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### Production with Fallback
|
|
634
|
+
|
|
635
|
+
```typescript
|
|
636
|
+
const cache = await CacheFactory.createWithFallback({
|
|
637
|
+
adapter: 'redis',
|
|
638
|
+
host: process.env.REDIS_HOST,
|
|
639
|
+
port: parseInt(process.env.REDIS_PORT),
|
|
640
|
+
password: process.env.REDIS_PASSWORD,
|
|
641
|
+
db: 0,
|
|
642
|
+
namespace: 'prod',
|
|
643
|
+
ttl: 3600,
|
|
644
|
+
fallback: true
|
|
645
|
+
});
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
### Multi-Tenant with Namespacing
|
|
649
|
+
|
|
650
|
+
```typescript
|
|
651
|
+
const getTenantCache = (tenantId: string) => {
|
|
652
|
+
return CacheFactory.create({
|
|
653
|
+
adapter: 'redis',
|
|
654
|
+
host: 'localhost',
|
|
655
|
+
namespace: `tenant:${tenantId}`,
|
|
656
|
+
ttl: 3600
|
|
657
|
+
});
|
|
658
|
+
};
|
|
659
|
+
|
|
660
|
+
const tenant1Cache = getTenantCache('tenant-1');
|
|
661
|
+
const tenant2Cache = getTenantCache('tenant-2');
|
|
662
|
+
|
|
663
|
+
// Keys are isolated: tenant-1:key vs tenant-2:key
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
## Connecting and Disconnecting
|
|
667
|
+
|
|
668
|
+
### Redis
|
|
669
|
+
|
|
670
|
+
```typescript
|
|
671
|
+
const cache = new RedisCache({
|
|
672
|
+
adapter: 'redis',
|
|
673
|
+
host: 'localhost'
|
|
674
|
+
});
|
|
675
|
+
|
|
676
|
+
// Automatically connects on first use or explicitly:
|
|
677
|
+
// await (cache as any).connect();
|
|
678
|
+
|
|
679
|
+
// Close when done
|
|
680
|
+
await cache.close();
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### Memcache
|
|
684
|
+
|
|
685
|
+
```typescript
|
|
686
|
+
const cache = new MemcacheCache({
|
|
687
|
+
adapter: 'memcache',
|
|
688
|
+
servers: ['localhost:11211']
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
// Automatically connects
|
|
692
|
+
// Close when done
|
|
693
|
+
await cache.close();
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## Adapter Comparison
|
|
697
|
+
|
|
698
|
+
All adapters implement the same `ICache<T>` interface and work identically. Choose based on your needs:
|
|
699
|
+
|
|
700
|
+
| Feature | Redis | Memcache | Memory |
|
|
701
|
+
|---------|-------|----------|--------|
|
|
702
|
+
| **Type** | External service | External service | In-process |
|
|
703
|
+
| **Setup** | Requires Redis server | Requires Memcache server | No setup needed |
|
|
704
|
+
| **Persistence** | Optional (configurable) | No persistence | Lost on restart |
|
|
705
|
+
| **Scalability** | Excellent (supports millions) | Good (scalable across servers) | Limited to RAM |
|
|
706
|
+
| **Best For** | Production (distributed systems) | High-traffic scenarios | Development & testing |
|
|
707
|
+
| **Cost** | Free (open source) | Free (open source) | Free |
|
|
708
|
+
| **Performance** | Fast | Very Fast | Fastest (in-memory) |
|
|
709
|
+
| **Cluster Support** | Yes (v1.2+) | Yes | N/A |
|
|
710
|
+
| **Authentication** | Username/Password/TLS | Optional | N/A |
|
|
711
|
+
|
|
712
|
+
### When to Use Each
|
|
713
|
+
|
|
714
|
+
```typescript
|
|
715
|
+
// Development: quick setup, no dependencies
|
|
716
|
+
const devCache = CacheFactory.create({ adapter: 'memory' });
|
|
717
|
+
|
|
718
|
+
// Testing: mock external services
|
|
719
|
+
const testCache = CacheFactory.create({ adapter: 'memory' });
|
|
720
|
+
|
|
721
|
+
// Production single instance: single server, high performance
|
|
722
|
+
const prodCache = CacheFactory.create({
|
|
723
|
+
adapter: 'redis',
|
|
724
|
+
host: process.env.REDIS_HOST,
|
|
725
|
+
port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 6379,
|
|
726
|
+
password: process.env.REDIS_PASSWORD
|
|
727
|
+
});
|
|
728
|
+
|
|
729
|
+
// Production cluster: distributed Redis cluster
|
|
730
|
+
const clusterCache = CacheFactory.create({
|
|
731
|
+
adapter: 'redis',
|
|
732
|
+
cluster: [
|
|
733
|
+
{ host: 'redis-node-1', port: 6379 },
|
|
734
|
+
{ host: 'redis-node-2', port: 6379 },
|
|
735
|
+
{ host: 'redis-node-3', port: 6379 }
|
|
736
|
+
]
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
// High-traffic with Memcache multi-server
|
|
740
|
+
const memcacheCache = CacheFactory.create({
|
|
741
|
+
adapter: 'memcache',
|
|
742
|
+
servers: ['memcache1:11211', 'memcache2:11211']
|
|
743
|
+
});
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
## Best Practices
|
|
747
|
+
|
|
748
|
+
1. **Use Namespacing**: Always use namespaces in multi-tenant or complex applications to prevent key collisions.
|
|
749
|
+
|
|
750
|
+
2. **Set Appropriate TTLs**: Balance cache size and data freshness.
|
|
751
|
+
|
|
752
|
+
3. **Handle Cache Failures**: Use try-catch or fallback options to handle cache adapter failures gracefully.
|
|
753
|
+
|
|
754
|
+
4. **Monitor Cache Health**: Use `isAlive()` in health check endpoints.
|
|
755
|
+
|
|
756
|
+
5. **Clean Up Resources**: Always call `close()` when shutting down.
|
|
757
|
+
|
|
758
|
+
6. **Use Batch Operations**: For multiple operations, prefer `getMultiple` and `setMultiple` over loops.
|
|
759
|
+
|
|
760
|
+
7. **Session Security**: Use secure headers/cookies for session IDs in production.
|
|
761
|
+
|
|
762
|
+
8. **Error Logging**: Log `CacheError` instances with their codes for debugging.
|
|
763
|
+
|
|
764
|
+
## Types
|
|
765
|
+
|
|
766
|
+
See [types.ts](./src/types.ts) for detailed type definitions:
|
|
767
|
+
|
|
768
|
+
- `CacheConfig` - Cache configuration
|
|
769
|
+
- `RedisCacheConfig` - Redis-specific config
|
|
770
|
+
- `MemcacheCacheConfig` - Memcache-specific config
|
|
771
|
+
- `MemoryCacheConfig` - Memory cache config
|
|
772
|
+
- `SessionData` - Session data structure
|
|
773
|
+
- `SessionOptions` - Session store options
|
|
774
|
+
- `CacheStats` - Cache statistics
|
|
775
|
+
- `HealthCheckResponse` - Health check response
|
|
776
|
+
- `ICache<T>` - Cache interface
|
|
777
|
+
- `ISession` - Session interface
|
|
778
|
+
|
|
779
|
+
## License
|
|
780
|
+
|
|
781
|
+
ISC
|
|
782
|
+
|
|
783
|
+
## Author
|
|
784
|
+
|
|
785
|
+
Naman Deep Singh
|
|
786
|
+
|
|
787
|
+
## TypeScript Notes
|
|
788
|
+
|
|
789
|
+
- The package provides strong generics for `ICache<T>` and `SessionStore` so you can store typed values safely.
|
|
790
|
+
- Middleware in this package may attach runtime properties (for example session data) to `Request` objects in Express. If you're using TypeScript, import the package into your project so the included type augmentations are picked up automatically — no need to cast `req` to `any` in most cases.
|
|
791
|
+
|