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

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-D6Tr7ev6.d.cts +95 -0
  37. package/dist/config-D6Tr7ev6.d.cts.map +1 -0
  38. package/dist/config-rl4_-VAq.d.ts +95 -0
  39. package/dist/config-rl4_-VAq.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-BenWu-_u.d.ts +105 -0
  65. package/dist/error-helpers-BenWu-_u.d.ts.map +1 -0
  66. package/dist/error-helpers-KBHUbkOM.d.cts +105 -0
  67. package/dist/error-helpers-KBHUbkOM.d.cts.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-BYzDaMR9.d.ts +312 -0
  113. package/dist/index-BYzDaMR9.d.ts.map +1 -0
  114. package/dist/index-CNNMCrdl.d.ts +66 -0
  115. package/dist/index-CNNMCrdl.d.ts.map +1 -0
  116. package/dist/index-DBZoLU4E.d.ts +240 -0
  117. package/dist/index-DBZoLU4E.d.ts.map +1 -0
  118. package/dist/index-DcvQWByo.d.cts +66 -0
  119. package/dist/index-DcvQWByo.d.cts.map +1 -0
  120. package/dist/index-Dold-Ycb.d.cts +1711 -0
  121. package/dist/index-Dold-Ycb.d.cts.map +1 -0
  122. package/dist/index-Dold-Ycb.d.ts +1711 -0
  123. package/dist/index-Dold-Ycb.d.ts.map +1 -0
  124. package/dist/index-jAO62-OD.d.cts +240 -0
  125. package/dist/index-jAO62-OD.d.cts.map +1 -0
  126. package/dist/index-o7nXcl7z.d.cts +312 -0
  127. package/dist/index-o7nXcl7z.d.cts.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-B5sf7kKE.d.cts +52 -0
  186. package/dist/types-B5sf7kKE.d.cts.map +1 -0
  187. package/dist/types-CLOIHzRu.d.ts +96 -0
  188. package/dist/types-CLOIHzRu.d.ts.map +1 -0
  189. package/dist/types-CQTZdZIF.d.ts +52 -0
  190. package/dist/types-CQTZdZIF.d.ts.map +1 -0
  191. package/dist/types-DGeQ8j4k.d.cts +538 -0
  192. package/dist/types-DGeQ8j4k.d.cts.map +1 -0
  193. package/dist/types-DIUWza9-.d.ts +538 -0
  194. package/dist/types-DIUWza9-.d.ts.map +1 -0
  195. package/dist/types-qh6ANBCV.d.cts +96 -0
  196. package/dist/types-qh6ANBCV.d.cts.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
