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
@@ -1,4 +1,4 @@
1
- import { UnauthorizedError } from './UnauthorizedError';
2
- export declare class TokenMalformedError extends UnauthorizedError {
1
+ import { HTTPError } from './HTTPError';
2
+ export declare class TokenMalformedError extends HTTPError {
3
3
  constructor(details?: unknown, cause?: Error);
4
4
  }
@@ -1,5 +1,4 @@
1
- import { type ErrorCode } from 'src/constants';
2
1
  import { HTTPError } from './HTTPError';
3
2
  export declare class UnauthorizedError extends HTTPError {
4
- constructor(errorCodes?: ErrorCode, status?: number, details?: unknown, cause?: Error);
3
+ constructor(details?: unknown, cause?: Error);
5
4
  }
@@ -0,0 +1,14 @@
1
+ export * from './AppError';
2
+ export * from './HTTPError';
3
+ export * from './BadRequestError';
4
+ export * from './UnauthorizedError';
5
+ export * from './ForbiddenError';
6
+ export * from './NotFoundError';
7
+ export * from './ConflictError';
8
+ export * from './ValidationError';
9
+ export * from './TooManyRequestsError';
10
+ export * from './TokenExpiredError';
11
+ export * from './TokenMalformedError';
12
+ export * from './InternalServerError';
13
+ export * from './CryptoIntegrityError';
14
+ export * from './ServiceUnavailableError';
@@ -0,0 +1,19 @@
1
+ import type { ExpressResponder } from '@naman_deep_singh/response-utils';
2
+ import { type ErrorCode } from 'src/constants';
3
+ import type { AppError } from 'src/error/AppError';
4
+ export declare class ErrorMessageRegistry {
5
+ private static instance;
6
+ private readonly registry;
7
+ private constructor();
8
+ /** Singleton accessor */
9
+ static getInstance(): ErrorMessageRegistry;
10
+ /** Register or override messages */
11
+ register(messages: Record<string, string>): void;
12
+ /** Resolve a message for a given error code */
13
+ resolve(code: ErrorCode | string, defaultMessage?: string): string;
14
+ /**
15
+ * Map an AppError to an ExpressResponder
16
+ * Centralizes error-to-HTTP mapping
17
+ */
18
+ mapAppErrorToResponder(responder: ExpressResponder<unknown>, err: AppError): any;
19
+ }
@@ -0,0 +1,3 @@
1
+ import { ErrorMessageRegistry } from './errorRegistry';
2
+ /** Singleton export for easy access */
3
+ export declare const errorMessageRegistry: ErrorMessageRegistry;
@@ -1,10 +1,4 @@
1
- export * from './error/AppError';
2
- export * from './error/HTTPError';
3
- export * from './error/BadRequestError';
4
- export * from './error/UnauthorizedError';
5
- export * from './error/ForbiddenError';
6
- export * from './error/NotFoundError';
7
- export * from './error/ConflictError';
8
- export * from './error/ValidationError';
9
- export * from './error/InternalServerError';
1
+ export * from './errorRegistry';
2
+ export * from './error';
3
+ export * from './constants';
10
4
  export * from './middleware/express';
@@ -1,2 +1,2 @@
1
- export * from './errorHandler';
2
- export * from './errorConverter';
1
+ export * from './errorHandler.middleware';
2
+ export * from './errorConverter.middleware';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naman_deep_singh/errors-utils",
3
- "version": "1.3.1",
3
+ "version": "1.4.2",
4
4
  "description": "Standardized error classes and Express middleware for consistent error handling with TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -33,10 +33,10 @@
33
33
  "@types/express": "^5.0.5",
34
34
  "@types/node": "^25.0.1",
35
35
  "express": "^5.1.0",
36
- "typescript": "^5.9.3",
37
- "rimraf": "^5.0.5"
36
+ "rimraf": "^5.0.5",
37
+ "typescript": "^5.9.3"
38
38
  },
39
39
  "dependencies": {
40
- "@naman_deep_singh/response-utils": "^2.0.4"
40
+ "@naman_deep_singh/response-utils": "^2.1.4"
41
41
  }
42
42
  }
