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.
Files changed (286) hide show
  1. package/package.json +1 -1
  2. package/packages/cache/README.md +105 -9
  3. package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.d.ts +1 -54
  4. package/packages/cache/dist/cjs/adapters/memcache/MemcacheCache.js +75 -281
  5. package/packages/cache/dist/cjs/adapters/memory/MemoryCache.js +76 -22
  6. package/packages/cache/dist/cjs/adapters/redis/RedisCache.js +84 -26
  7. package/packages/cache/dist/cjs/core/BaseCache.js +13 -4
  8. package/packages/cache/dist/cjs/core/factory.js +26 -4
  9. package/packages/cache/dist/cjs/errors/CacheError.d.ts +10 -7
  10. package/packages/cache/dist/cjs/errors/CacheError.js +6 -11
  11. package/packages/cache/dist/cjs/errors/cacheErrorCodes.d.ts +22 -0
  12. package/packages/cache/dist/cjs/errors/cacheErrorCodes.js +24 -0
  13. package/packages/cache/dist/cjs/errors/index.js +3 -0
  14. package/packages/cache/dist/cjs/middleware/express/cacheMiddleware.js +8 -8
  15. package/packages/cache/dist/cjs/session/SessionStore.js +84 -28
  16. package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.d.ts +1 -54
  17. package/packages/cache/dist/esm/adapters/memcache/MemcacheCache.js +75 -281
  18. package/packages/cache/dist/esm/adapters/memory/MemoryCache.js +76 -22
  19. package/packages/cache/dist/esm/adapters/redis/RedisCache.js +84 -26
  20. package/packages/cache/dist/esm/core/BaseCache.js +13 -4
  21. package/packages/cache/dist/esm/core/factory.js +26 -4
  22. package/packages/cache/dist/esm/errors/CacheError.d.ts +10 -7
  23. package/packages/cache/dist/esm/errors/CacheError.js +6 -11
  24. package/packages/cache/dist/esm/errors/cacheErrorCodes.d.ts +22 -0
  25. package/packages/cache/dist/esm/errors/cacheErrorCodes.js +21 -0
  26. package/packages/cache/dist/esm/errors/index.js +3 -0
  27. package/packages/cache/dist/esm/middleware/express/cacheMiddleware.js +8 -8
  28. package/packages/cache/dist/esm/session/SessionStore.js +84 -28
  29. package/packages/cache/dist/types/adapters/memcache/MemcacheCache.d.ts +1 -54
  30. package/packages/cache/dist/types/errors/CacheError.d.ts +10 -7
  31. package/packages/cache/dist/types/errors/cacheErrorCodes.d.ts +22 -0
  32. package/packages/cache/package.json +8 -6
  33. package/packages/cache/src/adapters/memcache/MemcacheCache.ts +79 -352
  34. package/packages/cache/src/adapters/memory/MemoryCache.ts +76 -77
  35. package/packages/cache/src/adapters/redis/RedisCache.ts +84 -86
  36. package/packages/cache/src/core/BaseCache.ts +13 -14
  37. package/packages/cache/src/core/factory.ts +27 -16
  38. package/packages/cache/src/errors/CacheError.ts +16 -17
  39. package/packages/cache/src/errors/cacheErrorCodes.ts +24 -0
  40. package/packages/cache/src/errors/index.ts +5 -0
  41. package/packages/cache/src/middleware/express/cacheMiddleware.ts +8 -8
  42. package/packages/cache/src/session/SessionStore.ts +84 -84
  43. package/packages/errors-utils/README.md +54 -57
  44. package/packages/errors-utils/dist/cjs/constants/errorCodes.d.ts +28 -23
  45. package/packages/errors-utils/dist/cjs/constants/errorCodes.js +57 -22
  46. package/packages/errors-utils/dist/cjs/constants/errorMessages.d.ts +8 -1
  47. package/packages/errors-utils/dist/cjs/constants/errorMessages.js +72 -29
  48. package/packages/errors-utils/dist/cjs/error/AppError.d.ts +2 -2
  49. package/packages/errors-utils/dist/cjs/error/AppError.js +2 -2
  50. package/packages/errors-utils/dist/cjs/error/ServiceUnavailableError.d.ts +4 -0
  51. package/packages/errors-utils/dist/cjs/error/ServiceUnavailableError.js +11 -0
  52. package/packages/errors-utils/dist/cjs/error/TokenExpiredError.d.ts +2 -2
  53. package/packages/errors-utils/dist/cjs/error/TokenExpiredError.js +2 -2
  54. package/packages/errors-utils/dist/cjs/error/TokenMalformedError.d.ts +2 -2
  55. package/packages/errors-utils/dist/cjs/error/TokenMalformedError.js +2 -2
  56. package/packages/errors-utils/dist/cjs/error/UnauthorizedError.d.ts +1 -2
  57. package/packages/errors-utils/dist/cjs/error/UnauthorizedError.js +2 -2
  58. package/packages/errors-utils/dist/cjs/error/index.d.ts +14 -0
  59. package/packages/errors-utils/dist/cjs/error/index.js +39 -0
  60. package/packages/errors-utils/dist/cjs/errorRegistry/errorRegistry.d.ts +19 -0
  61. package/packages/errors-utils/dist/cjs/errorRegistry/errorRegistry.js +63 -0
  62. package/packages/errors-utils/dist/cjs/errorRegistry/index.d.ts +3 -0
  63. package/packages/errors-utils/dist/cjs/errorRegistry/index.js +6 -0
  64. package/packages/errors-utils/dist/cjs/index.d.ts +3 -9
  65. package/packages/errors-utils/dist/cjs/index.js +12 -9
  66. package/packages/errors-utils/dist/cjs/middleware/express/{errorHandler.js → errorHandler.middleware.js} +4 -4
  67. package/packages/errors-utils/dist/cjs/middleware/express/index.d.ts +2 -2
  68. package/packages/errors-utils/dist/cjs/middleware/express/index.js +2 -2
  69. package/packages/errors-utils/dist/esm/constants/errorCodes.d.ts +28 -23
  70. package/packages/errors-utils/dist/esm/constants/errorCodes.js +57 -22
  71. package/packages/errors-utils/dist/esm/constants/errorMessages.d.ts +8 -1
  72. package/packages/errors-utils/dist/esm/constants/errorMessages.js +72 -29
  73. package/packages/errors-utils/dist/esm/error/AppError.d.ts +2 -2
  74. package/packages/errors-utils/dist/esm/error/AppError.js +2 -2
  75. package/packages/errors-utils/dist/esm/error/ServiceUnavailableError.d.ts +4 -0
  76. package/packages/errors-utils/dist/esm/error/ServiceUnavailableError.js +7 -0
  77. package/packages/errors-utils/dist/esm/error/TokenExpiredError.d.ts +2 -2
  78. package/packages/errors-utils/dist/esm/error/TokenExpiredError.js +2 -2
  79. package/packages/errors-utils/dist/esm/error/TokenMalformedError.d.ts +2 -2
  80. package/packages/errors-utils/dist/esm/error/TokenMalformedError.js +2 -2
  81. package/packages/errors-utils/dist/esm/error/UnauthorizedError.d.ts +1 -2
  82. package/packages/errors-utils/dist/esm/error/UnauthorizedError.js +2 -2
  83. package/packages/errors-utils/dist/esm/error/index.d.ts +14 -0
  84. package/packages/errors-utils/dist/esm/error/index.js +23 -0
  85. package/packages/errors-utils/dist/esm/errorRegistry/errorRegistry.d.ts +19 -0
  86. package/packages/errors-utils/dist/esm/errorRegistry/errorRegistry.js +59 -0
  87. package/packages/errors-utils/dist/esm/errorRegistry/index.d.ts +3 -0
  88. package/packages/errors-utils/dist/esm/errorRegistry/index.js +3 -0
  89. package/packages/errors-utils/dist/esm/index.d.ts +3 -9
  90. package/packages/errors-utils/dist/esm/index.js +12 -9
  91. package/packages/errors-utils/dist/esm/middleware/express/{errorHandler.js → errorHandler.middleware.js} +5 -5
  92. package/packages/errors-utils/dist/esm/middleware/express/index.d.ts +2 -2
  93. package/packages/errors-utils/dist/esm/middleware/express/index.js +2 -2
  94. package/packages/errors-utils/dist/types/constants/errorCodes.d.ts +28 -23
  95. package/packages/errors-utils/dist/types/constants/errorMessages.d.ts +8 -1
  96. package/packages/errors-utils/dist/types/error/AppError.d.ts +2 -2
  97. package/packages/errors-utils/dist/types/error/ServiceUnavailableError.d.ts +4 -0
  98. package/packages/errors-utils/dist/types/error/TokenExpiredError.d.ts +2 -2
  99. package/packages/errors-utils/dist/types/error/TokenMalformedError.d.ts +2 -2
  100. package/packages/errors-utils/dist/types/error/UnauthorizedError.d.ts +1 -2
  101. package/packages/errors-utils/dist/types/error/index.d.ts +14 -0
  102. package/packages/errors-utils/dist/types/errorRegistry/errorRegistry.d.ts +19 -0
  103. package/packages/errors-utils/dist/types/errorRegistry/index.d.ts +3 -0
  104. package/packages/errors-utils/dist/types/index.d.ts +3 -9
  105. package/packages/errors-utils/dist/types/middleware/express/index.d.ts +2 -2
  106. package/packages/errors-utils/package.json +4 -4
  107. package/packages/errors-utils/src/constants/errorCodes.ts +64 -23
  108. package/packages/errors-utils/src/constants/errorMessages.ts +91 -34
  109. package/packages/errors-utils/src/error/AppError.ts +3 -2
  110. package/packages/errors-utils/src/error/ServiceUnavailableError.ts +8 -0
  111. package/packages/errors-utils/src/error/TokenExpiredError.ts +2 -2
  112. package/packages/errors-utils/src/error/TokenMalformedError.ts +2 -2
  113. package/packages/errors-utils/src/error/UnauthorizedError.ts +8 -8
  114. package/packages/errors-utils/src/error/index.ts +26 -0
  115. package/packages/errors-utils/src/errorRegistry/errorRegistry.ts +74 -0
  116. package/packages/errors-utils/src/errorRegistry/index.ts +4 -0
  117. package/packages/errors-utils/src/index.ts +12 -10
  118. package/packages/errors-utils/src/middleware/express/{errorHandler.ts → errorHandler.middleware.ts} +5 -5
  119. package/packages/errors-utils/src/middleware/express/index.ts +2 -2
  120. package/packages/js-extensions/README.md +174 -425
  121. package/packages/js-extensions/dist/cjs/array/array-extensions.js +84 -50
  122. package/packages/js-extensions/dist/cjs/core/performance.d.ts +1 -0
  123. package/packages/js-extensions/dist/cjs/core/performance.js +6 -0
  124. package/packages/js-extensions/dist/cjs/core/version.d.ts +1 -0
  125. package/packages/js-extensions/dist/cjs/core/version.js +9 -0
  126. package/packages/js-extensions/dist/cjs/index.d.ts +1 -0
  127. package/packages/js-extensions/dist/cjs/index.js +1 -0
  128. package/packages/js-extensions/dist/cjs/number/number-extensions.js +85 -97
  129. package/packages/js-extensions/dist/cjs/object/object-extensions.js +102 -103
  130. package/packages/js-extensions/dist/cjs/string/string-extensions.js +66 -43
  131. package/packages/js-extensions/dist/cjs/types/global-augmentations.d.ts +1 -0
  132. package/packages/js-extensions/dist/cjs/utils/defineExtension.d.ts +1 -0
  133. package/packages/js-extensions/dist/cjs/utils/defineExtension.js +13 -0
  134. package/packages/js-extensions/dist/cjs/utils/index.d.ts +1 -0
  135. package/packages/js-extensions/dist/cjs/utils/index.js +1 -0
  136. package/packages/js-extensions/dist/esm/array/array-extensions.js +84 -50
  137. package/packages/js-extensions/dist/esm/core/performance.d.ts +1 -0
  138. package/packages/js-extensions/dist/esm/core/performance.js +5 -0
  139. package/packages/js-extensions/dist/esm/core/version.d.ts +1 -0
  140. package/packages/js-extensions/dist/esm/core/version.js +5 -0
  141. package/packages/js-extensions/dist/esm/index.d.ts +1 -0
  142. package/packages/js-extensions/dist/esm/index.js +1 -0
  143. package/packages/js-extensions/dist/esm/number/number-extensions.js +86 -98
  144. package/packages/js-extensions/dist/esm/object/object-extensions.js +102 -103
  145. package/packages/js-extensions/dist/esm/string/string-extensions.js +66 -43
  146. package/packages/js-extensions/dist/esm/types/global-augmentations.d.ts +1 -0
  147. package/packages/js-extensions/dist/esm/utils/defineExtension.d.ts +1 -0
  148. package/packages/js-extensions/dist/esm/utils/defineExtension.js +10 -0
  149. package/packages/js-extensions/dist/esm/utils/index.d.ts +1 -0
  150. package/packages/js-extensions/dist/esm/utils/index.js +1 -0
  151. package/packages/js-extensions/dist/types/core/performance.d.ts +1 -0
  152. package/packages/js-extensions/dist/types/core/version.d.ts +1 -0
  153. package/packages/js-extensions/dist/types/index.d.ts +1 -0
  154. package/packages/js-extensions/dist/types/types/global-augmentations.d.ts +1 -0
  155. package/packages/js-extensions/dist/types/utils/defineExtension.d.ts +1 -0
  156. package/packages/js-extensions/dist/types/utils/index.d.ts +1 -0
  157. package/packages/js-extensions/package.json +8 -4
  158. package/packages/js-extensions/src/array/array-extensions.ts +268 -150
  159. package/packages/js-extensions/src/core/performance.ts +11 -0
  160. package/packages/js-extensions/src/core/version.ts +7 -0
  161. package/packages/js-extensions/src/index.ts +2 -0
  162. package/packages/js-extensions/src/number/number-extensions.ts +90 -123
  163. package/packages/js-extensions/src/object/object-extensions.ts +102 -130
  164. package/packages/js-extensions/src/string/string-extensions.ts +80 -76
  165. package/packages/js-extensions/src/types/global-augmentations.ts +2 -1
  166. package/packages/js-extensions/src/utils/defineExtension.ts +14 -0
  167. package/packages/js-extensions/src/utils/index.ts +1 -0
  168. package/packages/response-utils/README.md +156 -198
  169. package/packages/response-utils/dist/cjs/core/BaseResponder.js +20 -4
  170. package/packages/response-utils/dist/cjs/index.d.ts +0 -1
  171. package/packages/response-utils/dist/cjs/index.js +1 -25
  172. package/packages/response-utils/dist/esm/core/BaseResponder.js +20 -4
  173. package/packages/response-utils/dist/esm/index.d.ts +0 -1
  174. package/packages/response-utils/dist/esm/index.js +0 -2
  175. package/packages/response-utils/dist/types/index.d.ts +0 -1
  176. package/packages/response-utils/package.json +1 -1
  177. package/packages/response-utils/src/core/BaseResponder.ts +25 -4
  178. package/packages/response-utils/src/index.ts +0 -3
  179. package/packages/response-utils/src/middleware/express/expressMiddleware.ts +1 -1
  180. package/packages/security/README.md +153 -355
  181. package/packages/security/dist/cjs/core/crypto/cryptoManager.js +34 -17
  182. package/packages/security/dist/cjs/core/jwt/decode.js +4 -1
  183. package/packages/security/dist/cjs/core/jwt/generateTokens.js +4 -1
  184. package/packages/security/dist/cjs/core/jwt/jwtManager.d.ts +19 -43
  185. package/packages/security/dist/cjs/core/jwt/jwtManager.js +84 -199
  186. package/packages/security/dist/cjs/core/jwt/parseDuration.js +3 -2
  187. package/packages/security/dist/cjs/core/jwt/signToken.js +2 -1
  188. package/packages/security/dist/cjs/core/jwt/validateToken.d.ts +10 -7
  189. package/packages/security/dist/cjs/core/jwt/validateToken.js +19 -10
  190. package/packages/security/dist/cjs/core/jwt/verify.d.ts +8 -9
  191. package/packages/security/dist/cjs/core/jwt/verify.js +59 -14
  192. package/packages/security/dist/cjs/core/password/hash.js +4 -4
  193. package/packages/security/dist/cjs/core/password/passwordManager.d.ts +1 -1
  194. package/packages/security/dist/cjs/core/password/passwordManager.js +36 -80
  195. package/packages/security/dist/cjs/core/password/strength.js +12 -6
  196. package/packages/security/dist/cjs/core/password/utils.d.ts +12 -0
  197. package/packages/security/dist/cjs/core/password/utils.js +16 -1
  198. package/packages/security/dist/cjs/core/password/verify.js +4 -4
  199. package/packages/security/dist/cjs/index.d.ts +2 -7
  200. package/packages/security/dist/esm/core/crypto/cryptoManager.js +34 -17
  201. package/packages/security/dist/esm/core/jwt/decode.js +4 -1
  202. package/packages/security/dist/esm/core/jwt/generateTokens.js +4 -1
  203. package/packages/security/dist/esm/core/jwt/jwtManager.d.ts +19 -43
  204. package/packages/security/dist/esm/core/jwt/jwtManager.js +85 -200
  205. package/packages/security/dist/esm/core/jwt/parseDuration.js +3 -2
  206. package/packages/security/dist/esm/core/jwt/signToken.js +2 -1
  207. package/packages/security/dist/esm/core/jwt/validateToken.d.ts +10 -7
  208. package/packages/security/dist/esm/core/jwt/validateToken.js +19 -10
  209. package/packages/security/dist/esm/core/jwt/verify.d.ts +8 -9
  210. package/packages/security/dist/esm/core/jwt/verify.js +58 -13
  211. package/packages/security/dist/esm/core/password/hash.js +4 -4
  212. package/packages/security/dist/esm/core/password/passwordManager.d.ts +1 -1
  213. package/packages/security/dist/esm/core/password/passwordManager.js +36 -80
  214. package/packages/security/dist/esm/core/password/strength.js +12 -6
  215. package/packages/security/dist/esm/core/password/utils.d.ts +12 -0
  216. package/packages/security/dist/esm/core/password/utils.js +16 -1
  217. package/packages/security/dist/esm/core/password/verify.js +4 -4
  218. package/packages/security/dist/esm/index.d.ts +2 -7
  219. package/packages/security/dist/types/core/jwt/jwtManager.d.ts +19 -43
  220. package/packages/security/dist/types/core/jwt/validateToken.d.ts +10 -7
  221. package/packages/security/dist/types/core/jwt/verify.d.ts +8 -9
  222. package/packages/security/dist/types/core/password/passwordManager.d.ts +1 -1
  223. package/packages/security/dist/types/core/password/utils.d.ts +12 -0
  224. package/packages/security/dist/types/index.d.ts +2 -7
  225. package/packages/security/package.json +3 -3
  226. package/packages/security/src/core/crypto/cryptoManager.ts +53 -21
  227. package/packages/security/src/core/jwt/decode.ts +4 -1
  228. package/packages/security/src/core/jwt/generateTokens.ts +4 -1
  229. package/packages/security/src/core/jwt/jwtManager.ts +105 -257
  230. package/packages/security/src/core/jwt/parseDuration.ts +4 -2
  231. package/packages/security/src/core/jwt/signToken.ts +2 -1
  232. package/packages/security/src/core/jwt/validateToken.ts +21 -13
  233. package/packages/security/src/core/jwt/verify.ts +82 -20
  234. package/packages/security/src/core/password/hash.ts +10 -4
  235. package/packages/security/src/core/password/passwordManager.ts +38 -108
  236. package/packages/security/src/core/password/strength.ts +13 -8
  237. package/packages/security/src/core/password/utils.ts +19 -3
  238. package/packages/security/src/core/password/verify.ts +6 -4
  239. package/packages/server-utils/README.md +1 -1
  240. package/packages/server-utils/dist/cjs/core/server.js +6 -6
  241. package/packages/server-utils/dist/cjs/middleware/auth.middleware.d.ts +1 -2
  242. package/packages/server-utils/dist/cjs/middleware/auth.middleware.js +17 -14
  243. package/packages/server-utils/dist/cjs/middleware/cache.middleware.js +2 -2
  244. package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.d.ts +1 -1
  245. package/packages/server-utils/dist/cjs/middleware/errorHandler.middleware.js +34 -17
  246. package/packages/server-utils/dist/cjs/middleware/session.middleware.js +8 -8
  247. package/packages/server-utils/dist/cjs/middleware/validation.middleware.js +2 -2
  248. package/packages/server-utils/dist/esm/core/server.js +6 -6
  249. package/packages/server-utils/dist/esm/middleware/auth.middleware.d.ts +1 -2
  250. package/packages/server-utils/dist/esm/middleware/auth.middleware.js +18 -15
  251. package/packages/server-utils/dist/esm/middleware/cache.middleware.js +2 -2
  252. package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.d.ts +1 -1
  253. package/packages/server-utils/dist/esm/middleware/errorHandler.middleware.js +34 -17
  254. package/packages/server-utils/dist/esm/middleware/session.middleware.js +8 -8
  255. package/packages/server-utils/dist/esm/middleware/validation.middleware.js +2 -2
  256. package/packages/server-utils/dist/types/middleware/auth.middleware.d.ts +1 -2
  257. package/packages/server-utils/dist/types/middleware/errorHandler.middleware.d.ts +1 -1
  258. package/packages/server-utils/package.json +4 -4
  259. package/packages/server-utils/src/core/server.ts +6 -6
  260. package/packages/server-utils/src/middleware/auth.middleware.ts +40 -27
  261. package/packages/server-utils/src/middleware/cache.middleware.ts +2 -2
  262. package/packages/server-utils/src/middleware/errorHandler.middleware.ts +39 -24
  263. package/packages/server-utils/src/middleware/session.middleware.ts +11 -8
  264. package/packages/server-utils/src/middleware/validation.middleware.ts +2 -3
  265. package/packages/errors-utils/dist/cjs/error/RateLimitError.d.ts +0 -4
  266. package/packages/errors-utils/dist/cjs/error/RateLimitError.js +0 -11
  267. package/packages/errors-utils/dist/cjs/utils/mapAppErrorToResponder.d.ts +0 -3
  268. package/packages/errors-utils/dist/cjs/utils/mapAppErrorToResponder.js +0 -27
  269. package/packages/errors-utils/dist/esm/error/RateLimitError.d.ts +0 -4
  270. package/packages/errors-utils/dist/esm/error/RateLimitError.js +0 -7
  271. package/packages/errors-utils/dist/esm/utils/mapAppErrorToResponder.d.ts +0 -3
  272. package/packages/errors-utils/dist/esm/utils/mapAppErrorToResponder.js +0 -24
  273. package/packages/errors-utils/dist/types/error/RateLimitError.d.ts +0 -4
  274. package/packages/errors-utils/dist/types/utils/mapAppErrorToResponder.d.ts +0 -3
  275. package/packages/errors-utils/src/error/RateLimitError.ts +0 -8
  276. package/packages/errors-utils/src/utils/mapAppErrorToResponder.ts +0 -38
  277. package/packages/response-utils/src/legacy.ts +0 -30
  278. /package/packages/errors-utils/dist/cjs/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
  279. /package/packages/errors-utils/dist/cjs/middleware/express/{errorConverter.js → errorConverter.middleware.js} +0 -0
  280. /package/packages/errors-utils/dist/cjs/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
  281. /package/packages/errors-utils/dist/esm/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
  282. /package/packages/errors-utils/dist/esm/middleware/express/{errorConverter.js → errorConverter.middleware.js} +0 -0
  283. /package/packages/errors-utils/dist/esm/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
  284. /package/packages/errors-utils/dist/types/middleware/express/{errorConverter.d.ts → errorConverter.middleware.d.ts} +0 -0
  285. /package/packages/errors-utils/dist/types/middleware/express/{errorHandler.d.ts → errorHandler.middleware.d.ts} +0 -0
  286. /package/packages/errors-utils/src/middleware/express/{errorConverter.ts → errorConverter.middleware.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-packages",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # @naman_deep_singh/cache
2
2
 
3
- **Version:** 1.3.2 (with Redis Clustering support)
3
+ **Version:** 1.4.0 (with Redis Clustering support)
4
4
 
5
5
  A flexible, extensible caching layer with support for Redis, Memcache, and in-memory caches. Includes session management, health checks, and Express middleware.
6
6
 
@@ -27,13 +27,109 @@ npm install @naman_deep_singh/cache redis memcached
27
27
  - `redis` (for Redis adapter)
28
28
  - `memcached` (for Memcache adapter)
29
29
 
30
- Both are optional if you're only using the memory adapter.
31
-
32
30
  ## Quick Start
33
31
 
34
32
  ### Using the Factory
35
33
 
36
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
+
37
133
  import { CacheFactory, SessionStore } from '@naman_deep_singh/cache';
38
134
 
39
135
  // Create a Redis cache
@@ -432,12 +528,12 @@ import { CacheError } from '@naman_deep_singh/cache';
432
528
 
433
529
  try {
434
530
  await cache.get('key');
435
- } catch (err) {
436
- if (err instanceof CacheError) {
437
- console.log(`Error: ${err.message}`);
438
- console.log(`Code: ${err.code}`);
439
- console.log(`Adapter: ${err.adapter}`);
440
- console.log(`Original error:`, err.originalError);
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);
441
537
  }
442
538
  }
