@jmlq/auth 0.0.1-alpha.1 → 0.0.1-alpha.3

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 (361) hide show
  1. package/README.md +259 -306
  2. package/dist/application/dtos/index.d.ts +3 -0
  3. package/dist/application/dtos/index.js +19 -0
  4. package/dist/application/dtos/request/index.d.ts +4 -0
  5. package/dist/{src/application/dtos → application/dtos/request}/index.js +4 -4
  6. package/dist/{src/application/dtos/login.dto.d.ts → application/dtos/request/login.request.d.ts} +0 -4
  7. package/dist/application/dtos/request/logout.request.d.ts +3 -0
  8. package/dist/application/dtos/request/refresh-token.request.d.ts +3 -0
  9. package/dist/application/dtos/request/register-user.request.d.ts +6 -0
  10. package/dist/application/dtos/response/index.d.ts +4 -0
  11. package/dist/application/dtos/response/index.js +20 -0
  12. package/dist/application/dtos/response/login.response.d.ts +4 -0
  13. package/dist/{src/application/dtos/logout.dto.d.ts → application/dtos/response/logout.response.d.ts} +0 -3
  14. package/dist/{src/application/dtos/refresh-token.dto.d.ts → application/dtos/response/refresh-token.response.d.ts} +0 -3
  15. package/dist/application/dtos/response/register-user.response.d.ts +7 -0
  16. package/dist/application/dtos/type/index.d.ts +1 -0
  17. package/dist/{src/shared/constants → application/dtos/type}/index.js +1 -1
  18. package/dist/application/dtos/type/user-role.type.d.ts +4 -0
  19. package/dist/application/factories/auth-service.factory.d.ts +11 -0
  20. package/dist/application/factories/auth-service.factory.js +40 -0
  21. package/dist/{src/application → application}/index.d.ts +1 -0
  22. package/dist/{src/application → application}/index.js +1 -0
  23. package/dist/application/types/auth-service-factory-options.type.d.ts +5 -0
  24. package/dist/application/types/index.d.ts +1 -0
  25. package/dist/{src/infrastructure/jwt/factory → application/types}/index.js +1 -1
  26. package/dist/{src/application → application}/use-cases/login-with-password.use-case.d.ts +2 -2
  27. package/dist/{src/application → application}/use-cases/login-with-password.use-case.js +6 -5
  28. package/dist/{src/application → application}/use-cases/logout.use-case.d.ts +2 -2
  29. package/dist/{src/application → application}/use-cases/logout.use-case.js +2 -2
  30. package/dist/{src/application → application}/use-cases/refresh-token.use-case.d.ts +2 -2
  31. package/dist/{src/application → application}/use-cases/refresh-token.use-case.js +2 -2
  32. package/dist/application/use-cases/register-user.use-case.d.ts +12 -0
  33. package/dist/{src/application → application}/use-cases/register-user.use-case.js +27 -1
  34. package/dist/{src/domain → domain}/errors/auth.errors.d.ts +1 -14
  35. package/dist/{src/domain → domain}/errors/auth.errors.js +1 -15
  36. package/dist/{src/domain → domain}/index.d.ts +0 -1
  37. package/dist/{src/domain → domain}/index.js +0 -1
  38. package/dist/domain/ports/auth/index.d.ts +2 -0
  39. package/dist/domain/ports/auth/index.js +18 -0
  40. package/dist/{src/domain/ports/auth/password-hasher.d.ts → domain/ports/auth/password-hasher.port.d.ts} +1 -1
  41. package/dist/{src/domain → domain}/ports/auth/password-policy.port.d.ts +1 -1
  42. package/dist/domain/ports/index.d.ts +4 -0
  43. package/dist/{src/infrastructure/jwt → domain/ports}/index.js +3 -2
  44. package/dist/domain/ports/jwt/index.d.ts +1 -0
  45. package/dist/{src/shared/types → domain/ports/jwt}/index.js +1 -1
  46. package/dist/domain/ports/jwt/payload/index.d.ts +1 -0
  47. package/dist/domain/ports/jwt/payload/index.js +17 -0
  48. package/dist/{src/domain → domain}/ports/repository/credential.repository.d.ts +1 -1
  49. package/dist/{src/domain → domain}/ports/repository/index.d.ts +1 -1
  50. package/dist/{src/domain → domain}/ports/repository/index.js +1 -1
  51. package/dist/{src/domain/ports/repository/user.repository.d.ts → domain/ports/repository/user-repository.port.d.ts} +1 -1
  52. package/dist/domain/ports/token/index.d.ts +2 -0
  53. package/dist/domain/ports/token/index.js +18 -0
  54. package/dist/{src/domain → domain}/ports/token/token-session.port.d.ts +2 -2
  55. package/dist/{src/domain → domain}/ports/token/token.service.port.d.ts +2 -2
  56. package/dist/{src/domain → domain}/props/jwt/generate-access-token.props.d.ts +0 -2
  57. package/dist/{src/domain → domain}/props/jwt/generate-refresh-token.props.d.ts +0 -2
  58. package/dist/{src/domain/props/services → domain/props/jwt}/index.d.ts +1 -0
  59. package/dist/{src/domain/props/services → domain/props/jwt}/index.js +1 -0
  60. package/dist/{src/domain → domain}/services/password-policy.service.d.ts +2 -2
  61. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.d.ts +2 -2
  62. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.js +12 -2
  63. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.d.ts +2 -2
  64. package/dist/index.d.ts +5 -1
  65. package/dist/index.js +13 -1
  66. package/dist/infrastructure/index.js +1 -0
  67. package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.d.ts +7 -2
  68. package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.js +7 -2
  69. package/dist/{src/infrastructure → infrastructure}/services/index.d.ts +0 -1
  70. package/dist/{src/infrastructure → infrastructure}/services/index.js +0 -1
  71. package/dist/infrastructure/services/token-session.service.d.ts +22 -0
  72. package/dist/{src/infrastructure/services/default-token-session.service.js → infrastructure/services/token-session.service.js} +30 -31
  73. package/dist/infrastructure/types/auth-service-container.d.ts +14 -0
  74. package/dist/shared/index.d.ts +1 -0
  75. package/dist/{src/infrastructure/repositories → shared}/index.js +1 -1
  76. package/package.json +5 -8
  77. package/dist/examples/bcrypt-password-hasher.example.d.ts +0 -3
  78. package/dist/examples/bcrypt-password-hasher.example.js +0 -78
  79. package/dist/examples/entity-object.example.d.ts +0 -39
  80. package/dist/examples/entity-object.example.js +0 -411
  81. package/dist/examples/factory-auth-service-example.d.ts +0 -3
  82. package/dist/examples/factory-auth-service-example.js +0 -84
  83. package/dist/examples/index.example.d.ts +0 -12
  84. package/dist/examples/index.example.js +0 -171
  85. package/dist/examples/jwt-algoritm.example.d.ts +0 -47
  86. package/dist/examples/jwt-algoritm.example.js +0 -447
  87. package/dist/examples/jwt-token-generator.example.d.ts +0 -6
  88. package/dist/examples/jwt-token-generator.example.js +0 -49
  89. package/dist/examples/jwt-verifier.example.d.ts +0 -3
  90. package/dist/examples/jwt-verifier.example.js +0 -80
  91. package/dist/examples/password-policy.example.d.ts +0 -7
  92. package/dist/examples/password-policy.example.js +0 -57
  93. package/dist/examples/service-jwt-token.example.d.ts +0 -3
  94. package/dist/examples/service-jwt-token.example.js +0 -154
  95. package/dist/examples/service-token-session.example.d.ts +0 -3
  96. package/dist/examples/service-token-session.example.js +0 -139
  97. package/dist/examples/use-case-login-with-password.example.d.ts +0 -6
  98. package/dist/examples/use-case-login-with-password.example.js +0 -105
  99. package/dist/examples/use-case-logout.example.d.ts +0 -7
  100. package/dist/examples/use-case-logout.example.js +0 -134
  101. package/dist/examples/use-case-refresh-token.example.d.ts +0 -11
  102. package/dist/examples/use-case-refresh-token.example.js +0 -164
  103. package/dist/examples/use-case-register-user.example.d.ts +0 -9
  104. package/dist/examples/use-case-register-user.example.js +0 -110
  105. package/dist/src/application/dtos/index.d.ts +0 -4
  106. package/dist/src/application/dtos/register-user.dto.d.ts +0 -16
  107. package/dist/src/application/factories/auth-service.factory.d.ts +0 -5
  108. package/dist/src/application/factories/auth-service.factory.js +0 -51
  109. package/dist/src/application/use-cases/register-user.use-case.d.ts +0 -10
  110. package/dist/src/domain/errors/auth-domain-error.d.ts +0 -82
  111. package/dist/src/domain/errors/auth-domain-error.js +0 -112
  112. package/dist/src/domain/ports/auth/password-policy-config.port.js +0 -10
  113. package/dist/src/domain/ports/config/auth-config.port.d.ts +0 -19
  114. package/dist/src/domain/ports/config/auth-config.port.js +0 -3
  115. package/dist/src/domain/ports/index.d.ts +0 -9
  116. package/dist/src/domain/ports/index.js +0 -25
  117. package/dist/src/domain/ports/jwt/factory/signature-strategy-factory.port.d.ts +0 -14
  118. package/dist/src/domain/ports/jwt/signature-strategy-factory.port.d.ts +0 -14
  119. package/dist/src/domain/ports/jwt/signature-strategy.d.ts +0 -30
  120. package/dist/src/domain/ports/jwt/signature-strategy.js +0 -4
  121. package/dist/src/domain/ports/jwt/signature-strategy.port.d.ts +0 -31
  122. package/dist/src/domain/ports/jwt/signature-strategy.port.js +0 -4
  123. package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.d.ts +0 -31
  124. package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.js +0 -4
  125. package/dist/src/domain/props/create-payload-props.port.d.ts +0 -0
  126. package/dist/src/domain/props/create-payload-props.port.js +0 -8
  127. package/dist/src/domain/props/jwt/create-payload.props.d.ts +0 -9
  128. package/dist/src/domain/props/jwt/generate-token.props.d.ts +0 -10
  129. package/dist/src/domain/props/jwt/generate-token.props.js +0 -2
  130. package/dist/src/domain/props/jwt/index.d.ts +0 -5
  131. package/dist/src/domain/props/jwt/index.js +0 -21
  132. package/dist/src/domain/props/jwt/jwt-subject.d.ts +0 -7
  133. package/dist/src/domain/props/jwt/jwt-subject.js +0 -2
  134. package/dist/src/domain/props/services/generate-access-token.props.d.ts +0 -8
  135. package/dist/src/domain/props/services/generate-refresh-token.props.d.ts +0 -8
  136. package/dist/src/domain/services/token.service.port.d.ts +0 -9
  137. package/dist/src/index.d.ts +0 -78
  138. package/dist/src/index.js +0 -94
  139. package/dist/src/infrastructure/index.d.ts +0 -5
  140. package/dist/src/infrastructure/index.js +0 -21
  141. package/dist/src/infrastructure/jwt/factory/index.d.ts +0 -1
  142. package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.d.ts +0 -21
  143. package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.js +0 -61
  144. package/dist/src/infrastructure/jwt/index.d.ts +0 -3
  145. package/dist/src/infrastructure/jwt/signature-strategy.factory.d.ts +0 -21
  146. package/dist/src/infrastructure/jwt/signature-strategy.factory.js +0 -61
  147. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.d.ts +0 -47
  148. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.js +0 -124
  149. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.d.ts +0 -47
  150. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.js +0 -124
  151. package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.d.ts +0 -54
  152. package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.js +0 -129
  153. package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.d.ts +0 -54
  154. package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.js +0 -129
  155. package/dist/src/infrastructure/jwt/strategies/index.d.ts +0 -3
  156. package/dist/src/infrastructure/jwt/strategies/index.js +0 -19
  157. package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.d.ts +0 -47
  158. package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.js +0 -124
  159. package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.d.ts +0 -47
  160. package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.js +0 -124
  161. package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.d.ts +0 -57
  162. package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.js +0 -123
  163. package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.d.ts +0 -59
  164. package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.js +0 -100
  165. package/dist/src/infrastructure/jwt/token/index.d.ts +0 -5
  166. package/dist/src/infrastructure/jwt/token/index.js +0 -21
  167. package/dist/src/infrastructure/jwt/token/jwt-signer.d.ts +0 -33
  168. package/dist/src/infrastructure/jwt/token/jwt-signer.js +0 -46
  169. package/dist/src/infrastructure/jwt/token/jwt-token-parser.d.ts +0 -29
  170. package/dist/src/infrastructure/jwt/token/jwt-token-parser.js +0 -57
  171. package/dist/src/infrastructure/jwt/token/jwt-token-validator.d.ts +0 -32
  172. package/dist/src/infrastructure/jwt/token/jwt-token-validator.js +0 -77
  173. package/dist/src/infrastructure/jwt/token/tools/jwt-signer.d.ts +0 -33
  174. package/dist/src/infrastructure/jwt/token/tools/jwt-signer.js +0 -46
  175. package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.d.ts +0 -30
  176. package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.js +0 -57
  177. package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.d.ts +0 -32
  178. package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.js +0 -77
  179. package/dist/src/infrastructure/repositories/index.d.ts +0 -1
  180. package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.d.ts +0 -67
  181. package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.js +0 -128
  182. package/dist/src/infrastructure/services/default-token-session.service.d.ts +0 -18
  183. package/dist/src/infrastructure/services/jwt-token.service.d.ts +0 -15
  184. package/dist/src/infrastructure/services/jwt-token.service.js +0 -44
  185. package/dist/src/infrastructure/services/simple-jwt-token.service.d.ts +0 -15
  186. package/dist/src/infrastructure/services/simple-jwt-token.service.js +0 -46
  187. package/dist/src/infrastructure/services/token-session.service.d.ts +0 -24
  188. package/dist/src/infrastructure/services/token-session.service.js +0 -131
  189. package/dist/src/infrastructure/types/auth-service-container.d.ts +0 -14
  190. package/dist/src/shared/constants/index.d.ts +0 -1
  191. package/dist/src/shared/constants/jwt-algorithms.d.ts +0 -17
  192. package/dist/src/shared/constants/jwt-algorithms.js +0 -23
  193. package/dist/src/shared/encoders/base64-url-encoder.d.ts +0 -29
  194. package/dist/src/shared/encoders/base64-url-encoder.js +0 -45
  195. package/dist/src/shared/encoders/index.d.ts +0 -1
  196. package/dist/src/shared/encoders/index.js +0 -17
  197. package/dist/src/shared/index.d.ts +0 -4
  198. package/dist/src/shared/index.js +0 -20
  199. package/dist/src/shared/types/index.d.ts +0 -1
  200. package/dist/src/shared/types/jwt.d.ts +0 -25
  201. package/dist/src/shared/types/jwt.js +0 -2
  202. package/dist/src/shared/types/jwt.types.d.ts +0 -39
  203. package/dist/src/shared/types/jwt.types.js +0 -2
  204. package/dist/tests/application/factory/auth-service-factory.spec.d.ts +0 -1
  205. package/dist/tests/application/factory/auth-service-factory.spec.js +0 -97
  206. package/dist/tests/application/use-cases/login-with-password.integration.spec.d.ts +0 -1
  207. package/dist/tests/application/use-cases/login-with-password.integration.spec.js +0 -140
  208. package/dist/tests/application/use-cases/logout-use-case.spec.d.ts +0 -1
  209. package/dist/tests/application/use-cases/logout-use-case.spec.js +0 -40
  210. package/dist/tests/application/use-cases/refresh-token-use-case.spec.d.ts +0 -1
  211. package/dist/tests/application/use-cases/refresh-token-use-case.spec.js +0 -116
  212. package/dist/tests/application/use-cases/register-user.usecase.spec.d.ts +0 -1
  213. package/dist/tests/application/use-cases/register-user.usecase.spec.js +0 -151
  214. package/dist/tests/domain/entities/credential.spec.d.ts +0 -1
  215. package/dist/tests/domain/entities/credential.spec.js +0 -93
  216. package/dist/tests/domain/entities/user.spec.d.ts +0 -1
  217. package/dist/tests/domain/entities/user.spec.js +0 -93
  218. package/dist/tests/domain/object-values/email.spec.d.ts +0 -1
  219. package/dist/tests/domain/object-values/email.spec.js +0 -77
  220. package/dist/tests/domain/object-values/hashed-password.spec.d.ts +0 -1
  221. package/dist/tests/domain/object-values/hashed-password.spec.js +0 -54
  222. package/dist/tests/domain/object-values/id.spec.d.ts +0 -1
  223. package/dist/tests/domain/object-values/id.spec.js +0 -48
  224. package/dist/tests/domain/object-values/permission.spec.d.ts +0 -1
  225. package/dist/tests/domain/object-values/permission.spec.js +0 -75
  226. package/dist/tests/domain/object-values/role.spec.d.ts +0 -1
  227. package/dist/tests/domain/object-values/role.spec.js +0 -139
  228. package/dist/tests/domain/services/default-password-policy.spec.d.ts +0 -1
  229. package/dist/tests/domain/services/default-password-policy.spec.js +0 -69
  230. package/dist/tests/doman/entities/credential.spec.d.ts +0 -1
  231. package/dist/tests/doman/entities/credential.spec.js +0 -93
  232. package/dist/tests/doman/entities/user.spec.d.ts +0 -1
  233. package/dist/tests/doman/entities/user.spec.js +0 -93
  234. package/dist/tests/doman/object-values/email.spec.d.ts +0 -1
  235. package/dist/tests/doman/object-values/email.spec.js +0 -77
  236. package/dist/tests/doman/object-values/hashed-password.spec.d.ts +0 -1
  237. package/dist/tests/doman/object-values/hashed-password.spec.js +0 -54
  238. package/dist/tests/doman/object-values/id.spec.d.ts +0 -1
  239. package/dist/tests/doman/object-values/id.spec.js +0 -48
  240. package/dist/tests/doman/object-values/permission.spec.d.ts +0 -1
  241. package/dist/tests/doman/object-values/permission.spec.js +0 -75
  242. package/dist/tests/doman/object-values/role.spec.d.ts +0 -1
  243. package/dist/tests/doman/object-values/role.spec.js +0 -139
  244. package/dist/tests/helpers/make-jwt-subject.d.ts +0 -7
  245. package/dist/tests/helpers/make-jwt-subject.js +0 -16
  246. package/dist/tests/helpers/make-jwt-user.d.ts +0 -7
  247. package/dist/tests/helpers/make-jwt-user.js +0 -16
  248. package/dist/tests/helpers/make-user.d.ts +0 -2
  249. package/dist/tests/helpers/make-user.js +0 -15
  250. package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.d.ts +0 -1
  251. package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.js +0 -127
  252. package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.d.ts +0 -1
  253. package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.js +0 -157
  254. package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.d.ts +0 -1
  255. package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.js +0 -150
  256. package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.d.ts +0 -1
  257. package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.js +0 -156
  258. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.d.ts +0 -1
  259. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.js +0 -179
  260. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.d.ts +0 -1
  261. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.js +0 -142
  262. package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.d.ts +0 -1
  263. package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.js +0 -125
  264. package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.d.ts +0 -1
  265. package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.js +0 -116
  266. package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.d.ts +0 -1
  267. package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.js +0 -88
  268. package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.d.ts +0 -1
  269. package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.js +0 -126
  270. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.d.ts +0 -1
  271. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.js +0 -116
  272. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.d.ts +0 -1
  273. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.js +0 -88
  274. package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.d.ts +0 -1
  275. package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.js +0 -37
  276. package/dist/tests/infrastructure/services/jwt-token-service.spec.d.ts +0 -1
  277. package/dist/tests/infrastructure/services/jwt-token-service.spec.js +0 -145
  278. package/dist/tests/infrastructure/services/token-session.service.spec.d.ts +0 -1
  279. package/dist/tests/infrastructure/services/token-session.service.spec.js +0 -269
  280. package/dist/tests/shared/constants/jwt-algorithms.spec.d.ts +0 -1
  281. package/dist/tests/shared/constants/jwt-algorithms.spec.js +0 -27
  282. package/dist/tests/shared/encoders/base64-url-encoder.spec.d.ts +0 -1
  283. package/dist/tests/shared/encoders/base64-url-encoder.spec.js +0 -70
  284. package/dist/tests/shared/utils/time-parser.spec.d.ts +0 -1
  285. package/dist/tests/shared/utils/time-parser.spec.js +0 -80
  286. package/dist/utils/index.d.ts +0 -1
  287. package/dist/utils/index.js +0 -17
  288. package/dist/utils/time-parser.d.ts +0 -28
  289. package/dist/utils/time-parser.js +0 -76
  290. /package/dist/{src/application/dtos/login.dto.js → application/dtos/request/login.request.js} +0 -0
  291. /package/dist/{src/application/dtos/logout.dto.js → application/dtos/request/logout.request.js} +0 -0
  292. /package/dist/{src/application/dtos/refresh-token.dto.js → application/dtos/request/refresh-token.request.js} +0 -0
  293. /package/dist/{src/application/dtos/register-user.dto.js → application/dtos/request/register-user.request.js} +0 -0
  294. /package/dist/{src/domain/ports/auth/password-hasher.js → application/dtos/response/login.response.js} +0 -0
  295. /package/dist/{src/domain/ports/auth/password-policy.port.js → application/dtos/response/logout.response.js} +0 -0
  296. /package/dist/{src/domain/ports/jwt/factory/signature-strategy-factory.port.js → application/dtos/response/refresh-token.response.js} +0 -0
  297. /package/dist/{src/domain/ports/jwt/payload/jwt-payload.port.js → application/dtos/response/register-user.response.js} +0 -0
  298. /package/dist/{src/domain/ports/jwt/signature-strategy-factory.port.js → application/dtos/type/user-role.type.js} +0 -0
  299. /package/dist/{src/application → application}/factories/index.d.ts +0 -0
  300. /package/dist/{src/application → application}/factories/index.js +0 -0
  301. /package/dist/{src/domain/ports/repository/credential.repository.js → application/types/auth-service-factory-options.type.js} +0 -0
  302. /package/dist/{src/application → application}/use-cases/index.d.ts +0 -0
  303. /package/dist/{src/application → application}/use-cases/index.js +0 -0
  304. /package/dist/{src/domain → domain}/entities/credential.entity.d.ts +0 -0
  305. /package/dist/{src/domain → domain}/entities/credential.entity.js +0 -0
  306. /package/dist/{src/domain → domain}/entities/index.d.ts +0 -0
  307. /package/dist/{src/domain → domain}/entities/index.js +0 -0
  308. /package/dist/{src/domain → domain}/entities/user.entity.d.ts +0 -0
  309. /package/dist/{src/domain → domain}/entities/user.entity.js +0 -0
  310. /package/dist/{src/domain → domain}/errors/identity.errors.d.ts +0 -0
  311. /package/dist/{src/domain → domain}/errors/identity.errors.js +0 -0
  312. /package/dist/{src/domain → domain}/errors/index.d.ts +0 -0
  313. /package/dist/{src/domain → domain}/errors/index.js +0 -0
  314. /package/dist/{src/domain → domain}/object-values/email.d.ts +0 -0
  315. /package/dist/{src/domain → domain}/object-values/email.js +0 -0
  316. /package/dist/{src/domain → domain}/object-values/hashed-password.d.ts +0 -0
  317. /package/dist/{src/domain → domain}/object-values/hashed-password.js +0 -0
  318. /package/dist/{src/domain → domain}/object-values/id.d.ts +0 -0
  319. /package/dist/{src/domain → domain}/object-values/id.js +0 -0
  320. /package/dist/{src/domain → domain}/object-values/index.d.ts +0 -0
  321. /package/dist/{src/domain → domain}/object-values/index.js +0 -0
  322. /package/dist/{src/domain → domain}/object-values/permission.d.ts +0 -0
  323. /package/dist/{src/domain → domain}/object-values/permission.js +0 -0
  324. /package/dist/{src/domain → domain}/object-values/role.d.ts +0 -0
  325. /package/dist/{src/domain → domain}/object-values/role.js +0 -0
  326. /package/dist/{src/domain/ports/repository/user.repository.js → domain/ports/auth/password-hasher.port.js} +0 -0
  327. /package/dist/{src/domain/ports/token/token-session.port.js → domain/ports/auth/password-policy.port.js} +0 -0
  328. /package/dist/{src/domain → domain}/ports/jwt/payload/jwt-payload.port.d.ts +0 -0
  329. /package/dist/{src/domain/ports/token/token.service.port.js → domain/ports/jwt/payload/jwt-payload.port.js} +0 -0
  330. /package/dist/{src/domain/props/entities/credential.props.js → domain/ports/repository/credential.repository.js} +0 -0
  331. /package/dist/{src/domain/props/entities/user.props.js → domain/ports/repository/user-repository.port.js} +0 -0
  332. /package/dist/{src/domain/props/jwt/create-payload.props.js → domain/ports/token/token-session.port.js} +0 -0
  333. /package/dist/{src/domain/services → domain/ports/token}/token.service.port.js +0 -0
  334. /package/dist/{src/domain → domain}/props/entities/credential.props.d.ts +0 -0
  335. /package/dist/{src/domain/props/jwt/generate-access-token.props.js → domain/props/entities/credential.props.js} +0 -0
  336. /package/dist/{src/domain → domain}/props/entities/index.d.ts +0 -0
  337. /package/dist/{src/domain → domain}/props/entities/index.js +0 -0
  338. /package/dist/{src/domain → domain}/props/entities/user.props.d.ts +0 -0
  339. /package/dist/{src/domain/props/jwt/generate-refresh-token.props.js → domain/props/entities/user.props.js} +0 -0
  340. /package/dist/{src/domain → domain}/props/index.d.ts +0 -0
  341. /package/dist/{src/domain → domain}/props/index.js +0 -0
  342. /package/dist/{src/domain/props/services → domain/props/jwt}/generate-access-token.props.js +0 -0
  343. /package/dist/{src/domain/props/services → domain/props/jwt}/generate-refresh-token.props.js +0 -0
  344. /package/dist/{src/domain → domain}/props/jwt/jwt-user.d.ts +0 -0
  345. /package/dist/{src/domain → domain}/props/jwt/jwt-user.js +0 -0
  346. /package/dist/{src/domain → domain}/services/index.d.ts +0 -0
  347. /package/dist/{src/domain → domain}/services/index.js +0 -0
  348. /package/dist/{src/domain → domain}/services/password-policy.service.js +0 -0
  349. /package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.js +0 -0
  350. /package/dist/{src/infrastructure/repositories/test → in-memory}/index.d.ts +0 -0
  351. /package/dist/{src/infrastructure/repositories/test → in-memory}/index.js +0 -0
  352. /package/dist/{src/domain/ports/auth/password-policy-config.port.d.ts → infrastructure/index.d.ts} +0 -0
  353. /package/dist/{src/infrastructure → infrastructure}/security/index.d.ts +0 -0
  354. /package/dist/{src/infrastructure → infrastructure}/security/index.js +0 -0
  355. /package/dist/{src/infrastructure → infrastructure}/types/auth-service-container.js +0 -0
  356. /package/dist/{src/infrastructure → infrastructure}/types/index.d.ts +0 -0
  357. /package/dist/{src/infrastructure → infrastructure}/types/index.js +0 -0
  358. /package/dist/{src/shared → shared}/utils/index.d.ts +0 -0
  359. /package/dist/{src/shared → shared}/utils/index.js +0 -0
  360. /package/dist/{src/shared → shared}/utils/time-parser.d.ts +0 -0
  361. /package/dist/{src/shared → shared}/utils/time-parser.js +0 -0