@@ -1,37 +1,78 @@
1
1
  export const ERROR_CODES = {
2
+ /* ------------------------------------------------------------------ */
3
+ /* 🧱 Common / Generic */
4
+ /* ------------------------------------------------------------------ */
2
5
  BAD_REQUEST: 'BAD_REQUEST',
6
+ VALIDATION_FAILED: 'VALIDATION_FAILED',
3
7
  UNAUTHORIZED: 'UNAUTHORIZED',
4
8
  FORBIDDEN: 'FORBIDDEN',
5
9
  NOT_FOUND: 'NOT_FOUND',
6
10
  CONFLICT: 'CONFLICT',
7
- VALIDATION_FAILED: 'VALIDATION_FAILED',
8
- RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',
11
+ TOO_MANY_REQUESTS: 'TOO_MANY_REQUESTS',
9
12
 
10
13
  INTERNAL_SERVER_ERROR: 'INTERNAL_SERVER_ERROR',
14
+ SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
15
+ DEPENDENCY_FAILURE: 'DEPENDENCY_FAILURE',
16
+
17
+ /* ------------------------------------------------------------------ */
18
+ /* 🌐 HTTP / Network */
19
+ /* ------------------------------------------------------------------ */
20
+ HTTP_ERROR: 'HTTP_ERROR',
21
+ HTTP_TIMEOUT: 'HTTP_TIMEOUT',
22
+ UPSTREAM_SERVICE_ERROR: 'UPSTREAM_SERVICE_ERROR',
23
+
24
+ /* ------------------------------------------------------------------ */
25
+ /* 🔐 Authentication / Authorization */
26
+ /* ------------------------------------------------------------------ */
27
+ AUTH_FAILED: 'AUTH_FAILED',
28
+ TOKEN_MISSING: 'TOKEN_MISSING',
29
+ TOKEN_INVALID: 'TOKEN_INVALID',
30
+ TOKEN_EXPIRED: 'TOKEN_EXPIRED',
11
31
 
32
+ /* ------------------------------------------------------------------ */
33
+ /* 🔑 Cryptography / Security */
34
+ /* ------------------------------------------------------------------ */
35
+ CRYPTO_ERROR: 'CRYPTO_ERROR',
12
36
  CRYPTO_INTEGRITY_ERROR: 'CRYPTO_INTEGRITY_ERROR',
13
37
 
14
- TOO_MANY_REQUESTS: 'TOO_MANY_REQUESTS',
38
+ /* ------------------------------------------------------------------ */
39
+ /* 💾 Cache */
40
+ /* ------------------------------------------------------------------ */
41
+ CACHE_ERROR: 'CACHE_ERROR',
42
+ CACHE_CONNECTION_FAILED: 'CACHE_CONNECTION_FAILED',
15
43
 
16
- TOKEN_EXPIRED: 'TOKEN_EXPIRED',
17
- TOKEN_INVALID: 'TOKEN_INVALID',
18
- TOKEN_NOT_PROVIDED: 'TOKEN_NOT_PROVIDED',
19
- TOKEN_NOT_FOUND: 'TOKEN_NOT_FOUND',
20
- TOKEN_NOT_CREATED: 'TOKEN_NOT_CREATED',
21
- TOKEN_NOT_UPDATED: 'TOKEN_NOT_UPDATED',
22
- TOKEN_NOT_DELETED: 'TOKEN_NOT_DELETED',
23
- TOKEN_NOT_VALIDATED: 'TOKEN_NOT_VALIDATED',
24
- TOKEN_NOT_REFRESHED: 'TOKEN_NOT_REFRESHED',
25
- TOKEN_NOT_REVOKED: 'TOKEN_NOT_REVOKED',
26
- TOKEN_NOT_BLACKLISTED: 'TOKEN_NOT_BLACKLISTED',
27
- TOKEN_NOT_WHITELISTED: 'TOKEN_NOT_WHITELISTED',
28
- TOKEN_NOT_DECODED: 'TOKEN_NOT_DECODED',
29
- TOKEN_NOT_ENCODED: 'TOKEN_NOT_ENCODED',
30
- TOKEN_NOT_SIGNED: 'TOKEN_NOT_SIGNED',
31
- TOKEN_NOT_VERIFIED: 'TOKEN_NOT_VERIFIED',
32
- TOKEN_NOT_DECRYPTED: 'TOKEN_NOT_DECRYPTED',
33
- TOKEN_NOT_ENCRYPTED: 'TOKEN_NOT_ENCRYPTED',
34
- TOKEN_NOT_GENERATED: 'TOKEN_NOT_GENERATED',
44
+ /* ------------------------------------------------------------------ */
45
+ /* 🗄️ Database */
46
+ /* ------------------------------------------------------------------ */
47
+ DATABASE_ERROR: 'DATABASE_ERROR',
48
+ DATABASE_CONNECTION_FAILED: 'DATABASE_CONNECTION_FAILED',
49
+ DATABASE_CONSTRAINT_VIOLATION: 'DATABASE_CONSTRAINT_VIOLATION',
50
+
51
+ /* ------------------------------------------------------------------ */
52
+ /* 📩 Messaging / Queues */
53
+ /* ------------------------------------------------------------------ */
54
+ MESSAGE_BROKER_ERROR: 'MESSAGE_BROKER_ERROR',
55
+ MESSAGE_PUBLISH_FAILED: 'MESSAGE_PUBLISH_FAILED',
56
+
57
+ /* ------------------------------------------------------------------ */
58
+ /* 📁 File / Storage */
59
+ /* ------------------------------------------------------------------ */
60
+ FILE_ERROR: 'FILE_ERROR',
61
+ FILE_NOT_FOUND: 'FILE_NOT_FOUND',
62
+ FILE_UPLOAD_FAILED: 'FILE_UPLOAD_FAILED',
63
+ FILE_TOO_LARGE: 'FILE_TOO_LARGE',
64
+
65
+ /* ------------------------------------------------------------------ */
66
+ /* ⚙️ Configuration / Environment */
67
+ /* ------------------------------------------------------------------ */
68
+ CONFIG_ERROR: 'CONFIG_ERROR',
69
+ CONFIG_MISSING: 'CONFIG_MISSING',
70
+
71
+ /* ------------------------------------------------------------------ */
72
+ /* ⏱️ Timeouts / Resources */
73
+ /* ------------------------------------------------------------------ */
74
+ TIMEOUT_ERROR: 'TIMEOUT_ERROR',
75
+ RESOURCE_EXHAUSTED: 'RESOURCE_EXHAUSTED',
35
76
  } as const