443
539
 
@@ -1,71 +1,18 @@
1
1
  import { BaseCache } from '../../core/BaseCache';
2
2
  import type { HealthCheckResponse, MemcacheCacheConfig } from '../../types';
3
- /**
4
- * Memcache adapter
5
- */
6
3
  export declare class MemcacheCache<T = unknown> extends BaseCache<T> {
7
4
  private memcacheConfig;
8
5
  private client;
9
6
  private isConnected;
10
7
  constructor(memcacheConfig: MemcacheCacheConfig);
11
- /**
12
- * Connect to Memcache
13
- */
14
8
  connect(): Promise<void>;
15
- /**
16
- * Ensure client is connected
17
- */
18
9
  private ensureConnected;
19
- /**
20
- * Ping memcache
21
- */
22
10
  private ping;
23
- /**
24
- * Get a value from Memcache
25
- */
11
+ exists(key: string): Promise<boolean>;
26
12
  get(key: string): Promise<T | null>;
27
- /**
28
- * Set a value in Memcache
29
- */
30
13
  set(key: string, value: T, ttl?: number): Promise<void>;
31
- /**
32
- * Delete a key from Memcache
33
- */
34
14
  delete(key: string): Promise<boolean>;
35
- /**
36
- * Check if key exists
37
- */
38
- exists(key: string): Promise<boolean>;
39
- /**
40
- * Clear all keys (Memcache limitation: flushes entire cache)
41
- */
42
15
  clear(): Promise<void>;
43
- /**
44
- * Get multiple values at once
45
- */
46
- getMultiple(keys: string[]): Promise<Record<string, T | null>>;
47
- /**
48
- * Set multiple values at once
49
- */
50
- setMultiple(data: Record<string, T>, ttl?: number): Promise<void>;
51
- /**
52
- * Delete multiple keys at once
53
- */
54
- deleteMultiple(keys: string[]): Promise<number>;
55
- /**
56
- * Increment a numeric value (not natively supported by Memcache in this library)
57
- */
58
- increment(key: string, amount?: number): Promise<number>;
59
- /**
60
- * Decrement a numeric value
61
- */
62
- decrement(key: string, amount?: number): Promise<number>;
63
- /**
64
- * Check if Memcache is alive
65
- */
66
16
  isAlive(): Promise<HealthCheckResponse>;
67
- /**
68
- * Close Memcache connection
69
- */
70
17
  close(): Promise<void>;
71
18
  }
