@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,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) {
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) {
42
- const strategy = this.factory.create(algorithm);
43
- return strategy.verify(data, signature, key);
44
- }
45
- }
46
- exports.JwtSigner = JwtSigner;
@@ -1,30 +0,0 @@
1
- import { IJWTPayload } from "../../../../domain";
2
- import { Base64UrlEncoder } from "../../../../shared";
3
- /**
4
- *Leer y decodificar el contenido de un JWT (sin verificar la firma ni la validez temporal).
5
- *Separa las partes, decodifica el payload, y valida que sea un objeto JSON bien formado.
6
- */
7
- export declare class JwtTokenParser {
8
- private readonly encoder;
9
- /**
10
- * Recibe un Base64UrlEncoder, encargado de decodificar texto en formato Base64URL
11
- * @param encoder El codificador Base64 URL-safe a usar
12
- */
13
- constructor(encoder: Base64UrlEncoder);
14
- extractParts(token: string): [string, string, string];
15
- /**
16
- * Leer el contenido del token (por ejemplo, para obtener exp, userId, etc.).
17
- * No valida la firma ni la validez temporal.
18
- * @param token El token JWT completo como string
19
- * @returns El payload decodificado como objeto
20
- */
21
- parsePayload(token: string): any;
22
- /**
23
- *Una versión más estricta, usada cuando necesitas asegurarte de que el payload es
24
- *válido antes de continuar
25
- * @param payloadPart La parte del payload del token JWT (Base64URL)
26
- * @returns El payload decodificado como objeto
27
- * @throws InvalidTokenFormatError si el payload no es un objeto JSON válido
28
- */
29
- parseAndValidatePayload(payloadPart: string): IJWTPayload;
30
- }
@@ -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;
@@ -1 +0,0 @@
1
- export * from "./test";
@@ -1,67 +0,0 @@
1
- import { ITokenSession, Credential, User } from "../../../domain";
2
- /**
3
- * Implementación de ITokenSession pensada como infraestructura sencilla
4
- * para el ejemplo. En una app real esto sería un adaptador a Redis, BD, etc.
5
- */
6
- export declare class InMemoryTokenSessionRepository implements ITokenSession {
7
- /**
8
- * Store principal de sesiones activas indexadas por refreshToken.
9
- * Guardamos tanto la Credential como el User para poder cumplir con
10
- * validateSession(accessToken): Promise<User | null>.
11
- */
12
- private readonly sessionsByRefreshToken;
13
- /**
14
- * Índice auxiliar por accessToken para validaciones rápidas.
15
- */
16
- private readonly sessionsByAccessToken;
17
- /**
18
- * TTL del access token en milisegundos.
19
- * (En un sistema real vendría de la config de Auth/JWT).
20
- */
21
- private readonly accessTokenTtlMs;
22
- /**
23
- * TTL del refresh token en milisegundos.
24
- * (Aquí se usa solo de referencia para ejemplo).
25
- */
26
- private readonly refreshTokenTtlMs;
27
- constructor(options?: {
28
- accessTokenTtlMs?: number;
29
- refreshTokenTtlMs?: number;
30
- initialSessions?: {
31
- credential: Credential;
32
- user: User;
33
- }[];
34
- });
35
- /**
36
- * Crea una nueva sesión para el usuario:
37
- * - Genera accessToken y refreshToken aleatorios.
38
- * - Calcula fecha de expiración del accessToken.
39
- * - Crea una Credential y la almacena en memoria.
40
- */
41
- createSession(user: User): Promise<Credential>;
42
- /**
43
- * Refresca una sesión a partir del refreshToken:
44
- * - Verifica que exista una sesión asociada.
45
- * - Genera nuevos tokens y devuelve una nueva Credential.
46
- * - Actualiza los índices in-memory.
47
- */
48
- refreshSession(refreshToken: string): Promise<Credential>;
49
- /**
50
- * Valida una sesión a partir del accessToken:
51
- * - Verifica que exista.
52
- * - Revisa si el accessToken está expirado.
53
- * - Devuelve el User asociado o null si no es válido.
54
- */
55
- validateSession(accessToken: string): Promise<User | null>;
56
- /**
57
- * Revoca una sesión eliminando el refreshToken de la store.
58
- * Si no existe, lanza un error genérico que luego el caso de uso
59
- * puede envolver en LogoutError.
60
- */
61
- revokeSession(refreshToken: string): Promise<void>;
62
- /**
63
- * Helper para generar tokens pseudo-aleatorios.
64
- * En producción usarías JWTs firmados, no simples random strings.
65
- */
66
- private generateToken;
67
- }
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InMemoryTokenSessionRepository = void 0;
4
- // src/infrastructure/repositories/in-memory-token-session.repository.ts
5
- const crypto_1 = require("crypto");
6
- const domain_1 = require("../../../domain");
7
- /**
8
- * Implementación de ITokenSession pensada como infraestructura sencilla
9
- * para el ejemplo. En una app real esto sería un adaptador a Redis, BD, etc.
10
- */
11
- class InMemoryTokenSessionRepository {
12
- constructor(options) {
13
- /**
14
- * Store principal de sesiones activas indexadas por refreshToken.
15
- * Guardamos tanto la Credential como el User para poder cumplir con
16
- * validateSession(accessToken): Promise<User | null>.
17
- */
18
- this.sessionsByRefreshToken = new Map();
19
- /**
20
- * Índice auxiliar por accessToken para validaciones rápidas.
21
- */
22
- this.sessionsByAccessToken = new Map();
23
- this.accessTokenTtlMs = options?.accessTokenTtlMs ?? 15 * 60 * 1000; // 15 minutos
24
- this.refreshTokenTtlMs =
25
- options?.refreshTokenTtlMs ?? 7 * 24 * 60 * 60 * 1000; // 7 días
26
- if (options?.initialSessions) {
27
- for (const record of options.initialSessions) {
28
- this.sessionsByRefreshToken.set(record.credential.refreshToken, record);
29
- this.sessionsByAccessToken.set(record.credential.accessToken, record);
30
- }
31
- }
32
- }
33
- /**
34
- * Crea una nueva sesión para el usuario:
35
- * - Genera accessToken y refreshToken aleatorios.
36
- * - Calcula fecha de expiración del accessToken.
37
- * - Crea una Credential y la almacena en memoria.
38
- */
39
- async createSession(user) {
40
- const now = new Date();
41
- const accessToken = this.generateToken("at");
42
- const refreshToken = this.generateToken("rt");
43
- const expiresAt = new Date(now.getTime() + this.accessTokenTtlMs);
44
- const credential = new domain_1.Credential({
45
- userId: user.id, // ajusta si tu VO de Id se instancia diferente
46
- accessToken,
47
- refreshToken,
48
- expiresAt,
49
- createdAt: now,
50
- });
51
- const record = { credential, user };
52
- this.sessionsByRefreshToken.set(refreshToken, record);
53
- this.sessionsByAccessToken.set(accessToken, record);
54
- return credential;
55
- }
56
- /**
57
- * Refresca una sesión a partir del refreshToken:
58
- * - Verifica que exista una sesión asociada.
59
- * - Genera nuevos tokens y devuelve una nueva Credential.
60
- * - Actualiza los índices in-memory.
61
- */
62
- async refreshSession(refreshToken) {
63
- const record = this.sessionsByRefreshToken.get(refreshToken);
64
- if (!record) {
65
- throw new Error("Refresh token not found");
66
- }
67
- // Eliminamos la sesión anterior
68
- this.sessionsByRefreshToken.delete(record.credential.refreshToken);
69
- this.sessionsByAccessToken.delete(record.credential.accessToken);
70
- // Creamos una nueva sesión para el mismo usuario
71
- const now = new Date();
72
- const newAccessToken = this.generateToken("at");
73
- const newRefreshToken = this.generateToken("rt");
74
- const newExpiresAt = new Date(now.getTime() + this.accessTokenTtlMs);
75
- const newCredential = new domain_1.Credential({
76
- userId: record.user.id,
77
- accessToken: newAccessToken,
78
- refreshToken: newRefreshToken,
79
- expiresAt: newExpiresAt,
80
- createdAt: now,
81
- });
82
- const newRecord = { credential: newCredential, user: record.user };
83
- this.sessionsByRefreshToken.set(newRefreshToken, newRecord);
84
- this.sessionsByAccessToken.set(newAccessToken, newRecord);
85
- return newCredential;
86
- }
87
- /**
88
- * Valida una sesión a partir del accessToken:
89
- * - Verifica que exista.
90
- * - Revisa si el accessToken está expirado.
91
- * - Devuelve el User asociado o null si no es válido.
92
- */
93
- async validateSession(accessToken) {
94
- const record = this.sessionsByAccessToken.get(accessToken);
95
- if (!record) {
96
- return null;
97
- }
98
- const now = Date.now();
99
- if (record.credential.expiresAt.getTime() <= now) {
100
- // Limpieza agresiva de sesión expirada
101
- this.sessionsByAccessToken.delete(record.credential.accessToken);
102
- this.sessionsByRefreshToken.delete(record.credential.refreshToken);
103
- return null;
104
- }
105
- return record.user;
106
- }
107
- /**
108
- * Revoca una sesión eliminando el refreshToken de la store.
109
- * Si no existe, lanza un error genérico que luego el caso de uso
110
- * puede envolver en LogoutError.
111
- */
112
- async revokeSession(refreshToken) {
113
- const record = this.sessionsByRefreshToken.get(refreshToken);
114
- if (!record) {
115
- throw new Error("Refresh token not found or already revoked");
116
- }
117
- this.sessionsByRefreshToken.delete(refreshToken);
118
- this.sessionsByAccessToken.delete(record.credential.accessToken);
119
- }
120
- /**
121
- * Helper para generar tokens pseudo-aleatorios.
122
- * En producción usarías JWTs firmados, no simples random strings.
123
- */
124
- generateToken(prefix) {
125
- return `${prefix}.${(0, crypto_1.randomBytes)(24).toString("hex")}`;
126
- }
127
- }
128
- exports.InMemoryTokenSessionRepository = InMemoryTokenSessionRepository;
@@ -1,18 +0,0 @@
1
- import { Credential, ICredentialRepository, ITokenService, ITokenSession, IUserRepository, User } from "../../domain";
2
- export declare class DefaultTokenSessionService implements ITokenSession {
3
- private readonly tokenService;
4
- private readonly userRepository;
5
- private readonly credentialRepository;
6
- private readonly accessTokenExpiration;
7
- private readonly refreshTokenExpiration;
8
- private readonly accessTokenSecret?;
9
- private readonly refreshTokenSecret?;
10
- private readonly accessMs;
11
- private readonly refreshMs;
12
- constructor(tokenService: ITokenService, userRepository: IUserRepository, credentialRepository: ICredentialRepository, accessTokenExpiration?: string, refreshTokenExpiration?: string, accessTokenSecret?: string | undefined, refreshTokenSecret?: string | undefined);
13
- private buildJwtConfig;
14
- createSession(user: User): Promise<Credential>;
15
- refreshSession(refreshToken: string): Promise<Credential>;
16
- validateSession(accessToken: string): Promise<User | null>;
17
- revokeSession(refreshToken: string): Promise<void>;
18
- }
@@ -1,15 +0,0 @@
1
- import { IGenerateAccessTokenProps, IGenerateRefreshTokenProps, IJWTPayload, ITokenService } from "../../domain";
2
- import { JwtTokenServiceConfig } from "../../shared";
3
- import { JwtTokenGenerator, JwtTokenValidator, JwtTokenVerifier } from "../jwt";
4
- export declare class JwtTokenService implements ITokenService {
5
- private readonly config;
6
- private readonly jwtGenerator;
7
- private readonly jwtVerifier;
8
- private readonly jwtValidator;
9
- constructor(config: JwtTokenServiceConfig, jwtGenerator: JwtTokenGenerator, jwtVerifier: JwtTokenVerifier, jwtValidator: JwtTokenValidator);
10
- generateAccessToken(props: IGenerateAccessTokenProps): Promise<string>;
11
- generateRefreshToken(props: IGenerateRefreshTokenProps): Promise<string>;
12
- verifyAccessToken(token: string): Promise<IJWTPayload>;
13
- verifyRefreshToken(token: string): Promise<IJWTPayload>;
14
- getTokenExpiration(token: string): Promise<Date>;
15
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwtTokenService = void 0;
4
- // Servicio de tokens JWT que implementa ITokenService
5
- class JwtTokenService {
6
- constructor(
7
- // config → secretos, tiempos de expiración y algoritmo.
8
- config,
9
- // jwtGenerator → crea y firma los tokens.
10
- jwtGenerator,
11
- // jwtVerifier → comprueba firmas y expiraciones.
12
- jwtVerifier,
13
- // jwtValidator → revisa formato y estructura
14
- jwtValidator) {
15
- this.config = config;
16
- this.jwtGenerator = jwtGenerator;
17
- this.jwtVerifier = jwtVerifier;
18
- this.jwtValidator = jwtValidator;
19
- }
20
- // Genera un access token
21
- async generateAccessToken(props) {
22
- return this.jwtGenerator.generateAccessToken(props);
23
- }
24
- // Genera un refresh token
25
- async generateRefreshToken(props) {
26
- return this.jwtGenerator.generateRefreshToken(props);
27
- }
28
- // verifica si el token es válido y retorna el payload
29
- async verifyAccessToken(token) {
30
- this.jwtValidator.validateTokenInput(token);
31
- return this.jwtVerifier.verifyAccessToken(token, this.config);
32
- }
33
- // verifica si el refresh token es válido y retorna el payload
34
- async verifyRefreshToken(token) {
35
- this.jwtValidator.validateTokenInput(token);
36
- return this.jwtVerifier.verifyRefreshToken(token, this.config);
37
- }
38
- // Obtiene la fecha de expiración del token
39
- async getTokenExpiration(token) {
40
- this.jwtValidator.validateTokenInput(token);
41
- return this.jwtVerifier.getTokenExpiration(token);
42
- }
43
- }
44
- exports.JwtTokenService = JwtTokenService;
@@ -1,15 +0,0 @@
1
- import { IGenerateAccessTokenProps, IGenerateRefreshTokenProps, IJWTPayload, ITokenService } from "../../domain";
2
- import { JwtTokenServiceConfig } from "../../shared";
3
- import { JwtTokenGenerator, JwtTokenValidator, JwtTokenVerifier } from "../jwt";
4
- export declare class SimpleJwtTokenService implements ITokenService {
5
- private readonly config;
6
- private readonly jwtGenerator;
7
- private readonly jwtVerifier;
8
- private readonly jwtValidator;
9
- constructor(config: JwtTokenServiceConfig, jwtGenerator: JwtTokenGenerator, jwtVerifier: JwtTokenVerifier, jwtValidator: JwtTokenValidator);
10
- generateAccessToken(props: IGenerateAccessTokenProps): Promise<string>;
11
- generateRefreshToken(props: IGenerateRefreshTokenProps): Promise<string>;
12
- verifyAccessToken(token: string): Promise<IJWTPayload>;
13
- verifyRefreshToken(token: string): Promise<IJWTPayload>;
14
- getTokenExpiration(token: string): Promise<Date>;
15
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SimpleJwtTokenService = void 0;
4
- // Fachada principal del sistema de tokens JWT.
5
- // Servicio de alto nivel que orquesta las operaciones de generación, validación y verificación de tokens,
6
- // ocultando los detalles internos de las clases más técnicas (JwtTokenGenerator, JwtTokenVerifier, JwtTokenValidator).
7
- class SimpleJwtTokenService {
8
- constructor(
9
- // config → secretos, tiempos de expiración y algoritmo.
10
- config,
11
- // jwtGenerator → crea y firma los tokens.
12
- jwtGenerator,
13
- // jwtVerifier → comprueba firmas y expiraciones.
14
- jwtVerifier,
15
- // jwtValidator → revisa formato y estructura
16
- jwtValidator) {
17
- this.config = config;
18
- this.jwtGenerator = jwtGenerator;
19
- this.jwtVerifier = jwtVerifier;
20
- this.jwtValidator = jwtValidator;
21
- }
22
- // Genera un access token
23
- async generateAccessToken(props) {
24
- return this.jwtGenerator.generateAccessToken(props);
25
- }
26
- // Genera un refresh token
27
- async generateRefreshToken(props) {
28
- return this.jwtGenerator.generateRefreshToken(props);
29
- }
30
- // verifica si el token es válido y retorna el payload
31
- async verifyAccessToken(token) {
32
- this.jwtValidator.validateTokenInput(token);
33
- return this.jwtVerifier.verifyAccessToken(token, this.config);
34
- }
35
- // verifica si el refresh token es válido y retorna el payload
36
- async verifyRefreshToken(token) {
37
- this.jwtValidator.validateTokenInput(token);
38
- return this.jwtVerifier.verifyRefreshToken(token, this.config);
39
- }
40
- // Obtiene la fecha de expiración del token
41
- async getTokenExpiration(token) {
42
- this.jwtValidator.validateTokenInput(token);
43
- return this.jwtVerifier.getTokenExpiration(token);
44
- }
45
- }
46
- exports.SimpleJwtTokenService = SimpleJwtTokenService;
@@ -1,24 +0,0 @@
1
- import { Credential, ICredentialRepository, ITokenService, ITokenSession, IUserRepository, User } from "../../domain";
2
- import { AnyAlgorithm } from "../../shared";
3
- /**
4
- * Servicio de gestión de sesiones de usuario mediante tokens JWT.
5
- * Proporciona métodos para crear, refrescar, validar y revocar sesiones.
6
- */
7
- export declare class TokenSessionService implements ITokenSession {
8
- private readonly tokenService;
9
- private readonly userRepository;
10
- private readonly credentialRepository;
11
- private readonly algorithm;
12
- private readonly accessTokenExpiration;
13
- private readonly refreshTokenExpiration;
14
- private readonly accessTokenSecret?;
15
- private readonly refreshTokenSecret?;
16
- private readonly accessMs;
17
- private readonly refreshMs;
18
- constructor(tokenService: ITokenService, userRepository: IUserRepository, credentialRepository: ICredentialRepository, algorithm: AnyAlgorithm, accessTokenExpiration?: string, refreshTokenExpiration?: string, accessTokenSecret?: string | undefined, refreshTokenSecret?: string | undefined);
19
- private buildJwtConfig;
20
- createSession(user: User): Promise<Credential>;
21
- refreshSession(refreshToken: string): Promise<Credential>;
22
- validateSession(accessToken: string): Promise<User | null>;
23
- revokeSession(refreshToken: string): Promise<void>;
24
- }