36
77
 
37
- export type ErrorCode = keyof typeof ERROR_CODES
78
+ export type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]
@@ -1,37 +1,94 @@
1
- import type { ErrorCode } from './errorCodes'
1
+ import { ERROR_CODES, type ErrorCode } from './errorCodes'
2
+
3
+ /**
4
+ * Canonical error messages mapped to ERROR_CODES
5
+ * - Human-readable
6
+ * - Safe for API responses
7
+ * - Useful for logs
8
+ * - Can be overridden by services if needed
9
+ */
2
10
 
3
11
  export const ERROR_MESSAGES: Record<ErrorCode, string> = {
4
- BAD_REQUEST: 'Bad request',
5
- UNAUTHORIZED: 'Unauthorized',
6
- FORBIDDEN: 'Forbidden',
7
- NOT_FOUND: 'Resource not found',
8
- CONFLICT: 'Conflict occurred',
9
- VALIDATION_FAILED: 'Validation failed',
10
- RATE_LIMIT_EXCEEDED: 'Too many requests',
11
-
12
- INTERNAL_SERVER_ERROR: 'Internal server error',
13
-
14
- CRYPTO_INTEGRITY_ERROR: 'Crypto integrity error',
15
-
16
- TOO_MANY_REQUESTS: 'Too many requests',
17
-
18
- TOKEN_EXPIRED: 'Token expired',
19
- TOKEN_INVALID: 'Invalid token',
20
- TOKEN_NOT_PROVIDED: 'Token not provided',
21
- TOKEN_NOT_FOUND: 'Token not found',
22
- TOKEN_NOT_CREATED: 'Token not created',
23
- TOKEN_NOT_UPDATED: 'Token not updated',
24
- TOKEN_NOT_DELETED: 'Token not deleted',
25
- TOKEN_NOT_VALIDATED: 'Token not validated',
26
- TOKEN_NOT_REFRESHED: 'Token not refreshed',
27
- TOKEN_NOT_REVOKED: 'Token not revoked',
28
- TOKEN_NOT_BLACKLISTED: 'Token not blacklisted',
29
- TOKEN_NOT_WHITELISTED: 'Token not whitelisted',
30
- TOKEN_NOT_DECODED: 'Token not decoded',
31
- TOKEN_NOT_ENCODED: 'Token not encoded',
32
- TOKEN_NOT_SIGNED: 'Token not signed',
33
- TOKEN_NOT_VERIFIED: 'Token not verified',
34
- TOKEN_NOT_DECRYPTED: 'Token not decrypted',
35
- TOKEN_NOT_ENCRYPTED: 'Token not encrypted',
36
- TOKEN_NOT_GENERATED: 'Token not generated',
12
+ /* ------------------------------------------------------------------ */
13
+ /* 🧱 Common / Generic */
14
+ /* ------------------------------------------------------------------ */
15
+ [ERROR_CODES.BAD_REQUEST]: 'The request is invalid or malformed.',
16
+ [ERROR_CODES.VALIDATION_FAILED]: 'Request validation failed.',
17
+ [ERROR_CODES.UNAUTHORIZED]: 'Authentication is required.',
18
+ [ERROR_CODES.FORBIDDEN]: 'You do not have permission to perform this action.',
19
+ [ERROR_CODES.NOT_FOUND]: 'The requested resource was not found.',
20
+ [ERROR_CODES.CONFLICT]:
21
+ 'The request could not be completed due to a conflict.',
22
+ [ERROR_CODES.TOO_MANY_REQUESTS]: 'Too many requests. Please try again later.',
23
+
24
+ [ERROR_CODES.INTERNAL_SERVER_ERROR]: 'An unexpected internal error occurred.',
25
+ [ERROR_CODES.SERVICE_UNAVAILABLE]: 'The service is currently unavailable.',
26
+ [ERROR_CODES.DEPENDENCY_FAILURE]: 'A dependent service failed to respond.',
27
+
28
+ /* ------------------------------------------------------------------ */
29
+ /* 🌐 HTTP / Network */
30
+ /* ------------------------------------------------------------------ */
31
+ [ERROR_CODES.HTTP_ERROR]:
32
+ 'An HTTP error occurred while processing the request.',
33
+ [ERROR_CODES.HTTP_TIMEOUT]: 'The request timed out.',
34
+ [ERROR_CODES.UPSTREAM_SERVICE_ERROR]:
35
+ 'An upstream service returned an error.',
36
+
37
+ /* ------------------------------------------------------------------ */
38
+ /* 🔐 Authentication / Authorization */
39
+ /* ------------------------------------------------------------------ */
40
+ [ERROR_CODES.AUTH_FAILED]: 'Authentication failed.',
41
+ [ERROR_CODES.TOKEN_MISSING]: 'Authentication token is missing.',
42
+ [ERROR_CODES.TOKEN_INVALID]: 'Authentication token is invalid.',
43
+ [ERROR_CODES.TOKEN_EXPIRED]: 'Authentication token has expired.',
44
+
45
+ /* ------------------------------------------------------------------ */
46
+ /* 🔑 Cryptography / Security */
47
+ /* ------------------------------------------------------------------ */
48
+ [ERROR_CODES.CRYPTO_ERROR]: 'A cryptographic operation failed.',
49
+ [ERROR_CODES.CRYPTO_INTEGRITY_ERROR]: 'Data integrity verification failed.',
50
+
51
+ /* ------------------------------------------------------------------ */
52
+ /* 💾 Cache */
53
+ /* ------------------------------------------------------------------ */
54
+ [ERROR_CODES.CACHE_ERROR]: 'A cache operation failed.',
55
+ [ERROR_CODES.CACHE_CONNECTION_FAILED]:
56
+ 'Failed to connect to the cache store.',
57
+
58
+ /* ------------------------------------------------------------------ */
59
+ /* 🗄️ Database */
60
+ /* ------------------------------------------------------------------ */
61
+ [ERROR_CODES.DATABASE_ERROR]: 'A database error occurred.',
62
+ [ERROR_CODES.DATABASE_CONNECTION_FAILED]:
63
+ 'Failed to connect to the database.',
64
+ [ERROR_CODES.DATABASE_CONSTRAINT_VIOLATION]:
65
+ 'The operation violates a database constraint.',
66
+
67
+ /* ------------------------------------------------------------------ */
68
+ /* 📩 Messaging / Queues */
69
+ /* ------------------------------------------------------------------ */
70
+ [ERROR_CODES.MESSAGE_BROKER_ERROR]: 'A message broker error occurred.',
71
+ [ERROR_CODES.MESSAGE_PUBLISH_FAILED]:
72
+ 'Failed to publish message to the message broker.',
73
+
74
+ /* ------------------------------------------------------------------ */
75
+ /* 📁 File / Storage */
76
+ /* ------------------------------------------------------------------ */
77
+ [ERROR_CODES.FILE_ERROR]: 'A file operation failed.',
78
+ [ERROR_CODES.FILE_NOT_FOUND]: 'The requested file was not found.',
79
+ [ERROR_CODES.FILE_UPLOAD_FAILED]: 'File upload failed.',
80
+ [ERROR_CODES.FILE_TOO_LARGE]: 'The uploaded file exceeds the allowed size.',
81
+
82
+ /* ------------------------------------------------------------------ */
83
+ /* ⚙️ Configuration / Environment */
84
+ /* ------------------------------------------------------------------ */
85
+ [ERROR_CODES.CONFIG_ERROR]: 'Configuration error detected.',
86
+ [ERROR_CODES.CONFIG_MISSING]: 'Required configuration is missing.',
87
+
88
+ /* ------------------------------------------------------------------ */
89
+ /* ⏱️ Timeouts / Resources */
90
+ /* ------------------------------------------------------------------ */
91
+ [ERROR_CODES.TIMEOUT_ERROR]: 'The operation timed out.',
92
+ [ERROR_CODES.RESOURCE_EXHAUSTED]:
93
+ 'The system has exhausted required resources.',
37
94
  }