package/dist/index.cjs ADDED
@@ -0,0 +1,89 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_http_client = require("./http-client-BVF3iktR.cjs");
3
+ const require_jwt = require("./jwt-BBNqk0TV.cjs");
4
+ const require_parse_error_response = require("./parse-error-response-6qOQS5y9.cjs");
5
+ const require_constants = require("./constants-BE1_9Tod.cjs");
6
+ const require_constants$1 = require("./constants-CcbhOaAP.cjs");
7
+ const require_cookies = require("./cookies-DCIcr7uy.cjs");
8
+ const require_error_helpers = require("./error-helpers-XCh4ZJ-g.cjs");
9
+ const require_webhooks = require("./webhooks-Cx11psg1.cjs");
10
+ const require_event_codes = require("./event-codes-BBJHon-I.cjs");
11
+ const require_admin = require("./admin-Q6lbWqLM.cjs");
12
+ const require_s2s = require("./s2s-6wbotr78.cjs");
13
+ const require_sign = require("./sign-C7y6xdvT.cjs");
14
+ const require_delegated_token = require("./delegated-token-DHSK4rHI.cjs");
15
+ // src/client.ts
16
+ function createEvaAuth() {
17
+ return { client: require_http_client.createHttpClient() };
18
+ }
19
+ // src/get-message.ts
20
+ /**
21
+ * Retorna el mensaje del EvaError independientemente de su kind.
22
+ * Equivalente a `err.message` — helper para migración gradual desde 0.x.
23
+ */
24
+ function getMessage(err) {
25
+ return err.message;
26
+ }
27
+ exports.ACCOUNT_STATES = require_constants$1.ACCOUNT_STATES;
28
+ exports.ADMIN_ERROR_CODES = require_admin.ADMIN_ERROR_CODES;
29
+ exports.AUTORIZACION_CACHE_TTL_MS = require_sign.AUTORIZACION_CACHE_TTL_MS;
30
+ exports.COOKIE_MAX_AGE = require_constants.COOKIE_MAX_AGE;
31
+ exports.DEFAULT_ERROR_MESSAGES = require_parse_error_response.DEFAULT_ERROR_MESSAGES;
32
+ exports.EMPTY_BODY_SHA256_HEX = require_sign.EMPTY_BODY_SHA256_HEX;
33
+ exports.ERROR_CODES = require_constants$1.ERROR_CODES;
34
+ exports.EVENT_CODES = require_event_codes.EVENT_CODES;
35
+ exports.HEADERS = require_constants$1.HEADERS;
36
+ exports.JWT_CONFIG = require_constants.JWT_CONFIG;
37
+ exports.S2S_ERROR_CODES = require_s2s.S2S_ERROR_CODES;
38
+ exports.S2S_RESPONSE_HEADERS = require_sign.S2S_RESPONSE_HEADERS;
39
+ exports.S2S_SCOPES = require_sign.S2S_SCOPES;
40
+ exports.S2S_TIMESTAMP_WINDOW_SECONDS = require_sign.S2S_TIMESTAMP_WINDOW_SECONDS;
41
+ exports.SDK_ERROR_REASONS = require_error_helpers.SDK_ERROR_REASONS;
42
+ exports.ServiceTokenRequestError = require_s2s.ServiceTokenRequestError;
43
+ exports.USERS_BATCH_MAX_IDS = require_constants$1.USERS_BATCH_MAX_IDS;
44
+ exports.WEBHOOK_HEADERS = require_constants$1.WEBHOOK_HEADERS;
45
+ exports.WEBHOOK_TIMESTAMP_WINDOW_SECONDS = require_constants$1.WEBHOOK_TIMESTAMP_WINDOW_SECONDS;
46
+ exports.buildS2SCanonicalString = require_sign.buildS2SCanonicalString;
47
+ exports.configureEvaAuth = require_parse_error_response.configureEvaAuth;
48
+ exports.createAdminClient = require_admin.createAdminClient;
49
+ exports.createEvaAuth = createEvaAuth;
50
+ exports.createHttpClient = require_http_client.createHttpClient;
51
+ exports.createS2SClient = require_s2s.createS2SClient;
52
+ exports.createServiceTokenProvider = require_s2s.createServiceTokenProvider;
53
+ exports.generateS2SNonce = require_sign.generateS2SNonce;
54
+ exports.getAuthUrl = require_parse_error_response.getAuthUrl;
55
+ exports.getCookieDomain = require_parse_error_response.getCookieDomain;
56
+ exports.getCookieNames = require_constants.getCookieNames;
57
+ exports.getMessage = getMessage;
58
+ exports.isAccountStateLocked = require_error_helpers.isAccountStateLocked;
59
+ exports.isApiError = require_error_helpers.isApiError;
60
+ exports.isAuthRequired = require_error_helpers.isAuthRequired;
61
+ exports.isBadRequest = require_error_helpers.isBadRequest;
62
+ exports.isConflict = require_error_helpers.isConflict;
63
+ exports.isForbidden = require_error_helpers.isForbidden;
64
+ exports.isGone = require_error_helpers.isGone;
65
+ exports.isInternalError = require_error_helpers.isInternalError;
66
+ exports.isMalformed = require_error_helpers.isMalformed;
67
+ exports.isNetworkError = require_error_helpers.isNetworkError;
68
+ exports.isNotFound = require_error_helpers.isNotFound;
69
+ exports.isRateLimited = require_error_helpers.isRateLimited;
70
+ exports.isRefreshNoTokens = require_error_helpers.isRefreshNoTokens;
71
+ exports.isSdkError = require_error_helpers.isSdkError;
72
+ exports.isServiceUnavailable = require_error_helpers.isServiceUnavailable;
73
+ exports.isTokenInvalid = require_error_helpers.isTokenInvalid;
74
+ exports.isUnauthorized = require_error_helpers.isUnauthorized;
75
+ exports.isUnprocessableEntity = require_error_helpers.isUnprocessableEntity;
76
+ exports.isValidationError = require_error_helpers.isValidationError;
77
+ exports.isVerifyFailed = require_error_helpers.isVerifyFailed;
78
+ exports.matchError = require_error_helpers.matchError;
79
+ exports.matchSdkReason = require_error_helpers.matchSdkReason;
80
+ exports.readTokensFromCookies = require_cookies.readTokensFromCookies;
81
+ exports.signS2SHeaders = require_sign.signS2SHeaders;
82
+ exports.signS2SRequest = require_sign.signS2SRequest;
83
+ exports.verifyAccessToken = require_jwt.verifyAccessToken;
84
+ exports.verifyDelegatedToken = require_delegated_token.verifyDelegatedToken;
85
+ exports.verifyS2SRequest = require_delegated_token.verifyS2SRequest;
86
+ exports.verifyServiceToken = require_delegated_token.verifyServiceToken;
87
+ exports.verifyWebhookSignature = require_webhooks.verifyWebhookSignature;
88
+
89
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["createHttpClient"],"sources":["../src/client.ts","../src/get-message.ts"],"sourcesContent":["import { createHttpClient, type EvaHttpClient } from './http-client'\n\ntype EvaAuth = {\n client: EvaHttpClient\n}\n\nexport function createEvaAuth(): EvaAuth {\n return {\n client: createHttpClient(),\n }\n}\n","/**\n * Helper de conveniencia para extraer el mensaje de un EvaError.\n * Útil para migración gradual de 0.x → 1.0.0 donde result.error era string.\n *\n * Uso:\n * import { getMessage } from '@eva_solutions/auth-sdk'\n * if (!result.ok) {\n * console.error(getMessage(result.error)) // equivale a result.error.message\n * }\n */\nimport type { EvaError } from './types'\n\n/**\n * Retorna el mensaje del EvaError independientemente de su kind.\n * Equivalente a `err.message` — helper para migración gradual desde 0.x.\n */\nexport function getMessage(err: EvaError): string {\n return err.message\n}\n"],"mappings":";;;;;;;;;;;;;;;AAMA,SAAgB,gBAAyB;CACvC,OAAO,EACL,QAAQA,oBAAAA,iBAAiB,EAC3B;AACF;;;;;;ACMA,SAAgB,WAAW,KAAuB;CAChD,OAAO,IAAI;AACb"}
@@ -0,0 +1,114 @@
1
+ import { Ei as WEBHOOK_TIMESTAMP_WINDOW_SECONDS, H as DirectorioQuery, Ti as WEBHOOK_HEADERS, U as DirectorioResponse, bi as ERROR_CODES, gi as ACCOUNT_STATES, vi as CoreErrorCode, wi as USERS_BATCH_MAX_IDS, xi as HEADERS } from "./index-Dold-Ycb.cjs";
2
+ import { n as EventCode, t as EVENT_CODES } from "./event-codes-BgcJWsov.cjs";
3
+ import { a as EvaError, c as EvaTokenPayload, d as Result, f as TokenPair, h as SdkErrorReason, i as EvaEmpresa, l as EvaUser, m as SDK_ERROR_REASONS, n as DeviceInfo, o as EvaSdkError, p as ErrorCode, r as EvaApiError, s as EvaSession, t as ActivityState, u as PrivacyState } from "./types-qh6ANBCV.cjs";
4
+ import { a as COOKIE_MAX_AGE, i as getCookieDomain, l as readTokensFromCookies, n as configureEvaAuth, o as JWT_CONFIG, r as getAuthUrl, s as getCookieNames, t as ConfigureEvaAuthOptions } from "./config-D6Tr7ev6.cjs";
5
+ import { A as SetServiceClientGrantInput, C as RestoreUserResult, D as ServiceClientPublic, E as ServiceClientGrant, M as UpdateServiceClientInput, N as UpdateServiceClientResult, O as SetProductoPermisosAutorizablesInput, P as AccountState, S as RepublishPendingWebhooksResult, T as ServiceClientDelegation, _ as ProductoPermisosAutorizablesResult, a as AdminClientConfig, b as ReassignEmpresaTitularResult, c as AdminSetContratacionInput, d as CreateServiceClientResult, f as ListProductosResult, g as MaintenanceCleanupResult, h as MaintenanceCleanupQuery, i as createAdminClient, j as UpdateProductoInput, k as SetServiceClientDelegationInput, l as CreateProductoInput, m as ListServiceClientGrantsResult, n as AdminErrorCode, o as AdminContratacionResult, p as ListServiceClientDelegationsResult, r as AdminClient, s as AdminEmpresaEstadoResult, t as ADMIN_ERROR_CODES, u as CreateServiceClientInput, v as ProductoResult, w as RotateSecretResult, x as RepublishPendingWebhooksQuery, y as ReassignEmpresaTitularInput } from "./index-jAO62-OD.cjs";
6
+ import { n as EvaErrorMessages, t as DEFAULT_ERROR_MESSAGES } from "./error-messages-CGpW1fsg.cjs";
7
+ import { $ as ServiceTokenRequestError, A as RenameGrupoInput, B as SearchDirectorioInput, C as ListAutorizacionesInput, D as ListWebhookDeliveriesQuery, E as ListEmpresasResult, F as S2SGetUserResult, G as UpdateEmpresaMemberInput, H as SubjectTokenInput, I as S2SVerifyError, J as DelegatedTokenGrant, K as UpdateSucursalInput, L as S2SVerifyOptions, M as S2SBatchUsersResult, N as S2SCanonicalParts, O as RemoveEmpresaMemberInput, P as S2SClientConfig, Q as ServiceTokenProviderConfig, R as S2SVerifyReason, S as GrupoResult, T as ListEmpresasInput, U as SucursalResult, V as SetContratacionInput, W as UpdateEmpresaInput, Y as ExchangeTokenInput, Z as ServiceTokenProvider, _ as EmpresaEstadoResult, a as CheckAutorizacionResult, at as DelegatedTokenVerifyOptions, b as EmpresaResult, c as CreateAutorizacionInput, ct as verifyDelegatedToken, d as CreateSucursalInput, et as ServiceTokenSource, f as CreateWebhookSubscriptionInput, ft as ServiceTokenVerifyError, g as EmpresaDetailResult, gt as verifyServiceToken, h as DirectorioResult, ht as ServiceTokenVerifyResult, i as CheckAutorizacionInput, it as DelegatedTokenVerifyError, j as S2SBatchUsersInput, k as RemoveGrupoEmpresaInput, l as CreateEmpresaInput, m as DeleteAutorizacionInput, mt as ServiceTokenVerifyReason, n as AddGrupoEmpresaInput, nt as DelegatedActor, o as ContratacionResult, ot as DelegatedTokenVerifyReason, p as DeactivateSucursalInput, pt as ServiceTokenVerifyOptions, q as UpdateWebhookSubscriptionInput, r as AutorizacionResult, rt as DelegatedTokenClaims, s as ContratadoResult, st as DelegatedTokenVerifyResult, t as AddEmpresaMemberInput, tt as createServiceTokenProvider, u as CreateGrupoInput, ut as ServiceTokenClaims, v as EmpresaMemberResult, w as ListAutorizacionesResult, x as GetEmpresaResult, y as EmpresaRecortadaResult, z as S2SVerifyResult } from "./types-DGeQ8j4k.cjs";
8
+ import { a as WebhookSubscriptionWithSecret, i as WebhookSubscription, n as WebhookDelivery, r as WebhookPayload, t as RotateWebhookSecretResult } from "./types-B5sf7kKE.cjs";
9
+ import { S as matchSdkReason, _ as isUnauthorized, a as isConflict, b as isVerifyFailed, c as isInternalError, d as isNotFound, f as isRateLimited, g as isTokenInvalid, h as isServiceUnavailable, i as isBadRequest, l as isMalformed, m as isSdkError, n as isApiError, o as isForbidden, p as isRefreshNoTokens, r as isAuthRequired, s as isGone, t as isAccountStateLocked, u as isNetworkError, v as isUnprocessableEntity, x as matchError, y as isValidationError } from "./error-helpers-KBHUbkOM.cjs";
10
+ import { n as verifyWebhookSignature, t as VerifyWebhookSignatureParams } from "./index-DcvQWByo.cjs";
11
+ import { a as S2SScope, c as S2S_TIMESTAMP_WINDOW_SECONDS, d as generateS2SNonce, f as signS2SHeaders, h as createS2SClient, i as AUTORIZACION_CACHE_TTL_MS, l as EMPTY_BODY_SHA256_HEX, m as S2SClient, n as S2SErrorCode, o as S2S_RESPONSE_HEADERS, p as signS2SRequest, r as S2S_ERROR_CODES, s as S2S_SCOPES, t as verifyS2SRequest, u as buildS2SCanonicalString } from "./index-o7nXcl7z.cjs";
12
+ import { ZodType } from "zod";
13
+ declare function createHttpClient(): {
14
+ getCode: (params: {
15
+ phone: string;
16
+ }) => Promise<Result<{
17
+ message: string;
18
+ challengeId: string;
19
+ }>>;
20
+ login: (params: {
21
+ phone: string;
22
+ code: string;
23
+ challengeId: string;
24
+ empresaId?: string;
25
+ } & DeviceInfo) => Promise<Result<{
26
+ user: {
27
+ id: string;
28
+ };
29
+ tokens?: TokenPair;
30
+ }>>;
31
+ setActiveEmpresa: (params: {
32
+ accessToken: string;
33
+ empresaId: string | null;
34
+ }) => Promise<Result<{
35
+ empresaId: string | null;
36
+ accessToken?: string;
37
+ }>>;
38
+ refresh: (params: {
39
+ refreshToken: string;
40
+ }) => Promise<Result<{
41
+ user: {
42
+ id: string;
43
+ };
44
+ tokens?: TokenPair;
45
+ }>>;
46
+ logout: (params: {
47
+ refreshToken: string;
48
+ }) => Promise<Result<{
49
+ message: string;
50
+ }>>;
51
+ getUser: (params: {
52
+ accessToken: string;
53
+ }) => Promise<Result<EvaUser>>;
54
+ updateUser: (params: {
55
+ accessToken: string;
56
+ data: Record<string, unknown>;
57
+ }) => Promise<Result<EvaUser>>;
58
+ deleteUser: (params: {
59
+ accessToken: string;
60
+ }) => Promise<Result<{
61
+ message: string;
62
+ }>>;
63
+ getUserEmpresas: (params: {
64
+ accessToken: string;
65
+ }) => Promise<Result<EvaEmpresa[]>>;
66
+ getDirectorio: (params: {
67
+ accessToken: string;
68
+ } & DirectorioQuery) => Promise<Result<DirectorioResponse["data"]>>;
69
+ getSessions: (params: {
70
+ accessToken: string;
71
+ }) => Promise<Result<EvaSession[]>>;
72
+ deleteSession: (params: {
73
+ accessToken: string;
74
+ sessionId: string;
75
+ }) => Promise<Result<{
76
+ message: string;
77
+ }>>;
78
+ deleteAllSessions: (params: {
79
+ refreshToken: string;
80
+ }) => Promise<Result<{
81
+ message: string;
82
+ count: number;
83
+ }>>;
84
+ health: () => Promise<Result<{
85
+ status: string;
86
+ }>>;
87
+ };
88
+ type EvaHttpClient = ReturnType<typeof createHttpClient>;
89
+ type EvaAuth = {
90
+ client: EvaHttpClient;
91
+ };
92
+ declare function createEvaAuth(): EvaAuth;
93
+ type VerifyAccessTokenOptions<TExtra extends Record<string, unknown>> = {
94
+ extraClaimsSchema?: ZodType<TExtra>;
95
+ };
96
+ /**
97
+ * Verifica un access token de usuario: firma ES256 con una clave de usuario del JWKS (`kid` con
98
+ * prefijo `usr-`; un token sin `kid` o firmado con una clave de servicio se rechaza), `typ: at+jwt`,
99
+ * issuer, `aud` igual al producto configurado y claims base. Devuelve `id`, `sessionId`, `clientId`
100
+ * (`client_id`) y `empresaId` (claim `empresa`, ausente si la sesión no tiene empresa activa).
101
+ * Un token inválido o expirado devuelve `{ ok: false }` (401); no lanza.
102
+ *
103
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` o `product` no
104
+ * fueron configurados con `configureEvaAuth`: es un error del consumidor, no un token inválido,
105
+ * así que se propaga en vez de degradarse a 401. El consumidor ve un 500.
106
+ */
107
+ declare function verifyAccessToken<TExtra extends Record<string, unknown> = {}>(token: string, opts?: VerifyAccessTokenOptions<TExtra>): Promise<Result<EvaTokenPayload<TExtra>>>;
108
+ /**
109
+ * Retorna el mensaje del EvaError independientemente de su kind.
110
+ * Equivalente a `err.message` — helper para migración gradual desde 0.x.
111
+ */
112
+ declare function getMessage(err: EvaError): string;
113
+ export { ACCOUNT_STATES, ADMIN_ERROR_CODES, AUTORIZACION_CACHE_TTL_MS, type AccountState, type ActivityState, type AddEmpresaMemberInput, type AddGrupoEmpresaInput, type AdminClient, type AdminClientConfig, type AdminContratacionResult, type AdminEmpresaEstadoResult, type AdminErrorCode, type AdminSetContratacionInput, type AutorizacionResult, COOKIE_MAX_AGE, type CheckAutorizacionInput, type CheckAutorizacionResult, type ConfigureEvaAuthOptions, type ContratacionResult, type ContratadoResult, type CoreErrorCode, type CreateAutorizacionInput, type CreateEmpresaInput, type CreateGrupoInput, type CreateProductoInput, type CreateServiceClientInput, type CreateServiceClientResult, type CreateSucursalInput, type CreateWebhookSubscriptionInput, DEFAULT_ERROR_MESSAGES, type DeactivateSucursalInput, type DelegatedActor, type DelegatedTokenClaims, type DelegatedTokenGrant, type DelegatedTokenVerifyError, type DelegatedTokenVerifyOptions, type DelegatedTokenVerifyReason, type DelegatedTokenVerifyResult, type DeleteAutorizacionInput, type DeviceInfo, type DirectorioResult, EMPTY_BODY_SHA256_HEX, ERROR_CODES, EVENT_CODES, type EmpresaDetailResult, type EmpresaEstadoResult, type EmpresaMemberResult, type EmpresaRecortadaResult, type EmpresaResult, type ErrorCode, type EvaApiError, type EvaEmpresa, type EvaError, type EvaErrorMessages, type EvaHttpClient, type EvaSdkError, type EvaSession, type EvaTokenPayload, type EvaUser, type EventCode, type ExchangeTokenInput, type GetEmpresaResult, type GrupoResult, HEADERS, JWT_CONFIG, type ListAutorizacionesInput, type ListAutorizacionesResult, type ListEmpresasInput, type ListEmpresasResult, type ListProductosResult, type ListServiceClientDelegationsResult, type ListServiceClientGrantsResult, type ListWebhookDeliveriesQuery, type MaintenanceCleanupQuery, type MaintenanceCleanupResult, type PrivacyState, type ProductoPermisosAutorizablesResult, type ProductoResult, type ReassignEmpresaTitularInput, type ReassignEmpresaTitularResult, type RemoveEmpresaMemberInput, type RemoveGrupoEmpresaInput, type RenameGrupoInput, type RepublishPendingWebhooksQuery, type RepublishPendingWebhooksResult, type RestoreUserResult, type Result, type RotateSecretResult, type RotateWebhookSecretResult, type S2SBatchUsersInput, type S2SBatchUsersResult, type S2SCanonicalParts, type S2SClient, type S2SClientConfig, type S2SErrorCode, type S2SGetUserResult, type S2SScope, type S2SVerifyError, type S2SVerifyOptions, type S2SVerifyReason, type S2SVerifyResult, S2S_ERROR_CODES, S2S_RESPONSE_HEADERS, S2S_SCOPES, S2S_TIMESTAMP_WINDOW_SECONDS, SDK_ERROR_REASONS, type SdkErrorReason, type SearchDirectorioInput, type ServiceClientDelegation, type ServiceClientGrant, type ServiceClientPublic, type ServiceTokenClaims, type ServiceTokenProvider, type ServiceTokenProviderConfig, ServiceTokenRequestError, type ServiceTokenSource, type ServiceTokenVerifyError, type ServiceTokenVerifyOptions, type ServiceTokenVerifyReason, type ServiceTokenVerifyResult, type SetContratacionInput, type SetProductoPermisosAutorizablesInput, type SetServiceClientDelegationInput, type SetServiceClientGrantInput, type SubjectTokenInput, type SucursalResult, type TokenPair, USERS_BATCH_MAX_IDS, type UpdateEmpresaInput, type UpdateEmpresaMemberInput, type UpdateProductoInput, type UpdateServiceClientInput, type UpdateServiceClientResult, type UpdateSucursalInput, type UpdateWebhookSubscriptionInput, type VerifyAccessTokenOptions, type VerifyWebhookSignatureParams, WEBHOOK_HEADERS, WEBHOOK_TIMESTAMP_WINDOW_SECONDS, type WebhookDelivery, type WebhookPayload, type WebhookSubscription, type WebhookSubscriptionWithSecret, buildS2SCanonicalString, configureEvaAuth, createAdminClient, createEvaAuth, createHttpClient, createS2SClient, createServiceTokenProvider, generateS2SNonce, getAuthUrl, getCookieDomain, getCookieNames, getMessage, isAccountStateLocked, isApiError, isAuthRequired, isBadRequest, isConflict, isForbidden, isGone, isInternalError, isMalformed, isNetworkError, isNotFound, isRateLimited, isRefreshNoTokens, isSdkError, isServiceUnavailable, isTokenInvalid, isUnauthorized, isUnprocessableEntity, isValidationError, isVerifyFailed, matchError, matchSdkReason, readTokensFromCookies, signS2SHeaders, signS2SRequest, verifyAccessToken, verifyDelegatedToken, verifyS2SRequest, verifyServiceToken, verifyWebhookSignature };
114
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/http-client.ts","../src/client.ts","../src/jwt.ts","../src/get-message.ts"],"mappings":";;;;;;;;;;;;iBAsSgB;EA9KS,UAAA;IACvB;QACE,QAAQ;IAAS;IAAiB;;EAkB5B,QAAA;IACN;IACA;IACA;IACA;MACE,eACH,QAAQ;IAAS;MAAQ;;IAAc,SAAS;;EAgCjB,mBAAA;IAChC;IACA;QACE,QAAQ;IAAS;IAA0B;;EAQtB,UAAA;IACvB;QACE,QAAQ;IAAS;MAAQ;;IAAc,SAAS;;EAM5B,SAAA;IACtB;QACE,QAAQ;IAAS;;EAMI,UAAA;IAAE;QAAwB,QAAQ,OAAO;EAGtC,aAAA;IAC1B;IACA,MAAM;QACJ,QAAQ,OAAO;EAOS,aAAA;IAC1B;QACE,QAAQ;IAAS;;EAMY,kBAAA;IAC/B;QACE,QAAQ,OAAO;EAWT,gBAAA;IAAE;MAAwB,oBACjC,QAAQ,OAAO;EAaW,cAAA;IAC3B;QACE,QAAQ,OAAO;EAGY,gBAAA;IAC7B;IACA;QACE,QAAQ;IAAS;;EAqBc,oBAAA;IACjC;QACE,QAAQ;IAAS;IAAiB;;EAQnB,cAAA,QAAQ;IAAS;;;KAqBxB,gBAAgB,kBAAkB;KCvTzC;EACH,QAAQ;;iBAGM,iBAAiB;KC4DrB,yBAAyB,eAAe;EAClD,oBAAoB,QAAQ;;;;;;;;;;;;;iBAcR,kBACpB,eAAe,8BAEf,eACA,OAAM,yBAAyB,UAC9B,QAAQ,OAAO,gBAAgB;;;;;iBCtElB,WAAW,KAAK"}
@@ -0,0 +1,114 @@
1
+ import { Ei as WEBHOOK_TIMESTAMP_WINDOW_SECONDS, H as DirectorioQuery, Ti as WEBHOOK_HEADERS, U as DirectorioResponse, bi as ERROR_CODES, gi as ACCOUNT_STATES, vi as CoreErrorCode, wi as USERS_BATCH_MAX_IDS, xi as HEADERS } from "./index-Dold-Ycb.js";
2
+ import { n as EventCode, t as EVENT_CODES } from "./event-codes-BgcJWsov.js";
3
+ import { a as EvaError, c as EvaTokenPayload, d as Result, f as TokenPair, h as SdkErrorReason, i as EvaEmpresa, l as EvaUser, m as SDK_ERROR_REASONS, n as DeviceInfo, o as EvaSdkError, p as ErrorCode, r as EvaApiError, s as EvaSession, t as ActivityState, u as PrivacyState } from "./types-CLOIHzRu.js";
4
+ import { a as COOKIE_MAX_AGE, i as getCookieDomain, l as readTokensFromCookies, n as configureEvaAuth, o as JWT_CONFIG, r as getAuthUrl, s as getCookieNames, t as ConfigureEvaAuthOptions } from "./config-rl4_-VAq.js";
5
+ import { A as SetServiceClientGrantInput, C as RestoreUserResult, D as ServiceClientPublic, E as ServiceClientGrant, M as UpdateServiceClientInput, N as UpdateServiceClientResult, O as SetProductoPermisosAutorizablesInput, P as AccountState, S as RepublishPendingWebhooksResult, T as ServiceClientDelegation, _ as ProductoPermisosAutorizablesResult, a as AdminClientConfig, b as ReassignEmpresaTitularResult, c as AdminSetContratacionInput, d as CreateServiceClientResult, f as ListProductosResult, g as MaintenanceCleanupResult, h as MaintenanceCleanupQuery, i as createAdminClient, j as UpdateProductoInput, k as SetServiceClientDelegationInput, l as CreateProductoInput, m as ListServiceClientGrantsResult, n as AdminErrorCode, o as AdminContratacionResult, p as ListServiceClientDelegationsResult, r as AdminClient, s as AdminEmpresaEstadoResult, t as ADMIN_ERROR_CODES, u as CreateServiceClientInput, v as ProductoResult, w as RotateSecretResult, x as RepublishPendingWebhooksQuery, y as ReassignEmpresaTitularInput } from "./index-DBZoLU4E.js";
6
+ import { n as EvaErrorMessages, t as DEFAULT_ERROR_MESSAGES } from "./error-messages-CGpW1fsg.js";
7
+ import { $ as ServiceTokenRequestError, A as RenameGrupoInput, B as SearchDirectorioInput, C as ListAutorizacionesInput, D as ListWebhookDeliveriesQuery, E as ListEmpresasResult, F as S2SGetUserResult, G as UpdateEmpresaMemberInput, H as SubjectTokenInput, I as S2SVerifyError, J as DelegatedTokenGrant, K as UpdateSucursalInput, L as S2SVerifyOptions, M as S2SBatchUsersResult, N as S2SCanonicalParts, O as RemoveEmpresaMemberInput, P as S2SClientConfig, Q as ServiceTokenProviderConfig, R as S2SVerifyReason, S as GrupoResult, T as ListEmpresasInput, U as SucursalResult, V as SetContratacionInput, W as UpdateEmpresaInput, Y as ExchangeTokenInput, Z as ServiceTokenProvider, _ as EmpresaEstadoResult, a as CheckAutorizacionResult, at as DelegatedTokenVerifyOptions, b as EmpresaResult, c as CreateAutorizacionInput, ct as verifyDelegatedToken, d as CreateSucursalInput, et as ServiceTokenSource, f as CreateWebhookSubscriptionInput, ft as ServiceTokenVerifyError, g as EmpresaDetailResult, gt as verifyServiceToken, h as DirectorioResult, ht as ServiceTokenVerifyResult, i as CheckAutorizacionInput, it as DelegatedTokenVerifyError, j as S2SBatchUsersInput, k as RemoveGrupoEmpresaInput, l as CreateEmpresaInput, m as DeleteAutorizacionInput, mt as ServiceTokenVerifyReason, n as AddGrupoEmpresaInput, nt as DelegatedActor, o as ContratacionResult, ot as DelegatedTokenVerifyReason, p as DeactivateSucursalInput, pt as ServiceTokenVerifyOptions, q as UpdateWebhookSubscriptionInput, r as AutorizacionResult, rt as DelegatedTokenClaims, s as ContratadoResult, st as DelegatedTokenVerifyResult, t as AddEmpresaMemberInput, tt as createServiceTokenProvider, u as CreateGrupoInput, ut as ServiceTokenClaims, v as EmpresaMemberResult, w as ListAutorizacionesResult, x as GetEmpresaResult, y as EmpresaRecortadaResult, z as S2SVerifyResult } from "./types-DIUWza9-.js";
8
+ import { a as WebhookSubscriptionWithSecret, i as WebhookSubscription, n as WebhookDelivery, r as WebhookPayload, t as RotateWebhookSecretResult } from "./types-CQTZdZIF.js";
9
+ import { S as matchSdkReason, _ as isUnauthorized, a as isConflict, b as isVerifyFailed, c as isInternalError, d as isNotFound, f as isRateLimited, g as isTokenInvalid, h as isServiceUnavailable, i as isBadRequest, l as isMalformed, m as isSdkError, n as isApiError, o as isForbidden, p as isRefreshNoTokens, r as isAuthRequired, s as isGone, t as isAccountStateLocked, u as isNetworkError, v as isUnprocessableEntity, x as matchError, y as isValidationError } from "./error-helpers-BenWu-_u.js";
10
+ import { n as verifyWebhookSignature, t as VerifyWebhookSignatureParams } from "./index-CNNMCrdl.js";
11
+ import { a as S2SScope, c as S2S_TIMESTAMP_WINDOW_SECONDS, d as generateS2SNonce, f as signS2SHeaders, h as createS2SClient, i as AUTORIZACION_CACHE_TTL_MS, l as EMPTY_BODY_SHA256_HEX, m as S2SClient, n as S2SErrorCode, o as S2S_RESPONSE_HEADERS, p as signS2SRequest, r as S2S_ERROR_CODES, s as S2S_SCOPES, t as verifyS2SRequest, u as buildS2SCanonicalString } from "./index-BYzDaMR9.js";
12
+ import { ZodType } from "zod";
13
+ declare function createHttpClient(): {
14
+ getCode: (params: {
15
+ phone: string;
16
+ }) => Promise<Result<{
17
+ message: string;
18
+ challengeId: string;
19
+ }>>;
20
+ login: (params: {
21
+ phone: string;
22
+ code: string;
23
+ challengeId: string;
24
+ empresaId?: string;
25
+ } & DeviceInfo) => Promise<Result<{
26
+ user: {
27
+ id: string;
28
+ };
29
+ tokens?: TokenPair;
30
+ }>>;
31
+ setActiveEmpresa: (params: {
32
+ accessToken: string;
33
+ empresaId: string | null;
34
+ }) => Promise<Result<{
35
+ empresaId: string | null;
36
+ accessToken?: string;
37
+ }>>;
38
+ refresh: (params: {
39
+ refreshToken: string;
40
+ }) => Promise<Result<{
41
+ user: {
42
+ id: string;
43
+ };
44
+ tokens?: TokenPair;
45
+ }>>;
46
+ logout: (params: {
47
+ refreshToken: string;
48
+ }) => Promise<Result<{
49
+ message: string;
50
+ }>>;
51
+ getUser: (params: {
52
+ accessToken: string;
53
+ }) => Promise<Result<EvaUser>>;
54
+ updateUser: (params: {
55
+ accessToken: string;
56
+ data: Record<string, unknown>;
57
+ }) => Promise<Result<EvaUser>>;
58
+ deleteUser: (params: {
59
+ accessToken: string;
60
+ }) => Promise<Result<{
61
+ message: string;
62
+ }>>;
63
+ getUserEmpresas: (params: {
64
+ accessToken: string;
65
+ }) => Promise<Result<EvaEmpresa[]>>;
66
+ getDirectorio: (params: {
67
+ accessToken: string;
68
+ } & DirectorioQuery) => Promise<Result<DirectorioResponse["data"]>>;
69
+ getSessions: (params: {
70
+ accessToken: string;
71
+ }) => Promise<Result<EvaSession[]>>;
72
+ deleteSession: (params: {
73
+ accessToken: string;
74
+ sessionId: string;
75
+ }) => Promise<Result<{
76
+ message: string;
77
+ }>>;
78
+ deleteAllSessions: (params: {
79
+ refreshToken: string;
80
+ }) => Promise<Result<{
81
+ message: string;
82
+ count: number;
83
+ }>>;
84
+ health: () => Promise<Result<{
85
+ status: string;
86
+ }>>;
87
+ };
88
+ type EvaHttpClient = ReturnType<typeof createHttpClient>;
89
+ type EvaAuth = {
90
+ client: EvaHttpClient;
91
+ };
92
+ declare function createEvaAuth(): EvaAuth;
93
+ type VerifyAccessTokenOptions<TExtra extends Record<string, unknown>> = {
94
+ extraClaimsSchema?: ZodType<TExtra>;
95
+ };
96
+ /**
97
+ * Verifica un access token de usuario: firma ES256 con una clave de usuario del JWKS (`kid` con
98
+ * prefijo `usr-`; un token sin `kid` o firmado con una clave de servicio se rechaza), `typ: at+jwt`,
99
+ * issuer, `aud` igual al producto configurado y claims base. Devuelve `id`, `sessionId`, `clientId`
100
+ * (`client_id`) y `empresaId` (claim `empresa`, ausente si la sesión no tiene empresa activa).
101
+ * Un token inválido o expirado devuelve `{ ok: false }` (401); no lanza.
102
+ *
103
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` o `product` no
104
+ * fueron configurados con `configureEvaAuth`: es un error del consumidor, no un token inválido,
105
+ * así que se propaga en vez de degradarse a 401. El consumidor ve un 500.
106
+ */
107
+ declare function verifyAccessToken<TExtra extends Record<string, unknown> = {}>(token: string, opts?: VerifyAccessTokenOptions<TExtra>): Promise<Result<EvaTokenPayload<TExtra>>>;
108
+ /**
109
+ * Retorna el mensaje del EvaError independientemente de su kind.
110
+ * Equivalente a `err.message` — helper para migración gradual desde 0.x.
111
+ */
112
+ declare function getMessage(err: EvaError): string;
113
+ export { ACCOUNT_STATES, ADMIN_ERROR_CODES, AUTORIZACION_CACHE_TTL_MS, type AccountState, type ActivityState, type AddEmpresaMemberInput, type AddGrupoEmpresaInput, type AdminClient, type AdminClientConfig, type AdminContratacionResult, type AdminEmpresaEstadoResult, type AdminErrorCode, type AdminSetContratacionInput, type AutorizacionResult, COOKIE_MAX_AGE, type CheckAutorizacionInput, type CheckAutorizacionResult, type ConfigureEvaAuthOptions, type ContratacionResult, type ContratadoResult, type CoreErrorCode, type CreateAutorizacionInput, type CreateEmpresaInput, type CreateGrupoInput, type CreateProductoInput, type CreateServiceClientInput, type CreateServiceClientResult, type CreateSucursalInput, type CreateWebhookSubscriptionInput, DEFAULT_ERROR_MESSAGES, type DeactivateSucursalInput, type DelegatedActor, type DelegatedTokenClaims, type DelegatedTokenGrant, type DelegatedTokenVerifyError, type DelegatedTokenVerifyOptions, type DelegatedTokenVerifyReason, type DelegatedTokenVerifyResult, type DeleteAutorizacionInput, type DeviceInfo, type DirectorioResult, EMPTY_BODY_SHA256_HEX, ERROR_CODES, EVENT_CODES, type EmpresaDetailResult, type EmpresaEstadoResult, type EmpresaMemberResult, type EmpresaRecortadaResult, type EmpresaResult, type ErrorCode, type EvaApiError, type EvaEmpresa, type EvaError, type EvaErrorMessages, type EvaHttpClient, type EvaSdkError, type EvaSession, type EvaTokenPayload, type EvaUser, type EventCode, type ExchangeTokenInput, type GetEmpresaResult, type GrupoResult, HEADERS, JWT_CONFIG, type ListAutorizacionesInput, type ListAutorizacionesResult, type ListEmpresasInput, type ListEmpresasResult, type ListProductosResult, type ListServiceClientDelegationsResult, type ListServiceClientGrantsResult, type ListWebhookDeliveriesQuery, type MaintenanceCleanupQuery, type MaintenanceCleanupResult, type PrivacyState, type ProductoPermisosAutorizablesResult, type ProductoResult, type ReassignEmpresaTitularInput, type ReassignEmpresaTitularResult, type RemoveEmpresaMemberInput, type RemoveGrupoEmpresaInput, type RenameGrupoInput, type RepublishPendingWebhooksQuery, type RepublishPendingWebhooksResult, type RestoreUserResult, type Result, type RotateSecretResult, type RotateWebhookSecretResult, type S2SBatchUsersInput, type S2SBatchUsersResult, type S2SCanonicalParts, type S2SClient, type S2SClientConfig, type S2SErrorCode, type S2SGetUserResult, type S2SScope, type S2SVerifyError, type S2SVerifyOptions, type S2SVerifyReason, type S2SVerifyResult, S2S_ERROR_CODES, S2S_RESPONSE_HEADERS, S2S_SCOPES, S2S_TIMESTAMP_WINDOW_SECONDS, SDK_ERROR_REASONS, type SdkErrorReason, type SearchDirectorioInput, type ServiceClientDelegation, type ServiceClientGrant, type ServiceClientPublic, type ServiceTokenClaims, type ServiceTokenProvider, type ServiceTokenProviderConfig, ServiceTokenRequestError, type ServiceTokenSource, type ServiceTokenVerifyError, type ServiceTokenVerifyOptions, type ServiceTokenVerifyReason, type ServiceTokenVerifyResult, type SetContratacionInput, type SetProductoPermisosAutorizablesInput, type SetServiceClientDelegationInput, type SetServiceClientGrantInput, type SubjectTokenInput, type SucursalResult, type TokenPair, USERS_BATCH_MAX_IDS, type UpdateEmpresaInput, type UpdateEmpresaMemberInput, type UpdateProductoInput, type UpdateServiceClientInput, type UpdateServiceClientResult, type UpdateSucursalInput, type UpdateWebhookSubscriptionInput, type VerifyAccessTokenOptions, type VerifyWebhookSignatureParams, WEBHOOK_HEADERS, WEBHOOK_TIMESTAMP_WINDOW_SECONDS, type WebhookDelivery, type WebhookPayload, type WebhookSubscription, type WebhookSubscriptionWithSecret, buildS2SCanonicalString, configureEvaAuth, createAdminClient, createEvaAuth, createHttpClient, createS2SClient, createServiceTokenProvider, generateS2SNonce, getAuthUrl, getCookieDomain, getCookieNames, getMessage, isAccountStateLocked, isApiError, isAuthRequired, isBadRequest, isConflict, isForbidden, isGone, isInternalError, isMalformed, isNetworkError, isNotFound, isRateLimited, isRefreshNoTokens, isSdkError, isServiceUnavailable, isTokenInvalid, isUnauthorized, isUnprocessableEntity, isValidationError, isVerifyFailed, matchError, matchSdkReason, readTokensFromCookies, signS2SHeaders, signS2SRequest, verifyAccessToken, verifyDelegatedToken, verifyS2SRequest, verifyServiceToken, verifyWebhookSignature };
114
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/http-client.ts","../src/client.ts","../src/jwt.ts","../src/get-message.ts"],"mappings":";;;;;;;;;;;;iBAsSgB;EA9KS,UAAA;IACvB;QACE,QAAQ;IAAS;IAAiB;;EAkB5B,QAAA;IACN;IACA;IACA;IACA;MACE,eACH,QAAQ;IAAS;MAAQ;;IAAc,SAAS;;EAgCjB,mBAAA;IAChC;IACA;QACE,QAAQ;IAAS;IAA0B;;EAQtB,UAAA;IACvB;QACE,QAAQ;IAAS;MAAQ;;IAAc,SAAS;;EAM5B,SAAA;IACtB;QACE,QAAQ;IAAS;;EAMI,UAAA;IAAE;QAAwB,QAAQ,OAAO;EAGtC,aAAA;IAC1B;IACA,MAAM;QACJ,QAAQ,OAAO;EAOS,aAAA;IAC1B;QACE,QAAQ;IAAS;;EAMY,kBAAA;IAC/B;QACE,QAAQ,OAAO;EAWT,gBAAA;IAAE;MAAwB,oBACjC,QAAQ,OAAO;EAaW,cAAA;IAC3B;QACE,QAAQ,OAAO;EAGY,gBAAA;IAC7B;IACA;QACE,QAAQ;IAAS;;EAqBc,oBAAA;IACjC;QACE,QAAQ;IAAS;IAAiB;;EAQnB,cAAA,QAAQ;IAAS;;;KAqBxB,gBAAgB,kBAAkB;KCvTzC;EACH,QAAQ;;iBAGM,iBAAiB;KC4DrB,yBAAyB,eAAe;EAClD,oBAAoB,QAAQ;;;;;;;;;;;;;iBAcR,kBACpB,eAAe,8BAEf,eACA,OAAM,yBAAyB,UAC9B,QAAQ,OAAO,gBAAgB;;;;;iBCtElB,WAAW,KAAK"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ import { t as createHttpClient } from "./http-client-Da0-OMfc.js";
2
+ import { t as verifyAccessToken } from "./jwt-DhqgH94B.js";
3
+ import { d as DEFAULT_ERROR_MESSAGES, i as getCookieDomain, n as configureEvaAuth, r as getAuthUrl } from "./parse-error-response-BM9-kjs0.js";
4
+ import { i as getCookieNames, n as JWT_CONFIG, t as COOKIE_MAX_AGE } from "./constants-BY7QZokc.js";
5
+ import { a as HEADERS, c as USERS_BATCH_MAX_IDS, i as ERROR_CODES, l as WEBHOOK_HEADERS, t as ACCOUNT_STATES, u as WEBHOOK_TIMESTAMP_WINDOW_SECONDS } from "./constants-rNuD5qJn.js";
6
+ import { n as readTokensFromCookies } from "./cookies-DKEC7AWv.js";
7
+ import { C as SDK_ERROR_REASONS, S as matchSdkReason, _ as isUnauthorized, a as isConflict, b as isVerifyFailed, c as isInternalError, d as isNotFound, f as isRateLimited, g as isTokenInvalid, h as isServiceUnavailable, i as isBadRequest, l as isMalformed, m as isSdkError, n as isApiError, o as isForbidden, p as isRefreshNoTokens, r as isAuthRequired, s as isGone, t as isAccountStateLocked, u as isNetworkError, v as isUnprocessableEntity, x as matchError, y as isValidationError } from "./error-helpers-lnwgNOw9.js";
8
+ import { t as verifyWebhookSignature } from "./webhooks-B5sAWC9W.js";
9
+ import { t as EVENT_CODES } from "./event-codes-DR5_VlaR.js";
10
+ import { n as createAdminClient, t as ADMIN_ERROR_CODES } from "./admin-DjvuvuI8.js";
11
+ import { a as createServiceTokenProvider, i as ServiceTokenRequestError, n as createS2SClient, t as S2S_ERROR_CODES } from "./s2s-B_0SIQzn.js";
12
+ import { a as signS2SRequest, d as S2S_TIMESTAMP_WINDOW_SECONDS, i as signS2SHeaders, l as S2S_RESPONSE_HEADERS, n as buildS2SCanonicalString, r as generateS2SNonce, s as AUTORIZACION_CACHE_TTL_MS, t as EMPTY_BODY_SHA256_HEX, u as S2S_SCOPES } from "./sign-HFtcYwa-.js";
13
+ import { a as verifyServiceToken, n as verifyDelegatedToken, o as verifyS2SRequest } from "./delegated-token-CVNbMNfy.js";
14
+ // src/client.ts
15
+ function createEvaAuth() {
16
+ return { client: createHttpClient() };
17
+ }
18
+ // src/get-message.ts
19
+ /**
20
+ * Retorna el mensaje del EvaError independientemente de su kind.
21
+ * Equivalente a `err.message` — helper para migración gradual desde 0.x.
22
+ */
23
+ function getMessage(err) {
24
+ return err.message;
25
+ }
26
+ export { ACCOUNT_STATES, ADMIN_ERROR_CODES, AUTORIZACION_CACHE_TTL_MS, COOKIE_MAX_AGE, DEFAULT_ERROR_MESSAGES, EMPTY_BODY_SHA256_HEX, ERROR_CODES, EVENT_CODES, HEADERS, JWT_CONFIG, S2S_ERROR_CODES, S2S_RESPONSE_HEADERS, S2S_SCOPES, S2S_TIMESTAMP_WINDOW_SECONDS, SDK_ERROR_REASONS, ServiceTokenRequestError, USERS_BATCH_MAX_IDS, WEBHOOK_HEADERS, WEBHOOK_TIMESTAMP_WINDOW_SECONDS, buildS2SCanonicalString, configureEvaAuth, createAdminClient, createEvaAuth, createHttpClient, createS2SClient, createServiceTokenProvider, generateS2SNonce, getAuthUrl, getCookieDomain, getCookieNames, getMessage, isAccountStateLocked, isApiError, isAuthRequired, isBadRequest, isConflict, isForbidden, isGone, isInternalError, isMalformed, isNetworkError, isNotFound, isRateLimited, isRefreshNoTokens, isSdkError, isServiceUnavailable, isTokenInvalid, isUnauthorized, isUnprocessableEntity, isValidationError, isVerifyFailed, matchError, matchSdkReason, readTokensFromCookies, signS2SHeaders, signS2SRequest, verifyAccessToken, verifyDelegatedToken, verifyS2SRequest, verifyServiceToken, verifyWebhookSignature };
27
+
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/client.ts","../src/get-message.ts"],"sourcesContent":["import { createHttpClient, type EvaHttpClient } from './http-client'\n\ntype EvaAuth = {\n client: EvaHttpClient\n}\n\nexport function createEvaAuth(): EvaAuth {\n return {\n client: createHttpClient(),\n }\n}\n","/**\n * Helper de conveniencia para extraer el mensaje de un EvaError.\n * Útil para migración gradual de 0.x → 1.0.0 donde result.error era string.\n *\n * Uso:\n * import { getMessage } from '@eva_solutions/auth-sdk'\n * if (!result.ok) {\n * console.error(getMessage(result.error)) // equivale a result.error.message\n * }\n */\nimport type { EvaError } from './types'\n\n/**\n * Retorna el mensaje del EvaError independientemente de su kind.\n * Equivalente a `err.message` — helper para migración gradual desde 0.x.\n */\nexport function getMessage(err: EvaError): string {\n return err.message\n}\n"],"mappings":";;;;;;;;;;;;;;AAMA,SAAgB,gBAAyB;CACvC,OAAO,EACL,QAAQ,iBAAiB,EAC3B;AACF;;;;;;ACMA,SAAgB,WAAW,KAAuB;CAChD,OAAO,IAAI;AACb"}
@@ -0,0 +1,155 @@
1
+ const require_tokens = require("./tokens-C1nzkn21.cjs");
2
+ const require_key_resolver = require("./key-resolver-CESqj4-P.cjs");
3
+ const require_parse_error_response = require("./parse-error-response-6qOQS5y9.cjs");
4
+ const require_constants = require("./constants-BE1_9Tod.cjs");
5
+ let zod = require("zod");
6
+ let jose = require("jose");
7
+ // src/jwt-claims.ts
8
+ /**
9
+ * Claims reservados que el SDK NUNCA expone en EvaTokenPayload,
10
+ * aunque estén presentes en el JWT decodificado.
11
+ *
12
+ * Fuentes:
13
+ * - RFC 7519 §4.1: iss, sub, aud, exp, nbf, iat, jti
14
+ * - OIDC Core 1.0 §2: nonce, auth_time, acr, amr, azp
15
+ *
16
+ * Módulo interno — NO se exporta desde ningún barrel raíz.
17
+ * Uso: src/jwt.ts (filtrado + assertSchemaNoReservedKeys).
18
+ */
19
+ const RESERVED_JWT_CLAIMS = [
20
+ "iat",
21
+ "exp",
22
+ "iss",
23
+ "aud",
24
+ "jti",
25
+ "sub",
26
+ "nbf",
27
+ "nonce",
28
+ "auth_time",
29
+ "acr",
30
+ "amr",
31
+ "azp"
32
+ ];
33
+ // src/jwt.ts
34
+ const BaseClaimsSchema = zod.z.object({
35
+ sub: zod.z.string(),
36
+ sessionId: zod.z.string(),
37
+ client_id: zod.z.string().min(1),
38
+ empresa: zod.z.string().min(1).optional()
39
+ });
40
+ const EXCLUDED_FROM_EXTRAS = /* @__PURE__ */ new Set([
41
+ ...RESERVED_JWT_CLAIMS,
42
+ "sub",
43
+ "sessionId",
44
+ "id",
45
+ "client_id",
46
+ "clientId",
47
+ "empresa",
48
+ "empresaId"
49
+ ]);
50
+ const _schemaValidationCache = /* @__PURE__ */ new WeakMap();
51
+ /**
52
+ * Valida que el schema no declare claims reservados (RFC 7519 / OIDC Core 1.0)
53
+ * ni claves del shape base (id, sessionId).
54
+ * Lanza Error sincrono con mensaje claro — falla rápido en la primera invocación.
55
+ * Solo se llama dentro del schema branch (zero overhead en path zero-config).
56
+ * Cachea por referencia de schema con WeakMap.
57
+ */
58
+ function assertSchemaNoReservedKeys(schema) {
59
+ if (_schemaValidationCache.has(schema)) return;
60
+ if (schema instanceof zod.ZodObject) {
61
+ for (const key of Object.keys(schema.shape)) if (EXCLUDED_FROM_EXTRAS.has(key)) throw new Error(`extraClaimsSchema declara un claim reservado o del shape base: "${key}". Claims reservados (RFC 7519/8725 + OIDC Core 1.0 §2): ${RESERVED_JWT_CLAIMS.join(", ")}. Shape base del SDK (no permitidos en extraClaimsSchema): id, sessionId, clientId, empresaId.`);
62
+ }
63
+ _schemaValidationCache.set(schema, true);
64
+ }
65
+ /**
66
+ * Verifica un access token de usuario: firma ES256 con una clave de usuario del JWKS (`kid` con
67
+ * prefijo `usr-`; un token sin `kid` o firmado con una clave de servicio se rechaza), `typ: at+jwt`,
68
+ * issuer, `aud` igual al producto configurado y claims base. Devuelve `id`, `sessionId`, `clientId`
69
+ * (`client_id`) y `empresaId` (claim `empresa`, ausente si la sesión no tiene empresa activa).
70
+ * Un token inválido o expirado devuelve `{ ok: false }` (401); no lanza.
71
+ *
72
+ * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` o `product` no
73
+ * fueron configurados con `configureEvaAuth`: es un error del consumidor, no un token inválido,
74
+ * así que se propaga en vez de degradarse a 401. El consumidor ve un 500.
75
+ */
76
+ async function verifyAccessToken(token, opts = {}) {
77
+ try {
78
+ const { payload } = await (0, jose.jwtVerify)(token, require_key_resolver.withKidPrefix(require_key_resolver.getJwksKeyFn(), require_tokens.USER_KID_PREFIX), {
79
+ issuer: require_constants.JWT_CONFIG.ISSUER,
80
+ audience: require_parse_error_response.getProduct(),
81
+ algorithms: [require_constants.JWT_CONFIG.ALGORITHM],
82
+ typ: require_tokens.USER_TOKEN_TYP,
83
+ requiredClaims: ["exp"]
84
+ });
85
+ const base = BaseClaimsSchema.safeParse(payload);
86
+ if (!base.success) return {
87
+ ok: false,
88
+ error: {
89
+ kind: "sdk",
90
+ reason: "token_invalid",
91
+ message: "Payload del token inválido",
92
+ status: 401
93
+ }
94
+ };
95
+ if (Array.isArray(payload.aud) || base.data.client_id !== require_parse_error_response.getProduct()) return {
96
+ ok: false,
97
+ error: {
98
+ kind: "sdk",
99
+ reason: "token_invalid",
100
+ message: "Payload del token inválido",
101
+ status: 401
102
+ }
103
+ };
104
+ const identity = {
105
+ id: base.data.sub,
106
+ sessionId: base.data.sessionId,
107
+ clientId: base.data.client_id,
108
+ ...base.data.empresa !== void 0 && { empresaId: base.data.empresa }
109
+ };
110
+ if (!opts.extraClaimsSchema) return {
111
+ ok: true,
112
+ data: identity
113
+ };
114
+ assertSchemaNoReservedKeys(opts.extraClaimsSchema);
115
+ const raw = payload;
116
+ const extrasCandidate = {};
117
+ for (const [k, v] of Object.entries(raw)) if (!EXCLUDED_FROM_EXTRAS.has(k)) extrasCandidate[k] = v;
118
+ const parsed = await opts.extraClaimsSchema.safeParseAsync(extrasCandidate);
119
+ if (!parsed.success) return {
120
+ ok: false,
121
+ error: {
122
+ kind: "sdk",
123
+ reason: "token_invalid",
124
+ message: "Payload del token inválido (claims extra)",
125
+ status: 401
126
+ }
127
+ };
128
+ return {
129
+ ok: true,
130
+ data: {
131
+ ...identity,
132
+ ...parsed.data
133
+ }
134
+ };
135
+ } catch (err) {
136
+ if (require_parse_error_response.isEvaAuthConfigError(err)) throw err;
137
+ return {
138
+ ok: false,
139
+ error: {
140
+ kind: "sdk",
141
+ reason: "token_invalid",
142
+ message: err instanceof Error ? err.message : "Verificación de token fallida",
143
+ status: 401
144
+ }
145
+ };
146
+ }
147
+ }
148
+ Object.defineProperty(exports, "verifyAccessToken", {
149
+ enumerable: true,
150
+ get: function() {
151
+ return verifyAccessToken;
152
+ }
153
+ });
154
+
155
+ //# sourceMappingURL=jwt-BBNqk0TV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-BBNqk0TV.cjs","names":["z","ZodObject","jwtVerify","withKidPrefix","getJwksKeyFn","USER_KID_PREFIX","JWT_CONFIG","getProduct","USER_TOKEN_TYP","isEvaAuthConfigError"],"sources":["../src/jwt-claims.ts","../src/jwt.ts"],"sourcesContent":["/**\n * Claims reservados que el SDK NUNCA expone en EvaTokenPayload,\n * aunque estén presentes en el JWT decodificado.\n *\n * Fuentes:\n * - RFC 7519 §4.1: iss, sub, aud, exp, nbf, iat, jti\n * - OIDC Core 1.0 §2: nonce, auth_time, acr, amr, azp\n *\n * Módulo interno — NO se exporta desde ningún barrel raíz.\n * Uso: src/jwt.ts (filtrado + assertSchemaNoReservedKeys).\n */\nexport const RESERVED_JWT_CLAIMS = [\n 'iat',\n 'exp',\n 'iss',\n 'aud',\n 'jti',\n 'sub',\n 'nbf',\n 'nonce',\n 'auth_time',\n 'acr',\n 'amr',\n 'azp',\n] as const\n\nexport type ReservedJwtClaim = (typeof RESERVED_JWT_CLAIMS)[number]\n","import { jwtVerify } from 'jose'\nimport { z, ZodObject } from 'zod'\nimport type { ZodType } from 'zod'\nimport { USER_KID_PREFIX, USER_TOKEN_TYP } from '@eva_solutions/auth-contracts'\nimport { getJwksKeyFn } from './jwks'\nimport { withKidPrefix } from './key-resolver'\nimport { getProduct, isEvaAuthConfigError } from './config'\nimport { JWT_CONFIG } from './constants'\nimport { RESERVED_JWT_CLAIMS } from './jwt-claims'\nimport type { EvaTokenPayload, Result, EvaSdkError } from './types'\n\n// Shape base que SIEMPRE debe estar en el JWT decodificado.\nconst BaseClaimsSchema = z.object({\n sub: z.string(),\n sessionId: z.string(),\n // RFC 9068: el access token lleva `client_id` (el producto).\n client_id: z.string().min(1),\n // Empresa activa de la sesión; ausente si no hay.\n empresa: z.string().min(1).optional(),\n})\n\n// Set de keys excluidas al construir extrasCandidate.\n// Incluye todos los reserved claims RFC/OIDC + las keys del shape base.\n// 'id' se agrega como defensa contra colisión si el JWT trae un claim 'id' distinto a sub.\nconst EXCLUDED_FROM_EXTRAS = new Set<string>([\n ...RESERVED_JWT_CLAIMS,\n 'sub',\n 'sessionId',\n 'id',\n 'client_id',\n 'clientId',\n 'empresa',\n 'empresaId',\n])\n\n// WeakMap para cachear validación de schema (no re-inspeccionar por request).\nconst _schemaValidationCache = new WeakMap<ZodType<unknown>, true>()\n\n/**\n * Valida que el schema no declare claims reservados (RFC 7519 / OIDC Core 1.0)\n * ni claves del shape base (id, sessionId).\n * Lanza Error sincrono con mensaje claro — falla rápido en la primera invocación.\n * Solo se llama dentro del schema branch (zero overhead en path zero-config).\n * Cachea por referencia de schema con WeakMap.\n */\nfunction assertSchemaNoReservedKeys(schema: ZodType<unknown>): void {\n if (_schemaValidationCache.has(schema)) return\n\n if (schema instanceof ZodObject) {\n for (const key of Object.keys(schema.shape as Record<string, unknown>)) {\n if (EXCLUDED_FROM_EXTRAS.has(key)) {\n throw new Error(\n `extraClaimsSchema declara un claim reservado o del shape base: \"${key}\". ` +\n `Claims reservados (RFC 7519/8725 + OIDC Core 1.0 §2): ${RESERVED_JWT_CLAIMS.join(', ')}. ` +\n `Shape base del SDK (no permitidos en extraClaimsSchema): id, sessionId, clientId, empresaId.`,\n )\n }\n }\n }\n // Schemas no-ZodObject (refinements, transforms, unions): no se puede inspeccionar\n // estáticamente. extrasCandidate ya viene filtrado de reservados antes del parse,\n // así que un schema que requiera 'exp' fallará por ausencia con mensaje claro de Zod.\n\n _schemaValidationCache.set(schema, true)\n}\n\nexport type VerifyAccessTokenOptions<TExtra extends Record<string, unknown>> = {\n extraClaimsSchema?: ZodType<TExtra>\n}\n\n/**\n * Verifica un access token de usuario: firma ES256 con una clave de usuario del JWKS (`kid` con\n * prefijo `usr-`; un token sin `kid` o firmado con una clave de servicio se rechaza), `typ: at+jwt`,\n * issuer, `aud` igual al producto configurado y claims base. Devuelve `id`, `sessionId`, `clientId`\n * (`client_id`) y `empresaId` (claim `empresa`, ausente si la sesión no tiene empresa activa).\n * Un token inválido o expirado devuelve `{ ok: false }` (401); no lanza.\n *\n * @throws Error de configuración (`name === 'EvaAuthConfigError'`) si `authUrl` o `product` no\n * fueron configurados con `configureEvaAuth`: es un error del consumidor, no un token inválido,\n * así que se propaga en vez de degradarse a 401. El consumidor ve un 500.\n */\nexport async function verifyAccessToken<\n TExtra extends Record<string, unknown> = {},\n>(\n token: string,\n opts: VerifyAccessTokenOptions<TExtra> = {},\n): Promise<Result<EvaTokenPayload<TExtra>>> {\n try {\n // 1. Verificar firma + standard claims con jose.\n const { payload } = await jwtVerify(\n token,\n withKidPrefix(getJwksKeyFn(), USER_KID_PREFIX),\n {\n issuer: JWT_CONFIG.ISSUER,\n audience: getProduct(),\n algorithms: [JWT_CONFIG.ALGORITHM],\n typ: USER_TOKEN_TYP,\n requiredClaims: ['exp'],\n },\n )\n\n // 2. Validar shape base (sub + sessionId presentes).\n const base = BaseClaimsSchema.safeParse(payload)\n if (!base.success) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'token_invalid',\n message: 'Payload del token inválido',\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n // Una sola audiencia y `client_id` igual al producto (así los emite Auth): un token con otra\n // forma no es un access token de este producto aunque jose haya aceptado el `aud`.\n if (Array.isArray(payload.aud) || base.data.client_id !== getProduct()) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'token_invalid',\n message: 'Payload del token inválido',\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n const id = base.data.sub\n const sessionId = base.data.sessionId\n const identity = {\n id,\n sessionId,\n clientId: base.data.client_id,\n ...(base.data.empresa !== undefined && {\n empresaId: base.data.empresa,\n }),\n }\n\n // 3. Path SIN schema → drop everything excepto id/sessionId.\n // Defense-in-depth: el SDK NO expone claims que no validó.\n if (!opts.extraClaimsSchema) {\n return {\n ok: true,\n data: identity as EvaTokenPayload<TExtra>,\n }\n }\n\n // 4. Path CON schema:\n // a) fail-fast si schema declara claims reservados o del shape base (cacheado).\n assertSchemaNoReservedKeys(opts.extraClaimsSchema)\n\n // b) construir extrasCandidate: todos los claims del JWT raw EXCEPTO los excluidos.\n const raw = payload as Record<string, unknown>\n const extrasCandidate: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(raw)) {\n if (!EXCLUDED_FROM_EXTRAS.has(k)) extrasCandidate[k] = v\n }\n\n // c) parse async (cubre refinements/transforms async).\n const parsed = await opts.extraClaimsSchema.safeParseAsync(extrasCandidate)\n if (!parsed.success) {\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'token_invalid',\n message: 'Payload del token inválido (claims extra)',\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n\n // d) merge: base + parsed extras.\n return {\n ok: true,\n data: {\n ...identity,\n ...parsed.data,\n } as EvaTokenPayload<TExtra>,\n }\n } catch (err: unknown) {\n // Falta de configuración (authUrl): no es un token inválido, no debe degradarse a 401.\n if (isEvaAuthConfigError(err)) throw err\n const message =\n err instanceof Error ? err.message : 'Verificación de token fallida'\n return {\n ok: false,\n error: {\n kind: 'sdk',\n reason: 'token_invalid',\n message,\n status: 401,\n } satisfies EvaSdkError,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;ACZA,MAAM,mBAAmBA,IAAAA,EAAE,OAAO;CAChC,KAAKA,IAAAA,EAAE,OAAO;CACd,WAAWA,IAAAA,EAAE,OAAO;CAEpB,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CAE3B,SAASA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;AACtC,CAAC;AAKD,MAAM,uCAAuB,IAAI,IAAY;CAC3C,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAM,yCAAyB,IAAI,QAAgC;;;;;;;;AASnE,SAAS,2BAA2B,QAAgC;CAClE,IAAI,uBAAuB,IAAI,MAAM,GAAG;CAExC,IAAI,kBAAkBC,IAAAA,WACf;OAAA,MAAM,OAAO,OAAO,KAAK,OAAO,KAAgC,GACnE,IAAI,qBAAqB,IAAI,GAAG,GAC9B,MAAM,IAAI,MACR,mEAAmE,IAAI,2DACZ,oBAAoB,KAAK,IAAI,EAAE,+FAE5F;CAAA;CAQN,uBAAuB,IAAI,QAAQ,IAAI;AACzC;;;;;;;;;;;;AAiBA,eAAsB,kBAGpB,OACA,OAAyC,CAAC,GACA;CAC1C,IAAI;EAEF,MAAM,EAAE,YAAY,OAAA,GAAMC,KAAAA,UAAAA,CACxB,OACAC,qBAAAA,cAAcC,qBAAAA,aAAa,GAAGC,eAAAA,eAAe,GAC7C;GACE,QAAQC,kBAAAA,WAAW;GACnB,UAAUC,6BAAAA,WAAW;GACrB,YAAY,CAACD,kBAAAA,WAAW,SAAS;GACjC,KAAKE,eAAAA;GACL,gBAAgB,CAAC,KAAK;EACxB,CACF;EAGA,MAAM,OAAO,iBAAiB,UAAU,OAAO;EAC/C,IAAI,CAAC,KAAK,SACR,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;GACV;EACF;EAKF,IAAI,MAAM,QAAQ,QAAQ,GAAG,KAAK,KAAK,KAAK,cAAcD,6BAAAA,WAAW,GACnE,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;GACV;EACF;EAKF,MAAM,WAAW;GACf,IAHS,KAAK,KAAK;GAInB,WAHgB,KAAK,KAAK;GAI1B,UAAU,KAAK,KAAK;GACpB,GAAI,KAAK,KAAK,YAAY,KAAA,KAAa,EACrC,WAAW,KAAK,KAAK,QACvB;EACF;EAIA,IAAI,CAAC,KAAK,mBACR,OAAO;GACL,IAAI;GACJ,MAAM;EACR;EAKF,2BAA2B,KAAK,iBAAiB;EAGjD,MAAM,MAAM;EACZ,MAAM,kBAA2C,CAAC;EAClD,KAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,GAAG,GACrC,IAAI,CAAC,qBAAqB,IAAI,CAAC,GAAG,gBAAgB,KAAK;EAIzD,MAAM,SAAS,MAAM,KAAK,kBAAkB,eAAe,eAAe;EAC1E,IAAI,CAAC,OAAO,SACV,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;GACV;EACF;EAIF,OAAO;GACL,IAAI;GACJ,MAAM;IACJ,GAAG;IACH,GAAG,OAAO;GACZ;EACF;CACF,SAAS,KAAc;EAErB,IAAIE,6BAAAA,qBAAqB,GAAG,GAAG,MAAM;EAGrC,OAAO;GACL,IAAI;GACJ,OAAO;IACL,MAAM;IACN,QAAQ;IACR,SANF,eAAe,QAAQ,IAAI,UAAU;IAOnC,QAAQ;GACV;EACF;CACF;AACF"}