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,3 +1,4 @@
1
+ import { CryptoIntegrityError } from '@naman_deep_singh/errors-utils';
1
2
  import { decrypt as functionalDecrypt, encrypt as functionalEncrypt, hmacSign as functionalHmacSign, hmacVerify as functionalHmacVerify, randomToken as functionalRandomToken, } from './index';
2
3
  /**
3
4
  * Default configuration
@@ -31,17 +32,27 @@ export class CryptoManager {
31
32
  * Encrypt data using the default or specified algorithm
32
33
  */
33
34
  encrypt(plaintext, key, _options) {
34
- // For now, use the basic encrypt function
35
- // TODO: Enhance to support different algorithms and options
36
- return functionalEncrypt(plaintext, key);
35
+ try {
36
+ return functionalEncrypt(plaintext, key);
37
+ }
38
+ catch (error) {
39
+ throw new CryptoIntegrityError({
40
+ reason: 'Encryption failed',
41
+ }, error instanceof Error ? error : undefined);
42
+ }
37
43
  }
38
44
  /**
39
45
  * Decrypt data using the default or specified algorithm
40
46
  */
41
47
  decrypt(encryptedData, key, _options) {
42
- // For now, use the basic decrypt function
43
- // TODO: Enhance to support different algorithms and options
44
- return functionalDecrypt(encryptedData, key);
48
+ try {
49
+ return functionalDecrypt(encryptedData, key);
50
+ }
51
+ catch (error) {
52
+ throw new CryptoIntegrityError({
53
+ reason: 'Decryption failed',
54
+ }, error instanceof Error ? error : undefined);
55
+ }
45
56
  }
46
57
  /**
47
58
  * Generate HMAC signature
@@ -71,9 +82,11 @@ export class CryptoManager {
71
82
  deriveKey(password, salt, iterations = 100000, keyLength = 32) {
72
83
  return new Promise((resolve, reject) => {
73
84
  const crypto = require('crypto');
74
- crypto.pbkdf2(password, salt, iterations, keyLength, 'sha256', (err, derivedKey) => {
75
- if (err) {
76
- reject(err);
85
+ crypto.pbkdf2(password, salt, iterations, keyLength, 'sha256', (error, derivedKey) => {
86
+ if (error) {
87
+ reject(new CryptoIntegrityError({
88
+ reason: 'Key derivation failed',
89
+ }, error instanceof Error ? error : undefined));
77
90
  }
78
91
  else {
79
92
  resolve(derivedKey.toString('hex'));
@@ -143,15 +156,17 @@ export class CryptoManager {
143
156
  rsaSign(data, privateKey, algorithm = 'sha256') {
144
157
  return new Promise((resolve, reject) => {
145
158
  const crypto = require('crypto');
146
- const sign = crypto.createSign(algorithm);
147
- sign.update(data);
148
- sign.end();
149
159
  try {
160
+ const sign = crypto.createSign(algorithm);
161
+ sign.update(data);
162
+ sign.end();
150
163
  const signature = sign.sign(privateKey, 'base64');
151
164
  resolve(signature);
152
165
  }
153
166
  catch (error) {
154
- reject(error);
167
+ reject(new CryptoIntegrityError({
168
+ reason: 'RSA signing failed',
169
+ }, error instanceof Error ? error : undefined));
155
170
  }
156
171
  });
157
172
  }
@@ -161,15 +176,17 @@ export class CryptoManager {
161
176
  rsaVerify(data, signature, publicKey, algorithm = 'sha256') {
162
177
  return new Promise((resolve, reject) => {
163
178
  const crypto = require('crypto');
164
- const verify = crypto.createVerify(algorithm);
165
- verify.update(data);
166
- verify.end();
167
179
  try {
180
+ const verify = crypto.createVerify(algorithm);
181
+ verify.update(data);
182
+ verify.end();
168
183
  const isValid = verify.verify(publicKey, signature, 'base64');
169
184
  resolve(isValid);
170
185
  }
171
186
  catch (error) {
172
- reject(error);
187
+ reject(new CryptoIntegrityError({
188
+ reason: 'RSA verification failed',
189
+ }, error instanceof Error ? error : undefined));
173
190
  }
174
191
  });
175
192
  }
@@ -1,3 +1,4 @@
1
+ import { BadRequestError } from '@naman_deep_singh/errors-utils';
1
2
  // src/jwt/decodeToken.ts
2
3
  import { decode } from 'jsonwebtoken';
3
4
  /**
@@ -15,7 +16,9 @@ export function decodeToken(token) {
15
16
  export function decodeTokenStrict(token) {
16
17
  const decoded = decode(token);
17
18
  if (!decoded || typeof decoded === 'string') {
18
- throw new Error('Invalid JWT payload structure');
19
+ throw new BadRequestError({
20
+ reason: 'Invalid JWT payload structure',
21
+ });
19
22
  }
20
23
  return decoded;
21
24
  }
@@ -1,3 +1,4 @@
1
+ import { TokenMalformedError } from '@naman_deep_singh/errors-utils';
1
2
  import { signToken } from './signToken';
2
3
  import { verifyToken } from './verify';
3
4
  // Helper function to create branded tokens
@@ -19,7 +20,9 @@ export const generateTokens = (payload, accessSecret, refreshSecret, accessExpir
19
20
  export function rotateRefreshToken(oldToken, secret) {
20
21
  const decoded = verifyToken(oldToken, secret);
21
22
  if (typeof decoded === 'string') {
22
- throw new Error('Invalid token payload — expected JWT payload object');
23
+ throw new TokenMalformedError({
24
+ reason: 'Invalid token payload — expected JWT payload object',
25
+ });
23
26
  }
24
27
  const payload = { ...decoded };
25
28
  delete payload.iat;
@@ -1,5 +1,5 @@
1
1
  import { type JwtPayload, type Secret } from 'jsonwebtoken';
2
- import type { AccessToken, ITokenManager, JWTConfig, RefreshToken, TokenPair, TokenValidationOptions } from '../../interfaces/jwt.interface';
2
+ import type { AccessToken, ITokenManager, JWTConfig, RefreshToken, TokenPair } from '../../interfaces/jwt.interface';
3
3
  export declare class JWTManager implements ITokenManager {
4
4
  private accessSecret;
5
5
  private refreshSecret;
@@ -8,60 +8,36 @@ export declare class JWTManager implements ITokenManager {
8
8
  private cache?;
9
9
  private cacheTTL;
10
10
  constructor(config: JWTConfig);
11
- /**
12
- * Generate both access and refresh tokens
13
- */
11
+ /** Generate both access and refresh tokens */
14
12
  generateTokens(payload: Record<string, unknown>): Promise<TokenPair>;