@@ -1,57 +0,0 @@
1
- import { JwtSigner } from "..";
2
- import { IGenerateAccessTokenProps, IGenerateRefreshTokenProps } from "../../../../domain/props";
3
- import { Base64UrlEncoder } from "../../../../shared";
4
- /**
5
- *Crea tokens JWT válidos (tanto de acceso como de refresco)
6
- *a partir de un usuario y una configuración.
7
- */
8
- export declare class JwtTokenGenerator {
9
- private readonly encoder;
10
- private readonly signer;
11
- /**
12
- * Crea una nueva instancia de JwtTokenGenerator
13
- * @param encoder El codificador Base64 URL-safe a usar
14
- * @param signer El firmador JWT a usar
15
- */
16
- constructor(encoder: Base64UrlEncoder, signer: JwtSigner);
17
- /**
18
- * Genera un access token con accessTokenSecret
19
- * @param props Las propiedades necesarias para generar el access token
20
- * @returns El token JWT generado como string
21
- */
22
- generateAccessToken(props: IGenerateAccessTokenProps): string;
23
- /**
24
- * Genera un access token con refreshTokenSecret
25
- * @param props Las propiedades necesarias para generar el refresh token
26
- * @returns El token JWT generado como string
27
- */
28
- generateRefreshToken(props: IGenerateRefreshTokenProps): string;
29
- /**
30
- * Genera un token JWT completo (header.payload.signature)
31
- * @param user El usuario para quien se genera el token
32
- * @param props Las propiedades necesarias para generar el token
33
- * @returns El token JWT generado como string
34
- */
35
- private generateToken;
36
- /**
37
- * Crea el payload del token JWT
38
- * @param props Las propiedades necesarias para crear el payload
39
- * @returns El payload del token JWT como objeto
40
- */
41
- private createPayload;
42
- /**
43
- * Define la cabecera del token JWT
44
- * @param config La configuración del servicio JWT
45
- * @returns El header del token JWT como objeto
46
- */
47
- private createHeader;
48
- /**
49
- * Codifica el header y el payload en Base64URL.
50
- * Luego genera la firma y ensambla el token completo.
51
- * @param header El header del token JWT
52
- * @param payload El payload del token JWT
53
- * @param secret La clave secreta para firmar el token
54
- * @returns El token JWT completo como string
55
- */
56
- private assembleToken;
57
- }
@@ -1,123 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtTokenGenerator = void 0;
4
- const shared_1 = require("../../../../shared");
5
- /**
6
- *Crea tokens JWT válidos (tanto de acceso como de refresco)
7
- *a partir de un usuario y una configuración.
8
- */
9
- class JwtTokenGenerator {
10
- /**
11
- * Crea una nueva instancia de JwtTokenGenerator
12
- * @param encoder El codificador Base64 URL-safe a usar
13
- * @param signer El firmador JWT a usar
14
- */
15
- constructor(
16
- // Base64UrlEncoder → codifica texto (header y payload) al formato Base64URL, estándar de JWT.
17
- encoder,
18
- // JwtSigner → genera la firma criptográfica (signature) con el secreto correspondiente
19
- signer // // Algoritmo de firma a usar (HS256, RS256, ES256, etc.) // private readonly algorithm: AnyAlgorithm
20
- ) {
21
- this.encoder = encoder;
22
- this.signer = signer;
23
- }
24
- /**
25
- * Genera un access token con accessTokenSecret
26
- * @param props Las propiedades necesarias para generar el access token
27
- * @returns El token JWT generado como string
28
- */
29
- generateAccessToken(props) {
30
- return this.generateToken({
31
- user: props.user,
32
- expiresIn: props.expiresIn,
33
- defaultExpirationMs: props.config.accessTokenExpirationMs,
34
- secret: props.config.accessTokenSecret,
35
- config: props.config,
36
- customClaims: props.customClaims,
37
- });
38
- }
39
- /**
40
- * Genera un access token con refreshTokenSecret
41
- * @param props Las propiedades necesarias para generar el refresh token
42
- * @returns El token JWT generado como string
43
- */
44
- generateRefreshToken(props) {
45
- return this.generateToken({
46
- user: props.user,
47
- expiresIn: props.expiresIn,
48
- defaultExpirationMs: props.config.refreshTokenExpirationMs,
49
- secret: props.config.refreshTokenSecret,
50
- config: props.config,
51
- customClaims: props.customClaims,
52
- });
53
- }
54
- /**
55
- * Genera un token JWT completo (header.payload.signature)
56
- * @param user El usuario para quien se genera el token
57
- * @param props Las propiedades necesarias para generar el token
58
- * @returns El token JWT generado como string
59
- */
60
- generateToken(props) {
61
- const { secret, config } = props;
62
- // Crea el payload (datos que lleva el token).
63
- const payload = this.createPayload(props);
64
- // Crea el header (metadatos sobre el algoritmo).
65
- const header = this.createHeader(config);
66
- // une todo y lo firma.
67
- return this.assembleToken(header, payload, secret, props.config.algorithm);
68
- }
69
- /**
70
- * Crea el payload del token JWT
71
- * @param props Las propiedades necesarias para crear el payload
72
- * @returns El payload del token JWT como objeto
73
- */
74
- createPayload(props) {
75
- const { user, expiresIn, defaultExpirationMs, customClaims } = props;
76
- // Calcula el tiempo de expiración (exp) en milisegundos.
77
- // Convierte el valor expiresIn (ej. "15m" o "1h") usando
78
- // Si no se especifica, usa el valor por defecto del config
79
- const expirationMs = expiresIn
80
- ? shared_1.TimeParser.parseToMilliseconds(expiresIn)
81
- : defaultExpirationMs;
82
- const now = Date.now();
83
- const exp = now + expirationMs;
84
- // Luego construye el payload
85
- return {
86
- sub: user.id,
87
- roles: user.roles.map((r) => r),
88
- customClaims: customClaims || {},
89
- jti: crypto.randomUUID(), // ID único del token
90
- iat: Math.floor(now / 1000),
91
- exp: Math.floor(exp / 1000),
92
- iss: props.config.issuer,
93
- aud: props.config.audience,
94
- };
95
- }
96
- /**
97
- * Define la cabecera del token JWT
98
- * @param config La configuración del servicio JWT
99
- * @returns El header del token JWT como objeto
100
- */
101
- createHeader(config) {
102
- return {
103
- alg: config.algorithm,
104
- typ: "JWT",
105
- };
106
- }
107
- /**
108
- * Codifica el header y el payload en Base64URL.
109
- * Luego genera la firma y ensambla el token completo.
110
- * @param header El header del token JWT
111
- * @param payload El payload del token JWT
112
- * @param secret La clave secreta para firmar el token
113
- * @returns El token JWT completo como string
114
- */
115
- assembleToken(header, payload, secret, algorithm) {
116
- const encodedHeader = this.encoder.encode(JSON.stringify(header));
117
- const encodedPayload = this.encoder.encode(JSON.stringify(payload));
118
- // Une las tres partes
119
- const signature = this.signer.sign(`${encodedHeader}.${encodedPayload}`, secret, algorithm);
120
- return `${encodedHeader}.${encodedPayload}.${signature}`;
121
- }
122
- }
123
- exports.JwtTokenGenerator = JwtTokenGenerator;
@@ -1,59 +0,0 @@
1
- import { JwtSigner, JwtTokenParser } from "..";
2
- import { IJWTPayload } from "../../../../domain/ports";
3
- import { AnyAlgorithm, JwtTokenServiceConfig } from "../../../../shared";
4
- /**
5
- *Esta clase es el verificador de tokens JWT dentro de una arquitectura limpia
6
- *Su papel es comprobar la validez y vigencia de un token (tanto access como refresh),
7
- *sin depender de frameworks externos directamente.
8
- */
9
- export declare class JwtTokenVerifier {
10
- private readonly signer;
11
- private readonly parser;
12
- private readonly algorithm;
13
- /**
14
- * Crea una nueva instancia de JwtTokenVerifier
15
- * @param signer firma y verifica la firma de un token JWT
16
- * @param parser separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
17
- */
18
- constructor(signer: JwtSigner, parser: JwtTokenParser, algorithm: AnyAlgorithm);
19
- /**
20
- *Verifica un token de acceso usando la clave accessTokenSecret definida en JwtTokenServiceConfig.
21
- *Devuelve un objeto TokenPayload con los datos del usuario.
22
- * @param token El token JWT completo como string
23
- * @param config La configuración del servicio JWT
24
- * @returns Un objeto TokenPayload con los datos del usuario
25
- */
26
- verifyAccessToken(token: string, config: JwtTokenServiceConfig): IJWTPayload;
27
- /**
28
- *Verifica un token de acceso usando la clave refreshTokenSecret definida en JwtTokenServiceConfig.
29
- *Devuelve un objeto TokenPayload con los datos del usuario.
30
- * @param token El token JWT completo como string
31
- * @param config La configuración del servicio JWT
32
- * @returns Un objeto TokenPayload con los datos del usuario
33
- */
34
- verifyRefreshToken(token: string, config: JwtTokenServiceConfig): IJWTPayload;
35
- /**
36
- * Extrae la parte payload del token y devuelve la fecha de expiración (exp) como un objeto Date.
37
- * No valida la firma ni la validez temporal.
38
- * @param token El token JWT completo como string
39
- * @returns La fecha de expiración del token como objeto Date
40
- */
41
- getTokenExpiration(token: string): Date;
42
- /**
43
- * Verifica el token JWT completo:
44
- * - Extrae las partes usando JwtTokenParser
45
- * - Verifica la firma con JwtSigner
46
- * - Valida la expiración del token
47
- * - Devuelve un TokenPayload limpio
48
- * @param token El token JWT completo como string
49
- * @param secret La clave secreta para verificar la firma
50
- * @returns Un objeto TokenPayload con los datos del usuario
51
- */
52
- private verifyToken;
53
- /**
54
- * Valida si el token ha expirado basándose en el campo 'exp' del payload.
55
- * @param payload El payload decodificado del token JWT
56
- * @throws TokenExpiredError si el token ha expirado
57
- */
58
- private validateExpiration;
59
- }
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtTokenVerifier = void 0;
4
- const errors_1 = require("../../../../domain/errors");
5
- /**
6
- *Esta clase es el verificador de tokens JWT dentro de una arquitectura limpia
7
- *Su papel es comprobar la validez y vigencia de un token (tanto access como refresh),
8
- *sin depender de frameworks externos directamente.
9
- */
10
- class JwtTokenVerifier {
11
- /**
12
- * Crea una nueva instancia de JwtTokenVerifier
13
- * @param signer firma y verifica la firma de un token JWT
14
- * @param parser separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
15
- */
16
- constructor(
17
- // Se encarga de firmar y verificar firmas digitales usando el secreto correspondiente.
18
- signer,
19
- // Separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
20
- parser,
21
- // Algoritmo de firma a usar (HS256, RS256, ES256, etc.)
22
- algorithm) {
23
- this.signer = signer;
24
- this.parser = parser;
25
- this.algorithm = algorithm;
26
- }
27
- /**
28
- *Verifica un token de acceso usando la clave accessTokenSecret definida en JwtTokenServiceConfig.
29
- *Devuelve un objeto TokenPayload con los datos del usuario.
30
- * @param token El token JWT completo como string
31
- * @param config La configuración del servicio JWT
32
- * @returns Un objeto TokenPayload con los datos del usuario
33
- */
34
- verifyAccessToken(token, config) {
35
- return this.verifyToken(token, config.accessTokenSecret);
36
- }
37
- /**
38
- *Verifica un token de acceso usando la clave refreshTokenSecret definida en JwtTokenServiceConfig.
39
- *Devuelve un objeto TokenPayload con los datos del usuario.
40
- * @param token El token JWT completo como string
41
- * @param config La configuración del servicio JWT
42
- * @returns Un objeto TokenPayload con los datos del usuario
43
- */
44
- verifyRefreshToken(token, config) {
45
- return this.verifyToken(token, config.refreshTokenSecret);
46
- }
47
- /**
48
- * Extrae la parte payload del token y devuelve la fecha de expiración (exp) como un objeto Date.
49
- * No valida la firma ni la validez temporal.
50
- * @param token El token JWT completo como string
51
- * @returns La fecha de expiración del token como objeto Date
52
- */
53
- getTokenExpiration(token) {
54
- const payload = this.parser.parsePayload(token);
55
- return new Date(payload.exp * 1000);
56
- }
57
- /**
58
- * Verifica el token JWT completo:
59
- * - Extrae las partes usando JwtTokenParser
60
- * - Verifica la firma con JwtSigner
61
- * - Valida la expiración del token
62
- * - Devuelve un TokenPayload limpio
63
- * @param token El token JWT completo como string
64
- * @param secret La clave secreta para verificar la firma
65
- * @returns Un objeto TokenPayload con los datos del usuario
66
- */
67
- verifyToken(token, secret) {
68
- // Divide el token en sus tres partes
69
- const [headerPart, payloadPart, signaturePart] = this.parser.extractParts(token);
70
- // Verifica la firma con el JwtSigner: Si la firma no coincide, lanza un InvalidSignatureError.
71
- if (!this.signer.verifySignature(`${headerPart}.${payloadPart}`, signaturePart, secret, this.algorithm)) {
72
- throw new errors_1.InvalidSignatureError("Invalid token signature");
73
- }
74
- // Verifica el tiempo de expiración del token.
75
- const payload = this.parser.parseAndValidatePayload(payloadPart);
76
- this.validateExpiration(payload);
77
- // Devuelve un TokenPayload limpio
78
- return {
79
- sub: payload.sub,
80
- roles: payload.roles,
81
- customClaims: payload.customClaims || {},
82
- iat: payload.iat,
83
- exp: payload.exp,
84
- jti: payload.jti,
85
- iss: payload.iss,
86
- aud: payload.aud,
87
- };
88
- }
89
- /**
90
- * Valida si el token ha expirado basándose en el campo 'exp' del payload.
91
- * @param payload El payload decodificado del token JWT
92
- * @throws TokenExpiredError si el token ha expirado
93
- */
94
- validateExpiration(payload) {
95
- if (payload.exp && Date.now() >= payload.exp * 1000) {
96
- throw new errors_1.TokenExpiredError("Token expired");
97
- }
98
- }
99
- }
100
- exports.JwtTokenVerifier = JwtTokenVerifier;
@@ -1,5 +0,0 @@
1
- export * from "./actions/jwt-token-generator";
2
- export * from "./actions/jwt-token-verifier";
3
- export * from "./tools/jwt-signer";
4
- export * from "./tools/jwt-token-parser";
5
- export * from "./tools/jwt-token-validator";
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./actions/jwt-token-generator"), exports);
18
- __exportStar(require("./actions/jwt-token-verifier"), exports);
19
- __exportStar(require("./tools/jwt-signer"), exports);
20
- __exportStar(require("./tools/jwt-token-parser"), exports);
21
- __exportStar(require("./tools/jwt-token-validator"), exports);
@@ -1,33 +0,0 @@
1
- import { AnyAlgorithm, Base64UrlEncoder } from "../../../shared";
2
- /**
3
- *Firma y verifica la firma de un token JWT
4
- *convierte el texto del token en algo criptográficamente confiable, usando el algoritmo configurado
5
- */
6
- export declare class JwtSigner {
7
- /**
8
- * La fábrica de estrategias de firma
9
- */
10
- private readonly factory;
11
- /**
12
- * Crea una nueva instancia de JwtSigner
13
- * @param encoder El codificador Base64 URL-safe a usar
14
- */
15
- constructor(encoder: Base64UrlEncoder);
16
- /**
17
- *Pide a la fábrica una estrategia de firma compatible con el algoritmo
18
- * @param data Los datos a firmar (normalmente "header.payload")
19
- * @param key La clave para firmar (secreta para HMAC, privada para RSA/ECDSA)
20
- * @param algorithm El algoritmo de firma (por defecto 'HS256')
21
- * @returns La firma digital como string codificado
22
- */
23
- sign(data: string, key: string, algorithm?: AnyAlgorithm): string;
24
- /**
25
- * Verifica si la firma proporcionada coincide con la que se generaría al firmar data con la misma clave
26
- * @param data Los datos a firmar (normalmente "header.payload")
27
- * @param signature La firma digital a verificar
28
- * @param key La clave para verificar (secreta para HMAC, pública para RSA/ECDSA)
29
- * @param algorithm El algoritmo de firma (por defecto 'HS256')
30
- * @returns true si la firma es válida, false si no lo es
31
- */
32
- verifySignature(data: string, signature: string, key: string, algorithm?: AnyAlgorithm): boolean;
33
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtSigner = void 0;
4
- const factory_1 = require("../factory");
5
- /**
6
- *Firma y verifica la firma de un token JWT
7
- *convierte el texto del token en algo criptográficamente confiable, usando el algoritmo configurado
8
- */
9
- class JwtSigner {
10
- /**
11
- * Crea una nueva instancia de JwtSigner
12
- * @param encoder El codificador Base64 URL-safe a usar
13
- */
14
- constructor(encoder) {
15
- // Usa una fábrica de estrategias de firma (SignatureStrategyFactory) para decidir cómo firmar o verificar
16
- // La fábrica entrega una implementación distinta según el algoritmo
17
- // El Base64UrlEncoder se usa internamente para codificar los resultados de la firma en formato JWT-seguro
18
- this.factory = new factory_1.SignatureStrategyFactory(encoder);
19
- }
20
- /**
21
- *Pide a la fábrica una estrategia de firma compatible con el algoritmo
22
- * @param data Los datos a firmar (normalmente "header.payload")
23
- * @param key La clave para firmar (secreta para HMAC, privada para RSA/ECDSA)
24
- * @param algorithm El algoritmo de firma (por defecto 'HS256')
25
- * @returns La firma digital como string codificado
26
- */
27
- sign(data, key, algorithm = "HS256") {
28
- // Firma el data (normalmente "header.payload") con la key usando esa estrategia
29
- const strategy = this.factory.create(algorithm);
30
- // Devuelve una cadena Base64URL que representa la firma digital del token.
31
- return strategy.sign(data, key);
32
- }
33
- /**
34
- * Verifica si la firma proporcionada coincide con la que se generaría al firmar data con la misma clave
35
- * @param data Los datos a firmar (normalmente "header.payload")
36
- * @param signature La firma digital a verificar
37
- * @param key La clave para verificar (secreta para HMAC, pública para RSA/ECDSA)
38
- * @param algorithm El algoritmo de firma (por defecto 'HS256')
39
- * @returns true si la firma es válida, false si no lo es
40
- */
41
- verifySignature(data, signature, key, algorithm = "HS256") {
42
- const strategy = this.factory.create(algorithm);
43
- return strategy.verify(data, signature, key);
44
- }
45
- }
46
- exports.JwtSigner = JwtSigner;
@@ -1,29 +0,0 @@
1
- import { Base64UrlEncoder } from "../../../shared";
2
- /**
3
- *Leer y decodificar el contenido de un JWT (sin verificar la firma ni la validez temporal).
4
- *Separa las partes, decodifica el payload, y valida que sea un objeto JSON bien formado.
5
- */
6
- export declare class JwtTokenParser {
7
- private readonly encoder;
8
- /**
9
- * Recibe un Base64UrlEncoder, encargado de decodificar texto en formato Base64URL
10
- * @param encoder El codificador Base64 URL-safe a usar
11
- */
12
- constructor(encoder: Base64UrlEncoder);
13
- extractParts(token: string): [string, string, string];
14
- /**
15
- * Leer el contenido del token (por ejemplo, para obtener exp, userId, etc.).
16
- * No valida la firma ni la validez temporal.
17
- * @param token El token JWT completo como string
18
- * @returns El payload decodificado como objeto
19
- */
20
- parsePayload(token: string): any;
21
- /**
22
- *Una versión más estricta, usada cuando necesitas asegurarte de que el payload es
23
- *válido antes de continuar
24
- * @param payloadPart La parte del payload del token JWT (Base64URL)
25
- * @returns El payload decodificado como objeto
26
- * @throws InvalidTokenFormatError si el payload no es un objeto JSON válido
27
- */
28
- parseAndValidatePayload(payloadPart: string): any;
29
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtTokenParser = void 0;
4
- const domain_1 = require("../../../domain");
5
- /**
6
- *Leer y decodificar el contenido de un JWT (sin verificar la firma ni la validez temporal).
7
- *Separa las partes, decodifica el payload, y valida que sea un objeto JSON bien formado.
8
- */
9
- class JwtTokenParser {
10
- /**
11
- * Recibe un Base64UrlEncoder, encargado de decodificar texto en formato Base64URL
12
- * @param encoder El codificador Base64 URL-safe a usar
13
- */
14
- constructor(encoder) {
15
- this.encoder = encoder;
16
- }
17
- // Divide el token en sus tres partes estándar: header, payload y signature.
18
- extractParts(token) {
19
- const parts = token.split(".");
20
- return [parts[0], parts[1], parts[2]];
21
- }
22
- /**
23
- * Leer el contenido del token (por ejemplo, para obtener exp, userId, etc.).
24
- * No valida la firma ni la validez temporal.
25
- * @param token El token JWT completo como string
26
- * @returns El payload decodificado como objeto
27
- */
28
- parsePayload(token) {
29
- const [, payloadPart] = this.extractParts(token);
30
- return JSON.parse(this.encoder.decode(payloadPart));
31
- }
32
- /**
33
- *Una versión más estricta, usada cuando necesitas asegurarte de que el payload es
34
- *válido antes de continuar
35
- * @param payloadPart La parte del payload del token JWT (Base64URL)
36
- * @returns El payload decodificado como objeto
37
- * @throws InvalidTokenFormatError si el payload no es un objeto JSON válido
38
- */
39
- parseAndValidatePayload(payloadPart) {
40
- let payload;
41
- try {
42
- // Intenta decodificarlo: Si falla, lanza InvalidTokenFormatError
43
- payload = JSON.parse(this.encoder.decode(payloadPart));
44
- }
45
- catch (decodeError) {
46
- throw new domain_1.InvalidTokenFormatError("Invalid token payload encoding");
47
- }
48
- // Verifica que el resultado sea un objeto JSON válido (no null ni array)
49
- if (payload === null ||
50
- typeof payload !== "object" ||
51
- Array.isArray(payload)) {
52
- throw new domain_1.InvalidTokenFormatError("Token payload must be an object");
53
- }
54
- return payload;
55
- }
56
- }
57
- exports.JwtTokenParser = JwtTokenParser;
@@ -1,32 +0,0 @@
1
- /**
2
- *Esta clase es el validador sintáctico del token JWT.
3
- *Su función es detectar tokens mal formados o sospechosos antes de intentar decodificarlos.
4
- */
5
- export declare class JwtTokenValidator {
6
- /**
7
- * Valida que el token JWT tenga un formato básico correcto.
8
- * @param token El token JWT completo como string
9
- * @throws InvalidTokenFormatError si el token no cumple con el formato básico JWT
10
- */
11
- validateTokenInput(token: string): void;
12
- /**
13
- * Comprueba lo más elemental sobre el formato del token JWT.
14
- * @param token El token JWT completo como string
15
- * @throws InvalidTokenFormatError si el token no cumple con los requisitos básicos
16
- */
17
- private validateBasicFormat;
18
- /**
19
- * Se asegura de que tenga una estructura básica JWT:
20
- * - Mínimo 10 caracteres
21
- * - Contener exactamente dos puntos (.) separando header, payload y signature
22
- * @param token El token JWT completo como string
23
- * @throws InvalidTokenFormatError si la estructura no es válida
24
- */
25
- private validateJwtStructure;
26
- /**
27
- * Verifica que el token solo contenga caracteres válidos Base64URL
28
- * @param token El token JWT completo como string
29
- * @throws InvalidTokenFormatError si se encuentran caracteres inválidos
30
- */
31
- private validateCharacters;
32
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtTokenValidator = void 0;
4
- const errors_1 = require("../../../domain/errors");
5
- /**
6
- *Esta clase es el validador sintáctico del token JWT.
7
- *Su función es detectar tokens mal formados o sospechosos antes de intentar decodificarlos.
8
- */
9
- class JwtTokenValidator {
10
- /**
11
- * Valida que el token JWT tenga un formato básico correcto.
12
- * @param token El token JWT completo como string
13
- * @throws InvalidTokenFormatError si el token no cumple con el formato básico JWT
14
- */
15
- validateTokenInput(token) {
16
- this.validateBasicFormat(token);
17
- this.validateJwtStructure(token);
18
- this.validateCharacters(token);
19
- }
20
- /**
21
- * Comprueba lo más elemental sobre el formato del token JWT.
22
- * @param token El token JWT completo como string
23
- * @throws InvalidTokenFormatError si el token no cumple con los requisitos básicos
24
- */
25
- validateBasicFormat(token) {
26
- // Null o undefined
27
- if (token == null) {
28
- throw new errors_1.InvalidTokenFormatError("Token cannot be null or undefined");
29
- }
30
- // Tipo de dato
31
- if (typeof token !== "string") {
32
- throw new errors_1.InvalidTokenFormatError(`Token must be a string, received: ${typeof token}`);
33
- }
34
- // Cadena vacía o con espacios en blanco
35
- if (token.length === 0) {
36
- throw new errors_1.InvalidTokenFormatError("Token cannot be empty");
37
- }
38
- // Solo espacios en blanco o con espacios al inicio/final
39
- if (token.trim().length === 0) {
40
- throw new errors_1.InvalidTokenFormatError("Token cannot be only whitespace");
41
- }
42
- // Espacios al inicio o al final
43
- if (token !== token.trim()) {
44
- throw new errors_1.InvalidTokenFormatError("Token cannot have leading or trailing whitespace");
45
- }
46
- }
47
- /**
48
- * Se asegura de que tenga una estructura básica JWT:
49
- * - Mínimo 10 caracteres
50
- * - Contener exactamente dos puntos (.) separando header, payload y signature
51
- * @param token El token JWT completo como string
52
- * @throws InvalidTokenFormatError si la estructura no es válida
53
- */
54
- validateJwtStructure(token) {
55
- // Mínimo viable: debe tener al menos 10 caracteres para ser un JWT válido
56
- if (token.length < 10) {
57
- throw new errors_1.InvalidTokenFormatError("Token is too short to be a valid JWT");
58
- }
59
- // Debe contener exactamente dos puntos (.) separando header, payload y signature
60
- const dotCount = (token.match(/\./g) || []).length;
61
- if (dotCount !== 2) {
62
- throw new errors_1.InvalidTokenFormatError(`Invalid JWT format: expected 2 dots, found ${dotCount}`);
63
- }
64
- }
65
- /**
66
- * Verifica que el token solo contenga caracteres válidos Base64URL
67
- * @param token El token JWT completo como string
68
- * @throws InvalidTokenFormatError si se encuentran caracteres inválidos
69
- */
70
- validateCharacters(token) {
71
- const base64UrlPattern = /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;
72
- if (!base64UrlPattern.test(token)) {
73
- throw new errors_1.InvalidTokenFormatError("Token contains invalid characters for JWT format");
74
- }
75
- }
76
- }
77
- exports.JwtTokenValidator = JwtTokenValidator;