@@ -1,5 +1,6 @@
1
1
  import { HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
- import { ERROR_MESSAGES, type ErrorCode } from '../constants'
2
+ import { errorMessageRegistry } from 'src'
3
+ import type { ErrorCode } from '../constants'
3
4
 
4
5
  export class AppError extends Error {
5
6
  public statusCode: number
@@ -14,7 +15,7 @@ export class AppError extends Error {
14
15
  details?: unknown,
15
16
  cause?: Error,
16
17
  ) {
17
- super(ERROR_MESSAGES[code]) // message comes from mapping
18
+ super(errorMessageRegistry.resolve(code)) // message comes from mapping
18
19
  this.code = code
19
20
  this.statusCode = statusCode
20
21
  this.isOperational = true
@@ -0,0 +1,8 @@
1
+ import { ERROR_CODES } from 'src/constants'
2
+ import { InternalServerError } from './InternalServerError'
3
+
4
+ export class ServiceUnavailableError extends InternalServerError {
5
+ constructor(details?: unknown, cause?: Error) {
6
+ super(ERROR_CODES.SERVICE_UNAVAILABLE, details, cause)
7
+ }
8
+ }
@@ -1,8 +1,8 @@
1
1
  import { HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
2
  import { ERROR_CODES } from 'src/constants'
3
- import { UnauthorizedError } from './UnauthorizedError'
3
+ import { HTTPError } from './HTTPError'
4
4
 
5
- export class TokenExpiredError extends UnauthorizedError {
5
+ export class TokenExpiredError extends HTTPError {
6
6
  constructor(details?: unknown, cause?: Error) {
7
7
  super(
8
8
  ERROR_CODES.TOKEN_EXPIRED,
@@ -1,8 +1,8 @@
1
1
  import { HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
2
  import { ERROR_CODES } from 'src/constants'
3
- import { UnauthorizedError } from './UnauthorizedError'
3
+ import { HTTPError } from './HTTPError'
4
4
 
5
- export class TokenMalformedError extends UnauthorizedError {
5
+ export class TokenMalformedError extends HTTPError {
6
6
  constructor(details?: unknown, cause?: Error) {
7
7
  super(
8
8
  ERROR_CODES.TOKEN_INVALID,
@@ -1,14 +1,14 @@
1
1
  import { HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
- import { ERROR_CODES, type ErrorCode } from 'src/constants'
2
+ import { ERROR_CODES } from 'src/constants'
3
3
  import { HTTPError } from './HTTPError'
4
4
 
5
5
  export class UnauthorizedError extends HTTPError {
6
- constructor(
7
- errorCodes: ErrorCode = ERROR_CODES.UNAUTHORIZED,
8
- status: number = HTTP_STATUS.CLIENT_ERROR.UNAUTHORIZED,
9
- details?: unknown,
10
- cause?: Error,
11
- ) {
12
- super(errorCodes, status, details, cause)
6
+ constructor(details?: unknown, cause?: Error) {
7
+ super(
8
+ ERROR_CODES.UNAUTHORIZED,
9
+ HTTP_STATUS.CLIENT_ERROR.UNAUTHORIZED,
10
+ details,
11
+ cause,
12
+ )
13
13
  }
14
14
  }
@@ -0,0 +1,26 @@
1
+ export * from './AppError'
2
+ export * from './HTTPError'
3
+
4
+ // =========================
5
+ // 4xx Client Errors
6
+ // =========================
7
+ export * from './BadRequestError'
8
+ export * from './UnauthorizedError'
9
+ export * from './ForbiddenError'
10
+ export * from './NotFoundError'
11
+ export * from './ConflictError'
12
+ export * from './ValidationError'
13
+ export * from './TooManyRequestsError'
14
+
15
+ // =========================
16
+ // Auth / Token Errors
17
+ // =========================
18
+ export * from './TokenExpiredError'
19
+ export * from './TokenMalformedError'
20
+
21
+ // =========================
22
+ // 5xx Server Errors
23
+ // =========================
24
+ export * from './InternalServerError'
25
+ export * from './CryptoIntegrityError'
26
+ export * from './ServiceUnavailableError'
@@ -0,0 +1,74 @@
1
+ import { HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
+ import type { ExpressResponder } from '@naman_deep_singh/response-utils'
3
+ import { ERROR_MESSAGES, type ErrorCode } from 'src/constants'
4
+ import type { AppError } from 'src/error/AppError'
5
+
6
+ export class ErrorMessageRegistry {
7
+ private static instance: ErrorMessageRegistry
8
+ private readonly registry = new Map<ErrorCode | string, string>()
9
+
10
+ private constructor() {
11
+ // Initialize with default messages
12
+ Object.entries(ERROR_MESSAGES).forEach(([code, message]) => {
13
+ this.registry.set(code, message)
14
+ })
15
+ }
16
+
17
+ /** Singleton accessor */
18
+ public static getInstance(): ErrorMessageRegistry {
19
+ if (!ErrorMessageRegistry.instance) {
20
+ ErrorMessageRegistry.instance = new ErrorMessageRegistry()
21
+ }
22
+ return ErrorMessageRegistry.instance
23
+ }
24
+
25
+ /** Register or override messages */
26
+ public register(messages: Record<string, string>): void {
27
+ for (const [code, message] of Object.entries(messages)) {
28
+ this.registry.set(code, message)
29
+ }
30
+ }
31
+
32
+ /** Resolve a message for a given error code */
33
+ public resolve(
34
+ code: ErrorCode | string,
35
+ defaultMessage = 'Unexpected error',
36
+ ): string {
37
+ return this.registry.get(code) ?? defaultMessage
38
+ }
39
+
40
+ /**
41
+ * Map an AppError to an ExpressResponder
42
+ * Centralizes error-to-HTTP mapping
43
+ */
44
+ public mapAppErrorToResponder(
45
+ responder: ExpressResponder<unknown>,
46
+ err: AppError,
47
+ ) {
48
+ switch (err.statusCode) {
49
+ case HTTP_STATUS.CLIENT_ERROR.BAD_REQUEST:
50
+ return responder.badRequest(this.resolve(err.code), {
51
+ details: err.details,
52
+ })
53
+ case HTTP_STATUS.CLIENT_ERROR.UNAUTHORIZED:
54
+ return responder.unauthorized(this.resolve(err.code))
55
+ case HTTP_STATUS.CLIENT_ERROR.FORBIDDEN:
56
+ return responder.forbidden(this.resolve(err.code))
57
+ case HTTP_STATUS.CLIENT_ERROR.NOT_FOUND:
58
+ return responder.notFound(this.resolve(err.code))
59
+ case HTTP_STATUS.CLIENT_ERROR.CONFLICT:
60
+ return responder.conflict(this.resolve(err.code))
61
+ case HTTP_STATUS.CLIENT_ERROR.UNPROCESSABLE_ENTITY:
62
+ return responder.unprocessableEntity(this.resolve(err.code), {
63
+ details: err.details,
64
+ })
65
+ case HTTP_STATUS.CLIENT_ERROR.TOO_MANY_REQUESTS:
66
+ return responder.tooManyRequests(this.resolve(err.code))
67
+ default:
68
+ // Any other status maps to generic server error
69
+ return responder.serverError(this.resolve(err.code), {
70
+ details: err.details,
71
+ })
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,4 @@
1
+ import { ErrorMessageRegistry } from './errorRegistry'
2
+
3
+ /** Singleton export for easy access */
4
+ export const errorMessageRegistry = ErrorMessageRegistry.getInstance()
@@ -1,11 +1,13 @@
1
- export * from './error/AppError'
2
- export * from './error/HTTPError'
3
- export * from './error/BadRequestError'
4
- export * from './error/UnauthorizedError'
5
- export * from './error/ForbiddenError'
6
- export * from './error/NotFoundError'
7
- export * from './error/ConflictError'
8
- export * from './error/ValidationError'
9
- export * from './error/InternalServerError'
10
-
1
+ export * from './errorRegistry'
2
+ // =========================
3
+ // default errors
4
+ // =========================
5
+ export * from './error'
6
+ // =========================
7
+ // Constants
8
+ // =========================
9
+ export * from './constants'
10
+ // =========================
11
+ // Express Middleware
12
+ // =========================
11
13
  export * from './middleware/express'
@@ -1,8 +1,8 @@
1
- import { ExpressResponder } from '@naman_deep_singh/response-utils'
1
+ import { ExpressResponder, HTTP_STATUS } from '@naman_deep_singh/response-utils'
2
2
  import type { NextFunction, Request, Response } from 'express'
3
+ import { errorMessageRegistry } from 'src/errorRegistry'
3
4
  import { ERROR_CODES } from '../../constants'
4
5
  import { AppError } from '../../error/AppError'
5
- import { mapAppErrorToResponder } from '../../utils/mapAppErrorToResponder'
6
6
 
7
7
  export function expressErrorHandler(
8
8
  err: unknown,
@@ -14,7 +14,7 @@ export function expressErrorHandler(
14
14
 
15
15
  // 1. Known operational error
16
16
  if (err instanceof AppError) {
17
- return mapAppErrorToResponder(responder, err)
17
+ return errorMessageRegistry.mapAppErrorToResponder(responder, err)
18
18
  }
19
19
 
20
20
  // 2. Log unexpected errors (never expose internals in prod)
@@ -23,10 +23,10 @@ export function expressErrorHandler(
23
23
  // 3. Normalize unknown error → AppError
24
24
  const internalError = new AppError(
25
25
  ERROR_CODES.INTERNAL_SERVER_ERROR,
26
- 500,
26
+ HTTP_STATUS.SERVER_ERROR.INTERNAL_SERVER_ERROR,
27
27
  process.env.NODE_ENV === 'production' ? undefined : err,
28
28
  err instanceof Error ? err : undefined,
29
29
  )
30
30
 
31
- return mapAppErrorToResponder(responder, internalError)
31
+ return errorMessageRegistry.mapAppErrorToResponder(responder, internalError)
32
32
  }
@@ -1,2 +1,2 @@
1
- export * from './errorHandler'
2
- export * from './errorConverter'
1
+ export * from './errorHandler.middleware'
2
+ export * from './errorConverter.middleware'