15
- /**
16
- * Generate access token
17
- */
13
+ /** Generate access token */
18
14
  generateAccessToken(payload: Record<string, unknown>): Promise<AccessToken>;
19
- /**
20
- * Generate refresh token
21
- */
15
+ /** Generate refresh token */
22
16
  generateRefreshToken(payload: Record<string, unknown>): Promise<RefreshToken>;
23
- /**
24
- * Verify access token
25
- */
26
- verifyAccessToken(token: string): Promise<JwtPayload | string>;
27
- /**
28
- * Verify refresh token
29
- */
30
- verifyRefreshToken(token: string): Promise<JwtPayload | string>;
31
- /**
32
- * Decode token without verification
33
- */
17
+ /** Verify access token */
18
+ verifyAccessToken(token: string): Promise<JwtPayload>;
19
+ /** Verify refresh token */
20
+ verifyRefreshToken(token: string): Promise<JwtPayload>;
21
+ /** Decode token without verification */
34
22
  decodeToken(token: string, complete?: boolean): JwtPayload | string | null;
35
- /**
36
- * Extract token from Authorization header
37
- */
23
+ /** Extract token from Authorization header */
38
24
  extractTokenFromHeader(authHeader: string): string | null;
39
- /**
40
- * Validate token without throwing exceptions
41
- */
42
- validateToken(token: string, secret: Secret, _options?: TokenValidationOptions): boolean;
43
- /**
44
- * Rotate refresh token
45
- */
25
+ /** Validate token without throwing exceptions */
26
+ validateToken(token: string, secret: Secret): boolean;
27
+ /** Rotate refresh token */
46
28
  rotateRefreshToken(oldToken: string): Promise<RefreshToken>;
47
- /**
48
- * Check if token is expired
49
- */
29
+ /** Check if token is expired */
50
30
  isTokenExpired(token: string): boolean;