@@ -5,11 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MemcacheCache = void 0;
7
7
  const memcached_1 = __importDefault(require("memcached"));
8
+ const cacheErrorCodes_1 = require("src/errors/cacheErrorCodes");
8
9
  const BaseCache_1 = require("../../core/BaseCache");
9
10
  const errors_1 = require("../../errors");
10
- /**
11
- * Memcache adapter
12
- */
13
11
  class MemcacheCache extends BaseCache_1.BaseCache {
14
12
  constructor(memcacheConfig) {
15
13
  super(memcacheConfig);
@@ -17,362 +15,158 @@ class MemcacheCache extends BaseCache_1.BaseCache {
17
15
  this.client = null;
18
16
  this.isConnected = false;
19
17
  }
20
- /**
21
- * Connect to Memcache
22
- */
23
18
  async connect() {
24
19
  try {
25
20
  const servers = Array.isArray(this.memcacheConfig.servers)
26
21
  ? this.memcacheConfig.servers
27
22
  : [this.memcacheConfig.servers];
28
- const options = {
23
+ this.client = new memcached_1.default(servers, {
29
24
  retries: 2,
30
25
  retry: 30000,
31
26
  remove: true,
32
- failOverServers: [],
33
- maxValue: 1048576, // 1MB default
27
+ maxValue: 1048576,
34
28
  idle: 30000,
35
- };
36
- if (this.memcacheConfig.username) {
37
- ;
38
- options.username = this.memcacheConfig.username;
39
- }
40
- if (this.memcacheConfig.password) {
41
- ;
42
- options.password = this.memcacheConfig.password;
43
- }
44
- this.client = new memcached_1.default(servers, options);
29
+ });
45
30
  this.isConnected = true;
46
- // Test connection
47
31
  await this.ping();
48
32
  }
49
- catch (err) {
50
- throw new errors_1.CacheError('Failed to connect to Memcache', 'MEMCACHE_CONNECTION_ERROR', 'memcache', err);
33
+ catch (error) {
34
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_CONNECTION_FAILED, {
35
+ adapter: 'memcache',
36
+ operation: 'connect',
37
+ cause: error instanceof Error ? error : undefined,
38
+ });
51
39
  }
52
40
  }
53
- /**
54
- * Ensure client is connected
55
- */
56
41
  async ensureConnected() {
57
42
  if (!this.client) {
58
43
  await this.connect();
59
44
  }
60
45
  }
61
- /**
62
- * Ping memcache
63
- */
64
46
  async ping() {
65
47
  return new Promise((resolve, reject) => {
66
- if (!this.client) {
67
- reject(new Error('Memcache client not initialized'));
68
- return;
69
- }
70
- this.client.touch('__ping', 1, (err) => {
71
- if (err)
72
- reject(err);
73
- else
74
- resolve();
75
- });
48
+ if (!this.client)
49
+ return reject(new Error('Client not initialized'));
50
+ this.client.touch('__ping', 1, (err) => (err ? reject(err) : resolve()));
76
51
  });
77
52
  }
78
- /**
79
- * Get a value from Memcache
80
- */
53
+ async exists(key) {
54
+ try {
55
+ const value = await this.get(key);
56
+ return value !== null;
57
+ }
58
+ catch (error) {
59
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_ERROR, {
60
+ adapter: 'memcache',
61
+ operation: 'exists',
62
+ details: { key },
63
+ cause: error instanceof Error ? error : undefined,
64
+ });
65
+ }
66
+ }
81
67
  async get(key) {
82
68
  try {
83
69
  await this.ensureConnected();
84
70
  const fullKey = this.buildKey(key);
85
71
  return new Promise((resolve, reject) => {
86
72
  this.client.get(fullKey, (err, data) => {
87
- if (err) {
88
- reject(err);
89
- return;
90
- }
91
- if (data === undefined || data === null) {
92
- this.recordMiss();
93
- resolve(null);
94
- return;
95
- }
96
- this.recordHit();
73
+ if (err)
74
+ return reject(err);
75
+ if (data == null)
76
+ return resolve(null);
97
77
  try {
98
- if (typeof data === 'string') {
99
- resolve(this.deserialize(data));
100
- }
101
- else if (Buffer.isBuffer(data)) {
102
- resolve(this.deserialize(data.toString()));
103
- }
104
- else {
105
- // Unknown shape from memcached client - treat as miss
106
- this.recordMiss();
107
- resolve(null);
108
- }
78
+ resolve(this.deserialize(Buffer.isBuffer(data) ? data.toString() : data));
109
79
  }
110
- catch (parseErr) {
111
- reject(parseErr);
80
+ catch (e) {
81
+ reject(e);
112
82
  }
113
83
  });
114
84
  });
115
85
  }
116
- catch (err) {
117
- throw new errors_1.CacheError(`Failed to get key "${key}" from Memcache`, 'MEMCACHE_GET_ERROR', 'memcache', err);
86
+ catch (error) {
87
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_KEY_NOT_FOUND, {
88
+ adapter: 'memcache',
89
+ operation: 'get',
90
+ details: { key },
91
+ cause: error instanceof Error ? error : undefined,
92
+ });
118
93
  }
119
94
  }
120
- /**
121
- * Set a value in Memcache
122
- */
123
95
  async set(key, value, ttl) {
124
96
  try {
125
97
  await this.ensureConnected();
126
98
  const fullKey = this.buildKey(key);
127
- const serialized = this.serialize(value);
128
- const expiry = ttl ?? this.ttl;
129
99
  return new Promise((resolve, reject) => {
130
- this.client.set(fullKey, serialized, expiry, (err) => {
131
- if (err) {
132
- reject(err);
133
- }
134
- else {
135
- this.recordSet();
136
- resolve();
137
- }
138
- });
100
+ this.client.set(fullKey, this.serialize(value), ttl ?? this.ttl, (err) => (err ? reject(err) : resolve()));
139
101
  });
140
102
  }
141
- catch (err) {
142
- throw new errors_1.CacheError(`Failed to set key "${key}" in Memcache`, 'MEMCACHE_SET_ERROR', 'memcache', err);
103
+ catch (error) {
104
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_ERROR, {
105
+ adapter: 'memcache',
106
+ operation: 'set',
107
+ details: { key },
108
+ cause: error instanceof Error ? error : undefined,
109
+ });
143
110
  }
144
111
  }
145
- /**
146
- * Delete a key from Memcache
147
- */
148
112
  async delete(key) {
149
113
  try {
150
114
  await this.ensureConnected();
151
115
  const fullKey = this.buildKey(key);
152
116
  return new Promise((resolve, reject) => {
153
- this.client.del(fullKey, (err) => {
154
- if (err) {
155
- reject(err);
156
- }
157
- else {
158
- this.recordDelete();
159
- resolve(true);
160
- }
161
- });
117
+ this.client.del(fullKey, (err) => (err ? reject(err) : resolve(true)));
162
118
  });
163
119
  }
164
- catch (err) {
165
- throw new errors_1.CacheError(`Failed to delete key "${key}" from Memcache`, 'MEMCACHE_DELETE_ERROR', 'memcache', err);
166
- }
167
- }
168
- /**
169
- * Check if key exists
170
- */
171
- async exists(key) {
172
- try {
173
- const value = await this.get(key);
174
- return value !== null;
175
- }
176
- catch (err) {
177
- throw new errors_1.CacheError(`Failed to check existence of key "${key}" in Memcache`, 'MEMCACHE_EXISTS_ERROR', 'memcache', err);
178
- }
179
- }
180
- /**
181
- * Clear all keys (Memcache limitation: flushes entire cache)
182
- */
183
- async clear() {
184
- try {
185
- await this.ensureConnected();
186
- return new Promise((resolve, reject) => {
187
- this.client.flush((err) => {
188
- if (err) {
189
- reject(err);
190
- }
191
- else {
192
- resolve();
193
- }
194
- });
120
+ catch (error) {
121
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_ERROR, {
122
+ adapter: 'memcache',
123
+ operation: 'delete',
124
+ details: { key },
125
+ cause: error instanceof Error ? error : undefined,
195
126
  });
196
127
  }
197
- catch (err) {
198
- throw new errors_1.CacheError('Failed to clear Memcache', 'MEMCACHE_CLEAR_ERROR', 'memcache', err);
199
- }
200
128
  }
201
- /**
202
- * Get multiple values at once
203
- */
204
- async getMultiple(keys) {
129
+ async clear() {
205
130
  try {
206
131
  await this.ensureConnected();
207
- const fullKeys = keys.map((k) => this.buildKey(k));
208
132
  return new Promise((resolve, reject) => {
209
- this.client.getMulti(fullKeys, (err, data) => {
210
- if (err) {
211
- reject(err);
212
- return;
213
- }
214
- const result = {};
215
- if (!data || typeof data !== 'object') {
216
- // Treat as all misses
217
- for (const key of keys) {
218
- this.recordMiss();
219
- result[key] = null;
220
- }
221
- resolve(result);
222
- return;
223
- }
224
- const map = data;
225
- keys.forEach((key) => {
226
- const fullKey = this.buildKey(key);
227
- const value = map[fullKey];
228
- if (value === undefined || value === null) {
229
- this.recordMiss();
230
- result[key] = null;
231
- }
232
- else {
233
- this.recordHit();
234
- try {
235
- if (typeof value === 'string') {
236
- result[key] = this.deserialize(value);
237
- }
238
- else if (Buffer.isBuffer(value)) {
239
- result[key] = this.deserialize(value.toString());
240
- }
241
- else {
242
- // Unknown, treat as miss
243
- this.recordMiss();
244
- result[key] = null;
245
- }
246
- }
247
- catch (parseErr) {
248
- reject(parseErr);
249
- }
250
- }
251
- });
252
- resolve(result);
253
- });
133
+ this.client.flush((err) => (err ? reject(err) : resolve()));
254
134
  });
255
135
  }
256
- catch (err) {
257
- throw new errors_1.CacheError('Failed to get multiple keys from Memcache', 'MEMCACHE_GET_MULTIPLE_ERROR', 'memcache', err);
258
- }
259
- }
260
- /**
261
- * Set multiple values at once
262
- */
263
- async setMultiple(data, ttl) {
264
- try {
265
- await this.ensureConnected();
266
- const expiry = ttl ?? this.ttl;
267
- const promises = [];
268
- for (const [key, value] of Object.entries(data)) {
269
- const fullKey = this.buildKey(key);
270
- const serialized = this.serialize(value);
271
- promises.push(new Promise((resolve, reject) => {
272
- this.client.set(fullKey, serialized, expiry, (err) => {
273
- if (err)
274
- reject(err);
275
- else
276
- resolve();
277
- });
278
- }));
279
- }
280
- return Promise.all(promises).then(() => {
281
- this.stats.sets += Object.keys(data).length;
136
+ catch (error) {
137
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_OPERATION_TIMEOUT, {
138
+ adapter: 'memcache',
139
+ operation: 'clear',
140
+ cause: error instanceof Error ? error : undefined,
282
141
  });
283
142
  }
284
- catch (err) {
285
- throw new errors_1.CacheError('Failed to set multiple keys in Memcache', 'MEMCACHE_SET_MULTIPLE_ERROR', 'memcache', err);
286
- }
287
- }
288
- /**
289
- * Delete multiple keys at once
290
- */
291
- async deleteMultiple(keys) {
292
- try {
293
- await this.ensureConnected();
294
- const fullKeys = keys.map((k) => this.buildKey(k));
295
- let deletedCount = 0;
296
- await Promise.all(fullKeys.map((key) => new Promise((resolve, reject) => {
297
- this.client.del(key, (err) => {
298
- if (err) {
299
- reject(err);
300
- }
301
- else {
302
- deletedCount++;
303
- resolve();
304
- }
305
- });
306
- })));
307
- this.stats.deletes += deletedCount;
308
- return deletedCount;
309
- }
310
- catch (err) {
311
- throw new errors_1.CacheError('Failed to delete multiple keys from Memcache', 'MEMCACHE_DELETE_MULTIPLE_ERROR', 'memcache', err);
312
- }
313
143
  }
314
- /**
315
- * Increment a numeric value (not natively supported by Memcache in this library)
316
- */
317
- async increment(key, amount = 1) {
318
- try {
319
- const current = await this.get(key);
320
- const value = (typeof current === 'number' ? current : 0) + amount;
321
- await this.set(key, value);
322
- return value;
323
- }
324
- catch (err) {
325
- throw new errors_1.CacheError(`Failed to increment key "${key}" in Memcache`, 'MEMCACHE_INCREMENT_ERROR', 'memcache', err);
326
- }
327
- }
328
- /**
329
- * Decrement a numeric value
330
- */
331
- async decrement(key, amount = 1) {
332
- try {
333
- const current = await this.get(key);
334
- const value = (typeof current === 'number' ? current : 0) - amount;
335
- await this.set(key, value);
336
- return value;
337
- }
338
- catch (err) {
339
- throw new errors_1.CacheError(`Failed to decrement key "${key}" in Memcache`, 'MEMCACHE_DECREMENT_ERROR', 'memcache', err);
340
- }
341
- }
342
- /**
343
- * Check if Memcache is alive
344
- */
345
144
  async isAlive() {
346
145
  try {
347
146
  await this.ping();
348
- return {
349
- isAlive: true,
350
- adapter: 'memcache',
351
- timestamp: new Date(),
352
- };
147
+ return { isAlive: true, adapter: 'memcache', timestamp: new Date() };
353
148
  }
354
- catch (err) {
149
+ catch (error) {
355
150
  return {
356
151
  isAlive: false,
357
152
  adapter: 'memcache',
358
153
  timestamp: new Date(),
359
- error: err.message,
154
+ error: error instanceof Error ? error.message : 'Unknown error',
360
155
  };
361
156
  }
362
157
  }
363
- /**
364
- * Close Memcache connection
365
- */
366
158
  async close() {
367
159
  try {
368
- if (this.client && this.isConnected) {
369
- this.client.end();
370
- this.isConnected = false;
371
- this.client = null;
372
- }
160
+ this.client?.end();
161
+ this.client = null;
162
+ this.isConnected = false;
373
163
  }
374
- catch (err) {
375
- throw new errors_1.CacheError('Failed to close Memcache connection', 'MEMCACHE_CLOSE_ERROR', 'memcache', err);
164
+ catch (error) {
165
+ throw new errors_1.CacheError(cacheErrorCodes_1.CACHE_ERROR_CODES.CACHE_ERROR, {
166
+ adapter: 'memcache',
167
+ operation: 'close',
168
+ cause: error instanceof Error ? error : undefined,
169
+ });
376
170
  }
377
171
  }
378
172
  }