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

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 +4 -1
  65. package/dist/index.js +11 -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,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MainExample = void 0;
4
- const bcrypt_password_hasher_example_1 = require("./bcrypt-password-hasher.example");
5
- const entity_object_example_1 = require("./entity-object.example");
6
- const factory_auth_service_example_1 = require("./factory-auth-service-example");
7
- const jwt_algoritm_example_1 = require("./jwt-algoritm.example");
8
- const jwt_token_generator_example_1 = require("./jwt-token-generator.example");
9
- const jwt_verifier_example_1 = require("./jwt-verifier.example");
10
- const password_policy_example_1 = require("./password-policy.example");
11
- const service_jwt_token_example_1 = require("./service-jwt-token.example");
12
- const use_case_login_with_password_example_1 = require("./use-case-login-with-password.example");
13
- const use_case_logout_example_1 = require("./use-case-logout.example");
14
- const use_case_refresh_token_example_1 = require("./use-case-refresh-token.example");
15
- const use_case_register_user_example_1 = require("./use-case-register-user.example");
16
- class MainExample {
17
- async runEntityObjectExamples() {
18
- console.log("-".repeat(80) + "\n");
19
- console.log("🎯 Ejecutando Jwt: Signature:\n");
20
- await entity_object_example_1.EntityObjectExamples.Main();
21
- console.log("-".repeat(80) + "\n");
22
- }
23
- async runJwtAlgoritmExamples() {
24
- console.log("-".repeat(80) + "\n");
25
- console.log("🎯 Ejecutando Jwt: Signature:\n");
26
- await jwt_algoritm_example_1.JwtAlgoritmExample.Main();
27
- console.log("-".repeat(80) + "\n");
28
- }
29
- async runJwtTokenGeneratorExamples() {
30
- console.log("-".repeat(80) + "\n");
31
- console.log("🎯 Ejecutando Jwt: Token Generator:\n");
32
- await jwt_token_generator_example_1.JwtTokenGeneratorExample.Main();
33
- console.log("-".repeat(80) + "\n");
34
- }
35
- async runExampleJwtVerifier() {
36
- console.log("-".repeat(80) + "\n");
37
- console.log("🎯 Ejecutando Jwt: Validar Token:\n");
38
- await jwt_verifier_example_1.JwtVerifierExample.Main();
39
- console.log("-".repeat(80) + "\n");
40
- }
41
- async runExamplePasswordValidations() {
42
- console.log("-".repeat(80) + "\n");
43
- console.log("🎯 Ejecutando Validaciones Password\n");
44
- await password_policy_example_1.PasswordPolicyExample.Main();
45
- console.log("-".repeat(80) + "\n");
46
- console.log("🎯 Ejecutando Hasher\n");
47
- await bcrypt_password_hasher_example_1.BcryptPasswordHasherExample.Main();
48
- console.log("-".repeat(80) + "\n");
49
- }
50
- async runExampleUseCases() {
51
- console.log("-".repeat(80) + "\n");
52
- console.log("🎯 Ejecutando Use Case: Register:\n");
53
- await use_case_register_user_example_1.UseCaseRegisterUserExample.Main();
54
- console.log("-".repeat(80) + "\n");
55
- console.log("🎯 Ejecutando Use Case: Login with password:\n");
56
- await use_case_login_with_password_example_1.UseCaseLoginWithPasswordExample.Main();
57
- console.log("-".repeat(80) + "\n");
58
- console.log("🎯 Ejecutando Use Case: Logout:\n");
59
- await use_case_logout_example_1.UseCaseLogoutExample.Main();
60
- console.log("-".repeat(80) + "\n");
61
- console.log("🎯 Ejecutando Use Case: Refresh Token:\n");
62
- await use_case_refresh_token_example_1.UseCaseRefreshTokenExample.Main();
63
- console.log("-".repeat(80) + "\n");
64
- }
65
- //
66
- async runExampleServices() {
67
- console.log("-".repeat(80) + "\n");
68
- console.log("🎯 Ejecutando Service: Jwt Token:\n");
69
- await service_jwt_token_example_1.JwtTokenServiceExample.Main();
70
- console.log("-".repeat(80) + "\n");
71
- console.log("🎯 Ejecutando Service: Token Session:\n");
72
- await service_jwt_token_example_1.JwtTokenServiceExample.Main();
73
- console.log("-".repeat(80) + "\n");
74
- }
75
- async runExampleFactories() {
76
- console.log("-".repeat(80) + "\n");
77
- console.log("🎯 Ejecutando Factory: Auth Service:\n");
78
- await factory_auth_service_example_1.AuthServiceFactoryExample.Main();
79
- console.log("-".repeat(80) + "\n");
80
- }
81
- async runAllExamples() {
82
- try {
83
- console.log("-".repeat(80) + "\n");
84
- console.log("🚀 Entities and Object Values - Ejemplos Completos\n");
85
- await this.runEntityObjectExamples();
86
- console.log("-".repeat(80) + "\n");
87
- console.log("🚀 JWT Auth Package - Ejemplos Completos\n");
88
- await this.runJwtAlgoritmExamples();
89
- console.log("-".repeat(80) + "\n");
90
- console.log("🚀 Generate Token - Ejemplos Completos\n");
91
- await this.runJwtTokenGeneratorExamples();
92
- console.log("-".repeat(80) + "\n");
93
- console.log("🚀 Validate Token - Ejemplos Completos\n");
94
- await this.runExampleJwtVerifier();
95
- console.log("-".repeat(80) + "\n");
96
- console.log("🚀 Password Validations - Ejemplos Completos\n");
97
- await this.runExamplePasswordValidations();
98
- console.log("-".repeat(80) + "\n");
99
- console.log("🚀 Use Cases - Ejemplos Completos\n");
100
- await this.runExampleUseCases();
101
- console.log("-".repeat(80) + "\n");
102
- console.log("🚀 Services - Ejemplos Completos\n");
103
- await this.runExampleServices();
104
- console.log("-".repeat(80) + "\n");
105
- console.log("🚀 Factories - Ejemplos Completos\n");
106
- await this.runExampleFactories();
107
- console.log("-".repeat(80) + "\n");
108
- console.log("🎉 ¡Todos los ejemplos completados exitosamente!");
109
- console.log("\n📚 Para más información consulta el README.md");
110
- console.log("-".repeat(80) + "\n");
111
- }
112
- catch (error) {
113
- console.error("❌ Error ejecutando ejemplos:", error);
114
- }
115
- }
116
- }
117
- exports.MainExample = MainExample;
118
- // Función de ayuda para mostrar opciones
119
- function showHelp() {
120
- console.log("📖 JWT Auth Package - Ejemplos Disponibles\n");
121
- console.log("Comandos disponibles:");
122
- console.log(" npm run example:jwt - Ejemplos uso jwt");
123
- console.log(" npm run example:entity - Ejemplos uso entity y value objects");
124
- console.log(" npm run example:generate-token - Ejemplos uso generate-token");
125
- console.log(" npm run example:validate-token - Ejemplos uso validate-token");
126
- console.log(" npm run example:use-cases - Ejemplos uso use-cases");
127
- console.log(" npm run example:validate-password - Ejemplos uso validate-password");
128
- console.log(" npm run example:services - Ejemplos uso services");
129
- console.log(" npm run example:factories - Ejemplos uso factories");
130
- console.log(" npm run example:all - Todos los ejemplos");
131
- console.log("\nO ejecuta directamente:");
132
- console.log(" tsx examples/jwt.examples.ts");
133
- console.log(" tsx examples/index.example.ts");
134
- }
135
- // Ejecutar según el argumento
136
- if (require.main === module) {
137
- const mainExample = new MainExample();
138
- const command = process.argv[2];
139
- switch (command) {
140
- case "entity":
141
- mainExample.runEntityObjectExamples();
142
- break;
143
- case "jwt":
144
- mainExample.runJwtAlgoritmExamples();
145
- break;
146
- case "generate-token":
147
- mainExample.runJwtTokenGeneratorExamples();
148
- break;
149
- case "validate-token":
150
- mainExample.runExampleJwtVerifier();
151
- break;
152
- case "validate-password":
153
- mainExample.runExamplePasswordValidations();
154
- break;
155
- case "use-cases":
156
- mainExample.runExampleUseCases();
157
- break;
158
- case "services":
159
- mainExample.runExampleServices();
160
- break;
161
- case "factories":
162
- mainExample.runExampleFactories();
163
- break;
164
- case "help":
165
- showHelp();
166
- break;
167
- default:
168
- mainExample.runAllExamples();
169
- }
170
- }
171
- exports.default = MainExample;
@@ -1,47 +0,0 @@
1
- /**
2
- * Ejemplo demostrativo de uso de EcdsaSignatureStrategy.
3
- * Incluye la generación de claves, firma y verificación de un token JWT.
4
- */
5
- export declare class JwtAlgoritmExample {
6
- /**
7
- * Sección Signature: demuestra el flujo completo de firma y verificación
8
- * usando ECDSA (curva P-256 → algoritmo ES256).
9
- */
10
- static Main(): Promise<void>;
11
- /**
12
- * Sección HMAC: demuestra la generación de un secret para HMAC.
13
- */
14
- static RunHmac(): Promise<void>;
15
- /**
16
- * Sección ECDSA: demuestra el flujo completo de firma y verificación
17
- * usando ECDSA (curva P-256 → algoritmo ES256).
18
- */
19
- static RunEcdsa(): Promise<void>;
20
- /**
21
- * Sección RSA: demuestra el flujo completo de firma y verificación
22
- * usando RSA (2048 bits → algoritmo RS256).
23
- */
24
- static RunRsa(): Promise<void>;
25
- /**
26
- * Ejemplo demostrativo de uso de SignatureStrategyFactory.
27
- * Permite crear estrategias de firma/verificación según el algoritmo indicado.
28
- */
29
- static RunFactory(): Promise<void>;
30
- /**
31
- * Ejemplo demostrativo de uso de JwtTokenValidator.
32
- * Permite verificar tokens JWT y mostrar su validez según reglas de formato, estructura y caracteres.
33
- */
34
- static RunJwtTokenValidator(): Promise<void>;
35
- /**
36
- * Ejemplo demostrativo de uso de JwtTokenParser.
37
- * Permite extraer, decodificar y validar el contenido de un JWT
38
- * sin verificar su firma ni validez temporal.
39
- */
40
- static RunJwtTokenParser(): Promise<void>;
41
- /**
42
- * Ejemplo demostrativo de uso de JwtSigner.
43
- * Muestra cómo firmar y verificar el contenido de un JWT
44
- * usando estrategias criptográficas provistas por SignatureStrategyFactory.
45
- */
46
- static RunJwtSigner(): Promise<void>;
47
- }
@@ -1,447 +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.JwtAlgoritmExample = void 0;
37
- const crypto = __importStar(require("crypto"));
38
- const errors_1 = require("../src/domain/errors");
39
- const jwt_1 = require("../src/infrastructure/jwt");
40
- const constants_1 = require("../src/shared/constants");
41
- const encoders_1 = require("../src/shared/encoders");
42
- /**
43
- * Ejemplo demostrativo de uso de EcdsaSignatureStrategy.
44
- * Incluye la generación de claves, firma y verificación de un token JWT.
45
- */
46
- class JwtAlgoritmExample {
47
- /**
48
- * Sección Signature: demuestra el flujo completo de firma y verificación
49
- * usando ECDSA (curva P-256 → algoritmo ES256).
50
- */
51
- static async Main() {
52
- // Ejemplos de firma y verificación
53
- await this.RunEcdsa();
54
- await this.RunHmac();
55
- await this.RunRsa();
56
- // Ejemplo de fábrica de estrategias
57
- await this.RunFactory();
58
- // Generar Token JWT
59
- await this.RunJwtTokenValidator();
60
- // Parsear Token JWT
61
- await this.RunJwtTokenParser();
62
- // Firmar y verificar Token JWT
63
- await this.RunJwtSigner();
64
- }
65
- /**
66
- * Sección HMAC: demuestra la generación de un secret para HMAC.
67
- */
68
- static async RunHmac() {
69
- console.log("=== 🔐 Ejemplo: Firma y verificación HMAC ===\n");
70
- // 1️⃣ Generamos un Secret
71
- console.log("→ Generando Secret HMAC...");
72
- const makeSecret = (length = 32) => crypto.randomBytes(length).toString("base64url");
73
- const secret = makeSecret();
74
- console.log("Secret:\n", secret);
75
- // 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
76
- const header = { alg: "HS256", typ: "JWT" };
77
- const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
78
- const encoder = new encoders_1.Base64UrlEncoder();
79
- const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
80
- const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
81
- const data = `${encodedHeader}.${encodedPayload}`;
82
- console.log("\n→ Datos a firmar (header.payload):");
83
- console.log(data);
84
- // 3️⃣ Instanciamos la estrategia HMAC
85
- const strategy = new jwt_1.HmacSignatureStrategy(constants_1.algorithms.hmac.HS256, encoder);
86
- console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
87
- // 4️⃣ Firmamos los datos con la clave privada
88
- console.log("\n→ Firmando datos...");
89
- const signature = strategy.sign(data, secret);
90
- console.log("Firma generada (Base64URL):", signature);
91
- // 5️⃣ Verificamos la firma con la clave pública
92
- console.log("\n→ Verificando firma...");
93
- const isValid = strategy.verify(data, signature, secret);
94
- console.log("¿Firma válida?", isValid);
95
- // 6️⃣ Prueba negativa: modificamos el payload
96
- console.log("\n→ Verificando firma con payload alterado...");
97
- const tamperedData = data + "xxx";
98
- const isTamperedValid = strategy.verify(tamperedData, signature, secret);
99
- console.log("¿Firma válida tras alteración?", isTamperedValid);
100
- console.log("\n=== ✅ Fin del ejemplo HMAC ===");
101
- }
102
- /**
103
- * Sección ECDSA: demuestra el flujo completo de firma y verificación
104
- * usando ECDSA (curva P-256 → algoritmo ES256).
105
- */
106
- static async RunEcdsa() {
107
- console.log("=== 🔐 Ejemplo: Firma y verificación ECDSA ===\n");
108
- // 1️⃣ Generamos un par de claves (curva P-256 para ES256)
109
- console.log("→ Generando claves ECDSA (P-256)...");
110
- const { publicKey, privateKey } = crypto.generateKeyPairSync("ec", {
111
- namedCurve: "P-256",
112
- publicKeyEncoding: { type: "spki", format: "pem" },
113
- privateKeyEncoding: { type: "pkcs8", format: "pem" },
114
- });
115
- console.log("Clave privada:\n", privateKey);
116
- console.log("Clave pública:\n", publicKey);
117
- // 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
118
- const header = { alg: "ES256", typ: "JWT" };
119
- const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
120
- const encoder = new encoders_1.Base64UrlEncoder();
121
- const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
122
- const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
123
- const data = `${encodedHeader}.${encodedPayload}`;
124
- console.log("\n→ Datos a firmar (header.payload):");
125
- console.log(data);
126
- // 3️⃣ Instanciamos la estrategia ECDSA
127
- const strategy = new jwt_1.EcdsaSignatureStrategy(constants_1.algorithms.ecdsa.ES256, encoder);
128
- console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
129
- // 4️⃣ Firmamos los datos con la clave privada
130
- console.log("\n→ Firmando datos...");
131
- const signature = strategy.sign(data, privateKey);
132
- console.log("Firma generada (Base64URL):", signature);
133
- // 5️⃣ Verificamos la firma con la clave pública
134
- console.log("\n→ Verificando firma...");
135
- const isValid = strategy.verify(data, signature, publicKey);
136
- console.log("¿Firma válida?", isValid);
137
- // 6️⃣ Prueba negativa: modificamos el payload
138
- console.log("\n→ Verificando firma con payload alterado...");
139
- const tamperedData = data + "xxx";
140
- const isTamperedValid = strategy.verify(tamperedData, signature, publicKey);
141
- console.log("¿Firma válida tras alteración?", isTamperedValid);
142
- console.log("\n=== ✅ Fin del ejemplo ECDSA ===");
143
- }
144
- /**
145
- * Sección RSA: demuestra el flujo completo de firma y verificación
146
- * usando RSA (2048 bits → algoritmo RS256).
147
- */
148
- static async RunRsa() {
149
- console.log("=== 🔐 Ejemplo: Firma y verificación RSA ===\n");
150
- // 1️⃣ Generamos un par de claves (2048 bits para RS256)
151
- console.log("→ Generando claves RSA (P-256)...");
152
- const { publicKey, privateKey } = crypto.generateKeyPairSync("rsa", {
153
- modulusLength: 2048,
154
- publicKeyEncoding: { type: "spki", format: "pem" },
155
- privateKeyEncoding: { type: "pkcs8", format: "pem" },
156
- });
157
- console.log("Clave privada:\n", privateKey);
158
- console.log("Clave pública:\n", publicKey);
159
- // 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
160
- const header = { alg: "RS256", typ: "JWT" };
161
- const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
162
- const encoder = new encoders_1.Base64UrlEncoder();
163
- const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
164
- const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
165
- const data = `${encodedHeader}.${encodedPayload}`;
166
- console.log("\n→ Datos a firmar (header.payload):");
167
- console.log(data);
168
- // 3️⃣ Instanciamos la estrategia ECDSA
169
- const strategy = new jwt_1.RsaSignatureStrategy(constants_1.algorithms.rsa.RS256, encoder);
170
- console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
171
- // 4️⃣ Firmamos los datos con la clave privada
172
- console.log("\n→ Firmando datos...");
173
- const signature = strategy.sign(data, privateKey);
174
- console.log("Firma generada (Base64URL):", signature);
175
- // 5️⃣ Verificamos la firma con la clave pública
176
- console.log("\n→ Verificando firma...");
177
- const isValid = strategy.verify(data, signature, publicKey);
178
- console.log("¿Firma válida?", isValid);
179
- // 6️⃣ Prueba negativa: modificamos el payload
180
- console.log("\n→ Verificando firma con payload alterado...");
181
- const tamperedData = data + "xxx";
182
- const isTamperedValid = strategy.verify(tamperedData, signature, publicKey);
183
- console.log("¿Firma válida tras alteración?", isTamperedValid);
184
- console.log("\n=== ✅ Fin del ejemplo RSA ===");
185
- }
186
- /**
187
- * Ejemplo demostrativo de uso de SignatureStrategyFactory.
188
- * Permite crear estrategias de firma/verificación según el algoritmo indicado.
189
- */
190
- static async RunFactory() {
191
- console.log("=== 🧪 SignatureStrategyFactory Example ===\n");
192
- const encoder = new encoders_1.Base64UrlEncoder();
193
- const factory = new jwt_1.SignatureStrategyFactory(encoder);
194
- // 1️⃣ Mostrar algoritmos soportados
195
- console.log("→ Algoritmos soportados:");
196
- console.log(factory.supported());
197
- console.log("");
198
- // 2️⃣ Crear estrategia HMAC
199
- try {
200
- const alg = constants_1.algorithms.hmac.HS256;
201
- const hmac = factory.create(alg);
202
- console.log(`✅ Creada estrategia HMAC (${alg}):`, hmac.constructor.name);
203
- }
204
- catch (err) {
205
- console.error("❌ Error creando HMAC:", err);
206
- }
207
- // 3️⃣ Crear estrategia RSA
208
- try {
209
- const alg = constants_1.algorithms.rsa.RS256;
210
- const rsa = factory.create(alg);
211
- console.log(`✅ Creada estrategia RSA (${alg}):`, rsa.constructor.name);
212
- }
213
- catch (err) {
214
- console.error("❌ Error creando RSA:", err);
215
- }
216
- // 4️⃣ Crear estrategia ECDSA
217
- try {
218
- const alg = constants_1.algorithms.ecdsa.ES256;
219
- const ecdsa = factory.create(alg);
220
- console.log(`✅ Creada estrategia ECDSA (${alg}):`, ecdsa.constructor.name);
221
- }
222
- catch (err) {
223
- console.error("❌ Error creando ECDSA:", err);
224
- }
225
- // 5️⃣ Intentar un algoritmo no soportado
226
- try {
227
- const alg = "PS256"; // PSS aún no soportado
228
- const unsupported = factory.create(alg);
229
- console.log(`❌ Esto no debería imprimirse: ${unsupported}`);
230
- }
231
- catch (err) {
232
- if (err instanceof errors_1.UnsupportedAlgorithmError) {
233
- console.warn(`⚠️ Algoritmo no soportado (${err.message})`);
234
- }
235
- else {
236
- console.error("❌ Error inesperado:", err);
237
- }
238
- }
239
- console.log("\n=== ✅ Fin del ejemplo SignatureStrategyFactory===");
240
- }
241
- /**
242
- * Ejemplo demostrativo de uso de JwtTokenValidator.
243
- * Permite verificar tokens JWT y mostrar su validez según reglas de formato, estructura y caracteres.
244
- */
245
- static async RunJwtTokenValidator() {
246
- console.log("=== 🧪 JwtTokenValidator Example ===\n");
247
- // 1️⃣ Crear instancia del validador
248
- const validator = new jwt_1.JwtTokenValidator();
249
- // 2️⃣ Definir conjunto de casos de prueba (válidos e inválidos)
250
- const validJwt = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk";
251
- const cases = [
252
- // ✅ Casos válidos
253
- { name: "Válido: JWT realista", token: validJwt, expectOk: true },
254
- {
255
- name: "Válido: 2 puntos y Base64URL",
256
- token: "abc_DEF-123.ghi_JKL-456.mno_PQR-789xyz",
257
- expectOk: true,
258
- },
259
- // 🚫 Casos inválidos de formato básico
260
- { name: "Null", token: null, expectOk: false },
261
- { name: "Undefined", token: undefined, expectOk: false },
262
- { name: "No string (number)", token: 123, expectOk: false },
263
- { name: "Cadena vacía", token: "", expectOk: false },
264
- { name: "Solo espacios", token: " ", expectOk: false },
265
- {
266
- name: "Espacios al inicio/fin",
267
- token: " abc.def.ghi ",
268
- expectOk: false,
269
- },
270
- // 🚫 Casos inválidos de estructura (puntos / longitud)
271
- { name: "Demasiado corto (<10)", token: "a.b.c", expectOk: false },
272
- { name: "0 puntos", token: "abcdefghijk", expectOk: false },
273
- { name: "1 punto", token: "abcdefghij.klmnop", expectOk: false },
274
- { name: "3 puntos", token: "abcd.efgh.ijkl.mnop", expectOk: false },
275
- // 🚫 Casos inválidos de caracteres Base64URL
276
- {
277
- name: "Contiene '+'",
278
- token: "abcde+123.fghi_JKL.mnop-QR",
279
- expectOk: false,
280
- },
281
- {
282
- name: "Contiene '/'",
283
- token: "abcde/123.fghi_JKL.mnop-QR",
284
- expectOk: false,
285
- },
286
- {
287
- name: "Contiene '=' (padding)",
288
- token: "abcde=123.fghi_JKL.mnop-QR",
289
- expectOk: false,
290
- },
291
- {
292
- name: "Segmento vacío (..)",
293
- token: "abcde..klmnopqr",
294
- expectOk: false,
295
- },
296
- {
297
- name: "Espacio interno",
298
- token: "abcde .fghi_JKL.mnop-QR",
299
- expectOk: false,
300
- },
301
- {
302
- name: "Caracter '%'",
303
- token: "abcde%.fghi_JKL.mnop-QR",
304
- expectOk: false,
305
- },
306
- ];
307
- console.log("→ Casos de prueba preparados:", cases.length, "\n");
308
- // 3️⃣ Ejecutar la validación de cada token
309
- let passed = 0;
310
- for (const c of cases) {
311
- let ok = false;
312
- let message;
313
- try {
314
- // 3.1 Intentar validar el token
315
- validator.validateTokenInput(c.token);
316
- ok = true;
317
- }
318
- catch (err) {
319
- // 3.2 Capturar errores esperados (InvalidTokenFormatError)
320
- if (err instanceof errors_1.InvalidTokenFormatError) {
321
- ok = false;
322
- message = err.message;
323
- }
324
- else {
325
- // 3.3 Capturar cualquier error inesperado
326
- ok = false;
327
- message = `Unexpected error: ${err?.message}`;
328
- }
329
- }
330
- // 4️⃣ Mostrar el resultado por caso
331
- const pass = ok === c.expectOk;
332
- const status = pass ? "✔ PASS" : "✖ FAIL";
333
- const outcome = ok ? "VALID" : `INVALID → ${message}`;
334
- console.log(`${status} ${c.name}\n` +
335
- ` token: ${String(c.token)}\n` +
336
- ` result: ${outcome}\n`);
337
- if (pass)
338
- passed++;
339
- }
340
- // 5️⃣ Mostrar resumen final
341
- const total = cases.length;
342
- console.log(`\n=== ✅ Resumen JwtTokenValidator ===`);
343
- console.log(`Casos superados: ${passed}/${total}`);
344
- console.log("===================================\n");
345
- }
346
- /**
347
- * Ejemplo demostrativo de uso de JwtTokenParser.
348
- * Permite extraer, decodificar y validar el contenido de un JWT
349
- * sin verificar su firma ni validez temporal.
350
- */
351
- static async RunJwtTokenParser() {
352
- console.log("=== 🧪 JwtTokenParser Example ===\n");
353
- // 1️⃣ Crear una instancia del codificador Base64URL y del parser
354
- const encoder = new encoders_1.Base64UrlEncoder();
355
- const parser = new jwt_1.JwtTokenParser(encoder);
356
- console.log("→ Instancia de JwtTokenParser creada correctamente.\n");
357
- // 2️⃣ Definir un JWT de ejemplo con header, payload y signature
358
- const header = encoder.encode(JSON.stringify({ alg: "HS256", typ: "JWT" }));
359
- const payload = encoder.encode(JSON.stringify({ sub: "12345", role: "admin", exp: 1700000000 }));
360
- const signature = "signatureExamplePart";
361
- const token = `${header}.${payload}.${signature}`;
362
- console.log("→ Token de ejemplo generado:");
363
- console.log(token + "\n");
364
- // 3️⃣ Extraer las partes del token (header, payload, signature)
365
- const [h, p, s] = parser.extractParts(token);
366
- console.log("→ Partes extraídas del token:");
367
- console.log(" Header:", h);
368
- console.log(" Payload:", p);
369
- console.log(" Signature:", s, "\n");
370
- // 4️⃣ Decodificar y parsear el payload sin validar
371
- try {
372
- const decoded = parser.parsePayload(token);
373
- console.log("✅ Payload decodificado (sin validación):");
374
- console.log(decoded, "\n");
375
- }
376
- catch (err) {
377
- console.error("❌ Error al decodificar el payload:", err, "\n");
378
- }
379
- // 5️⃣ Validar estrictamente el payload (debe ser JSON válido y tipo objeto)
380
- try {
381
- const strictPayload = parser.parseAndValidatePayload(p);
382
- console.log("✅ Payload validado correctamente:");
383
- console.log(strictPayload, "\n");
384
- }
385
- catch (err) {
386
- if (err instanceof errors_1.InvalidTokenFormatError) {
387
- console.warn(`⚠️ Token inválido: ${err.message}\n`);
388
- }
389
- else {
390
- console.error("❌ Error inesperado:", err, "\n");
391
- }
392
- }
393
- // 6️⃣ Probar con un payload inválido para mostrar el control de errores
394
- const badPayload = encoder.encode("not-json-text");
395
- try {
396
- parser.parseAndValidatePayload(badPayload);
397
- console.log("❌ Esto no debería imprimirse: el payload es inválido.");
398
- }
399
- catch (err) {
400
- console.warn("⚠️ Ejemplo de error capturado correctamente:");
401
- console.warn(err.message, "\n");
402
- }
403
- // 7️⃣ Resumen final
404
- console.log("=== ✅ Fin del ejemplo JwtTokenParser ===");
405
- }
406
- /**
407
- * Ejemplo demostrativo de uso de JwtSigner.
408
- * Muestra cómo firmar y verificar el contenido de un JWT
409
- * usando estrategias criptográficas provistas por SignatureStrategyFactory.
410
- */
411
- static async RunJwtSigner() {
412
- console.log("=== 🧪 JwtSigner Example ===\n");
413
- // 1️⃣ Crear el codificador Base64URL y la instancia de JwtSigner
414
- const encoder = new encoders_1.Base64UrlEncoder();
415
- const signer = new jwt_1.JwtSigner(encoder);
416
- console.log("→ Instancia de JwtSigner creada correctamente.\n");
417
- // 2️⃣ Definir los datos base del JWT (header.payload)
418
- const header = encoder.encode(JSON.stringify({ alg: "HS256", typ: "JWT" }));
419
- const payload = encoder.encode(JSON.stringify({ sub: "12345", role: "admin" }));
420
- const data = `${header}.${payload}`;
421
- console.log("→ Datos a firmar (header.payload):");
422
- console.log(data, "\n");
423
- // 3️⃣ Definir una clave secreta y el algoritmo a usar
424
- const key = "mi-clave-secreta-supersegura";
425
- const algorithm = constants_1.algorithms.hmac.HS256;
426
- console.log(`→ Algoritmo seleccionado: ${algorithm}`);
427
- console.log(`→ Clave: ${key}\n`);
428
- // 4️⃣ Firmar los datos usando el algoritmo seleccionado
429
- try {
430
- const signature = signer.sign(data, key, algorithm);
431
- console.log("✅ Firma generada correctamente:");
432
- console.log(signature, "\n");
433
- // 5️⃣ Verificar la firma generada
434
- const isValid = signer.verifySignature(data, signature, key, algorithm);
435
- console.log(`→ Resultado de verificación con clave correcta: ${isValid ? "válida ✅" : "inválida ❌"}\n`);
436
- // 6️⃣ Probar verificación con una clave incorrecta
437
- const isInvalid = signer.verifySignature(data, signature, "otra-clave", algorithm);
438
- console.log(`→ Resultado de verificación con clave incorrecta: ${isInvalid ? "válida ❌" : "inválida ✅"}\n`);
439
- }
440
- catch (err) {
441
- console.error("❌ Error al firmar o verificar:", err, "\n");
442
- }
443
- // 7️⃣ Resumen final
444
- console.log("=== ✅ Fin del ejemplo JwtSigner ===");
445
- }
446
- }
447
- exports.JwtAlgoritmExample = JwtAlgoritmExample;
@@ -1,6 +0,0 @@
1
- /**
2
- * Ejemplo demostrativo del uso de JwtTokenGenerator
3
- */
4
- export declare class JwtTokenGeneratorExample {
5
- static Main(): Promise<void>;
6
- }