@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.
- package/CHANGELOG.md +290 -0
- package/LICENSE +21 -0
- package/README.md +481 -2
- package/dist/admin/index.cjs +4 -0
- package/dist/admin/index.d.cts +2 -0
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.js +1 -0
- package/dist/admin-DjvuvuI8.js +408 -0
- package/dist/admin-DjvuvuI8.js.map +1 -0
- package/dist/admin-Q6lbWqLM.cjs +419 -0
- package/dist/admin-Q6lbWqLM.cjs.map +1 -0
- package/dist/api-path-2Ulruz7R.cjs +34 -0
- package/dist/api-path-2Ulruz7R.cjs.map +1 -0
- package/dist/api-path-B-vSkL2H.js +29 -0
- package/dist/api-path-B-vSkL2H.js.map +1 -0
- package/dist/auth-19r-Q6X2.js +84 -0
- package/dist/auth-19r-Q6X2.js.map +1 -0
- package/dist/auth-DX1N5JA4.cjs +131 -0
- package/dist/auth-DX1N5JA4.cjs.map +1 -0
- package/dist/auth-handlers-B3iJaPln.js +343 -0
- package/dist/auth-handlers-B3iJaPln.js.map +1 -0
- package/dist/auth-handlers-BTbXKJms.d.ts +15 -0
- package/dist/auth-handlers-BTbXKJms.d.ts.map +1 -0
- package/dist/auth-handlers-CDzGFDTu.cjs +404 -0
- package/dist/auth-handlers-CDzGFDTu.cjs.map +1 -0
- package/dist/auth-handlers-DRUUTEtW.d.cts +15 -0
- package/dist/auth-handlers-DRUUTEtW.d.cts.map +1 -0
- package/dist/catalog-CHPqldcj.cjs +172 -0
- package/dist/catalog-CHPqldcj.cjs.map +1 -0
- package/dist/catalog-CIqpzgsM.d.cts +75 -0
- package/dist/catalog-CIqpzgsM.d.cts.map +1 -0
- package/dist/catalog-CIqpzgsM.d.ts +75 -0
- package/dist/catalog-CIqpzgsM.d.ts.map +1 -0
- package/dist/catalog-DqPhtCKZ.js +95 -0
- package/dist/catalog-DqPhtCKZ.js.map +1 -0
- package/dist/config-D6Tr7ev6.d.cts +95 -0
- package/dist/config-D6Tr7ev6.d.cts.map +1 -0
- package/dist/config-rl4_-VAq.d.ts +95 -0
- package/dist/config-rl4_-VAq.d.ts.map +1 -0
- package/dist/constants-BE1_9Tod.cjs +52 -0
- package/dist/constants-BE1_9Tod.cjs.map +1 -0
- package/dist/constants-BY7QZokc.js +29 -0
- package/dist/constants-BY7QZokc.js.map +1 -0
- package/dist/constants-CcbhOaAP.cjs +153 -0
- package/dist/constants-CcbhOaAP.cjs.map +1 -0
- package/dist/constants-rNuD5qJn.js +94 -0
- package/dist/constants-rNuD5qJn.js.map +1 -0
- package/dist/contracts/index.cjs +1006 -0
- package/dist/contracts/index.cjs.map +1 -0
- package/dist/contracts/index.d.cts +488 -0
- package/dist/contracts/index.d.cts.map +1 -0
- package/dist/contracts/index.d.ts +488 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +817 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/cookies-DCIcr7uy.cjs +94 -0
- package/dist/cookies-DCIcr7uy.cjs.map +1 -0
- package/dist/cookies-DKEC7AWv.js +71 -0
- package/dist/cookies-DKEC7AWv.js.map +1 -0
- package/dist/delegated-token-CVNbMNfy.js +426 -0
- package/dist/delegated-token-CVNbMNfy.js.map +1 -0
- package/dist/delegated-token-DHSK4rHI.cjs +461 -0
- package/dist/delegated-token-DHSK4rHI.cjs.map +1 -0
- package/dist/error-helpers-BenWu-_u.d.ts +105 -0
- package/dist/error-helpers-BenWu-_u.d.ts.map +1 -0
- package/dist/error-helpers-KBHUbkOM.d.cts +105 -0
- package/dist/error-helpers-KBHUbkOM.d.cts.map +1 -0
- package/dist/error-helpers-XCh4ZJ-g.cjs +282 -0
- package/dist/error-helpers-XCh4ZJ-g.cjs.map +1 -0
- package/dist/error-helpers-lnwgNOw9.js +145 -0
- package/dist/error-helpers-lnwgNOw9.js.map +1 -0
- package/dist/error-messages-CGpW1fsg.d.cts +48 -0
- package/dist/error-messages-CGpW1fsg.d.cts.map +1 -0
- package/dist/error-messages-CGpW1fsg.d.ts +48 -0
- package/dist/error-messages-CGpW1fsg.d.ts.map +1 -0
- package/dist/event-codes-BBJHon-I.cjs +48 -0
- package/dist/event-codes-BBJHon-I.cjs.map +1 -0
- package/dist/event-codes-BgcJWsov.d.cts +42 -0
- package/dist/event-codes-BgcJWsov.d.cts.map +1 -0
- package/dist/event-codes-BgcJWsov.d.ts +42 -0
- package/dist/event-codes-BgcJWsov.d.ts.map +1 -0
- package/dist/event-codes-DR5_VlaR.js +43 -0
- package/dist/event-codes-DR5_VlaR.js.map +1 -0
- package/dist/generic/index.cjs +91 -0
- package/dist/generic/index.cjs.map +1 -0
- package/dist/generic/index.d.cts +27 -0
- package/dist/generic/index.d.cts.map +1 -0
- package/dist/generic/index.d.ts +27 -0
- package/dist/generic/index.d.ts.map +1 -0
- package/dist/generic/index.js +80 -0
- package/dist/generic/index.js.map +1 -0
- package/dist/hono/index.cjs +309 -0
- package/dist/hono/index.cjs.map +1 -0
- package/dist/hono/index.d.cts +272 -0
- package/dist/hono/index.d.cts.map +1 -0
- package/dist/hono/index.d.ts +272 -0
- package/dist/hono/index.d.ts.map +1 -0
- package/dist/hono/index.js +290 -0
- package/dist/hono/index.js.map +1 -0
- package/dist/hono-openapi/index.cjs +326 -0
- package/dist/hono-openapi/index.cjs.map +1 -0
- package/dist/hono-openapi/index.d.cts +14 -0
- package/dist/hono-openapi/index.d.cts.map +1 -0
- package/dist/hono-openapi/index.d.ts +14 -0
- package/dist/hono-openapi/index.d.ts.map +1 -0
- package/dist/hono-openapi/index.js +307 -0
- package/dist/hono-openapi/index.js.map +1 -0
- package/dist/http-client-BVF3iktR.cjs +211 -0
- package/dist/http-client-BVF3iktR.cjs.map +1 -0
- package/dist/http-client-Da0-OMfc.js +206 -0
- package/dist/http-client-Da0-OMfc.js.map +1 -0
- package/dist/index-BYzDaMR9.d.ts +312 -0
- package/dist/index-BYzDaMR9.d.ts.map +1 -0
- package/dist/index-CNNMCrdl.d.ts +66 -0
- package/dist/index-CNNMCrdl.d.ts.map +1 -0
- package/dist/index-DBZoLU4E.d.ts +240 -0
- package/dist/index-DBZoLU4E.d.ts.map +1 -0
- package/dist/index-DcvQWByo.d.cts +66 -0
- package/dist/index-DcvQWByo.d.cts.map +1 -0
- package/dist/index-Dold-Ycb.d.cts +1711 -0
- package/dist/index-Dold-Ycb.d.cts.map +1 -0
- package/dist/index-Dold-Ycb.d.ts +1711 -0
- package/dist/index-Dold-Ycb.d.ts.map +1 -0
- package/dist/index-jAO62-OD.d.cts +240 -0
- package/dist/index-jAO62-OD.d.cts.map +1 -0
- package/dist/index-o7nXcl7z.d.cts +312 -0
- package/dist/index-o7nXcl7z.d.cts.map +1 -0
- package/dist/index.cjs +89 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +114 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +114 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/jwt-BBNqk0TV.cjs +155 -0
- package/dist/jwt-BBNqk0TV.cjs.map +1 -0
- package/dist/jwt-DhqgH94B.js +150 -0
- package/dist/jwt-DhqgH94B.js.map +1 -0
- package/dist/key-resolver-CESqj4-P.cjs +45 -0
- package/dist/key-resolver-CESqj4-P.cjs.map +1 -0
- package/dist/key-resolver-D56I2Zpz.js +34 -0
- package/dist/key-resolver-D56I2Zpz.js.map +1 -0
- package/dist/parse-error-response-6qOQS5y9.cjs +316 -0
- package/dist/parse-error-response-6qOQS5y9.cjs.map +1 -0
- package/dist/parse-error-response-BM9-kjs0.js +239 -0
- package/dist/parse-error-response-BM9-kjs0.js.map +1 -0
- package/dist/path-segment-C25i6aaH.cjs +29 -0
- package/dist/path-segment-C25i6aaH.cjs.map +1 -0
- package/dist/path-segment-CyqnaFrP.js +24 -0
- package/dist/path-segment-CyqnaFrP.js.map +1 -0
- package/dist/react/index.cjs +336 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.cts +151 -0
- package/dist/react/index.d.cts.map +1 -0
- package/dist/react/index.d.ts +151 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +300 -0
- package/dist/react/index.js.map +1 -0
- package/dist/refresh-dedup-CKaHHe7m.js +14 -0
- package/dist/refresh-dedup-CKaHHe7m.js.map +1 -0
- package/dist/refresh-dedup-CLdACQXR.cjs +19 -0
- package/dist/refresh-dedup-CLdACQXR.cjs.map +1 -0
- package/dist/rolldown-runtime-CmQyd0Gu.cjs +27 -0
- package/dist/routes-DpAzgY1V.cjs +424 -0
- package/dist/routes-DpAzgY1V.cjs.map +1 -0
- package/dist/routes-F1g5aVqP.js +347 -0
- package/dist/routes-F1g5aVqP.js.map +1 -0
- package/dist/s2s/index.cjs +24 -0
- package/dist/s2s/index.d.cts +5 -0
- package/dist/s2s/index.d.ts +5 -0
- package/dist/s2s/index.js +5 -0
- package/dist/s2s-6wbotr78.cjs +926 -0
- package/dist/s2s-6wbotr78.cjs.map +1 -0
- package/dist/s2s-B_0SIQzn.js +897 -0
- package/dist/s2s-B_0SIQzn.js.map +1 -0
- package/dist/sign-C7y6xdvT.cjs +324 -0
- package/dist/sign-C7y6xdvT.cjs.map +1 -0
- package/dist/sign-HFtcYwa-.js +259 -0
- package/dist/sign-HFtcYwa-.js.map +1 -0
- package/dist/tokens-C1nzkn21.cjs +232 -0
- package/dist/tokens-C1nzkn21.cjs.map +1 -0
- package/dist/tokens-C3Z40qd7.js +107 -0
- package/dist/tokens-C3Z40qd7.js.map +1 -0
- package/dist/types-B5sf7kKE.d.cts +52 -0
- package/dist/types-B5sf7kKE.d.cts.map +1 -0
- package/dist/types-CLOIHzRu.d.ts +96 -0
- package/dist/types-CLOIHzRu.d.ts.map +1 -0
- package/dist/types-CQTZdZIF.d.ts +52 -0
- package/dist/types-CQTZdZIF.d.ts.map +1 -0
- package/dist/types-DGeQ8j4k.d.cts +538 -0
- package/dist/types-DGeQ8j4k.d.cts.map +1 -0
- package/dist/types-DIUWza9-.d.ts +538 -0
- package/dist/types-DIUWza9-.d.ts.map +1 -0
- package/dist/types-qh6ANBCV.d.cts +96 -0
- package/dist/types-qh6ANBCV.d.cts.map +1 -0
- package/dist/webhooks/index.cjs +8 -0
- package/dist/webhooks/index.d.cts +5 -0
- package/dist/webhooks/index.d.ts +5 -0
- package/dist/webhooks/index.js +4 -0
- package/dist/webhooks-B5sAWC9W.js +74 -0
- package/dist/webhooks-B5sAWC9W.js.map +1 -0
- package/dist/webhooks-Cx11psg1.cjs +79 -0
- package/dist/webhooks-Cx11psg1.cjs.map +1 -0
- package/package.json +192 -3
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { a as EvaError, h as SdkErrorReason, o as EvaSdkError, p as ErrorCode, r as EvaApiError } from "./types-qh6ANBCV.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* Narrows EvaError a EvaApiError (kind: 'api').
|
|
4
|
+
* Use para acceder a `.code`, `.status`, `.message` del error del API.
|
|
5
|
+
*/
|
|
6
|
+
declare function isApiError(err: EvaError): err is EvaApiError;
|
|
7
|
+
/**
|
|
8
|
+
* Narrows EvaError a EvaSdkError (kind: 'sdk').
|
|
9
|
+
* Use para acceder a `.reason`, `.status`, `.message` del error interno del SDK.
|
|
10
|
+
*/
|
|
11
|
+
declare function isSdkError(err: EvaError): err is EvaSdkError;
|
|
12
|
+
/**
|
|
13
|
+
* Comprueba si err es un EvaApiError con el code exacto indicado.
|
|
14
|
+
* Útil para codes feature-specific que no tienen shortcut propio.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* if (matchError(r.error, ERROR_CODES.conflict)) { ... }
|
|
18
|
+
* if (matchError(r.error, 'service_client_already_exists')) { ... }
|
|
19
|
+
*/
|
|
20
|
+
declare function matchError<TCode extends ErrorCode>(err: EvaError, code: TCode): err is EvaApiError & {
|
|
21
|
+
code: TCode;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Comprueba si err es un EvaSdkError con el reason exacto indicado.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* if (matchSdkReason(r.error, SDK_ERROR_REASONS.network)) { ... }
|
|
28
|
+
*/
|
|
29
|
+
declare function matchSdkReason<TReason extends SdkErrorReason>(err: EvaError, reason: TReason): err is EvaSdkError & {
|
|
30
|
+
reason: TReason;
|
|
31
|
+
};
|
|
32
|
+
/** El recurso solicitado no existe (HTTP 404). */
|
|
33
|
+
declare function isNotFound(err: EvaError): err is EvaApiError & {
|
|
34
|
+
code: 'not_found';
|
|
35
|
+
};
|
|
36
|
+
/** Token o credenciales inválidos (HTTP 401). */
|
|
37
|
+
declare function isUnauthorized(err: EvaError): err is EvaApiError & {
|
|
38
|
+
code: 'unauthorized';
|
|
39
|
+
};
|
|
40
|
+
/** Acción no permitida para el usuario autenticado (HTTP 403). */
|
|
41
|
+
declare function isForbidden(err: EvaError): err is EvaApiError & {
|
|
42
|
+
code: 'forbidden';
|
|
43
|
+
};
|
|
44
|
+
/** El recurso ya existe o hay conflicto de estado (HTTP 409). */
|
|
45
|
+
declare function isConflict(err: EvaError): err is EvaApiError & {
|
|
46
|
+
code: 'conflict';
|
|
47
|
+
};
|
|
48
|
+
/** Los datos de entrada no superaron la validación (HTTP 422). */
|
|
49
|
+
declare function isValidationError(err: EvaError): err is EvaApiError & {
|
|
50
|
+
code: 'validation_error';
|
|
51
|
+
};
|
|
52
|
+
/** Límite de requests excedido (HTTP 429). */
|
|
53
|
+
declare function isRateLimited(err: EvaError): err is EvaApiError & {
|
|
54
|
+
code: 'rate_limited';
|
|
55
|
+
};
|
|
56
|
+
/** El recurso fue eliminado permanentemente (HTTP 410). */
|
|
57
|
+
declare function isGone(err: EvaError): err is EvaApiError & {
|
|
58
|
+
code: 'gone';
|
|
59
|
+
};
|
|
60
|
+
/** La entidad no puede procesarse según las reglas de negocio (HTTP 422). */
|
|
61
|
+
declare function isUnprocessableEntity(err: EvaError): err is EvaApiError & {
|
|
62
|
+
code: 'unprocessable_entity';
|
|
63
|
+
};
|
|
64
|
+
/** Request malformada o con parámetros inválidos (HTTP 400). */
|
|
65
|
+
declare function isBadRequest(err: EvaError): err is EvaApiError & {
|
|
66
|
+
code: 'bad_request';
|
|
67
|
+
};
|
|
68
|
+
/** Error interno del servidor (HTTP 500). */
|
|
69
|
+
declare function isInternalError(err: EvaError): err is EvaApiError & {
|
|
70
|
+
code: 'internal_error';
|
|
71
|
+
};
|
|
72
|
+
/** El servicio no está disponible (HTTP 503). */
|
|
73
|
+
declare function isServiceUnavailable(err: EvaError): err is EvaApiError & {
|
|
74
|
+
code: 'service_unavailable';
|
|
75
|
+
};
|
|
76
|
+
/** La cuenta está bloqueada por estado (HTTP 403). */
|
|
77
|
+
declare function isAccountStateLocked(err: EvaError): err is EvaApiError & {
|
|
78
|
+
code: 'account_state_locked';
|
|
79
|
+
};
|
|
80
|
+
/** Fallo de red o fetch (no se pudo contactar al servidor). */
|
|
81
|
+
declare function isNetworkError(err: EvaError): err is EvaSdkError & {
|
|
82
|
+
reason: 'network';
|
|
83
|
+
};
|
|
84
|
+
/** Token presente pero inválido (signature/format/expiry). */
|
|
85
|
+
declare function isTokenInvalid(err: EvaError): err is EvaSdkError & {
|
|
86
|
+
reason: 'token_invalid';
|
|
87
|
+
};
|
|
88
|
+
/** No hay tokens en el request (sin cookies de autenticación). */
|
|
89
|
+
declare function isAuthRequired(err: EvaError): err is EvaSdkError & {
|
|
90
|
+
reason: 'auth_required';
|
|
91
|
+
};
|
|
92
|
+
/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */
|
|
93
|
+
declare function isRefreshNoTokens(err: EvaError): err is EvaSdkError & {
|
|
94
|
+
reason: 'refresh_no_tokens';
|
|
95
|
+
};
|
|
96
|
+
/** Fallo de verificación no clasificable (post-refresh). */
|
|
97
|
+
declare function isVerifyFailed(err: EvaError): err is EvaSdkError & {
|
|
98
|
+
reason: 'verify_failed';
|
|
99
|
+
};
|
|
100
|
+
/** Respuesta HTTP no parseable o sin el shape esperado. */
|
|
101
|
+
declare function isMalformed(err: EvaError): err is EvaSdkError & {
|
|
102
|
+
reason: 'malformed';
|
|
103
|
+
};
|
|
104
|
+
export { matchSdkReason as S, isUnauthorized as _, isConflict as a, isVerifyFailed as b, isInternalError as c, isNotFound as d, isRateLimited as f, isTokenInvalid as g, isServiceUnavailable as h, isBadRequest as i, isMalformed as l, isSdkError as m, isApiError as n, isForbidden as o, isRefreshNoTokens as p, isAuthRequired as r, isGone as s, isAccountStateLocked as t, isNetworkError as u, isUnprocessableEntity as v, matchError as x, isValidationError as y };
|
|
105
|
+
//# sourceMappingURL=error-helpers-KBHUbkOM.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers-KBHUbkOM.d.cts","names":[],"sources":["../src/error-helpers.ts"],"mappings":";;;;;iBA4BgB,WAAW,KAAK,WAAW,OAAO;;;;;iBAQlC,WAAW,KAAK,WAAW,OAAO;;;;;;;;;iBAgBlC,WAAW,cAAc,WACvC,KAAK,UACL,MAAM,QACL,OAAO;EAAgB,MAAM;;;;;;;;iBAUhB,eAAe,gBAAgB,gBAC7C,KAAK,UACL,QAAQ,UACP,OAAO;EAAgB,QAAQ;;;iBASlB,WACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,eACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,YACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,WACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,kBACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,cACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,OAAO,KAAK,WAAW,OAAO;EAAgB;;;iBAK9C,sBACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,aACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,gBACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,qBACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,qBACd,KAAK,WACJ,OAAO;EAAgB;;;iBASV,eACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,eACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,eACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,kBACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,eACd,KAAK,WACJ,OAAO;EAAgB;;;iBAKV,YACd,KAAK,WACJ,OAAO;EAAgB"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
const require_constants = require("./constants-CcbhOaAP.cjs");
|
|
2
|
+
// src/error-codes.ts
|
|
3
|
+
/**
|
|
4
|
+
* Reasons internos del SDK — enum cerrado, 6 valores.
|
|
5
|
+
* Solo aplican a EvaSdkError (kind: 'sdk').
|
|
6
|
+
*/
|
|
7
|
+
const SDK_ERROR_REASONS = {
|
|
8
|
+
/** No hay tokens en el request (sin cookies). */
|
|
9
|
+
auth_required: "auth_required",
|
|
10
|
+
/** Token presente pero inválido (signature/format/expiry). */
|
|
11
|
+
token_invalid: "token_invalid",
|
|
12
|
+
/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */
|
|
13
|
+
refresh_no_tokens: "refresh_no_tokens",
|
|
14
|
+
/** Fallo de verificación no clasificable (post-refresh). */
|
|
15
|
+
verify_failed: "verify_failed",
|
|
16
|
+
/** Error de red / fetch fallido. */
|
|
17
|
+
network: "network",
|
|
18
|
+
/** Respuesta HTTP no parseable o sin el shape esperado. */
|
|
19
|
+
malformed: "malformed"
|
|
20
|
+
};
|
|
21
|
+
// src/error-helpers.ts
|
|
22
|
+
/**
|
|
23
|
+
* Helpers semánticos para inspeccionar EvaError sin conocer los internals del SDK.
|
|
24
|
+
*
|
|
25
|
+
* El consumidor NO debe inspeccionar `err.kind` ni comparar contra `ERROR_CODES`
|
|
26
|
+
* directamente. Use los helpers exportados aquí.
|
|
27
|
+
*
|
|
28
|
+
* Exports:
|
|
29
|
+
* - Branch guards: isApiError, isSdkError
|
|
30
|
+
* - Generic matchers: matchError, matchSdkReason
|
|
31
|
+
* - API shortcut predicates (12): isNotFound, isUnauthorized, isForbidden,
|
|
32
|
+
* isConflict, isValidationError, isRateLimited, isGone, isUnprocessableEntity,
|
|
33
|
+
* isBadRequest, isInternalError, isServiceUnavailable, isAccountStateLocked
|
|
34
|
+
* - SDK shortcut predicates (6): isNetworkError, isTokenInvalid, isAuthRequired,
|
|
35
|
+
* isRefreshNoTokens, isVerifyFailed, isMalformed
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Narrows EvaError a EvaApiError (kind: 'api').
|
|
39
|
+
* Use para acceder a `.code`, `.status`, `.message` del error del API.
|
|
40
|
+
*/
|
|
41
|
+
function isApiError(err) {
|
|
42
|
+
return err.kind === "api";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Narrows EvaError a EvaSdkError (kind: 'sdk').
|
|
46
|
+
* Use para acceder a `.reason`, `.status`, `.message` del error interno del SDK.
|
|
47
|
+
*/
|
|
48
|
+
function isSdkError(err) {
|
|
49
|
+
return err.kind === "sdk";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Comprueba si err es un EvaApiError con el code exacto indicado.
|
|
53
|
+
* Útil para codes feature-specific que no tienen shortcut propio.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* if (matchError(r.error, ERROR_CODES.conflict)) { ... }
|
|
57
|
+
* if (matchError(r.error, 'service_client_already_exists')) { ... }
|
|
58
|
+
*/
|
|
59
|
+
function matchError(err, code) {
|
|
60
|
+
return isApiError(err) && err.code === code;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Comprueba si err es un EvaSdkError con el reason exacto indicado.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* if (matchSdkReason(r.error, SDK_ERROR_REASONS.network)) { ... }
|
|
67
|
+
*/
|
|
68
|
+
function matchSdkReason(err, reason) {
|
|
69
|
+
return isSdkError(err) && err.reason === reason;
|
|
70
|
+
}
|
|
71
|
+
/** El recurso solicitado no existe (HTTP 404). */
|
|
72
|
+
function isNotFound(err) {
|
|
73
|
+
return matchError(err, require_constants.ERROR_CODES.not_found);
|
|
74
|
+
}
|
|
75
|
+
/** Token o credenciales inválidos (HTTP 401). */
|
|
76
|
+
function isUnauthorized(err) {
|
|
77
|
+
return matchError(err, require_constants.ERROR_CODES.unauthorized);
|
|
78
|
+
}
|
|
79
|
+
/** Acción no permitida para el usuario autenticado (HTTP 403). */
|
|
80
|
+
function isForbidden(err) {
|
|
81
|
+
return matchError(err, require_constants.ERROR_CODES.forbidden);
|
|
82
|
+
}
|
|
83
|
+
/** El recurso ya existe o hay conflicto de estado (HTTP 409). */
|
|
84
|
+
function isConflict(err) {
|
|
85
|
+
return matchError(err, require_constants.ERROR_CODES.conflict);
|
|
86
|
+
}
|
|
87
|
+
/** Los datos de entrada no superaron la validación (HTTP 422). */
|
|
88
|
+
function isValidationError(err) {
|
|
89
|
+
return matchError(err, require_constants.ERROR_CODES.validation_error);
|
|
90
|
+
}
|
|
91
|
+
/** Límite de requests excedido (HTTP 429). */
|
|
92
|
+
function isRateLimited(err) {
|
|
93
|
+
return matchError(err, require_constants.ERROR_CODES.rate_limited);
|
|
94
|
+
}
|
|
95
|
+
/** El recurso fue eliminado permanentemente (HTTP 410). */
|
|
96
|
+
function isGone(err) {
|
|
97
|
+
return matchError(err, require_constants.ERROR_CODES.gone);
|
|
98
|
+
}
|
|
99
|
+
/** La entidad no puede procesarse según las reglas de negocio (HTTP 422). */
|
|
100
|
+
function isUnprocessableEntity(err) {
|
|
101
|
+
return matchError(err, require_constants.ERROR_CODES.unprocessable_entity);
|
|
102
|
+
}
|
|
103
|
+
/** Request malformada o con parámetros inválidos (HTTP 400). */
|
|
104
|
+
function isBadRequest(err) {
|
|
105
|
+
return matchError(err, require_constants.ERROR_CODES.bad_request);
|
|
106
|
+
}
|
|
107
|
+
/** Error interno del servidor (HTTP 500). */
|
|
108
|
+
function isInternalError(err) {
|
|
109
|
+
return matchError(err, require_constants.ERROR_CODES.internal_error);
|
|
110
|
+
}
|
|
111
|
+
/** El servicio no está disponible (HTTP 503). */
|
|
112
|
+
function isServiceUnavailable(err) {
|
|
113
|
+
return matchError(err, require_constants.ERROR_CODES.service_unavailable);
|
|
114
|
+
}
|
|
115
|
+
/** La cuenta está bloqueada por estado (HTTP 403). */
|
|
116
|
+
function isAccountStateLocked(err) {
|
|
117
|
+
return matchError(err, require_constants.ERROR_CODES.account_state_locked);
|
|
118
|
+
}
|
|
119
|
+
/** Fallo de red o fetch (no se pudo contactar al servidor). */
|
|
120
|
+
function isNetworkError(err) {
|
|
121
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.network);
|
|
122
|
+
}
|
|
123
|
+
/** Token presente pero inválido (signature/format/expiry). */
|
|
124
|
+
function isTokenInvalid(err) {
|
|
125
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.token_invalid);
|
|
126
|
+
}
|
|
127
|
+
/** No hay tokens en el request (sin cookies de autenticación). */
|
|
128
|
+
function isAuthRequired(err) {
|
|
129
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.auth_required);
|
|
130
|
+
}
|
|
131
|
+
/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */
|
|
132
|
+
function isRefreshNoTokens(err) {
|
|
133
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.refresh_no_tokens);
|
|
134
|
+
}
|
|
135
|
+
/** Fallo de verificación no clasificable (post-refresh). */
|
|
136
|
+
function isVerifyFailed(err) {
|
|
137
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.verify_failed);
|
|
138
|
+
}
|
|
139
|
+
/** Respuesta HTTP no parseable o sin el shape esperado. */
|
|
140
|
+
function isMalformed(err) {
|
|
141
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.malformed);
|
|
142
|
+
}
|
|
143
|
+
Object.defineProperty(exports, "SDK_ERROR_REASONS", {
|
|
144
|
+
enumerable: true,
|
|
145
|
+
get: function() {
|
|
146
|
+
return SDK_ERROR_REASONS;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
Object.defineProperty(exports, "isAccountStateLocked", {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
get: function() {
|
|
152
|
+
return isAccountStateLocked;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
Object.defineProperty(exports, "isApiError", {
|
|
156
|
+
enumerable: true,
|
|
157
|
+
get: function() {
|
|
158
|
+
return isApiError;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
Object.defineProperty(exports, "isAuthRequired", {
|
|
162
|
+
enumerable: true,
|
|
163
|
+
get: function() {
|
|
164
|
+
return isAuthRequired;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
Object.defineProperty(exports, "isBadRequest", {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
get: function() {
|
|
170
|
+
return isBadRequest;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(exports, "isConflict", {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function() {
|
|
176
|
+
return isConflict;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
Object.defineProperty(exports, "isForbidden", {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
get: function() {
|
|
182
|
+
return isForbidden;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
Object.defineProperty(exports, "isGone", {
|
|
186
|
+
enumerable: true,
|
|
187
|
+
get: function() {
|
|
188
|
+
return isGone;
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
Object.defineProperty(exports, "isInternalError", {
|
|
192
|
+
enumerable: true,
|
|
193
|
+
get: function() {
|
|
194
|
+
return isInternalError;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
Object.defineProperty(exports, "isMalformed", {
|
|
198
|
+
enumerable: true,
|
|
199
|
+
get: function() {
|
|
200
|
+
return isMalformed;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
Object.defineProperty(exports, "isNetworkError", {
|
|
204
|
+
enumerable: true,
|
|
205
|
+
get: function() {
|
|
206
|
+
return isNetworkError;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
Object.defineProperty(exports, "isNotFound", {
|
|
210
|
+
enumerable: true,
|
|
211
|
+
get: function() {
|
|
212
|
+
return isNotFound;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
Object.defineProperty(exports, "isRateLimited", {
|
|
216
|
+
enumerable: true,
|
|
217
|
+
get: function() {
|
|
218
|
+
return isRateLimited;
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
Object.defineProperty(exports, "isRefreshNoTokens", {
|
|
222
|
+
enumerable: true,
|
|
223
|
+
get: function() {
|
|
224
|
+
return isRefreshNoTokens;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
Object.defineProperty(exports, "isSdkError", {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function() {
|
|
230
|
+
return isSdkError;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
Object.defineProperty(exports, "isServiceUnavailable", {
|
|
234
|
+
enumerable: true,
|
|
235
|
+
get: function() {
|
|
236
|
+
return isServiceUnavailable;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
Object.defineProperty(exports, "isTokenInvalid", {
|
|
240
|
+
enumerable: true,
|
|
241
|
+
get: function() {
|
|
242
|
+
return isTokenInvalid;
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
Object.defineProperty(exports, "isUnauthorized", {
|
|
246
|
+
enumerable: true,
|
|
247
|
+
get: function() {
|
|
248
|
+
return isUnauthorized;
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
Object.defineProperty(exports, "isUnprocessableEntity", {
|
|
252
|
+
enumerable: true,
|
|
253
|
+
get: function() {
|
|
254
|
+
return isUnprocessableEntity;
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
Object.defineProperty(exports, "isValidationError", {
|
|
258
|
+
enumerable: true,
|
|
259
|
+
get: function() {
|
|
260
|
+
return isValidationError;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
Object.defineProperty(exports, "isVerifyFailed", {
|
|
264
|
+
enumerable: true,
|
|
265
|
+
get: function() {
|
|
266
|
+
return isVerifyFailed;
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
Object.defineProperty(exports, "matchError", {
|
|
270
|
+
enumerable: true,
|
|
271
|
+
get: function() {
|
|
272
|
+
return matchError;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
Object.defineProperty(exports, "matchSdkReason", {
|
|
276
|
+
enumerable: true,
|
|
277
|
+
get: function() {
|
|
278
|
+
return matchSdkReason;
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
//# sourceMappingURL=error-helpers-XCh4ZJ-g.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers-XCh4ZJ-g.cjs","names":["ERROR_CODES"],"sources":["../src/error-codes.ts","../src/error-helpers.ts"],"sourcesContent":["/**\n * Catálogo de error codes del Auth Service y reasons internos del SDK.\n *\n * - ERROR_CODES: re-export del contrato compartido (12 entries, mismo objeto que usa el API). Solo aplica a EvaApiError (kind: 'api').\n * - SDK_ERROR_REASONS: enum cerrado de reasons internos del SDK (6 entries). Solo aplica a EvaSdkError (kind: 'sdk').\n *\n * D-07 LOCKED: el catálogo replica el runtime del API (12 codes, incluyendo account_state_locked).\n * D-08 LOCKED: dual type CoreErrorCode / ErrorCode para catálogo semiabierto con autocomplete.\n */\n\nimport type { CoreErrorCode } from '@eva_solutions/auth-contracts'\n\n/*\n * `ERROR_CODES` y `CoreErrorCode` vienen del contrato. Este módulo es alcanzable desde\n * `src/react`: de la barrel del contrato solo se importan VALORES de módulos puros\n * (`constants.ts`, `routes.ts`) o `import type`. Un schema importado por valor aquí arrastraría\n * su código al bundle de react.\n */\nexport { ERROR_CODES } from '@eva_solutions/auth-contracts'\n\n/**\n * Unión cerrada de los 12 error codes core del Auth Service.\n * Para autocomplete exhaustivo con los valores del API.\n */\nexport type { CoreErrorCode }\n\n/**\n * Tipo semiabierto: incluye los 12 cores (con autocomplete) y permite\n * strings adicionales para feature-specific codes del API.\n * Pattern idiomático TS: `LiteralType | (string & {})`.\n */\nexport type ErrorCode = CoreErrorCode | (string & {})\n\n/**\n * Reasons internos del SDK — enum cerrado, 6 valores.\n * Solo aplican a EvaSdkError (kind: 'sdk').\n */\nexport const SDK_ERROR_REASONS = {\n /** No hay tokens en el request (sin cookies). */\n auth_required: 'auth_required',\n /** Token presente pero inválido (signature/format/expiry). */\n token_invalid: 'token_invalid',\n /** Refresh exitoso pero el servidor no devolvió tokens nuevos. */\n refresh_no_tokens: 'refresh_no_tokens',\n /** Fallo de verificación no clasificable (post-refresh). */\n verify_failed: 'verify_failed',\n /** Error de red / fetch fallido. */\n network: 'network',\n /** Respuesta HTTP no parseable o sin el shape esperado. */\n malformed: 'malformed',\n} as const\n\n/**\n * Unión cerrada de los 6 reasons internos del SDK.\n */\nexport type SdkErrorReason =\n (typeof SDK_ERROR_REASONS)[keyof typeof SDK_ERROR_REASONS]\n","/**\n * Helpers semánticos para inspeccionar EvaError sin conocer los internals del SDK.\n *\n * El consumidor NO debe inspeccionar `err.kind` ni comparar contra `ERROR_CODES`\n * directamente. Use los helpers exportados aquí.\n *\n * Exports:\n * - Branch guards: isApiError, isSdkError\n * - Generic matchers: matchError, matchSdkReason\n * - API shortcut predicates (12): isNotFound, isUnauthorized, isForbidden,\n * isConflict, isValidationError, isRateLimited, isGone, isUnprocessableEntity,\n * isBadRequest, isInternalError, isServiceUnavailable, isAccountStateLocked\n * - SDK shortcut predicates (6): isNetworkError, isTokenInvalid, isAuthRequired,\n * isRefreshNoTokens, isVerifyFailed, isMalformed\n */\n\nimport { ERROR_CODES, SDK_ERROR_REASONS } from './error-codes'\nimport type { ErrorCode, SdkErrorReason } from './error-codes'\nimport type { EvaApiError, EvaSdkError, EvaError } from './types'\n\n// ---------------------------------------------------------------------------\n// Branch guards\n// ---------------------------------------------------------------------------\n\n/**\n * Narrows EvaError a EvaApiError (kind: 'api').\n * Use para acceder a `.code`, `.status`, `.message` del error del API.\n */\nexport function isApiError(err: EvaError): err is EvaApiError {\n return err.kind === 'api'\n}\n\n/**\n * Narrows EvaError a EvaSdkError (kind: 'sdk').\n * Use para acceder a `.reason`, `.status`, `.message` del error interno del SDK.\n */\nexport function isSdkError(err: EvaError): err is EvaSdkError {\n return err.kind === 'sdk'\n}\n\n// ---------------------------------------------------------------------------\n// Generic matchers\n// ---------------------------------------------------------------------------\n\n/**\n * Comprueba si err es un EvaApiError con el code exacto indicado.\n * Útil para codes feature-specific que no tienen shortcut propio.\n *\n * @example\n * if (matchError(r.error, ERROR_CODES.conflict)) { ... }\n * if (matchError(r.error, 'service_client_already_exists')) { ... }\n */\nexport function matchError<TCode extends ErrorCode>(\n err: EvaError,\n code: TCode,\n): err is EvaApiError & { code: TCode } {\n return isApiError(err) && err.code === code\n}\n\n/**\n * Comprueba si err es un EvaSdkError con el reason exacto indicado.\n *\n * @example\n * if (matchSdkReason(r.error, SDK_ERROR_REASONS.network)) { ... }\n */\nexport function matchSdkReason<TReason extends SdkErrorReason>(\n err: EvaError,\n reason: TReason,\n): err is EvaSdkError & { reason: TReason } {\n return isSdkError(err) && err.reason === reason\n}\n\n// ---------------------------------------------------------------------------\n// API shortcut predicates (12 — uno por code de ERROR_CODES)\n// ---------------------------------------------------------------------------\n\n/** El recurso solicitado no existe (HTTP 404). */\nexport function isNotFound(\n err: EvaError,\n): err is EvaApiError & { code: 'not_found' } {\n return matchError(err, ERROR_CODES.not_found)\n}\n\n/** Token o credenciales inválidos (HTTP 401). */\nexport function isUnauthorized(\n err: EvaError,\n): err is EvaApiError & { code: 'unauthorized' } {\n return matchError(err, ERROR_CODES.unauthorized)\n}\n\n/** Acción no permitida para el usuario autenticado (HTTP 403). */\nexport function isForbidden(\n err: EvaError,\n): err is EvaApiError & { code: 'forbidden' } {\n return matchError(err, ERROR_CODES.forbidden)\n}\n\n/** El recurso ya existe o hay conflicto de estado (HTTP 409). */\nexport function isConflict(\n err: EvaError,\n): err is EvaApiError & { code: 'conflict' } {\n return matchError(err, ERROR_CODES.conflict)\n}\n\n/** Los datos de entrada no superaron la validación (HTTP 422). */\nexport function isValidationError(\n err: EvaError,\n): err is EvaApiError & { code: 'validation_error' } {\n return matchError(err, ERROR_CODES.validation_error)\n}\n\n/** Límite de requests excedido (HTTP 429). */\nexport function isRateLimited(\n err: EvaError,\n): err is EvaApiError & { code: 'rate_limited' } {\n return matchError(err, ERROR_CODES.rate_limited)\n}\n\n/** El recurso fue eliminado permanentemente (HTTP 410). */\nexport function isGone(err: EvaError): err is EvaApiError & { code: 'gone' } {\n return matchError(err, ERROR_CODES.gone)\n}\n\n/** La entidad no puede procesarse según las reglas de negocio (HTTP 422). */\nexport function isUnprocessableEntity(\n err: EvaError,\n): err is EvaApiError & { code: 'unprocessable_entity' } {\n return matchError(err, ERROR_CODES.unprocessable_entity)\n}\n\n/** Request malformada o con parámetros inválidos (HTTP 400). */\nexport function isBadRequest(\n err: EvaError,\n): err is EvaApiError & { code: 'bad_request' } {\n return matchError(err, ERROR_CODES.bad_request)\n}\n\n/** Error interno del servidor (HTTP 500). */\nexport function isInternalError(\n err: EvaError,\n): err is EvaApiError & { code: 'internal_error' } {\n return matchError(err, ERROR_CODES.internal_error)\n}\n\n/** El servicio no está disponible (HTTP 503). */\nexport function isServiceUnavailable(\n err: EvaError,\n): err is EvaApiError & { code: 'service_unavailable' } {\n return matchError(err, ERROR_CODES.service_unavailable)\n}\n\n/** La cuenta está bloqueada por estado (HTTP 403). */\nexport function isAccountStateLocked(\n err: EvaError,\n): err is EvaApiError & { code: 'account_state_locked' } {\n return matchError(err, ERROR_CODES.account_state_locked)\n}\n\n// ---------------------------------------------------------------------------\n// SDK shortcut predicates (6 — uno por SdkErrorReason)\n// ---------------------------------------------------------------------------\n\n/** Fallo de red o fetch (no se pudo contactar al servidor). */\nexport function isNetworkError(\n err: EvaError,\n): err is EvaSdkError & { reason: 'network' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.network)\n}\n\n/** Token presente pero inválido (signature/format/expiry). */\nexport function isTokenInvalid(\n err: EvaError,\n): err is EvaSdkError & { reason: 'token_invalid' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.token_invalid)\n}\n\n/** No hay tokens en el request (sin cookies de autenticación). */\nexport function isAuthRequired(\n err: EvaError,\n): err is EvaSdkError & { reason: 'auth_required' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.auth_required)\n}\n\n/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */\nexport function isRefreshNoTokens(\n err: EvaError,\n): err is EvaSdkError & { reason: 'refresh_no_tokens' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.refresh_no_tokens)\n}\n\n/** Fallo de verificación no clasificable (post-refresh). */\nexport function isVerifyFailed(\n err: EvaError,\n): err is EvaSdkError & { reason: 'verify_failed' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.verify_failed)\n}\n\n/** Respuesta HTTP no parseable o sin el shape esperado. */\nexport function isMalformed(\n err: EvaError,\n): err is EvaSdkError & { reason: 'malformed' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.malformed)\n}\n"],"mappings":";;;;;;AAqCA,MAAa,oBAAoB;;CAE/B,eAAe;;CAEf,eAAe;;CAEf,mBAAmB;;CAEnB,eAAe;;CAEf,SAAS;;CAET,WAAW;AACb;;;;;;;;;;;;;;;;;;;;;ACtBA,SAAgB,WAAW,KAAmC;CAC5D,OAAO,IAAI,SAAS;AACtB;;;;;AAMA,SAAgB,WAAW,KAAmC;CAC5D,OAAO,IAAI,SAAS;AACtB;;;;;;;;;AAcA,SAAgB,WACd,KACA,MACsC;CACtC,OAAO,WAAW,GAAG,KAAK,IAAI,SAAS;AACzC;;;;;;;AAQA,SAAgB,eACd,KACA,QAC0C;CAC1C,OAAO,WAAW,GAAG,KAAK,IAAI,WAAW;AAC3C;;AAOA,SAAgB,WACd,KAC4C;CAC5C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,SAAS;AAC9C;;AAGA,SAAgB,eACd,KAC+C;CAC/C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,YAAY;AACjD;;AAGA,SAAgB,YACd,KAC4C;CAC5C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,SAAS;AAC9C;;AAGA,SAAgB,WACd,KAC2C;CAC3C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,QAAQ;AAC7C;;AAGA,SAAgB,kBACd,KACmD;CACnD,OAAO,WAAW,KAAKA,kBAAAA,YAAY,gBAAgB;AACrD;;AAGA,SAAgB,cACd,KAC+C;CAC/C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,YAAY;AACjD;;AAGA,SAAgB,OAAO,KAAsD;CAC3E,OAAO,WAAW,KAAKA,kBAAAA,YAAY,IAAI;AACzC;;AAGA,SAAgB,sBACd,KACuD;CACvD,OAAO,WAAW,KAAKA,kBAAAA,YAAY,oBAAoB;AACzD;;AAGA,SAAgB,aACd,KAC8C;CAC9C,OAAO,WAAW,KAAKA,kBAAAA,YAAY,WAAW;AAChD;;AAGA,SAAgB,gBACd,KACiD;CACjD,OAAO,WAAW,KAAKA,kBAAAA,YAAY,cAAc;AACnD;;AAGA,SAAgB,qBACd,KACsD;CACtD,OAAO,WAAW,KAAKA,kBAAAA,YAAY,mBAAmB;AACxD;;AAGA,SAAgB,qBACd,KACuD;CACvD,OAAO,WAAW,KAAKA,kBAAAA,YAAY,oBAAoB;AACzD;;AAOA,SAAgB,eACd,KAC4C;CAC5C,OAAO,eAAe,KAAK,kBAAkB,OAAO;AACtD;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,kBACd,KACsD;CACtD,OAAO,eAAe,KAAK,kBAAkB,iBAAiB;AAChE;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,YACd,KAC8C;CAC9C,OAAO,eAAe,KAAK,kBAAkB,SAAS;AACxD"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { i as ERROR_CODES } from "./constants-rNuD5qJn.js";
|
|
2
|
+
// src/error-codes.ts
|
|
3
|
+
/**
|
|
4
|
+
* Reasons internos del SDK — enum cerrado, 6 valores.
|
|
5
|
+
* Solo aplican a EvaSdkError (kind: 'sdk').
|
|
6
|
+
*/
|
|
7
|
+
const SDK_ERROR_REASONS = {
|
|
8
|
+
/** No hay tokens en el request (sin cookies). */
|
|
9
|
+
auth_required: "auth_required",
|
|
10
|
+
/** Token presente pero inválido (signature/format/expiry). */
|
|
11
|
+
token_invalid: "token_invalid",
|
|
12
|
+
/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */
|
|
13
|
+
refresh_no_tokens: "refresh_no_tokens",
|
|
14
|
+
/** Fallo de verificación no clasificable (post-refresh). */
|
|
15
|
+
verify_failed: "verify_failed",
|
|
16
|
+
/** Error de red / fetch fallido. */
|
|
17
|
+
network: "network",
|
|
18
|
+
/** Respuesta HTTP no parseable o sin el shape esperado. */
|
|
19
|
+
malformed: "malformed"
|
|
20
|
+
};
|
|
21
|
+
// src/error-helpers.ts
|
|
22
|
+
/**
|
|
23
|
+
* Helpers semánticos para inspeccionar EvaError sin conocer los internals del SDK.
|
|
24
|
+
*
|
|
25
|
+
* El consumidor NO debe inspeccionar `err.kind` ni comparar contra `ERROR_CODES`
|
|
26
|
+
* directamente. Use los helpers exportados aquí.
|
|
27
|
+
*
|
|
28
|
+
* Exports:
|
|
29
|
+
* - Branch guards: isApiError, isSdkError
|
|
30
|
+
* - Generic matchers: matchError, matchSdkReason
|
|
31
|
+
* - API shortcut predicates (12): isNotFound, isUnauthorized, isForbidden,
|
|
32
|
+
* isConflict, isValidationError, isRateLimited, isGone, isUnprocessableEntity,
|
|
33
|
+
* isBadRequest, isInternalError, isServiceUnavailable, isAccountStateLocked
|
|
34
|
+
* - SDK shortcut predicates (6): isNetworkError, isTokenInvalid, isAuthRequired,
|
|
35
|
+
* isRefreshNoTokens, isVerifyFailed, isMalformed
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Narrows EvaError a EvaApiError (kind: 'api').
|
|
39
|
+
* Use para acceder a `.code`, `.status`, `.message` del error del API.
|
|
40
|
+
*/
|
|
41
|
+
function isApiError(err) {
|
|
42
|
+
return err.kind === "api";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Narrows EvaError a EvaSdkError (kind: 'sdk').
|
|
46
|
+
* Use para acceder a `.reason`, `.status`, `.message` del error interno del SDK.
|
|
47
|
+
*/
|
|
48
|
+
function isSdkError(err) {
|
|
49
|
+
return err.kind === "sdk";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Comprueba si err es un EvaApiError con el code exacto indicado.
|
|
53
|
+
* Útil para codes feature-specific que no tienen shortcut propio.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* if (matchError(r.error, ERROR_CODES.conflict)) { ... }
|
|
57
|
+
* if (matchError(r.error, 'service_client_already_exists')) { ... }
|
|
58
|
+
*/
|
|
59
|
+
function matchError(err, code) {
|
|
60
|
+
return isApiError(err) && err.code === code;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Comprueba si err es un EvaSdkError con el reason exacto indicado.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* if (matchSdkReason(r.error, SDK_ERROR_REASONS.network)) { ... }
|
|
67
|
+
*/
|
|
68
|
+
function matchSdkReason(err, reason) {
|
|
69
|
+
return isSdkError(err) && err.reason === reason;
|
|
70
|
+
}
|
|
71
|
+
/** El recurso solicitado no existe (HTTP 404). */
|
|
72
|
+
function isNotFound(err) {
|
|
73
|
+
return matchError(err, ERROR_CODES.not_found);
|
|
74
|
+
}
|
|
75
|
+
/** Token o credenciales inválidos (HTTP 401). */
|
|
76
|
+
function isUnauthorized(err) {
|
|
77
|
+
return matchError(err, ERROR_CODES.unauthorized);
|
|
78
|
+
}
|
|
79
|
+
/** Acción no permitida para el usuario autenticado (HTTP 403). */
|
|
80
|
+
function isForbidden(err) {
|
|
81
|
+
return matchError(err, ERROR_CODES.forbidden);
|
|
82
|
+
}
|
|
83
|
+
/** El recurso ya existe o hay conflicto de estado (HTTP 409). */
|
|
84
|
+
function isConflict(err) {
|
|
85
|
+
return matchError(err, ERROR_CODES.conflict);
|
|
86
|
+
}
|
|
87
|
+
/** Los datos de entrada no superaron la validación (HTTP 422). */
|
|
88
|
+
function isValidationError(err) {
|
|
89
|
+
return matchError(err, ERROR_CODES.validation_error);
|
|
90
|
+
}
|
|
91
|
+
/** Límite de requests excedido (HTTP 429). */
|
|
92
|
+
function isRateLimited(err) {
|
|
93
|
+
return matchError(err, ERROR_CODES.rate_limited);
|
|
94
|
+
}
|
|
95
|
+
/** El recurso fue eliminado permanentemente (HTTP 410). */
|
|
96
|
+
function isGone(err) {
|
|
97
|
+
return matchError(err, ERROR_CODES.gone);
|
|
98
|
+
}
|
|
99
|
+
/** La entidad no puede procesarse según las reglas de negocio (HTTP 422). */
|
|
100
|
+
function isUnprocessableEntity(err) {
|
|
101
|
+
return matchError(err, ERROR_CODES.unprocessable_entity);
|
|
102
|
+
}
|
|
103
|
+
/** Request malformada o con parámetros inválidos (HTTP 400). */
|
|
104
|
+
function isBadRequest(err) {
|
|
105
|
+
return matchError(err, ERROR_CODES.bad_request);
|
|
106
|
+
}
|
|
107
|
+
/** Error interno del servidor (HTTP 500). */
|
|
108
|
+
function isInternalError(err) {
|
|
109
|
+
return matchError(err, ERROR_CODES.internal_error);
|
|
110
|
+
}
|
|
111
|
+
/** El servicio no está disponible (HTTP 503). */
|
|
112
|
+
function isServiceUnavailable(err) {
|
|
113
|
+
return matchError(err, ERROR_CODES.service_unavailable);
|
|
114
|
+
}
|
|
115
|
+
/** La cuenta está bloqueada por estado (HTTP 403). */
|
|
116
|
+
function isAccountStateLocked(err) {
|
|
117
|
+
return matchError(err, ERROR_CODES.account_state_locked);
|
|
118
|
+
}
|
|
119
|
+
/** Fallo de red o fetch (no se pudo contactar al servidor). */
|
|
120
|
+
function isNetworkError(err) {
|
|
121
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.network);
|
|
122
|
+
}
|
|
123
|
+
/** Token presente pero inválido (signature/format/expiry). */
|
|
124
|
+
function isTokenInvalid(err) {
|
|
125
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.token_invalid);
|
|
126
|
+
}
|
|
127
|
+
/** No hay tokens en el request (sin cookies de autenticación). */
|
|
128
|
+
function isAuthRequired(err) {
|
|
129
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.auth_required);
|
|
130
|
+
}
|
|
131
|
+
/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */
|
|
132
|
+
function isRefreshNoTokens(err) {
|
|
133
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.refresh_no_tokens);
|
|
134
|
+
}
|
|
135
|
+
/** Fallo de verificación no clasificable (post-refresh). */
|
|
136
|
+
function isVerifyFailed(err) {
|
|
137
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.verify_failed);
|
|
138
|
+
}
|
|
139
|
+
/** Respuesta HTTP no parseable o sin el shape esperado. */
|
|
140
|
+
function isMalformed(err) {
|
|
141
|
+
return matchSdkReason(err, SDK_ERROR_REASONS.malformed);
|
|
142
|
+
}
|
|
143
|
+
export { SDK_ERROR_REASONS as C, matchSdkReason as S, isUnauthorized as _, isConflict as a, isVerifyFailed as b, isInternalError as c, isNotFound as d, isRateLimited as f, isTokenInvalid as g, isServiceUnavailable as h, isBadRequest as i, isMalformed as l, isSdkError as m, isApiError as n, isForbidden as o, isRefreshNoTokens as p, isAuthRequired as r, isGone as s, isAccountStateLocked as t, isNetworkError as u, isUnprocessableEntity as v, matchError as x, isValidationError as y };
|
|
144
|
+
|
|
145
|
+
//# sourceMappingURL=error-helpers-lnwgNOw9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers-lnwgNOw9.js","names":[],"sources":["../src/error-codes.ts","../src/error-helpers.ts"],"sourcesContent":["/**\n * Catálogo de error codes del Auth Service y reasons internos del SDK.\n *\n * - ERROR_CODES: re-export del contrato compartido (12 entries, mismo objeto que usa el API). Solo aplica a EvaApiError (kind: 'api').\n * - SDK_ERROR_REASONS: enum cerrado de reasons internos del SDK (6 entries). Solo aplica a EvaSdkError (kind: 'sdk').\n *\n * D-07 LOCKED: el catálogo replica el runtime del API (12 codes, incluyendo account_state_locked).\n * D-08 LOCKED: dual type CoreErrorCode / ErrorCode para catálogo semiabierto con autocomplete.\n */\n\nimport type { CoreErrorCode } from '@eva_solutions/auth-contracts'\n\n/*\n * `ERROR_CODES` y `CoreErrorCode` vienen del contrato. Este módulo es alcanzable desde\n * `src/react`: de la barrel del contrato solo se importan VALORES de módulos puros\n * (`constants.ts`, `routes.ts`) o `import type`. Un schema importado por valor aquí arrastraría\n * su código al bundle de react.\n */\nexport { ERROR_CODES } from '@eva_solutions/auth-contracts'\n\n/**\n * Unión cerrada de los 12 error codes core del Auth Service.\n * Para autocomplete exhaustivo con los valores del API.\n */\nexport type { CoreErrorCode }\n\n/**\n * Tipo semiabierto: incluye los 12 cores (con autocomplete) y permite\n * strings adicionales para feature-specific codes del API.\n * Pattern idiomático TS: `LiteralType | (string & {})`.\n */\nexport type ErrorCode = CoreErrorCode | (string & {})\n\n/**\n * Reasons internos del SDK — enum cerrado, 6 valores.\n * Solo aplican a EvaSdkError (kind: 'sdk').\n */\nexport const SDK_ERROR_REASONS = {\n /** No hay tokens en el request (sin cookies). */\n auth_required: 'auth_required',\n /** Token presente pero inválido (signature/format/expiry). */\n token_invalid: 'token_invalid',\n /** Refresh exitoso pero el servidor no devolvió tokens nuevos. */\n refresh_no_tokens: 'refresh_no_tokens',\n /** Fallo de verificación no clasificable (post-refresh). */\n verify_failed: 'verify_failed',\n /** Error de red / fetch fallido. */\n network: 'network',\n /** Respuesta HTTP no parseable o sin el shape esperado. */\n malformed: 'malformed',\n} as const\n\n/**\n * Unión cerrada de los 6 reasons internos del SDK.\n */\nexport type SdkErrorReason =\n (typeof SDK_ERROR_REASONS)[keyof typeof SDK_ERROR_REASONS]\n","/**\n * Helpers semánticos para inspeccionar EvaError sin conocer los internals del SDK.\n *\n * El consumidor NO debe inspeccionar `err.kind` ni comparar contra `ERROR_CODES`\n * directamente. Use los helpers exportados aquí.\n *\n * Exports:\n * - Branch guards: isApiError, isSdkError\n * - Generic matchers: matchError, matchSdkReason\n * - API shortcut predicates (12): isNotFound, isUnauthorized, isForbidden,\n * isConflict, isValidationError, isRateLimited, isGone, isUnprocessableEntity,\n * isBadRequest, isInternalError, isServiceUnavailable, isAccountStateLocked\n * - SDK shortcut predicates (6): isNetworkError, isTokenInvalid, isAuthRequired,\n * isRefreshNoTokens, isVerifyFailed, isMalformed\n */\n\nimport { ERROR_CODES, SDK_ERROR_REASONS } from './error-codes'\nimport type { ErrorCode, SdkErrorReason } from './error-codes'\nimport type { EvaApiError, EvaSdkError, EvaError } from './types'\n\n// ---------------------------------------------------------------------------\n// Branch guards\n// ---------------------------------------------------------------------------\n\n/**\n * Narrows EvaError a EvaApiError (kind: 'api').\n * Use para acceder a `.code`, `.status`, `.message` del error del API.\n */\nexport function isApiError(err: EvaError): err is EvaApiError {\n return err.kind === 'api'\n}\n\n/**\n * Narrows EvaError a EvaSdkError (kind: 'sdk').\n * Use para acceder a `.reason`, `.status`, `.message` del error interno del SDK.\n */\nexport function isSdkError(err: EvaError): err is EvaSdkError {\n return err.kind === 'sdk'\n}\n\n// ---------------------------------------------------------------------------\n// Generic matchers\n// ---------------------------------------------------------------------------\n\n/**\n * Comprueba si err es un EvaApiError con el code exacto indicado.\n * Útil para codes feature-specific que no tienen shortcut propio.\n *\n * @example\n * if (matchError(r.error, ERROR_CODES.conflict)) { ... }\n * if (matchError(r.error, 'service_client_already_exists')) { ... }\n */\nexport function matchError<TCode extends ErrorCode>(\n err: EvaError,\n code: TCode,\n): err is EvaApiError & { code: TCode } {\n return isApiError(err) && err.code === code\n}\n\n/**\n * Comprueba si err es un EvaSdkError con el reason exacto indicado.\n *\n * @example\n * if (matchSdkReason(r.error, SDK_ERROR_REASONS.network)) { ... }\n */\nexport function matchSdkReason<TReason extends SdkErrorReason>(\n err: EvaError,\n reason: TReason,\n): err is EvaSdkError & { reason: TReason } {\n return isSdkError(err) && err.reason === reason\n}\n\n// ---------------------------------------------------------------------------\n// API shortcut predicates (12 — uno por code de ERROR_CODES)\n// ---------------------------------------------------------------------------\n\n/** El recurso solicitado no existe (HTTP 404). */\nexport function isNotFound(\n err: EvaError,\n): err is EvaApiError & { code: 'not_found' } {\n return matchError(err, ERROR_CODES.not_found)\n}\n\n/** Token o credenciales inválidos (HTTP 401). */\nexport function isUnauthorized(\n err: EvaError,\n): err is EvaApiError & { code: 'unauthorized' } {\n return matchError(err, ERROR_CODES.unauthorized)\n}\n\n/** Acción no permitida para el usuario autenticado (HTTP 403). */\nexport function isForbidden(\n err: EvaError,\n): err is EvaApiError & { code: 'forbidden' } {\n return matchError(err, ERROR_CODES.forbidden)\n}\n\n/** El recurso ya existe o hay conflicto de estado (HTTP 409). */\nexport function isConflict(\n err: EvaError,\n): err is EvaApiError & { code: 'conflict' } {\n return matchError(err, ERROR_CODES.conflict)\n}\n\n/** Los datos de entrada no superaron la validación (HTTP 422). */\nexport function isValidationError(\n err: EvaError,\n): err is EvaApiError & { code: 'validation_error' } {\n return matchError(err, ERROR_CODES.validation_error)\n}\n\n/** Límite de requests excedido (HTTP 429). */\nexport function isRateLimited(\n err: EvaError,\n): err is EvaApiError & { code: 'rate_limited' } {\n return matchError(err, ERROR_CODES.rate_limited)\n}\n\n/** El recurso fue eliminado permanentemente (HTTP 410). */\nexport function isGone(err: EvaError): err is EvaApiError & { code: 'gone' } {\n return matchError(err, ERROR_CODES.gone)\n}\n\n/** La entidad no puede procesarse según las reglas de negocio (HTTP 422). */\nexport function isUnprocessableEntity(\n err: EvaError,\n): err is EvaApiError & { code: 'unprocessable_entity' } {\n return matchError(err, ERROR_CODES.unprocessable_entity)\n}\n\n/** Request malformada o con parámetros inválidos (HTTP 400). */\nexport function isBadRequest(\n err: EvaError,\n): err is EvaApiError & { code: 'bad_request' } {\n return matchError(err, ERROR_CODES.bad_request)\n}\n\n/** Error interno del servidor (HTTP 500). */\nexport function isInternalError(\n err: EvaError,\n): err is EvaApiError & { code: 'internal_error' } {\n return matchError(err, ERROR_CODES.internal_error)\n}\n\n/** El servicio no está disponible (HTTP 503). */\nexport function isServiceUnavailable(\n err: EvaError,\n): err is EvaApiError & { code: 'service_unavailable' } {\n return matchError(err, ERROR_CODES.service_unavailable)\n}\n\n/** La cuenta está bloqueada por estado (HTTP 403). */\nexport function isAccountStateLocked(\n err: EvaError,\n): err is EvaApiError & { code: 'account_state_locked' } {\n return matchError(err, ERROR_CODES.account_state_locked)\n}\n\n// ---------------------------------------------------------------------------\n// SDK shortcut predicates (6 — uno por SdkErrorReason)\n// ---------------------------------------------------------------------------\n\n/** Fallo de red o fetch (no se pudo contactar al servidor). */\nexport function isNetworkError(\n err: EvaError,\n): err is EvaSdkError & { reason: 'network' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.network)\n}\n\n/** Token presente pero inválido (signature/format/expiry). */\nexport function isTokenInvalid(\n err: EvaError,\n): err is EvaSdkError & { reason: 'token_invalid' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.token_invalid)\n}\n\n/** No hay tokens en el request (sin cookies de autenticación). */\nexport function isAuthRequired(\n err: EvaError,\n): err is EvaSdkError & { reason: 'auth_required' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.auth_required)\n}\n\n/** Refresh exitoso pero el servidor no devolvió tokens nuevos. */\nexport function isRefreshNoTokens(\n err: EvaError,\n): err is EvaSdkError & { reason: 'refresh_no_tokens' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.refresh_no_tokens)\n}\n\n/** Fallo de verificación no clasificable (post-refresh). */\nexport function isVerifyFailed(\n err: EvaError,\n): err is EvaSdkError & { reason: 'verify_failed' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.verify_failed)\n}\n\n/** Respuesta HTTP no parseable o sin el shape esperado. */\nexport function isMalformed(\n err: EvaError,\n): err is EvaSdkError & { reason: 'malformed' } {\n return matchSdkReason(err, SDK_ERROR_REASONS.malformed)\n}\n"],"mappings":";;;;;;AAqCA,MAAa,oBAAoB;;CAE/B,eAAe;;CAEf,eAAe;;CAEf,mBAAmB;;CAEnB,eAAe;;CAEf,SAAS;;CAET,WAAW;AACb;;;;;;;;;;;;;;;;;;;;;ACtBA,SAAgB,WAAW,KAAmC;CAC5D,OAAO,IAAI,SAAS;AACtB;;;;;AAMA,SAAgB,WAAW,KAAmC;CAC5D,OAAO,IAAI,SAAS;AACtB;;;;;;;;;AAcA,SAAgB,WACd,KACA,MACsC;CACtC,OAAO,WAAW,GAAG,KAAK,IAAI,SAAS;AACzC;;;;;;;AAQA,SAAgB,eACd,KACA,QAC0C;CAC1C,OAAO,WAAW,GAAG,KAAK,IAAI,WAAW;AAC3C;;AAOA,SAAgB,WACd,KAC4C;CAC5C,OAAO,WAAW,KAAK,YAAY,SAAS;AAC9C;;AAGA,SAAgB,eACd,KAC+C;CAC/C,OAAO,WAAW,KAAK,YAAY,YAAY;AACjD;;AAGA,SAAgB,YACd,KAC4C;CAC5C,OAAO,WAAW,KAAK,YAAY,SAAS;AAC9C;;AAGA,SAAgB,WACd,KAC2C;CAC3C,OAAO,WAAW,KAAK,YAAY,QAAQ;AAC7C;;AAGA,SAAgB,kBACd,KACmD;CACnD,OAAO,WAAW,KAAK,YAAY,gBAAgB;AACrD;;AAGA,SAAgB,cACd,KAC+C;CAC/C,OAAO,WAAW,KAAK,YAAY,YAAY;AACjD;;AAGA,SAAgB,OAAO,KAAsD;CAC3E,OAAO,WAAW,KAAK,YAAY,IAAI;AACzC;;AAGA,SAAgB,sBACd,KACuD;CACvD,OAAO,WAAW,KAAK,YAAY,oBAAoB;AACzD;;AAGA,SAAgB,aACd,KAC8C;CAC9C,OAAO,WAAW,KAAK,YAAY,WAAW;AAChD;;AAGA,SAAgB,gBACd,KACiD;CACjD,OAAO,WAAW,KAAK,YAAY,cAAc;AACnD;;AAGA,SAAgB,qBACd,KACsD;CACtD,OAAO,WAAW,KAAK,YAAY,mBAAmB;AACxD;;AAGA,SAAgB,qBACd,KACuD;CACvD,OAAO,WAAW,KAAK,YAAY,oBAAoB;AACzD;;AAOA,SAAgB,eACd,KAC4C;CAC5C,OAAO,eAAe,KAAK,kBAAkB,OAAO;AACtD;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,kBACd,KACsD;CACtD,OAAO,eAAe,KAAK,kBAAkB,iBAAiB;AAChE;;AAGA,SAAgB,eACd,KACkD;CAClD,OAAO,eAAe,KAAK,kBAAkB,aAAa;AAC5D;;AAGA,SAAgB,YACd,KAC8C;CAC9C,OAAO,eAAe,KAAK,kBAAkB,SAAS;AACxD"}
|
|
@@ -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.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-messages-CGpW1fsg.d.cts","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"}
|