@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,21 +0,0 @@
1
- import { ISignatureStrategy, ISignatureStrategyFactory } from "../../../domain/ports";
2
- import { AlgorithmName, AnyAlgorithm, Base64UrlEncoder } from "../../../shared";
3
- /**
4
- * Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
5
- * Infraestructura: implementa el port del dominio.
6
- */
7
- export declare class SignatureStrategyFactory implements ISignatureStrategyFactory {
8
- private readonly encoder;
9
- constructor(encoder?: Base64UrlEncoder);
10
- /**
11
- * Devuelve la lista de algoritmos soportados por este factory.
12
- */
13
- supported(): ReadonlyArray<AlgorithmName>;
14
- /**
15
- * Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
16
- */
17
- create(algorithm: AnyAlgorithm): ISignatureStrategy;
18
- private isHmacAlgorithm;
19
- private isRsaAlgorithm;
20
- private isEcdsaAlgorithm;
21
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignatureStrategyFactory = void 0;
4
- const domain_1 = require("../../../domain");
5
- const shared_1 = require("../../../shared");
6
- const strategies_1 = require("../strategies");
7
- // Prepara sets para membership rápido (evita recalcular Object.values en cada llamada)
8
- const HMAC_SET = new Set(Object.values(shared_1.algorithms.hmac));
9
- const RSA_SET = new Set([
10
- ...Object.values(shared_1.algorithms.rsa),
11
- // Si soportas PSS (PS256, PS384, PS512), añádelos aquí:
12
- // ...Object.values(algoritms.rsaPss),
13
- ]);
14
- const ECDSA_SET = new Set(Object.values(shared_1.algorithms.ecdsa));
15
- /**
16
- * Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
17
- * Infraestructura: implementa el port del dominio.
18
- */
19
- class SignatureStrategyFactory {
20
- constructor(encoder = new shared_1.Base64UrlEncoder()) {
21
- this.encoder = encoder;
22
- }
23
- /**
24
- * Devuelve la lista de algoritmos soportados por este factory.
25
- */
26
- supported() {
27
- return [
28
- ...Object.values(shared_1.algorithms.hmac),
29
- ...Object.values(shared_1.algorithms.rsa),
30
- ...Object.values(shared_1.algorithms.ecdsa),
31
- // Si más adelante agregas PSS:
32
- // ...Object.values(algorithms.rsaPss),
33
- ];
34
- }
35
- /**
36
- * Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
37
- */
38
- create(algorithm) {
39
- const alg = algorithm.toUpperCase(); // defensivo
40
- if (this.isHmacAlgorithm(alg)) {
41
- return new strategies_1.HmacSignatureStrategy(alg, this.encoder);
42
- }
43
- if (this.isRsaAlgorithm(alg)) {
44
- return new strategies_1.RsaSignatureStrategy(alg, this.encoder);
45
- }
46
- if (this.isEcdsaAlgorithm(alg)) {
47
- return new strategies_1.EcdsaSignatureStrategy(alg, this.encoder);
48
- }
49
- throw new domain_1.UnsupportedAlgorithmError(`Unsupported algorithm: ${algorithm}`);
50
- }
51
- isHmacAlgorithm(algorithm) {
52
- return HMAC_SET.has(algorithm);
53
- }
54
- isRsaAlgorithm(algorithm) {
55
- return RSA_SET.has(algorithm);
56
- }
57
- isEcdsaAlgorithm(algorithm) {
58
- return ECDSA_SET.has(algorithm);
59
- }
60
- }
61
- exports.SignatureStrategyFactory = SignatureStrategyFactory;
@@ -1,3 +0,0 @@
1
- export * from "./factory";
2
- export * from "./strategies";
3
- export * from "./token";
@@ -1,21 +0,0 @@
1
- import { ISignatureStrategy, ISignatureStrategyFactory } from "../../domain/ports";
2
- import { AlgorithmName, AnyAlgorithm, Base64UrlEncoder } from "../../shared";
3
- /**
4
- * Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
5
- * Infraestructura: implementa el port del dominio.
6
- */
7
- export declare class SignatureStrategyFactory implements ISignatureStrategyFactory {
8
- private readonly encoder;
9
- constructor(encoder?: Base64UrlEncoder);
10
- /**
11
- * Devuelve la lista de algoritmos soportados por este factory.
12
- */
13
- supported(): ReadonlyArray<AlgorithmName>;
14
- /**
15
- * Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
16
- */
17
- create(algorithm: AnyAlgorithm): ISignatureStrategy;
18
- private isHmacAlgorithm;
19
- private isRsaAlgorithm;
20
- private isEcdsaAlgorithm;
21
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignatureStrategyFactory = void 0;
4
- const domain_1 = require("../../domain");
5
- const shared_1 = require("../../shared");
6
- const strategies_1 = require("./strategies");
7
- // Prepara sets para membership rápido (evita recalcular Object.values en cada llamada)
8
- const HMAC_SET = new Set(Object.values(shared_1.algorithms.hmac));
9
- const RSA_SET = new Set([
10
- ...Object.values(shared_1.algorithms.rsa),
11
- // Si soportas PSS (PS256, PS384, PS512), añádelos aquí:
12
- // ...Object.values(algoritms.rsaPss),
13
- ]);
14
- const ECDSA_SET = new Set(Object.values(shared_1.algorithms.ecdsa));
15
- /**
16
- * Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
17
- * Infraestructura: implementa el port del dominio.
18
- */
19
- class SignatureStrategyFactory {
20
- constructor(encoder = new shared_1.Base64UrlEncoder()) {
21
- this.encoder = encoder;
22
- }
23
- /**
24
- * Devuelve la lista de algoritmos soportados por este factory.
25
- */
26
- supported() {
27
- return [
28
- ...Object.values(shared_1.algorithms.hmac),
29
- ...Object.values(shared_1.algorithms.rsa),
30
- ...Object.values(shared_1.algorithms.ecdsa),
31
- // Si más adelante agregas PSS:
32
- // ...Object.values(algorithms.rsaPss),
33
- ];
34
- }
35
- /**
36
- * Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
37
- */
38
- create(algorithm) {
39
- const alg = algorithm.toUpperCase(); // defensivo
40
- if (this.isHmacAlgorithm(alg)) {
41
- return new strategies_1.HmacSignatureStrategy(alg, this.encoder);
42
- }
43
- if (this.isRsaAlgorithm(alg)) {
44
- return new strategies_1.RsaSignatureStrategy(alg, this.encoder);
45
- }
46
- if (this.isEcdsaAlgorithm(alg)) {
47
- return new strategies_1.EcdsaSignatureStrategy(alg, this.encoder);
48
- }
49
- throw new domain_1.UnsupportedAlgorithmError(`Unsupported algorithm: ${algorithm}`);
50
- }
51
- isHmacAlgorithm(algorithm) {
52
- return HMAC_SET.has(algorithm);
53
- }
54
- isRsaAlgorithm(algorithm) {
55
- return RSA_SET.has(algorithm);
56
- }
57
- isEcdsaAlgorithm(algorithm) {
58
- return ECDSA_SET.has(algorithm);
59
- }
60
- }
61
- exports.SignatureStrategyFactory = SignatureStrategyFactory;
@@ -1,47 +0,0 @@
1
- import { SignatureStrategy } from "../../../domain/ports";
2
- import { Base64UrlEncoder, EcdsaAlgorithm } from "../../../shared";
3
- /**
4
- *Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
5
- *Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
6
- */
7
- export declare class EcdsaSignatureStrategy implements SignatureStrategy {
8
- private readonly algorithm;
9
- private readonly encoder;
10
- /**
11
- * Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
12
- * Por ejemplo, 'ES256' → 'sha256'
13
- */
14
- private static readonly ALGORITHM_MAP;
15
- /**
16
- * Crea una nueva instancia de EcdsaSignatureStrategy
17
- * @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
18
- * @param encoder El codificador Base64 URL-safe a usar
19
- */
20
- constructor(algorithm: EcdsaAlgorithm, encoder: Base64UrlEncoder);
21
- /**
22
- * Firma digitalmente los datos usando la clave privada ECDSA
23
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
24
- * @param privateKey La clave privada para firmar
25
- * @returns La firma digital como string codificado
26
- */
27
- sign(data: string, privateKey: string): string;
28
- /**
29
- * Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
30
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
31
- * @param signature La firma digital a verificar
32
- * @param publicKey La clave pública para verificar
33
- * @returns true si la firma es válida, false si no
34
- */
35
- verify(data: string, signature: string, publicKey: string): boolean;
36
- /**
37
- * Retorna el algoritmo que soporta esta estrategia específica.
38
- * @returns El nombre del algoritmo soportado
39
- */
40
- getSupportedAlgorithm(): string;
41
- /**
42
- * Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
43
- * @returns El algoritmo hash correspondiente
44
- * @throws Error si el algoritmo ECDSA no es soportado
45
- */
46
- private getHashAlgorithm;
47
- }
@@ -1,124 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.EcdsaSignatureStrategy = void 0;
37
- const crypto = __importStar(require("crypto"));
38
- const shared_1 = require("../../../shared");
39
- /**
40
- *Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
41
- *Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
42
- */
43
- class EcdsaSignatureStrategy {
44
- /**
45
- * Crea una nueva instancia de EcdsaSignatureStrategy
46
- * @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
47
- * @param encoder El codificador Base64 URL-safe a usar
48
- */
49
- constructor(algorithm, encoder) {
50
- this.algorithm = algorithm;
51
- this.encoder = encoder;
52
- }
53
- /**
54
- * Firma digitalmente los datos usando la clave privada ECDSA
55
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
56
- * @param privateKey La clave privada para firmar
57
- * @returns La firma digital como string codificado
58
- */
59
- sign(data, privateKey) {
60
- // Obtiene el algoritmo hash correspondiente (sha256, sha384, sha512)
61
- const hashAlgorithm = this.getHashAlgorithm();
62
- // Crea un firmador
63
- const sign = crypto.createSign(hashAlgorithm);
64
- // Alimenta los datos al firmador
65
- sign.update(data);
66
- // Genera la firma usando la clave privada ECDSA
67
- const signature = sign.sign(privateKey, "base64");
68
- // Codifica en Base64URL para JWT
69
- return this.encoder.encode(signature);
70
- }
71
- /**
72
- * Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
73
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
74
- * @param signature La firma digital a verificar
75
- * @param publicKey La clave pública para verificar
76
- * @returns true si la firma es válida, false si no
77
- */
78
- verify(data, signature, publicKey) {
79
- try {
80
- // Decodifica la firma desde Base64URL
81
- const hashAlgorithm = this.getHashAlgorithm();
82
- // Crea un verificador
83
- const verify = crypto.createVerify(hashAlgorithm);
84
- // Alimenta los datos originales
85
- verify.update(data);
86
- // Verifica usando la clave pública ECDSA
87
- const decodedSignature = this.encoder.decode(signature);
88
- // Retorna true si válida, false si no
89
- return verify.verify(publicKey, decodedSignature, "base64");
90
- }
91
- catch (error) {
92
- return false;
93
- }
94
- }
95
- /**
96
- * Retorna el algoritmo que soporta esta estrategia específica.
97
- * @returns El nombre del algoritmo soportado
98
- */
99
- getSupportedAlgorithm() {
100
- return this.algorithm;
101
- }
102
- /**
103
- * Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
104
- * @returns El algoritmo hash correspondiente
105
- * @throws Error si el algoritmo ECDSA no es soportado
106
- */
107
- getHashAlgorithm() {
108
- const hashAlgorithm = EcdsaSignatureStrategy.ALGORITHM_MAP[this.algorithm];
109
- if (!hashAlgorithm) {
110
- throw new Error(`Unsupported ECDSA algorithm: ${this.algorithm}`);
111
- }
112
- return hashAlgorithm;
113
- }
114
- }
115
- exports.EcdsaSignatureStrategy = EcdsaSignatureStrategy;
116
- /**
117
- * Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
118
- * Por ejemplo, 'ES256' → 'sha256'
119
- */
120
- EcdsaSignatureStrategy.ALGORITHM_MAP = {
121
- [shared_1.algorithms.ecdsa.ES256]: "sha256",
122
- [shared_1.algorithms.ecdsa.ES384]: "sha384",
123
- [shared_1.algorithms.ecdsa.ES512]: "sha512",
124
- };
@@ -1,47 +0,0 @@
1
- import { ISignatureStrategy } from "../../../domain/ports";
2
- import { Base64UrlEncoder, EcdsaAlgorithm, AlgorithmName } from "../../../shared";
3
- /**
4
- *Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
5
- *Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
6
- */
7
- export declare class EcdsaSignatureStrategy implements ISignatureStrategy {
8
- private readonly algorithm;
9
- private readonly encoder;
10
- /**
11
- * Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
12
- * Por ejemplo, 'ES256' → 'sha256'
13
- */
14
- private static readonly ALGORITHM_MAP;
15
- /**
16
- * Crea una nueva instancia de EcdsaSignatureStrategy
17
- * @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
18
- * @param encoder El codificador Base64 URL-safe a usar
19
- */
20
- constructor(algorithm: EcdsaAlgorithm, encoder: Base64UrlEncoder);
21
- /**
22
- * Firma digitalmente los datos usando la clave privada ECDSA
23
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
24
- * @param privateKey La clave privada para firmar
25
- * @returns La firma digital como string codificado
26
- */
27
- sign(data: string, privateKey: string): string;
28
- /**
29
- * Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
30
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
31
- * @param signature La firma digital a verificar
32
- * @param publicKey La clave pública para verificar
33
- * @returns true si la firma es válida, false si no
34
- */
35
- verify(data: string, signature: string, publicKey: string): boolean;
36
- /**
37
- * Retorna el algoritmo que soporta esta estrategia específica.
38
- * @returns El nombre del algoritmo soportado
39
- */
40
- getSupportedAlgorithm(): AlgorithmName;
41
- /**
42
- * Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
43
- * @returns El algoritmo hash correspondiente
44
- * @throws Error si el algoritmo ECDSA no es soportado
45
- */
46
- private getHashAlgorithm;
47
- }
@@ -1,124 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.EcdsaSignatureStrategy = void 0;
37
- const crypto = __importStar(require("crypto"));
38
- const shared_1 = require("../../../shared");
39
- /**
40
- *Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
41
- *Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
42
- */
43
- class EcdsaSignatureStrategy {
44
- /**
45
- * Crea una nueva instancia de EcdsaSignatureStrategy
46
- * @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
47
- * @param encoder El codificador Base64 URL-safe a usar
48
- */
49
- constructor(algorithm, encoder) {
50
- this.algorithm = algorithm;
51
- this.encoder = encoder;
52
- }
53
- /**
54
- * Firma digitalmente los datos usando la clave privada ECDSA
55
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
56
- * @param privateKey La clave privada para firmar
57
- * @returns La firma digital como string codificado
58
- */
59
- sign(data, privateKey) {
60
- // Obtiene el algoritmo hash correspondiente (sha256, sha384, sha512)
61
- const hashAlgorithm = this.getHashAlgorithm();
62
- // Crea un firmador
63
- const sign = crypto.createSign(hashAlgorithm);
64
- // Alimenta los datos al firmador
65
- sign.update(data);
66
- // Genera la firma usando la clave privada ECDSA
67
- const signature = sign.sign(privateKey, "base64");
68
- // Codifica en Base64URL para JWT
69
- return this.encoder.encode(signature);
70
- }
71
- /**
72
- * Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
73
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
74
- * @param signature La firma digital a verificar
75
- * @param publicKey La clave pública para verificar
76
- * @returns true si la firma es válida, false si no
77
- */
78
- verify(data, signature, publicKey) {
79
- try {
80
- // Decodifica la firma desde Base64URL
81
- const hashAlgorithm = this.getHashAlgorithm();
82
- // Crea un verificador
83
- const verify = crypto.createVerify(hashAlgorithm);
84
- // Alimenta los datos originales
85
- verify.update(data);
86
- // Verifica usando la clave pública ECDSA
87
- const decodedSignature = this.encoder.decode(signature);
88
- // Retorna true si válida, false si no
89
- return verify.verify(publicKey, decodedSignature, "base64");
90
- }
91
- catch (error) {
92
- return false;
93
- }
94
- }
95
- /**
96
- * Retorna el algoritmo que soporta esta estrategia específica.
97
- * @returns El nombre del algoritmo soportado
98
- */
99
- getSupportedAlgorithm() {
100
- return this.algorithm;
101
- }
102
- /**
103
- * Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
104
- * @returns El algoritmo hash correspondiente
105
- * @throws Error si el algoritmo ECDSA no es soportado
106
- */
107
- getHashAlgorithm() {
108
- const hashAlgorithm = EcdsaSignatureStrategy.ALGORITHM_MAP[this.algorithm];
109
- if (!hashAlgorithm) {
110
- throw new Error(`Unsupported ECDSA algorithm: ${this.algorithm}`);
111
- }
112
- return hashAlgorithm;
113
- }
114
- }
115
- exports.EcdsaSignatureStrategy = EcdsaSignatureStrategy;
116
- /**
117
- * Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
118
- * Por ejemplo, 'ES256' → 'sha256'
119
- */
120
- EcdsaSignatureStrategy.ALGORITHM_MAP = {
121
- [shared_1.algorithms.ecdsa.ES256]: "sha256",
122
- [shared_1.algorithms.ecdsa.ES384]: "sha384",
123
- [shared_1.algorithms.ecdsa.ES512]: "sha512",
124
- };
@@ -1,54 +0,0 @@
1
- import { SignatureStrategy } from "../../../domain/ports";
2
- import { Base64UrlEncoder, HmacAlgorithm } from "../../../shared";
3
- /**
4
- *Esta clase implementa la estrategia de firma digital usando HMAC (Hash-based Message Authentication Code) para JWT.
5
- *Maneja la firma y verificación de tokens JWT usando algoritmos HMAC con funciones hash SHA, que utilizan una clave secreta compartida.
6
- */
7
- export declare class HmacSignatureStrategy implements SignatureStrategy {
8
- private readonly algorithm;
9
- private readonly encoder;
10
- /**
11
- * Mapea los algoritmos JWT HMAC a los algoritmos hash de Node.js crypto.
12
- * Por ejemplo, 'HS256' → 'sha256'
13
- */
14
- private static readonly ALGORITHM_MAP;
15
- /**
16
- * Crea una nueva instancia de HmacSignatureStrategy
17
- * @param algorithm El algoritmo HMAC a usar (por ejemplo, 'HS256')
18
- * @param encoder El codificador Base64 URL-safe a usar
19
- */
20
- constructor(algorithm: HmacAlgorithm, encoder: Base64UrlEncoder);
21
- /**
22
- * Firma digitalmente los datos usando la clave secreta HMAC
23
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
24
- * @param secret La clave secreta para firmar
25
- * @returns La firma digital como string codificado
26
- */
27
- sign(data: string, secret: string): string;
28
- /**
29
- * Verifica si una firma es válida para los datos dados usando la clave secreta HMAC
30
- * @param data Los datos a firmar (normalmente el header + payload del JWT)
31
- * @param signature La firma digital a verificar
32
- * @param secret La clave secreta para verificar
33
- * @returns true si la firma es válida, false si no
34
- */
35
- verify(data: string, signature: string, secret: string): boolean;
36
- /**
37
- * Retorna el algoritmo que soporta esta estrategia específica.
38
- * @returns El nombre del algoritmo soportado
39
- */
40
- getSupportedAlgorithm(): string;
41
- /**
42
- * Convierte el algoritmo JWT HMAC (como 'HS256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
43
- * @returns El algoritmo hash correspondiente
44
- * @throws Error si el algoritmo HMAC no es soportado
45
- */
46
- private getHashAlgorithm;
47
- /**
48
- * Compara dos strings de forma segura para evitar timing attacks
49
- * @param a El primer string a comparar
50
- * @param b El segundo string a comparar
51
- * @returns true si son iguales, false si no lo son
52
- */
53
- private secureCompare;
54
- }