51
- /**
52
- * Get token expiration date
53
- */
31
+ /** Get token expiration date */
54
32
  getTokenExpiration(token: string): Date | null;
55
- /**
56
- * Clear token cache
57
- */
33
+ /** Clear token cache */
58
34
  clearCache(): void;
59
- /**
60
- * Get cache statistics
61
- */
35
+ /** Get cache statistics */
62
36
  getCacheStats(): {
63
37
  size: number;
64
38
  maxSize: number;
65
39
  } | null;
40
+ /** Private helper methods */
66
41
  private validatePayload;
42
+ private verifyTokenWithCache;
67
43
  }
@@ -1,6 +1,6 @@
1
1
  import jwt from 'jsonwebtoken';
2
2
  import { signToken } from './signToken';
3
- import { safeVerifyToken, verifyToken } from './verify';
3
+ import { safeVerifyToken } from './verify';
4
4
  import { BadRequestError, UnauthorizedError, ValidationError, } from '@naman_deep_singh/errors-utils';
5
5
  import { LRUCache } from '@naman_deep_singh/js-extensions';
6
6
  export class JWTManager {
@@ -9,35 +9,26 @@ export class JWTManager {
9
9
  this.refreshSecret = config.refreshSecret;
10
10
  this.accessExpiry = config.accessExpiry || '15m';
11
11
  this.refreshExpiry = config.refreshExpiry || '7d';
12
- this.cacheTTL = 5 * 60 * 1000; // 5 minutes default TTL
12
+ this.cacheTTL = 5 * 60 * 1000; // 5 minutes
13
13
  if (config.enableCaching) {
14
14
  this.cache = new LRUCache(config.maxCacheSize || 100);
15
15
  }
16
16
  }
17
- /**
18
- * Generate both access and refresh tokens
19
- */
17
+ /** Generate both access and refresh tokens */
20
18
  async generateTokens(payload) {
21
19
  try {
22
20
  this.validatePayload(payload);
23
21
  const accessToken = await this.generateAccessToken(payload);
24
22
  const refreshToken = await this.generateRefreshToken(payload);
25
- return {
26
- accessToken,
27
- refreshToken,
28
- };
23
+ return { accessToken, refreshToken };
29
24
  }
30
25
  catch (error) {
31
- if (error instanceof BadRequestError ||
32
- error instanceof ValidationError) {
26
+ if (error instanceof BadRequestError || error instanceof ValidationError)
33
27
  throw error;
34
- }
35
- throw new BadRequestError('Failed to generate tokens');
28
+ throw new BadRequestError({ reason: 'Failed to generate tokens' }, error instanceof Error ? error : undefined);
36
29
  }
37
30
  }
38
- /**
39
- * Generate access token
40
- */
31
+ /** Generate access token */
41
32
  async generateAccessToken(payload) {
42
33
  try {
43
34
  this.validatePayload(payload);
@@ -47,16 +38,12 @@ export class JWTManager {
47
38
  return token;
48
39
  }
49
40
  catch (error) {
50
- if (error instanceof BadRequestError ||
51
- error instanceof ValidationError) {
41
+ if (error instanceof BadRequestError || error instanceof ValidationError)
52
42
  throw error;
53
- }
54
- throw new BadRequestError('Failed to generate access token');
43
+ throw new BadRequestError({ reason: 'Failed to generate access token' }, error instanceof Error ? error : undefined);
55
44
  }
56
45
  }
57
- /**
58
- * Generate refresh token
59
- */
46
+ /** Generate refresh token */
60
47
  async generateRefreshToken(payload) {
61
48
  try {
62
49
  this.validatePayload(payload);
@@ -66,231 +53,129 @@ export class JWTManager {
66
53
  return token;
67
54
  }
68
55
  catch (error) {
69
- if (error instanceof BadRequestError ||
70
- error instanceof ValidationError) {
56
+ if (error instanceof BadRequestError || error instanceof ValidationError)
71
57
  throw error;
72
- }
73
- throw new BadRequestError('Failed to generate refresh token');
58
+ throw new BadRequestError({ reason: 'Failed to generate refresh token' }, error instanceof Error ? error : undefined);
74
59
  }
75
60
  }
76
- /**
77
- * Verify access token
78
- */
61
+ /** Verify access token */
79
62
  async verifyAccessToken(token) {
80
- try {
81
- if (!token || typeof token !== 'string') {
82
- throw new ValidationError('Access token must be a non-empty string');
83
- }
84
- const cacheKey = `access_${token}`;
85
- if (this.cache) {
86
- const cached = this.cache.get(cacheKey);
87
- if (cached && Date.now() - cached.timestamp <= this.cacheTTL) {
88
- if (!cached.valid) {
89
- throw new UnauthorizedError('Access token is invalid or expired');
90
- }
91
- return cached.payload;
92
- }
93
- }
94
- const decoded = verifyToken(token, this.accessSecret);
95
- if (this.cache) {
96
- this.cache.set(cacheKey, {
97
- valid: true,
98
- payload: decoded,
99
- timestamp: Date.now(),
100
- });
101
- }
102
- return decoded;
103
- }
104
- catch (error) {
105
- if (error instanceof ValidationError ||
106
- error instanceof UnauthorizedError) {
107
- throw error;
108
- }
109
- if (error instanceof Error && error.name === 'TokenExpiredError') {
110
- throw new UnauthorizedError('Access token has expired');
111
- }
112
- if (error instanceof Error && error.name === 'JsonWebTokenError') {
113
- throw new UnauthorizedError('Access token is invalid');
114
- }
115
- throw new UnauthorizedError('Failed to verify access token');
116
- }
63
+ return this.verifyTokenWithCache(token, this.accessSecret, 'access');
117
64
  }
118
- /**
119
- * Verify refresh token
120
- */
65
+ /** Verify refresh token */
121
66
  async verifyRefreshToken(token) {
122
- try {
123
- if (!token || typeof token !== 'string') {
124
- throw new ValidationError('Refresh token must be a non-empty string');
125
- }
126
- const cacheKey = `refresh_${token}`;
127
- if (this.cache) {
128
- const cached = this.cache.get(cacheKey);
129
- if (cached) {
130
- if (!cached.valid) {
131
- throw new UnauthorizedError('Refresh token is invalid or expired');
132
- }
133
- return cached.payload;
134
- }
135
- }
136
- const decoded = verifyToken(token, this.refreshSecret);
137
- if (this.cache) {
138
- this.cache.set(cacheKey, {
139
- valid: true,
140
- payload: decoded,
141
- timestamp: Date.now(),
142
- });
143
- }
144
- return decoded;
145
- }
146
- catch (error) {
147
- if (error instanceof ValidationError ||
148
- error instanceof UnauthorizedError) {
149
- throw error;
150
- }
151
- if (error instanceof Error && error.name === 'TokenExpiredError') {
152
- throw new UnauthorizedError('Refresh token has expired');
153
- }
154
- if (error instanceof Error && error.name === 'JsonWebTokenError') {
155
- throw new UnauthorizedError('Refresh token is invalid');
156
- }
157
- throw new UnauthorizedError('Failed to verify refresh token');
158
- }
67
+ return this.verifyTokenWithCache(token, this.refreshSecret, 'refresh');
159
68
  }
160
- /**
161
- * Decode token without verification
162
- */
69
+ /** Decode token without verification */
163
70
  decodeToken(token, complete = false) {
164
- try {
165
- if (!token || typeof token !== 'string') {
166
- throw new ValidationError('Token must be a non-empty string');
167
- }
168
- return jwt.decode(token, { complete });
169
- }
170
- catch (error) {
171
- if (error instanceof ValidationError) {
172
- throw error;
173
- }
71
+ if (!token || typeof token !== 'string')
174
72
  return null;
175
- }
73
+ return jwt.decode(token, { complete });
176
74
  }
177
- /**
178
- * Extract token from Authorization header
179
- */
75
+ /** Extract token from Authorization header */
180
76
  extractTokenFromHeader(authHeader) {
181
- try {
182
- if (!authHeader || typeof authHeader !== 'string') {
183
- return null;
184
- }
185
- const parts = authHeader.split(' ');
186
- if (parts.length !== 2 || parts[0] !== 'Bearer') {
187
- return null;
188
- }
189
- return parts[1];
190
- }
191
- catch {
77
+ if (!authHeader || typeof authHeader !== 'string')
192
78
  return null;
193
- }
79
+ const parts = authHeader.split(' ');
80
+ if (parts.length !== 2 || parts[0] !== 'Bearer')
81
+ return null;
82
+ return parts[1];
194
83
  }
195
- /**
196
- * Validate token without throwing exceptions
197
- */
198
- validateToken(token, secret, _options = {}) {
199
- try {
200
- if (!token || typeof token !== 'string') {
201
- return false;
202
- }
203
- const result = safeVerifyToken(token, secret);
204
- return result.valid;
205
- }
206
- catch {
84
+ /** Validate token without throwing exceptions */
85
+ validateToken(token, secret) {
86
+ if (!token || typeof token !== 'string')
207
87
  return false;
208
- }
88
+ return safeVerifyToken(token, secret).valid;
209
89
  }
210
- /**
211
- * Rotate refresh token
212
- */
90
+ /** Rotate refresh token */
213
91
  async rotateRefreshToken(oldToken) {
214
- try {
215
- if (!oldToken || typeof oldToken !== 'string') {
216
- throw new ValidationError('Old refresh token must be a non-empty string');
217
- }
218
- const decoded = await this.verifyRefreshToken(oldToken);
219
- if (typeof decoded === 'string') {
220
- throw new ValidationError('Invalid token payload — expected JWT payload object');
221
- }
222
- // Create new payload without issued/expired timestamps
223
- const payload = { ...decoded };
224
- delete payload.iat;
225
- delete payload.exp;
226
- // Generate new refresh token
227
- const newToken = signToken(payload, this.refreshSecret, this.refreshExpiry);
228
- return newToken;
229
- }
230
- catch (error) {
231
- if (error instanceof ValidationError ||
232
- error instanceof UnauthorizedError) {
233
- throw error;
234
- }
235
- throw new BadRequestError('Failed to rotate refresh token');
92
+ if (!oldToken || typeof oldToken !== 'string') {
93
+ throw new ValidationError({
94
+ reason: 'Old refresh token must be a non-empty string',
95
+ });
236
96
  }
97
+ const decoded = await this.verifyRefreshToken(oldToken);
98
+ const payload = { ...decoded };
99
+ delete payload.iat;
100
+ delete payload.exp;
101
+ const newToken = signToken(payload, this.refreshSecret, this.refreshExpiry);
102
+ return newToken;
237
103
  }
238
- /**
239
- * Check if token is expired
240
- */
104
+ /** Check if token is expired */
241
105
  isTokenExpired(token) {
242
106
  try {
243
107
  const decoded = this.decodeToken(token);
244
- if (!decoded || !decoded.exp) {
108
+ if (!decoded || !decoded.exp)
245
109
  return true;
246
- }
247
- const currentTime = Math.floor(Date.now() / 1000);
248
- return decoded.exp < currentTime;
110
+ return decoded.exp < Math.floor(Date.now() / 1000);
249
111
  }
250
112
  catch {
251
113
  return true;
252
114
  }
253
115
  }
254
- /**
255
- * Get token expiration date
256
- */
116
+ /** Get token expiration date */
257
117
  getTokenExpiration(token) {
258
118
  try {
259
119
  const decoded = this.decodeToken(token);
260
- if (!decoded || !decoded.exp) {
120
+ if (!decoded || !decoded.exp)
261
121
  return null;
262
- }
263
122
  return new Date(decoded.exp * 1000);
264
123
  }
265
124
  catch {
266
125
  return null;
267
126
  }
268
127
  }
269
- /**
270
- * Clear token cache
271
- */
128
+ /** Clear token cache */
272
129
  clearCache() {
273
130
  this.cache?.clear();
274
131
  }
275
- /**
276
- * Get cache statistics
277
- */
132
+ /** Get cache statistics */
278
133
  getCacheStats() {
279
134
  if (!this.cache)
280
135
  return null;
281
- // Note: LRUCache doesn't expose internal size, so we return maxSize only
282
- return {
283
- size: -1, // Size not available from LRUCache
284
- maxSize: this.cache.maxSize,
285
- };
136
+ return { size: -1, maxSize: this.cache.maxSize };
286
137
  }
287
- // Private helper methods
138
+ /** Private helper methods */
288
139
  validatePayload(payload) {
289
140
  if (!payload || typeof payload !== 'object') {
290
- throw new ValidationError('Payload must be a non-null object');
141
+ throw new ValidationError({
142
+ reason: 'Payload must be a non-null object',
143
+ });
291
144
  }
292
145
  if (Object.keys(payload).length === 0) {
293
- throw new ValidationError('Payload cannot be empty');
146
+ throw new ValidationError({ reason: 'Payload cannot be empty' });
147
+ }
148
+ }
149
+ async verifyTokenWithCache(token, secret, type) {
150
+ if (!token || typeof token !== 'string') {
151
+ throw new ValidationError({
152
+ reason: `${type} token must be a non-empty string`,
153
+ });
154
+ }
155
+ const cacheKey = `${type}_${token}`;
156
+ if (this.cache) {
157
+ const cached = this.cache.get(cacheKey);
158
+ if (cached && Date.now() - cached.timestamp <= this.cacheTTL) {
159
+ if (!cached.valid)
160
+ throw new UnauthorizedError({
161
+ reason: `${type} token is invalid or expired`,
162
+ });
163
+ return cached.payload;
164
+ }
165
+ }
166
+ const { valid, payload, error } = safeVerifyToken(token, secret);
167
+ if (!valid || !payload || typeof payload === 'string') {
168
+ this.cache?.set(cacheKey, {
169
+ valid: false,
170
+ payload: {},
171
+ timestamp: Date.now(),
172
+ });
173
+ throw new UnauthorizedError({
174
+ reason: `${type} token is invalid or expired`,
175
+ cause: error,
176
+ });
294
177
  }
178
+ this.cache?.set(cacheKey, { valid: true, payload, timestamp: Date.now() });
179
+ return payload;
295
180
  }
296
181
  }
@@ -1,3 +1,4 @@
1
+ import { ValidationError } from '@naman_deep_singh/errors-utils';
1
2
  const TIME_UNITS = {
2
3
  s: 1,
3
4
  m: 60,
@@ -15,12 +16,12 @@ export function parseDuration(input) {
15
16
  const value = Number.parseInt(match[1], 10);
16
17
  const unit = match[2].toLowerCase();
17
18
  if (!TIME_UNITS[unit]) {
18
- throw new Error(`Invalid time unit: ${unit}`);
19
+ throw new ValidationError({ reason: `Invalid time unit: ${unit}` });
19
20
  }
20
21
  totalSeconds += value * TIME_UNITS[unit];
21
22
  }
22
23
  if (totalSeconds === 0) {
23
- throw new Error(`Invalid expiry format: "${input}"`);
24
+ throw new ValidationError({ reason: `Invalid expiry format: "${input}"` });
24
25
  }
25
26
  return totalSeconds;
26
27
  }
@@ -1,3 +1,4 @@
1
+ import { ValidationError } from '@naman_deep_singh/errors-utils';
1
2
  import { sign } from 'jsonwebtoken';
2
3
  import { parseDuration } from './parseDuration';
3
4
  function getExpiryTimestamp(seconds) {
@@ -6,7 +7,7 @@ function getExpiryTimestamp(seconds) {
6
7
  export const signToken = (payload, secret, expiresIn = '1h', options = {}) => {
7
8
  const seconds = parseDuration(expiresIn);
8
9
  if (!seconds || seconds < 10) {
9
- throw new Error('Token expiry too small');
10
+ throw new ValidationError({ reason: 'Token expiry too small' });
10
11
  }
11
12
  const tokenPayload = {
12
13
  ...payload,
@@ -1,13 +1,16 @@
1
- import type { JwtPayload } from 'node_modules/@types/jsonwebtoken';
1
+ import type { JwtPayload } from 'jsonwebtoken';
2
2
  export interface TokenRequirements {
3
3
  requiredFields?: string[];
4
4
  forbiddenFields?: string[];
5
5
  validateTypes?: Record<string, 'string' | 'number' | 'boolean'>;
6
6
  }
7
- export declare function validateTokenPayload(payload: Record<string, unknown>, rules?: TokenRequirements): {
8
- valid: true;
9
- } | {
10
- valid: false;
11
- error: string;
12
- };
7
+ /**
8
+ * Validates a JWT payload according to the provided rules.
9
+ * Throws ValidationError if validation fails.
10
+ */
11
+ export declare function validateTokenPayload(payload: Record<string, unknown>, rules?: TokenRequirements): void;
12
+ /**
13
+ * Checks if a JWT payload is expired.
14
+ * Returns true if expired or missing 'exp'.
15
+ */
13
16
  export declare function isTokenExpired(payload: JwtPayload): boolean;