@eva_solutions/auth-sdk 0.0.0-stage → 3.0.0-dev-20261109133200

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 (205) hide show
  1. package/CHANGELOG.md +290 -0
  2. package/LICENSE +21 -0
  3. package/README.md +481 -2
  4. package/dist/admin/index.cjs +4 -0
  5. package/dist/admin/index.d.cts +2 -0
  6. package/dist/admin/index.d.ts +2 -0
  7. package/dist/admin/index.js +1 -0
  8. package/dist/admin-DjvuvuI8.js +408 -0
  9. package/dist/admin-DjvuvuI8.js.map +1 -0
  10. package/dist/admin-Q6lbWqLM.cjs +419 -0
  11. package/dist/admin-Q6lbWqLM.cjs.map +1 -0
  12. package/dist/api-path-2Ulruz7R.cjs +34 -0
  13. package/dist/api-path-2Ulruz7R.cjs.map +1 -0
  14. package/dist/api-path-B-vSkL2H.js +29 -0
  15. package/dist/api-path-B-vSkL2H.js.map +1 -0
  16. package/dist/auth-19r-Q6X2.js +84 -0
  17. package/dist/auth-19r-Q6X2.js.map +1 -0
  18. package/dist/auth-DX1N5JA4.cjs +131 -0
  19. package/dist/auth-DX1N5JA4.cjs.map +1 -0
  20. package/dist/auth-handlers-B3iJaPln.js +343 -0
  21. package/dist/auth-handlers-B3iJaPln.js.map +1 -0
  22. package/dist/auth-handlers-BTbXKJms.d.ts +15 -0
  23. package/dist/auth-handlers-BTbXKJms.d.ts.map +1 -0
  24. package/dist/auth-handlers-CDzGFDTu.cjs +404 -0
  25. package/dist/auth-handlers-CDzGFDTu.cjs.map +1 -0
  26. package/dist/auth-handlers-DRUUTEtW.d.cts +15 -0
  27. package/dist/auth-handlers-DRUUTEtW.d.cts.map +1 -0
  28. package/dist/catalog-CHPqldcj.cjs +172 -0
  29. package/dist/catalog-CHPqldcj.cjs.map +1 -0
  30. package/dist/catalog-CIqpzgsM.d.cts +75 -0
  31. package/dist/catalog-CIqpzgsM.d.cts.map +1 -0
  32. package/dist/catalog-CIqpzgsM.d.ts +75 -0
  33. package/dist/catalog-CIqpzgsM.d.ts.map +1 -0
  34. package/dist/catalog-DqPhtCKZ.js +95 -0
  35. package/dist/catalog-DqPhtCKZ.js.map +1 -0
  36. package/dist/config-3avoUa9e.d.cts +95 -0
  37. package/dist/config-3avoUa9e.d.cts.map +1 -0
  38. package/dist/config-COX7rGAP.d.ts +95 -0
  39. package/dist/config-COX7rGAP.d.ts.map +1 -0
  40. package/dist/constants-BE1_9Tod.cjs +52 -0
  41. package/dist/constants-BE1_9Tod.cjs.map +1 -0
  42. package/dist/constants-BY7QZokc.js +29 -0
  43. package/dist/constants-BY7QZokc.js.map +1 -0
  44. package/dist/constants-CcbhOaAP.cjs +153 -0
  45. package/dist/constants-CcbhOaAP.cjs.map +1 -0
  46. package/dist/constants-rNuD5qJn.js +94 -0
  47. package/dist/constants-rNuD5qJn.js.map +1 -0
  48. package/dist/contracts/index.cjs +1006 -0
  49. package/dist/contracts/index.cjs.map +1 -0
  50. package/dist/contracts/index.d.cts +488 -0
  51. package/dist/contracts/index.d.cts.map +1 -0
  52. package/dist/contracts/index.d.ts +488 -0
  53. package/dist/contracts/index.d.ts.map +1 -0
  54. package/dist/contracts/index.js +817 -0
  55. package/dist/contracts/index.js.map +1 -0
  56. package/dist/cookies-DCIcr7uy.cjs +94 -0
  57. package/dist/cookies-DCIcr7uy.cjs.map +1 -0
  58. package/dist/cookies-DKEC7AWv.js +71 -0
  59. package/dist/cookies-DKEC7AWv.js.map +1 -0
  60. package/dist/delegated-token-CVNbMNfy.js +426 -0
  61. package/dist/delegated-token-CVNbMNfy.js.map +1 -0
  62. package/dist/delegated-token-DHSK4rHI.cjs +461 -0
  63. package/dist/delegated-token-DHSK4rHI.cjs.map +1 -0
  64. package/dist/error-helpers-0woh13Wd.d.cts +105 -0
  65. package/dist/error-helpers-0woh13Wd.d.cts.map +1 -0
  66. package/dist/error-helpers-Ct3AUK1I.d.ts +105 -0
  67. package/dist/error-helpers-Ct3AUK1I.d.ts.map +1 -0
  68. package/dist/error-helpers-XCh4ZJ-g.cjs +282 -0
  69. package/dist/error-helpers-XCh4ZJ-g.cjs.map +1 -0
  70. package/dist/error-helpers-lnwgNOw9.js +145 -0
  71. package/dist/error-helpers-lnwgNOw9.js.map +1 -0
  72. package/dist/error-messages-CGpW1fsg.d.cts +48 -0
  73. package/dist/error-messages-CGpW1fsg.d.cts.map +1 -0
  74. package/dist/error-messages-CGpW1fsg.d.ts +48 -0
  75. package/dist/error-messages-CGpW1fsg.d.ts.map +1 -0
  76. package/dist/event-codes-BBJHon-I.cjs +48 -0
  77. package/dist/event-codes-BBJHon-I.cjs.map +1 -0
  78. package/dist/event-codes-BgcJWsov.d.cts +42 -0
  79. package/dist/event-codes-BgcJWsov.d.cts.map +1 -0
  80. package/dist/event-codes-BgcJWsov.d.ts +42 -0
  81. package/dist/event-codes-BgcJWsov.d.ts.map +1 -0
  82. package/dist/event-codes-DR5_VlaR.js +43 -0
  83. package/dist/event-codes-DR5_VlaR.js.map +1 -0
  84. package/dist/generic/index.cjs +91 -0
  85. package/dist/generic/index.cjs.map +1 -0
  86. package/dist/generic/index.d.cts +27 -0
  87. package/dist/generic/index.d.cts.map +1 -0
  88. package/dist/generic/index.d.ts +27 -0
  89. package/dist/generic/index.d.ts.map +1 -0
  90. package/dist/generic/index.js +80 -0
  91. package/dist/generic/index.js.map +1 -0
  92. package/dist/hono/index.cjs +309 -0
  93. package/dist/hono/index.cjs.map +1 -0
  94. package/dist/hono/index.d.cts +272 -0
  95. package/dist/hono/index.d.cts.map +1 -0
  96. package/dist/hono/index.d.ts +272 -0
  97. package/dist/hono/index.d.ts.map +1 -0
  98. package/dist/hono/index.js +290 -0
  99. package/dist/hono/index.js.map +1 -0
  100. package/dist/hono-openapi/index.cjs +326 -0
  101. package/dist/hono-openapi/index.cjs.map +1 -0
  102. package/dist/hono-openapi/index.d.cts +14 -0
  103. package/dist/hono-openapi/index.d.cts.map +1 -0
  104. package/dist/hono-openapi/index.d.ts +14 -0
  105. package/dist/hono-openapi/index.d.ts.map +1 -0
  106. package/dist/hono-openapi/index.js +307 -0
  107. package/dist/hono-openapi/index.js.map +1 -0
  108. package/dist/http-client-BVF3iktR.cjs +211 -0
  109. package/dist/http-client-BVF3iktR.cjs.map +1 -0
  110. package/dist/http-client-Da0-OMfc.js +206 -0
  111. package/dist/http-client-Da0-OMfc.js.map +1 -0
  112. package/dist/index-CIH_2t7Y.d.ts +240 -0
  113. package/dist/index-CIH_2t7Y.d.ts.map +1 -0
  114. package/dist/index-CZru7c5T.d.cts +1711 -0
  115. package/dist/index-CZru7c5T.d.cts.map +1 -0
  116. package/dist/index-CZru7c5T.d.ts +1711 -0
  117. package/dist/index-CZru7c5T.d.ts.map +1 -0
  118. package/dist/index-DMVe5IJA.d.cts +240 -0
  119. package/dist/index-DMVe5IJA.d.cts.map +1 -0
  120. package/dist/index-DRWKobSp.d.ts +312 -0
  121. package/dist/index-DRWKobSp.d.ts.map +1 -0
  122. package/dist/index-DU9wJ-P2.d.cts +312 -0
  123. package/dist/index-DU9wJ-P2.d.cts.map +1 -0
  124. package/dist/index-DbiXllNy.d.cts +66 -0
  125. package/dist/index-DbiXllNy.d.cts.map +1 -0
  126. package/dist/index-z9r98qlk.d.ts +66 -0
  127. package/dist/index-z9r98qlk.d.ts.map +1 -0
  128. package/dist/index.cjs +89 -0
  129. package/dist/index.cjs.map +1 -0
  130. package/dist/index.d.cts +114 -0
  131. package/dist/index.d.cts.map +1 -0
  132. package/dist/index.d.ts +114 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +28 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/jwt-BBNqk0TV.cjs +155 -0
  137. package/dist/jwt-BBNqk0TV.cjs.map +1 -0
  138. package/dist/jwt-DhqgH94B.js +150 -0
  139. package/dist/jwt-DhqgH94B.js.map +1 -0
  140. package/dist/key-resolver-CESqj4-P.cjs +45 -0
  141. package/dist/key-resolver-CESqj4-P.cjs.map +1 -0
  142. package/dist/key-resolver-D56I2Zpz.js +34 -0
  143. package/dist/key-resolver-D56I2Zpz.js.map +1 -0
  144. package/dist/parse-error-response-6qOQS5y9.cjs +316 -0
  145. package/dist/parse-error-response-6qOQS5y9.cjs.map +1 -0
  146. package/dist/parse-error-response-BM9-kjs0.js +239 -0
  147. package/dist/parse-error-response-BM9-kjs0.js.map +1 -0
  148. package/dist/path-segment-C25i6aaH.cjs +29 -0
  149. package/dist/path-segment-C25i6aaH.cjs.map +1 -0
  150. package/dist/path-segment-CyqnaFrP.js +24 -0
  151. package/dist/path-segment-CyqnaFrP.js.map +1 -0
  152. package/dist/react/index.cjs +336 -0
  153. package/dist/react/index.cjs.map +1 -0
  154. package/dist/react/index.d.cts +151 -0
  155. package/dist/react/index.d.cts.map +1 -0
  156. package/dist/react/index.d.ts +151 -0
  157. package/dist/react/index.d.ts.map +1 -0
  158. package/dist/react/index.js +300 -0
  159. package/dist/react/index.js.map +1 -0
  160. package/dist/refresh-dedup-CKaHHe7m.js +14 -0
  161. package/dist/refresh-dedup-CKaHHe7m.js.map +1 -0
  162. package/dist/refresh-dedup-CLdACQXR.cjs +19 -0
  163. package/dist/refresh-dedup-CLdACQXR.cjs.map +1 -0
  164. package/dist/rolldown-runtime-CmQyd0Gu.cjs +27 -0
  165. package/dist/routes-DpAzgY1V.cjs +424 -0
  166. package/dist/routes-DpAzgY1V.cjs.map +1 -0
  167. package/dist/routes-F1g5aVqP.js +347 -0
  168. package/dist/routes-F1g5aVqP.js.map +1 -0
  169. package/dist/s2s/index.cjs +24 -0
  170. package/dist/s2s/index.d.cts +5 -0
  171. package/dist/s2s/index.d.ts +5 -0
  172. package/dist/s2s/index.js +5 -0
  173. package/dist/s2s-6wbotr78.cjs +926 -0
  174. package/dist/s2s-6wbotr78.cjs.map +1 -0
  175. package/dist/s2s-B_0SIQzn.js +897 -0
  176. package/dist/s2s-B_0SIQzn.js.map +1 -0
  177. package/dist/sign-C7y6xdvT.cjs +324 -0
  178. package/dist/sign-C7y6xdvT.cjs.map +1 -0
  179. package/dist/sign-HFtcYwa-.js +259 -0
  180. package/dist/sign-HFtcYwa-.js.map +1 -0
  181. package/dist/tokens-C1nzkn21.cjs +232 -0
  182. package/dist/tokens-C1nzkn21.cjs.map +1 -0
  183. package/dist/tokens-C3Z40qd7.js +107 -0
  184. package/dist/tokens-C3Z40qd7.js.map +1 -0
  185. package/dist/types-Ai3iIFlB.d.cts +538 -0
  186. package/dist/types-Ai3iIFlB.d.cts.map +1 -0
  187. package/dist/types-Bxg4hCMc.d.cts +52 -0
  188. package/dist/types-Bxg4hCMc.d.cts.map +1 -0
  189. package/dist/types-CEABh1Zf.d.ts +96 -0
  190. package/dist/types-CEABh1Zf.d.ts.map +1 -0
  191. package/dist/types-Ci0Jq0xB.d.cts +96 -0
  192. package/dist/types-Ci0Jq0xB.d.cts.map +1 -0
  193. package/dist/types-DXg8BvEh.d.ts +52 -0
  194. package/dist/types-DXg8BvEh.d.ts.map +1 -0
  195. package/dist/types-_zY7QbM5.d.ts +538 -0
  196. package/dist/types-_zY7QbM5.d.ts.map +1 -0
  197. package/dist/webhooks/index.cjs +8 -0
  198. package/dist/webhooks/index.d.cts +5 -0
  199. package/dist/webhooks/index.d.ts +5 -0
  200. package/dist/webhooks/index.js +4 -0
  201. package/dist/webhooks-B5sAWC9W.js +74 -0
  202. package/dist/webhooks-B5sAWC9W.js.map +1 -0
  203. package/dist/webhooks-Cx11psg1.cjs +79 -0
  204. package/dist/webhooks-Cx11psg1.cjs.map +1 -0
  205. package/package.json +192 -3
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Mensajes de error del SDK — fuente de verdad centralizada.
3
+ * Standalone: NO importa de config.ts (evita ciclo de dependencias).
4
+ * La validación runtime de overrides vive en config.ts (usa Zod).
5
+ */
6
+ interface EvaErrorMessages {
7
+ /** Auth requerida (middleware 401 sin token). */
8
+ authRequired: string;
9
+ /** Token inválido (signature/format). */
10
+ tokenInvalid: string;
11
+ /** Token expirado. */
12
+ tokenExpired: string;
13
+ /** Claims del token no cumplen schema extra. */
14
+ tokenClaimsInvalid: string;
15
+ /** Token de acceso/refresh no presente en cookies. */
16
+ tokenNotFound: string;
17
+ /** Verify falló después de refresh exitoso. Soporta placeholder {0} para el inner error. */
18
+ verifyFailedAfterRefresh: string;
19
+ /** Refresh OK pero servidor no devolvió tokens. */
20
+ refreshNoNewTokens: string;
21
+ /** Refresh token falló. */
22
+ refreshFailed: string;
23
+ /** Login con credenciales inválidas. */
24
+ loginFailed: string;
25
+ /** Registro falló. */
26
+ registrationFailed: string;
27
+ /** Logout falló. */
28
+ logoutFailed: string;
29
+ /** JSON malformado en body. */
30
+ invalidJsonBody: string;
31
+ /** Schema validation falló sobre teléfono. */
32
+ invalidPhone: string;
33
+ /** Body de PATCH /me vacío o inválido. */
34
+ invalidUpdateBody: string;
35
+ /** sessionId malformado en /sessions/:id. */
36
+ sessionInvalid: string;
37
+ /** Mutación con `Origin` fuera de los orígenes permitidos (403). */
38
+ originNotAllowed: string;
39
+ /** Error interno (500) cuando se expone al cliente. */
40
+ internalError: string;
41
+ }
42
+ /**
43
+ * Defaults regression-locked: strings exactos que el SDK escribe hoy.
44
+ * Frozen para prevenir mutación accidental entre tests/requests.
45
+ */
46
+ declare const DEFAULT_ERROR_MESSAGES: Readonly<EvaErrorMessages>;
47
+ export { EvaErrorMessages as n, DEFAULT_ERROR_MESSAGES as t };
48
+ //# sourceMappingURL=error-messages-CGpW1fsg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-messages-CGpW1fsg.d.ts","names":[],"sources":["../src/error-messages.ts"],"mappings":";;;;;UAMiB;;EAGf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAGA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAGA;;;;;;cAOW,wBAAwB,SAAS"}
@@ -0,0 +1,48 @@
1
+ // ../auth-contracts/dist/event-codes.js
2
+ /**
3
+ * PURE module: it must never reference `zod` or any schema module of this package (see
4
+ * `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every
5
+ * feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event
6
+ * codes here keeps them out of the browser bundle.
7
+ */
8
+ /**
9
+ * Event codes of the webhooks the service emits. Each key is the upper-case form of its value
10
+ * (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.
11
+ */
12
+ const EVENT_CODES = {
13
+ USER_CREATED: "user.created",
14
+ USER_VERIFIED: "user.verified",
15
+ USER_LOGIN_SUCCESS: "user.login_success",
16
+ USER_LOGIN_FAILED: "user.login_failed",
17
+ SESSION_CREATED: "session.created",
18
+ SESSION_DELETED: "session.deleted",
19
+ SESSION_DELETED_ALL: "session.deleted_all",
20
+ USER_PROFILE_UPDATED: "user.profile_updated",
21
+ USER_DELETED: "user.deleted",
22
+ USER_RESTORED: "user.restored",
23
+ USER_HARD_DELETED: "user.hard_deleted",
24
+ EMPRESA_CREATED: "empresa.created",
25
+ EMPRESA_MEMBER_ADDED: "empresa.member_added",
26
+ EMPRESA_MEMBER_REMOVED: "empresa.member_removed",
27
+ EMPRESA_BRANCH_CREATED: "empresa.branch_created",
28
+ EMPRESA_UPDATED: "empresa.updated",
29
+ EMPRESA_DEACTIVATED: "empresa.deactivated",
30
+ EMPRESA_REACTIVATED: "empresa.reactivated",
31
+ EMPRESA_MEMBER_ROLE_CHANGED: "empresa.member_role_changed",
32
+ EMPRESA_BRANCH_UPDATED: "empresa.branch_updated",
33
+ EMPRESA_BRANCH_DEACTIVATED: "empresa.branch_deactivated",
34
+ EMPRESA_PRODUCT_CHANGED: "empresa.product_changed",
35
+ GRUPO_UPDATED: "grupo.updated",
36
+ GRUPO_MEMBER_ADDED: "grupo.member_added",
37
+ GRUPO_MEMBER_REMOVED: "grupo.member_removed",
38
+ AUTORIZACION_GRANTED: "autorizacion.granted",
39
+ AUTORIZACION_REVOKED: "autorizacion.revoked"
40
+ };
41
+ Object.defineProperty(exports, "EVENT_CODES", {
42
+ enumerable: true,
43
+ get: function() {
44
+ return EVENT_CODES;
45
+ }
46
+ });
47
+
48
+ //# sourceMappingURL=event-codes-BBJHon-I.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-codes-BBJHon-I.cjs","names":[],"sources":["../../auth-contracts/dist/event-codes.js"],"sourcesContent":["// src/event-codes.ts\n/**\n* PURE module: it must never reference `zod` or any schema module of this package (see\n* `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every\n* feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event\n* codes here keeps them out of the browser bundle.\n*/\n/**\n* Event codes of the webhooks the service emits. Each key is the upper-case form of its value\n* (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.\n*/\nconst EVENT_CODES = {\n\tUSER_CREATED: \"user.created\",\n\tUSER_VERIFIED: \"user.verified\",\n\tUSER_LOGIN_SUCCESS: \"user.login_success\",\n\tUSER_LOGIN_FAILED: \"user.login_failed\",\n\tSESSION_CREATED: \"session.created\",\n\tSESSION_DELETED: \"session.deleted\",\n\tSESSION_DELETED_ALL: \"session.deleted_all\",\n\tUSER_PROFILE_UPDATED: \"user.profile_updated\",\n\tUSER_DELETED: \"user.deleted\",\n\tUSER_RESTORED: \"user.restored\",\n\tUSER_HARD_DELETED: \"user.hard_deleted\",\n\tEMPRESA_CREATED: \"empresa.created\",\n\tEMPRESA_MEMBER_ADDED: \"empresa.member_added\",\n\tEMPRESA_MEMBER_REMOVED: \"empresa.member_removed\",\n\tEMPRESA_BRANCH_CREATED: \"empresa.branch_created\",\n\tEMPRESA_UPDATED: \"empresa.updated\",\n\tEMPRESA_DEACTIVATED: \"empresa.deactivated\",\n\tEMPRESA_REACTIVATED: \"empresa.reactivated\",\n\tEMPRESA_MEMBER_ROLE_CHANGED: \"empresa.member_role_changed\",\n\tEMPRESA_BRANCH_UPDATED: \"empresa.branch_updated\",\n\tEMPRESA_BRANCH_DEACTIVATED: \"empresa.branch_deactivated\",\n\tEMPRESA_PRODUCT_CHANGED: \"empresa.product_changed\",\n\tGRUPO_UPDATED: \"grupo.updated\",\n\tGRUPO_MEMBER_ADDED: \"grupo.member_added\",\n\tGRUPO_MEMBER_REMOVED: \"grupo.member_removed\",\n\tAUTORIZACION_GRANTED: \"autorizacion.granted\",\n\tAUTORIZACION_REVOKED: \"autorizacion.revoked\"\n};\nexport { EVENT_CODES };\n\n//# sourceMappingURL=event-codes.js.map"],"mappings":";;;;;;;;;;;AAWA,MAAM,cAAc;CACnB,cAAc;CACd,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,cAAc;CACd,eAAe;CACf,mBAAmB;CACnB,iBAAiB;CACjB,sBAAsB;CACtB,wBAAwB;CACxB,wBAAwB;CACxB,iBAAiB;CACjB,qBAAqB;CACrB,qBAAqB;CACrB,6BAA6B;CAC7B,wBAAwB;CACxB,4BAA4B;CAC5B,yBAAyB;CACzB,eAAe;CACf,oBAAoB;CACpB,sBAAsB;CACtB,sBAAsB;CACtB,sBAAsB;AACvB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * PURE module: it must never reference `zod` or any schema module of this package (see
3
+ * `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every
4
+ * feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event
5
+ * codes here keeps them out of the browser bundle.
6
+ */
7
+ /**
8
+ * Event codes of the webhooks the service emits. Each key is the upper-case form of its value
9
+ * (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.
10
+ */
11
+ declare const EVENT_CODES: {
12
+ readonly USER_CREATED: "user.created";
13
+ readonly USER_VERIFIED: "user.verified";
14
+ readonly USER_LOGIN_SUCCESS: "user.login_success";
15
+ readonly USER_LOGIN_FAILED: "user.login_failed";
16
+ readonly SESSION_CREATED: "session.created";
17
+ readonly SESSION_DELETED: "session.deleted";
18
+ readonly SESSION_DELETED_ALL: "session.deleted_all";
19
+ readonly USER_PROFILE_UPDATED: "user.profile_updated";
20
+ readonly USER_DELETED: "user.deleted";
21
+ readonly USER_RESTORED: "user.restored";
22
+ readonly USER_HARD_DELETED: "user.hard_deleted";
23
+ readonly EMPRESA_CREATED: "empresa.created";
24
+ readonly EMPRESA_MEMBER_ADDED: "empresa.member_added";
25
+ readonly EMPRESA_MEMBER_REMOVED: "empresa.member_removed";
26
+ readonly EMPRESA_BRANCH_CREATED: "empresa.branch_created";
27
+ readonly EMPRESA_UPDATED: "empresa.updated";
28
+ readonly EMPRESA_DEACTIVATED: "empresa.deactivated";
29
+ readonly EMPRESA_REACTIVATED: "empresa.reactivated";
30
+ readonly EMPRESA_MEMBER_ROLE_CHANGED: "empresa.member_role_changed";
31
+ readonly EMPRESA_BRANCH_UPDATED: "empresa.branch_updated";
32
+ readonly EMPRESA_BRANCH_DEACTIVATED: "empresa.branch_deactivated";
33
+ readonly EMPRESA_PRODUCT_CHANGED: "empresa.product_changed";
34
+ readonly GRUPO_UPDATED: "grupo.updated";
35
+ readonly GRUPO_MEMBER_ADDED: "grupo.member_added";
36
+ readonly GRUPO_MEMBER_REMOVED: "grupo.member_removed";
37
+ readonly AUTORIZACION_GRANTED: "autorizacion.granted";
38
+ readonly AUTORIZACION_REVOKED: "autorizacion.revoked";
39
+ };
40
+ type EventCode = (typeof EVENT_CODES)[keyof typeof EVENT_CODES];
41
+ export { EventCode as n, EVENT_CODES as t };
42
+ //# sourceMappingURL=event-codes-BgcJWsov.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-codes-BgcJWsov.d.cts","names":[],"sources":["../../auth-contracts/dist/event-codes.d.ts"],"mappings":";;;;;;;;;;cAUc;WACH;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEN,oBAAoB,0BAA0B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * PURE module: it must never reference `zod` or any schema module of this package (see
3
+ * `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every
4
+ * feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event
5
+ * codes here keeps them out of the browser bundle.
6
+ */
7
+ /**
8
+ * Event codes of the webhooks the service emits. Each key is the upper-case form of its value
9
+ * (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.
10
+ */
11
+ declare const EVENT_CODES: {
12
+ readonly USER_CREATED: "user.created";
13
+ readonly USER_VERIFIED: "user.verified";
14
+ readonly USER_LOGIN_SUCCESS: "user.login_success";
15
+ readonly USER_LOGIN_FAILED: "user.login_failed";
16
+ readonly SESSION_CREATED: "session.created";
17
+ readonly SESSION_DELETED: "session.deleted";
18
+ readonly SESSION_DELETED_ALL: "session.deleted_all";
19
+ readonly USER_PROFILE_UPDATED: "user.profile_updated";
20
+ readonly USER_DELETED: "user.deleted";
21
+ readonly USER_RESTORED: "user.restored";
22
+ readonly USER_HARD_DELETED: "user.hard_deleted";
23
+ readonly EMPRESA_CREATED: "empresa.created";
24
+ readonly EMPRESA_MEMBER_ADDED: "empresa.member_added";
25
+ readonly EMPRESA_MEMBER_REMOVED: "empresa.member_removed";
26
+ readonly EMPRESA_BRANCH_CREATED: "empresa.branch_created";
27
+ readonly EMPRESA_UPDATED: "empresa.updated";
28
+ readonly EMPRESA_DEACTIVATED: "empresa.deactivated";
29
+ readonly EMPRESA_REACTIVATED: "empresa.reactivated";
30
+ readonly EMPRESA_MEMBER_ROLE_CHANGED: "empresa.member_role_changed";
31
+ readonly EMPRESA_BRANCH_UPDATED: "empresa.branch_updated";
32
+ readonly EMPRESA_BRANCH_DEACTIVATED: "empresa.branch_deactivated";
33
+ readonly EMPRESA_PRODUCT_CHANGED: "empresa.product_changed";
34
+ readonly GRUPO_UPDATED: "grupo.updated";
35
+ readonly GRUPO_MEMBER_ADDED: "grupo.member_added";
36
+ readonly GRUPO_MEMBER_REMOVED: "grupo.member_removed";
37
+ readonly AUTORIZACION_GRANTED: "autorizacion.granted";
38
+ readonly AUTORIZACION_REVOKED: "autorizacion.revoked";
39
+ };
40
+ type EventCode = (typeof EVENT_CODES)[keyof typeof EVENT_CODES];
41
+ export { EventCode as n, EVENT_CODES as t };
42
+ //# sourceMappingURL=event-codes-BgcJWsov.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-codes-BgcJWsov.d.ts","names":[],"sources":["../../auth-contracts/dist/event-codes.d.ts"],"mappings":";;;;;;;;;;cAUc;WACH;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEN,oBAAoB,0BAA0B"}
@@ -0,0 +1,43 @@
1
+ // ../auth-contracts/dist/event-codes.js
2
+ /**
3
+ * PURE module: it must never reference `zod` or any schema module of this package (see
4
+ * `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every
5
+ * feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event
6
+ * codes here keeps them out of the browser bundle.
7
+ */
8
+ /**
9
+ * Event codes of the webhooks the service emits. Each key is the upper-case form of its value
10
+ * (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.
11
+ */
12
+ const EVENT_CODES = {
13
+ USER_CREATED: "user.created",
14
+ USER_VERIFIED: "user.verified",
15
+ USER_LOGIN_SUCCESS: "user.login_success",
16
+ USER_LOGIN_FAILED: "user.login_failed",
17
+ SESSION_CREATED: "session.created",
18
+ SESSION_DELETED: "session.deleted",
19
+ SESSION_DELETED_ALL: "session.deleted_all",
20
+ USER_PROFILE_UPDATED: "user.profile_updated",
21
+ USER_DELETED: "user.deleted",
22
+ USER_RESTORED: "user.restored",
23
+ USER_HARD_DELETED: "user.hard_deleted",
24
+ EMPRESA_CREATED: "empresa.created",
25
+ EMPRESA_MEMBER_ADDED: "empresa.member_added",
26
+ EMPRESA_MEMBER_REMOVED: "empresa.member_removed",
27
+ EMPRESA_BRANCH_CREATED: "empresa.branch_created",
28
+ EMPRESA_UPDATED: "empresa.updated",
29
+ EMPRESA_DEACTIVATED: "empresa.deactivated",
30
+ EMPRESA_REACTIVATED: "empresa.reactivated",
31
+ EMPRESA_MEMBER_ROLE_CHANGED: "empresa.member_role_changed",
32
+ EMPRESA_BRANCH_UPDATED: "empresa.branch_updated",
33
+ EMPRESA_BRANCH_DEACTIVATED: "empresa.branch_deactivated",
34
+ EMPRESA_PRODUCT_CHANGED: "empresa.product_changed",
35
+ GRUPO_UPDATED: "grupo.updated",
36
+ GRUPO_MEMBER_ADDED: "grupo.member_added",
37
+ GRUPO_MEMBER_REMOVED: "grupo.member_removed",
38
+ AUTORIZACION_GRANTED: "autorizacion.granted",
39
+ AUTORIZACION_REVOKED: "autorizacion.revoked"
40
+ };
41
+ export { EVENT_CODES as t };
42
+
43
+ //# sourceMappingURL=event-codes-DR5_VlaR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-codes-DR5_VlaR.js","names":[],"sources":["../../auth-contracts/dist/event-codes.js"],"sourcesContent":["// src/event-codes.ts\n/**\n* PURE module: it must never reference `zod` or any schema module of this package (see\n* `constants.ts`). It is apart from `constants.ts` on purpose: the catalog grows with every\n* feature and the SDK `react` entry imports `constants.ts` (header names), so keeping the event\n* codes here keeps them out of the browser bundle.\n*/\n/**\n* Event codes of the webhooks the service emits. Each key is the upper-case form of its value\n* (`user.created` -> `USER_CREATED`); the catalog is closed and the API owns what triggers each one.\n*/\nconst EVENT_CODES = {\n\tUSER_CREATED: \"user.created\",\n\tUSER_VERIFIED: \"user.verified\",\n\tUSER_LOGIN_SUCCESS: \"user.login_success\",\n\tUSER_LOGIN_FAILED: \"user.login_failed\",\n\tSESSION_CREATED: \"session.created\",\n\tSESSION_DELETED: \"session.deleted\",\n\tSESSION_DELETED_ALL: \"session.deleted_all\",\n\tUSER_PROFILE_UPDATED: \"user.profile_updated\",\n\tUSER_DELETED: \"user.deleted\",\n\tUSER_RESTORED: \"user.restored\",\n\tUSER_HARD_DELETED: \"user.hard_deleted\",\n\tEMPRESA_CREATED: \"empresa.created\",\n\tEMPRESA_MEMBER_ADDED: \"empresa.member_added\",\n\tEMPRESA_MEMBER_REMOVED: \"empresa.member_removed\",\n\tEMPRESA_BRANCH_CREATED: \"empresa.branch_created\",\n\tEMPRESA_UPDATED: \"empresa.updated\",\n\tEMPRESA_DEACTIVATED: \"empresa.deactivated\",\n\tEMPRESA_REACTIVATED: \"empresa.reactivated\",\n\tEMPRESA_MEMBER_ROLE_CHANGED: \"empresa.member_role_changed\",\n\tEMPRESA_BRANCH_UPDATED: \"empresa.branch_updated\",\n\tEMPRESA_BRANCH_DEACTIVATED: \"empresa.branch_deactivated\",\n\tEMPRESA_PRODUCT_CHANGED: \"empresa.product_changed\",\n\tGRUPO_UPDATED: \"grupo.updated\",\n\tGRUPO_MEMBER_ADDED: \"grupo.member_added\",\n\tGRUPO_MEMBER_REMOVED: \"grupo.member_removed\",\n\tAUTORIZACION_GRANTED: \"autorizacion.granted\",\n\tAUTORIZACION_REVOKED: \"autorizacion.revoked\"\n};\nexport { EVENT_CODES };\n\n//# sourceMappingURL=event-codes.js.map"],"mappings":";;;;;;;;;;;AAWA,MAAM,cAAc;CACnB,cAAc;CACd,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,cAAc;CACd,eAAe;CACf,mBAAmB;CACnB,iBAAiB;CACjB,sBAAsB;CACtB,wBAAwB;CACxB,wBAAwB;CACxB,iBAAiB;CACjB,qBAAqB;CACrB,qBAAqB;CACrB,6BAA6B;CAC7B,wBAAwB;CACxB,4BAA4B;CAC5B,yBAAyB;CACzB,eAAe;CACf,oBAAoB;CACpB,sBAAsB;CACtB,sBAAsB;CACtB,sBAAsB;AACvB"}
@@ -0,0 +1,91 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_constants = require("../constants-CcbhOaAP.cjs");
3
+ const require_jwt = require("../jwt-BBNqk0TV.cjs");
4
+ const require_cookies = require("../cookies-DCIcr7uy.cjs");
5
+ const require_http_client = require("../http-client-BVF3iktR.cjs");
6
+ const require_refresh_dedup = require("../refresh-dedup-CLdACQXR.cjs");
7
+ const require_parse_error_response = require("../parse-error-response-6qOQS5y9.cjs");
8
+ const require_constants$1 = require("../constants-BE1_9Tod.cjs");
9
+ // src/generic/verify.ts
10
+ const client = require_http_client.createHttpClient();
11
+ /**
12
+ * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de
13
+ * autenticación (401) no lanzan.
14
+ *
15
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue
16
+ * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita
17
+ * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.
18
+ * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar
19
+ * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer
20
+ * la configuración.
21
+ */
22
+ async function verifyRequest(request, opts = {}) {
23
+ if (opts.errorMessages !== void 0) require_parse_error_response.validateErrorMessagesInput(opts.errorMessages);
24
+ const messages = require_parse_error_response.resolveErrorMessages(opts.errorMessages, require_parse_error_response.getErrorMessages());
25
+ const cookieHeader = request.headers.get("cookie");
26
+ const { accessToken, refreshToken } = require_cookies.readTokensFromCookies(cookieHeader);
27
+ if (accessToken) {
28
+ const result = await require_jwt.verifyAccessToken(accessToken, { extraClaimsSchema: opts.extraClaimsSchema });
29
+ if (result.ok) return {
30
+ ok: true,
31
+ data: { payload: result.data }
32
+ };
33
+ }
34
+ if (!refreshToken) return {
35
+ ok: false,
36
+ error: {
37
+ kind: "sdk",
38
+ reason: "auth_required",
39
+ message: messages.authRequired,
40
+ status: 401
41
+ }
42
+ };
43
+ const refreshResult = await require_refresh_dedup.deduplicateRefresh(refreshToken, () => client.refresh({ refreshToken }));
44
+ if (!refreshResult.ok) return {
45
+ ok: false,
46
+ error: refreshResult.error
47
+ };
48
+ const { tokens } = refreshResult.data;
49
+ if (!tokens) return {
50
+ ok: false,
51
+ error: {
52
+ kind: "sdk",
53
+ reason: "refresh_no_tokens",
54
+ message: messages.refreshNoNewTokens,
55
+ status: 401
56
+ }
57
+ };
58
+ const verifyResult = await require_jwt.verifyAccessToken(tokens.accessToken, { extraClaimsSchema: opts.extraClaimsSchema });
59
+ if (!verifyResult.ok) {
60
+ const innerMessage = typeof verifyResult.error === "object" && verifyResult.error !== null && "message" in verifyResult.error ? verifyResult.error.message : String(verifyResult.error);
61
+ return {
62
+ ok: false,
63
+ error: {
64
+ kind: "sdk",
65
+ reason: "verify_failed",
66
+ message: require_parse_error_response.formatMessage(messages.verifyFailedAfterRefresh, innerMessage),
67
+ status: 401
68
+ }
69
+ };
70
+ }
71
+ return {
72
+ ok: true,
73
+ data: {
74
+ payload: verifyResult.data,
75
+ newCookies: require_cookies.setTokenCookies(tokens)
76
+ }
77
+ };
78
+ }
79
+ exports.COOKIE_MAX_AGE = require_constants$1.COOKIE_MAX_AGE;
80
+ exports.DEFAULT_ERROR_MESSAGES = require_parse_error_response.DEFAULT_ERROR_MESSAGES;
81
+ exports.HEADERS = require_constants.HEADERS;
82
+ exports.clearTokenCookies = require_cookies.clearTokenCookies;
83
+ exports.configureEvaAuth = require_parse_error_response.configureEvaAuth;
84
+ exports.getAuthUrl = require_parse_error_response.getAuthUrl;
85
+ exports.getCookieDomain = require_parse_error_response.getCookieDomain;
86
+ exports.getCookieNames = require_constants$1.getCookieNames;
87
+ exports.readTokensFromCookies = require_cookies.readTokensFromCookies;
88
+ exports.setTokenCookies = require_cookies.setTokenCookies;
89
+ exports.verifyRequest = verifyRequest;
90
+
91
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["createHttpClient","resolveErrorMessages","getErrorMessages","readTokensFromCookies","verifyAccessToken","deduplicateRefresh","formatMessage","setTokenCookies"],"sources":["../../src/generic/verify.ts"],"sourcesContent":["import type { ZodType } from 'zod'\nimport { verifyAccessToken } from '../jwt'\nimport { readTokensFromCookies, setTokenCookies } from '../cookies'\nimport { createHttpClient } from '../http-client'\nimport { deduplicateRefresh } from '../refresh-dedup'\nimport type { EvaTokenPayload, Result, EvaSdkError } from '../types'\nimport {\n resolveErrorMessages,\n formatMessage,\n type EvaErrorMessages,\n} from '../error-messages'\nimport { getErrorMessages, validateErrorMessagesInput } from '../config'\n\nexport type VerifyRequestOptions<TExtra extends Record<string, unknown>> = {\n extraClaimsSchema?: ZodType<TExtra>\n errorMessages?: Partial<EvaErrorMessages>\n}\n\ntype VerifyResult<TExtra extends Record<string, unknown>> = {\n payload: EvaTokenPayload<TExtra>\n newCookies?: string[]\n}\n\nconst client = createHttpClient()\n\n/**\n * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de\n * autenticación (401) no lanzan.\n *\n * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue\n * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita\n * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.\n * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar\n * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer\n * la configuración.\n */\nexport async function verifyRequest<\n TExtra extends Record<string, unknown> = {},\n>(\n request: Request,\n opts: VerifyRequestOptions<TExtra> = {},\n): Promise<Result<VerifyResult<TExtra>>> {\n if (opts.errorMessages !== undefined) {\n validateErrorMessagesInput(opts.errorMessages)\n }\n\n const messages = resolveErrorMessages(opts.errorMessages, getErrorMessages())\n const cookieHeader = request.headers.get('cookie')\n const { accessToken, refreshToken } = readTokensFromCookies(cookieHeader)\n\n if (accessToken) {\n const result = await verifyAccessToken<TExtra>(accessToken, {\n extraClaimsSchema: opts.extraClaimsSchema,\n })\n if (result.ok) return { ok: true, data: { payload: result.data } }\n }\n\n // Path: no hay accessToken válido ni refreshToken → auth_required (REQ-SDK-01)\n if (!refreshToken) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'auth_required',\n message: messages.authRequired,\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n const refreshResult = await deduplicateRefresh(refreshToken, () =>\n client.refresh({ refreshToken }),\n )\n\n if (!refreshResult.ok) {\n // Refresh falló con error del API — propagar el error tal cual (EvaApiError o EvaSdkError)\n return { ok: false, error: refreshResult.error }\n }\n\n const { tokens } = refreshResult.data\n\n // Path: refresh OK pero no hay tokens nuevos → refresh_no_tokens (REQ-SDK-03)\n if (!tokens) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'refresh_no_tokens',\n message: messages.refreshNoNewTokens,\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n const verifyResult = await verifyAccessToken<TExtra>(tokens.accessToken, {\n extraClaimsSchema: opts.extraClaimsSchema,\n })\n\n // Path: verify post-refresh falló → verify_failed (REQ-SDK-04, REQ-SDK-05)\n if (!verifyResult.ok) {\n // Obtener mensaje del error (EvaSdkError tiene .message; compatibilidad defensiva para mocks)\n const innerMessage =\n typeof verifyResult.error === 'object' &&\n verifyResult.error !== null &&\n 'message' in verifyResult.error\n ? (verifyResult.error as { message: string }).message\n : String(verifyResult.error)\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'verify_failed',\n message: formatMessage(messages.verifyFailedAfterRefresh, innerMessage),\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n return {\n ok: true,\n data: {\n payload: verifyResult.data,\n newCookies: setTokenCookies(tokens),\n },\n }\n}\n"],"mappings":";;;;;;;;;AAuBA,MAAM,SAASA,oBAAAA,iBAAiB;;;;;;;;;;;;AAahC,eAAsB,cAGpB,SACA,OAAqC,CAAC,GACC;CACvC,IAAI,KAAK,kBAAkB,KAAA,GACzB,6BAAA,2BAA2B,KAAK,aAAa;CAG/C,MAAM,WAAWC,6BAAAA,qBAAqB,KAAK,eAAeC,6BAAAA,iBAAiB,CAAC;CAC5E,MAAM,eAAe,QAAQ,QAAQ,IAAI,QAAQ;CACjD,MAAM,EAAE,aAAa,iBAAiBC,gBAAAA,sBAAsB,YAAY;CAExE,IAAI,aAAa;EACf,MAAM,SAAS,MAAMC,YAAAA,kBAA0B,aAAa,EAC1D,mBAAmB,KAAK,kBAC1B,CAAC;EACD,IAAI,OAAO,IAAI,OAAO;GAAE,IAAI;GAAM,MAAM,EAAE,SAAS,OAAO,KAAK;EAAE;CACnE;CAGA,IAAI,CAAC,cACH,OAAO;EACL,IAAI;EACJ,OAAO;GACL,MAAM;GACN,QAAQ;GACR,SAAS,SAAS;GAClB,QAAQ;EACV;CACF;CAGF,MAAM,gBAAgB,MAAMC,sBAAAA,mBAAmB,oBAC7C,OAAO,QAAQ,EAAE,aAAa,CAAC,CACjC;CAEA,IAAI,CAAC,cAAc,IAEjB,OAAO;EAAE,IAAI;EAAO,OAAO,cAAc;CAAM;CAGjD,MAAM,EAAE,WAAW,cAAc;CAGjC,IAAI,CAAC,QACH,OAAO;EACL,IAAI;EACJ,OAAO;GACL,MAAM;GACN,QAAQ;GACR,SAAS,SAAS;GAClB,QAAQ;EACV;CACF;CAGF,MAAM,eAAe,MAAMD,YAAAA,kBAA0B,OAAO,aAAa,EACvE,mBAAmB,KAAK,kBAC1B,CAAC;CAGD,IAAI,CAAC,aAAa,IAAI;EAEpB,MAAM,eACJ,OAAO,aAAa,UAAU,YAC9B,aAAa,UAAU,QACvB,aAAa,aAAa,QACrB,aAAa,MAA8B,UAC5C,OAAO,aAAa,KAAK;EAC/B,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SAASE,6BAAAA,cAAc,SAAS,0BAA0B,YAAY;IACtE,QAAQ;GACV;EACF;CACF;CAEA,OAAO;EACL,IAAI;EACJ,MAAM;GACJ,SAAS,aAAa;GACtB,YAAYC,gBAAAA,gBAAgB,MAAM;EACpC;CACF;AACF"}
@@ -0,0 +1,27 @@
1
+ import { xi as HEADERS } from "../index-CZru7c5T.cjs";
2
+ import { c as EvaTokenPayload, d as Result } from "../types-Ci0Jq0xB.cjs";
3
+ import { n as EvaErrorMessages, t as DEFAULT_ERROR_MESSAGES } from "../error-messages-CGpW1fsg.cjs";
4
+ import { a as COOKIE_MAX_AGE, c as clearTokenCookies, i as getCookieDomain, l as readTokensFromCookies, n as configureEvaAuth, r as getAuthUrl, s as getCookieNames, t as ConfigureEvaAuthOptions, u as setTokenCookies } from "../config-3avoUa9e.cjs";
5
+ import { ZodType } from "zod";
6
+ type VerifyRequestOptions<TExtra extends Record<string, unknown>> = {
7
+ extraClaimsSchema?: ZodType<TExtra>;
8
+ errorMessages?: Partial<EvaErrorMessages>;
9
+ };
10
+ type VerifyResult<TExtra extends Record<string, unknown>> = {
11
+ payload: EvaTokenPayload<TExtra>;
12
+ newCookies?: string[];
13
+ };
14
+ /**
15
+ * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de
16
+ * autenticación (401) no lanzan.
17
+ *
18
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue
19
+ * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita
20
+ * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.
21
+ * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar
22
+ * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer
23
+ * la configuración.
24
+ */
25
+ declare function verifyRequest<TExtra extends Record<string, unknown> = {}>(request: Request, opts?: VerifyRequestOptions<TExtra>): Promise<Result<VerifyResult<TExtra>>>;
26
+ export { COOKIE_MAX_AGE, type ConfigureEvaAuthOptions, DEFAULT_ERROR_MESSAGES, type EvaErrorMessages, HEADERS, type VerifyRequestOptions, clearTokenCookies, configureEvaAuth, getAuthUrl, getCookieDomain, getCookieNames, readTokensFromCookies, setTokenCookies, verifyRequest };
27
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/generic/verify.ts"],"mappings":";;;;;KAaY,qBAAqB,eAAe;EAC9C,oBAAoB,QAAQ;EAC5B,gBAAgB,QAAQ;;KAGrB,aAAa,eAAe;EAC/B,SAAS,gBAAgB;EACzB;;;;;;;;;;;;;iBAgBoB,cACpB,eAAe,8BAEf,SAAS,SACT,OAAM,qBAAqB,UAC1B,QAAQ,OAAO,aAAa"}
@@ -0,0 +1,27 @@
1
+ import { xi as HEADERS } from "../index-CZru7c5T.js";
2
+ import { c as EvaTokenPayload, d as Result } from "../types-CEABh1Zf.js";
3
+ import { n as EvaErrorMessages, t as DEFAULT_ERROR_MESSAGES } from "../error-messages-CGpW1fsg.js";
4
+ import { a as COOKIE_MAX_AGE, c as clearTokenCookies, i as getCookieDomain, l as readTokensFromCookies, n as configureEvaAuth, r as getAuthUrl, s as getCookieNames, t as ConfigureEvaAuthOptions, u as setTokenCookies } from "../config-COX7rGAP.js";
5
+ import { ZodType } from "zod";
6
+ type VerifyRequestOptions<TExtra extends Record<string, unknown>> = {
7
+ extraClaimsSchema?: ZodType<TExtra>;
8
+ errorMessages?: Partial<EvaErrorMessages>;
9
+ };
10
+ type VerifyResult<TExtra extends Record<string, unknown>> = {
11
+ payload: EvaTokenPayload<TExtra>;
12
+ newCookies?: string[];
13
+ };
14
+ /**
15
+ * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de
16
+ * autenticación (401) no lanzan.
17
+ *
18
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue
19
+ * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita
20
+ * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.
21
+ * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar
22
+ * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer
23
+ * la configuración.
24
+ */
25
+ declare function verifyRequest<TExtra extends Record<string, unknown> = {}>(request: Request, opts?: VerifyRequestOptions<TExtra>): Promise<Result<VerifyResult<TExtra>>>;
26
+ export { COOKIE_MAX_AGE, type ConfigureEvaAuthOptions, DEFAULT_ERROR_MESSAGES, type EvaErrorMessages, HEADERS, type VerifyRequestOptions, clearTokenCookies, configureEvaAuth, getAuthUrl, getCookieDomain, getCookieNames, readTokensFromCookies, setTokenCookies, verifyRequest };
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/generic/verify.ts"],"mappings":";;;;;KAaY,qBAAqB,eAAe;EAC9C,oBAAoB,QAAQ;EAC5B,gBAAgB,QAAQ;;KAGrB,aAAa,eAAe;EAC/B,SAAS,gBAAgB;EACzB;;;;;;;;;;;;;iBAgBoB,cACpB,eAAe,8BAEf,SAAS,SACT,OAAM,qBAAqB,UAC1B,QAAQ,OAAO,aAAa"}
@@ -0,0 +1,80 @@
1
+ import { a as HEADERS } from "../constants-rNuD5qJn.js";
2
+ import { t as verifyAccessToken } from "../jwt-DhqgH94B.js";
3
+ import { i as setTokenCookies, n as readTokensFromCookies, t as clearTokenCookies } from "../cookies-DKEC7AWv.js";
4
+ import { t as createHttpClient } from "../http-client-Da0-OMfc.js";
5
+ import { t as deduplicateRefresh } from "../refresh-dedup-CKaHHe7m.js";
6
+ import { a as getErrorMessages, d as DEFAULT_ERROR_MESSAGES, f as formatMessage, i as getCookieDomain, l as validateErrorMessagesInput, n as configureEvaAuth, p as resolveErrorMessages, r as getAuthUrl } from "../parse-error-response-BM9-kjs0.js";
7
+ import { i as getCookieNames, t as COOKIE_MAX_AGE } from "../constants-BY7QZokc.js";
8
+ // src/generic/verify.ts
9
+ const client = createHttpClient();
10
+ /**
11
+ * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de
12
+ * autenticación (401) no lanzan.
13
+ *
14
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue
15
+ * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita
16
+ * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.
17
+ * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar
18
+ * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer
19
+ * la configuración.
20
+ */
21
+ async function verifyRequest(request, opts = {}) {
22
+ if (opts.errorMessages !== void 0) validateErrorMessagesInput(opts.errorMessages);
23
+ const messages = resolveErrorMessages(opts.errorMessages, getErrorMessages());
24
+ const cookieHeader = request.headers.get("cookie");
25
+ const { accessToken, refreshToken } = readTokensFromCookies(cookieHeader);
26
+ if (accessToken) {
27
+ const result = await verifyAccessToken(accessToken, { extraClaimsSchema: opts.extraClaimsSchema });
28
+ if (result.ok) return {
29
+ ok: true,
30
+ data: { payload: result.data }
31
+ };
32
+ }
33
+ if (!refreshToken) return {
34
+ ok: false,
35
+ error: {
36
+ kind: "sdk",
37
+ reason: "auth_required",
38
+ message: messages.authRequired,
39
+ status: 401
40
+ }
41
+ };
42
+ const refreshResult = await deduplicateRefresh(refreshToken, () => client.refresh({ refreshToken }));
43
+ if (!refreshResult.ok) return {
44
+ ok: false,
45
+ error: refreshResult.error
46
+ };
47
+ const { tokens } = refreshResult.data;
48
+ if (!tokens) return {
49
+ ok: false,
50
+ error: {
51
+ kind: "sdk",
52
+ reason: "refresh_no_tokens",
53
+ message: messages.refreshNoNewTokens,
54
+ status: 401
55
+ }
56
+ };
57
+ const verifyResult = await verifyAccessToken(tokens.accessToken, { extraClaimsSchema: opts.extraClaimsSchema });
58
+ if (!verifyResult.ok) {
59
+ const innerMessage = typeof verifyResult.error === "object" && verifyResult.error !== null && "message" in verifyResult.error ? verifyResult.error.message : String(verifyResult.error);
60
+ return {
61
+ ok: false,
62
+ error: {
63
+ kind: "sdk",
64
+ reason: "verify_failed",
65
+ message: formatMessage(messages.verifyFailedAfterRefresh, innerMessage),
66
+ status: 401
67
+ }
68
+ };
69
+ }
70
+ return {
71
+ ok: true,
72
+ data: {
73
+ payload: verifyResult.data,
74
+ newCookies: setTokenCookies(tokens)
75
+ }
76
+ };
77
+ }
78
+ export { COOKIE_MAX_AGE, DEFAULT_ERROR_MESSAGES, HEADERS, clearTokenCookies, configureEvaAuth, getAuthUrl, getCookieDomain, getCookieNames, readTokensFromCookies, setTokenCookies, verifyRequest };
79
+
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/generic/verify.ts"],"sourcesContent":["import type { ZodType } from 'zod'\nimport { verifyAccessToken } from '../jwt'\nimport { readTokensFromCookies, setTokenCookies } from '../cookies'\nimport { createHttpClient } from '../http-client'\nimport { deduplicateRefresh } from '../refresh-dedup'\nimport type { EvaTokenPayload, Result, EvaSdkError } from '../types'\nimport {\n resolveErrorMessages,\n formatMessage,\n type EvaErrorMessages,\n} from '../error-messages'\nimport { getErrorMessages, validateErrorMessagesInput } from '../config'\n\nexport type VerifyRequestOptions<TExtra extends Record<string, unknown>> = {\n extraClaimsSchema?: ZodType<TExtra>\n errorMessages?: Partial<EvaErrorMessages>\n}\n\ntype VerifyResult<TExtra extends Record<string, unknown>> = {\n payload: EvaTokenPayload<TExtra>\n newCookies?: string[]\n}\n\nconst client = createHttpClient()\n\n/**\n * Verifica una Request (cookies, JWT y auto-refresh) y devuelve un `Result`; los rechazos de\n * autenticación (401) no lanzan.\n *\n * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` no fue\n * configurada con `configureEvaAuth({ authUrl })` y la request trae algún token: se necesita\n * para el JWKS o el refresh. El consumidor debe responder 500, nunca 401 ni limpiar cookies.\n * También lanza si falta `product` y la request trae un header `cookie` (se necesita para nombrar\n * las cookies de sesión). Una request sin header `cookie` devuelve `auth_required` (401) sin leer\n * la configuración.\n */\nexport async function verifyRequest<\n TExtra extends Record<string, unknown> = {},\n>(\n request: Request,\n opts: VerifyRequestOptions<TExtra> = {},\n): Promise<Result<VerifyResult<TExtra>>> {\n if (opts.errorMessages !== undefined) {\n validateErrorMessagesInput(opts.errorMessages)\n }\n\n const messages = resolveErrorMessages(opts.errorMessages, getErrorMessages())\n const cookieHeader = request.headers.get('cookie')\n const { accessToken, refreshToken } = readTokensFromCookies(cookieHeader)\n\n if (accessToken) {\n const result = await verifyAccessToken<TExtra>(accessToken, {\n extraClaimsSchema: opts.extraClaimsSchema,\n })\n if (result.ok) return { ok: true, data: { payload: result.data } }\n }\n\n // Path: no hay accessToken válido ni refreshToken → auth_required (REQ-SDK-01)\n if (!refreshToken) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'auth_required',\n message: messages.authRequired,\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n const refreshResult = await deduplicateRefresh(refreshToken, () =>\n client.refresh({ refreshToken }),\n )\n\n if (!refreshResult.ok) {\n // Refresh falló con error del API — propagar el error tal cual (EvaApiError o EvaSdkError)\n return { ok: false, error: refreshResult.error }\n }\n\n const { tokens } = refreshResult.data\n\n // Path: refresh OK pero no hay tokens nuevos → refresh_no_tokens (REQ-SDK-03)\n if (!tokens) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'refresh_no_tokens',\n message: messages.refreshNoNewTokens,\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n const verifyResult = await verifyAccessToken<TExtra>(tokens.accessToken, {\n extraClaimsSchema: opts.extraClaimsSchema,\n })\n\n // Path: verify post-refresh falló → verify_failed (REQ-SDK-04, REQ-SDK-05)\n if (!verifyResult.ok) {\n // Obtener mensaje del error (EvaSdkError tiene .message; compatibilidad defensiva para mocks)\n const innerMessage =\n typeof verifyResult.error === 'object' &&\n verifyResult.error !== null &&\n 'message' in verifyResult.error\n ? (verifyResult.error as { message: string }).message\n : String(verifyResult.error)\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'verify_failed',\n message: formatMessage(messages.verifyFailedAfterRefresh, innerMessage),\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n return {\n ok: true,\n data: {\n payload: verifyResult.data,\n newCookies: setTokenCookies(tokens),\n },\n }\n}\n"],"mappings":";;;;;;;;AAuBA,MAAM,SAAS,iBAAiB;;;;;;;;;;;;AAahC,eAAsB,cAGpB,SACA,OAAqC,CAAC,GACC;CACvC,IAAI,KAAK,kBAAkB,KAAA,GACzB,2BAA2B,KAAK,aAAa;CAG/C,MAAM,WAAW,qBAAqB,KAAK,eAAe,iBAAiB,CAAC;CAC5E,MAAM,eAAe,QAAQ,QAAQ,IAAI,QAAQ;CACjD,MAAM,EAAE,aAAa,iBAAiB,sBAAsB,YAAY;CAExE,IAAI,aAAa;EACf,MAAM,SAAS,MAAM,kBAA0B,aAAa,EAC1D,mBAAmB,KAAK,kBAC1B,CAAC;EACD,IAAI,OAAO,IAAI,OAAO;GAAE,IAAI;GAAM,MAAM,EAAE,SAAS,OAAO,KAAK;EAAE;CACnE;CAGA,IAAI,CAAC,cACH,OAAO;EACL,IAAI;EACJ,OAAO;GACL,MAAM;GACN,QAAQ;GACR,SAAS,SAAS;GAClB,QAAQ;EACV;CACF;CAGF,MAAM,gBAAgB,MAAM,mBAAmB,oBAC7C,OAAO,QAAQ,EAAE,aAAa,CAAC,CACjC;CAEA,IAAI,CAAC,cAAc,IAEjB,OAAO;EAAE,IAAI;EAAO,OAAO,cAAc;CAAM;CAGjD,MAAM,EAAE,WAAW,cAAc;CAGjC,IAAI,CAAC,QACH,OAAO;EACL,IAAI;EACJ,OAAO;GACL,MAAM;GACN,QAAQ;GACR,SAAS,SAAS;GAClB,QAAQ;EACV;CACF;CAGF,MAAM,eAAe,MAAM,kBAA0B,OAAO,aAAa,EACvE,mBAAmB,KAAK,kBAC1B,CAAC;CAGD,IAAI,CAAC,aAAa,IAAI;EAEpB,MAAM,eACJ,OAAO,aAAa,UAAU,YAC9B,aAAa,UAAU,QACvB,aAAa,aAAa,QACrB,aAAa,MAA8B,UAC5C,OAAO,aAAa,KAAK;EAC/B,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SAAS,cAAc,SAAS,0BAA0B,YAAY;IACtE,QAAQ;GACV;EACF;CACF;CAEA,OAAO;EACL,IAAI;EACJ,MAAM;GACJ,SAAS,aAAa;GACtB,YAAY,gBAAgB,MAAM;EACpC;CACF;AACF"}