@eva_solutions/auth-sdk 0.0.0-stage → 3.0.0-dev-20261109133200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-3avoUa9e.d.cts +95 -0
- package/dist/config-3avoUa9e.d.cts.map +1 -0
- package/dist/config-COX7rGAP.d.ts +95 -0
- package/dist/config-COX7rGAP.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-0woh13Wd.d.cts +105 -0
- package/dist/error-helpers-0woh13Wd.d.cts.map +1 -0
- package/dist/error-helpers-Ct3AUK1I.d.ts +105 -0
- package/dist/error-helpers-Ct3AUK1I.d.ts.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-CIH_2t7Y.d.ts +240 -0
- package/dist/index-CIH_2t7Y.d.ts.map +1 -0
- package/dist/index-CZru7c5T.d.cts +1711 -0
- package/dist/index-CZru7c5T.d.cts.map +1 -0
- package/dist/index-CZru7c5T.d.ts +1711 -0
- package/dist/index-CZru7c5T.d.ts.map +1 -0
- package/dist/index-DMVe5IJA.d.cts +240 -0
- package/dist/index-DMVe5IJA.d.cts.map +1 -0
- package/dist/index-DRWKobSp.d.ts +312 -0
- package/dist/index-DRWKobSp.d.ts.map +1 -0
- package/dist/index-DU9wJ-P2.d.cts +312 -0
- package/dist/index-DU9wJ-P2.d.cts.map +1 -0
- package/dist/index-DbiXllNy.d.cts +66 -0
- package/dist/index-DbiXllNy.d.cts.map +1 -0
- package/dist/index-z9r98qlk.d.ts +66 -0
- package/dist/index-z9r98qlk.d.ts.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-Ai3iIFlB.d.cts +538 -0
- package/dist/types-Ai3iIFlB.d.cts.map +1 -0
- package/dist/types-Bxg4hCMc.d.cts +52 -0
- package/dist/types-Bxg4hCMc.d.cts.map +1 -0
- package/dist/types-CEABh1Zf.d.ts +96 -0
- package/dist/types-CEABh1Zf.d.ts.map +1 -0
- package/dist/types-Ci0Jq0xB.d.cts +96 -0
- package/dist/types-Ci0Jq0xB.d.cts.map +1 -0
- package/dist/types-DXg8BvEh.d.ts +52 -0
- package/dist/types-DXg8BvEh.d.ts.map +1 -0
- package/dist/types-_zY7QbM5.d.ts +538 -0
- package/dist/types-_zY7QbM5.d.ts.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,79 @@
|
|
|
1
|
+
require("./constants-CcbhOaAP.cjs");
|
|
2
|
+
// src/webhooks/verify-signature.ts
|
|
3
|
+
/**
|
|
4
|
+
* Verificación de firma HMAC-SHA-256 de webhooks entrantes del Auth Service.
|
|
5
|
+
*
|
|
6
|
+
* REQ-WH-03, REQ-WH-04, REQ-WH-05, REQ-WH-06 LOCKED.
|
|
7
|
+
*
|
|
8
|
+
* Algoritmo (espejo del API `firmarWebhook` en webhook-dispatcher.ts):
|
|
9
|
+
* canonical = `${timestamp}\n${eventId}\n${sha256Hex(rawBody)}`
|
|
10
|
+
* expected = HMAC-SHA-256(signingKey, canonical)
|
|
11
|
+
*
|
|
12
|
+
* Usa Web Crypto API (`crypto.subtle`) — isomorfo (browser + worker + Node 20+).
|
|
13
|
+
*
|
|
14
|
+
* D-12 LOCKED: hexToBytes y sha256Hex se duplican aquí (NO se extraen a shared)
|
|
15
|
+
* para que el entry point ./webhooks sea completamente tree-shakeable.
|
|
16
|
+
*/
|
|
17
|
+
const HEX_REGEX = /^[0-9a-f]+$/i;
|
|
18
|
+
/**
|
|
19
|
+
* Decodifica hex string a Uint8Array.
|
|
20
|
+
* Retorna null si la longitud es impar o contiene chars no-hex.
|
|
21
|
+
*/
|
|
22
|
+
function hexToBytes(hex) {
|
|
23
|
+
if (hex.length === 0 || hex.length % 2 !== 0 || !HEX_REGEX.test(hex)) return null;
|
|
24
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
25
|
+
for (let i = 0; i < hex.length; i += 2) bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);
|
|
26
|
+
return bytes;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* SHA-256 hex lowercase de un string (encodificado como UTF-8).
|
|
30
|
+
*/
|
|
31
|
+
async function sha256Hex(data) {
|
|
32
|
+
const bytes = new TextEncoder().encode(data);
|
|
33
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
34
|
+
return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Verifica la firma HMAC-SHA-256 de un webhook entrante del Auth Service.
|
|
38
|
+
*
|
|
39
|
+
* @returns `true` si la firma es válida y está dentro de la ventana de tiempo;
|
|
40
|
+
* `false` en cualquier otro caso (firma inválida, expirada, formato incorrecto).
|
|
41
|
+
*
|
|
42
|
+
* La comparación es constant-time via `crypto.subtle.verify` (por spec).
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* const valid = await verifyWebhookSignature({
|
|
47
|
+
* rawBody: await req.text(),
|
|
48
|
+
* signingKey: process.env.WEBHOOK_SIGNING_KEY,
|
|
49
|
+
* signature: req.headers.get('x-eva-webhook-signature') ?? '',
|
|
50
|
+
* eventId: req.headers.get('x-eva-webhook-id') ?? '',
|
|
51
|
+
* timestamp: Number(req.headers.get('x-eva-webhook-timestamp')),
|
|
52
|
+
* })
|
|
53
|
+
* if (!valid) return new Response('Unauthorized', { status: 401 })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
async function verifyWebhookSignature({ rawBody, signingKey, signature, eventId, timestamp, now }) {
|
|
57
|
+
const currentTime = now ?? Math.floor(Date.now() / 1e3);
|
|
58
|
+
if (Math.abs(currentTime - timestamp) > 300) return false;
|
|
59
|
+
if (!signature.startsWith("sha256=")) return false;
|
|
60
|
+
const expectedHex = signature.slice(7);
|
|
61
|
+
const keyBytes = hexToBytes(signingKey);
|
|
62
|
+
if (keyBytes === null) return false;
|
|
63
|
+
const cryptoKey = await crypto.subtle.importKey("raw", keyBytes.buffer, {
|
|
64
|
+
name: "HMAC",
|
|
65
|
+
hash: "SHA-256"
|
|
66
|
+
}, false, ["verify"]);
|
|
67
|
+
const canonical = `${timestamp}\n${eventId}\n${await sha256Hex(rawBody)}`;
|
|
68
|
+
const expectedBytes = hexToBytes(expectedHex);
|
|
69
|
+
if (expectedBytes === null) return false;
|
|
70
|
+
return crypto.subtle.verify("HMAC", cryptoKey, expectedBytes.buffer, new TextEncoder().encode(canonical));
|
|
71
|
+
}
|
|
72
|
+
Object.defineProperty(exports, "verifyWebhookSignature", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function() {
|
|
75
|
+
return verifyWebhookSignature;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=webhooks-Cx11psg1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks-Cx11psg1.cjs","names":[],"sources":["../src/webhooks/verify-signature.ts"],"sourcesContent":["/**\n * Verificación de firma HMAC-SHA-256 de webhooks entrantes del Auth Service.\n *\n * REQ-WH-03, REQ-WH-04, REQ-WH-05, REQ-WH-06 LOCKED.\n *\n * Algoritmo (espejo del API `firmarWebhook` en webhook-dispatcher.ts):\n * canonical = `${timestamp}\\n${eventId}\\n${sha256Hex(rawBody)}`\n * expected = HMAC-SHA-256(signingKey, canonical)\n *\n * Usa Web Crypto API (`crypto.subtle`) — isomorfo (browser + worker + Node 20+).\n *\n * D-12 LOCKED: hexToBytes y sha256Hex se duplican aquí (NO se extraen a shared)\n * para que el entry point ./webhooks sea completamente tree-shakeable.\n */\n\nimport { WEBHOOK_TIMESTAMP_WINDOW_SECONDS } from './constants'\n\n// ---------------------------------------------------------------------------\n// Helpers criptográficos locales (D-12 LOCKED — no exportar, no extraer)\n// ---------------------------------------------------------------------------\n\nconst HEX_REGEX = /^[0-9a-f]+$/i\n\n/**\n * Decodifica hex string a Uint8Array.\n * Retorna null si la longitud es impar o contiene chars no-hex.\n */\nfunction hexToBytes(hex: string): Uint8Array | null {\n if (hex.length === 0 || hex.length % 2 !== 0 || !HEX_REGEX.test(hex)) {\n return null\n }\n const bytes = new Uint8Array(hex.length / 2)\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16)\n }\n return bytes\n}\n\n/**\n * SHA-256 hex lowercase de un string (encodificado como UTF-8).\n */\nasync function sha256Hex(data: string): Promise<string> {\n const bytes = new TextEncoder().encode(data)\n const digest = await crypto.subtle.digest('SHA-256', bytes as BufferSource)\n return Array.from(new Uint8Array(digest))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n// ---------------------------------------------------------------------------\n// API pública\n// ---------------------------------------------------------------------------\n\nexport type VerifyWebhookSignatureParams = {\n /** Body raw del request (string, antes de parsear JSON). */\n rawBody: string\n /**\n * Signing key del webhook — hex 64 chars (32 bytes).\n * Es el `signingKey` que devolvió el API al crear/rotar la subscription.\n * NOTA H3 LOCKED: NO re-hashear — usarlo tal como viene.\n */\n signingKey: string\n /**\n * Valor completo del header `X-Eva-Webhook-Signature`.\n * Debe comenzar con `\"sha256=\"`.\n */\n signature: string\n /** Valor del header `X-Eva-Webhook-Id` (UUID del evento). */\n eventId: string\n /**\n * Valor del header `X-Eva-Webhook-Timestamp` parseado a number\n * (unix seconds).\n */\n timestamp: number\n /**\n * Override del tiempo actual (unix seconds) para tests.\n * Por defecto: `Math.floor(Date.now() / 1000)`.\n */\n now?: number\n}\n\n/**\n * Verifica la firma HMAC-SHA-256 de un webhook entrante del Auth Service.\n *\n * @returns `true` si la firma es válida y está dentro de la ventana de tiempo;\n * `false` en cualquier otro caso (firma inválida, expirada, formato incorrecto).\n *\n * La comparación es constant-time via `crypto.subtle.verify` (por spec).\n *\n * @example\n * ```ts\n * const valid = await verifyWebhookSignature({\n * rawBody: await req.text(),\n * signingKey: process.env.WEBHOOK_SIGNING_KEY,\n * signature: req.headers.get('x-eva-webhook-signature') ?? '',\n * eventId: req.headers.get('x-eva-webhook-id') ?? '',\n * timestamp: Number(req.headers.get('x-eva-webhook-timestamp')),\n * })\n * if (!valid) return new Response('Unauthorized', { status: 401 })\n * ```\n */\nexport async function verifyWebhookSignature({\n rawBody,\n signingKey,\n signature,\n eventId,\n timestamp,\n now,\n}: VerifyWebhookSignatureParams): Promise<boolean> {\n // Paso 1: verificar ventana de tiempo\n const currentTime = now ?? Math.floor(Date.now() / 1000)\n if (Math.abs(currentTime - timestamp) > WEBHOOK_TIMESTAMP_WINDOW_SECONDS) {\n return false\n }\n\n // Paso 2: extraer hex esperado del header (quitar prefijo \"sha256=\")\n if (!signature.startsWith('sha256=')) {\n return false\n }\n const expectedHex = signature.slice(7)\n\n // Paso 3: decodificar signing key (sin re-hash — H3 LOCKED)\n const keyBytes = hexToBytes(signingKey)\n if (keyBytes === null) {\n return false\n }\n\n // Paso 4: importar clave HMAC\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n keyBytes.buffer as BufferSource,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['verify'],\n )\n\n // Paso 5: construir el canonical string\n // canonical = `${timestamp}\\n${eventId}\\n${sha256Hex(rawBody)}`\n const bodyHash = await sha256Hex(rawBody)\n const canonical = `${timestamp}\\n${eventId}\\n${bodyHash}`\n\n // Paso 6: decodificar firma esperada\n const expectedBytes = hexToBytes(expectedHex)\n if (expectedBytes === null) {\n return false\n }\n\n // Paso 7: verificar HMAC (constant-time por spec de Web Crypto)\n return crypto.subtle.verify(\n 'HMAC',\n cryptoKey,\n expectedBytes.buffer as BufferSource,\n new TextEncoder().encode(canonical) as BufferSource,\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAqBA,MAAM,YAAY;;;;;AAMlB,SAAS,WAAW,KAAgC;CAClD,IAAI,IAAI,WAAW,KAAK,IAAI,SAAS,MAAM,KAAK,CAAC,UAAU,KAAK,GAAG,GACjE,OAAO;CAET,MAAM,QAAQ,IAAI,WAAW,IAAI,SAAS,CAAC;CAC3C,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GACnC,MAAM,IAAI,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;CAEjD,OAAO;AACT;;;;AAKA,eAAe,UAAU,MAA+B;CACtD,MAAM,QAAQ,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI;CAC3C,MAAM,SAAS,MAAM,OAAO,OAAO,OAAO,WAAW,KAAqB;CAC1E,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,CAAC,CAAC,CACtC,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAC3C,KAAK,EAAE;AACZ;;;;;;;;;;;;;;;;;;;;;AAsDA,eAAsB,uBAAuB,EAC3C,SACA,YACA,WACA,SACA,WACA,OACiD;CAEjD,MAAM,cAAc,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;CACvD,IAAI,KAAK,IAAI,cAAc,SAAS,IAAA,KAClC,OAAO;CAIT,IAAI,CAAC,UAAU,WAAW,SAAS,GACjC,OAAO;CAET,MAAM,cAAc,UAAU,MAAM,CAAC;CAGrC,MAAM,WAAW,WAAW,UAAU;CACtC,IAAI,aAAa,MACf,OAAO;CAIT,MAAM,YAAY,MAAM,OAAO,OAAO,UACpC,OACA,SAAS,QACT;EAAE,MAAM;EAAQ,MAAM;CAAU,GAChC,OACA,CAAC,QAAQ,CACX;CAKA,MAAM,YAAY,GAAG,UAAU,IAAI,QAAQ,IAAI,MADxB,UAAU,OAAO;CAIxC,MAAM,gBAAgB,WAAW,WAAW;CAC5C,IAAI,kBAAkB,MACpB,OAAO;CAIT,OAAO,OAAO,OAAO,OACnB,QACA,WACA,cAAc,QACd,IAAI,YAAY,CAAC,CAAC,OAAO,SAAS,CACpC;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,195 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eva_solutions/auth-sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "3.0.0-dev-20261109133200",
|
|
4
|
+
"description": "Official TypeScript client for the EVA Auth Service — secure cookie-based auth with JWT ES256, JWKS rotation, S2S signing, and webhooks.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"auth",
|
|
7
|
+
"sdk",
|
|
8
|
+
"typescript",
|
|
9
|
+
"jwt",
|
|
10
|
+
"jwks",
|
|
11
|
+
"hono",
|
|
12
|
+
"react",
|
|
13
|
+
"cookies",
|
|
14
|
+
"es256",
|
|
15
|
+
"eva",
|
|
16
|
+
"security",
|
|
17
|
+
"oauth",
|
|
18
|
+
"session"
|
|
19
|
+
],
|
|
20
|
+
"homepage": "https://github.com/eva-solutions-org/auth-sdk#readme",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/eva-solutions-org/auth-sdk/issues"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/eva-solutions-org/auth-sdk.git",
|
|
27
|
+
"directory": "packages/auth-sdk"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"author": "EVA Solutions <arturo.rodas.gonzales@gmail.com>",
|
|
31
|
+
"funding": {
|
|
32
|
+
"type": "github",
|
|
33
|
+
"url": "https://github.com/sponsors/eva-solutions-org"
|
|
34
|
+
},
|
|
35
|
+
"type": "module",
|
|
36
|
+
"main": "./dist/index.cjs",
|
|
37
|
+
"module": "./dist/index.js",
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
".": {
|
|
41
|
+
"import": {
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
43
|
+
"default": "./dist/index.js"
|
|
44
|
+
},
|
|
45
|
+
"require": {
|
|
46
|
+
"types": "./dist/index.d.cts",
|
|
47
|
+
"default": "./dist/index.cjs"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"./hono": {
|
|
51
|
+
"import": {
|
|
52
|
+
"types": "./dist/hono/index.d.ts",
|
|
53
|
+
"default": "./dist/hono/index.js"
|
|
54
|
+
},
|
|
55
|
+
"require": {
|
|
56
|
+
"types": "./dist/hono/index.d.cts",
|
|
57
|
+
"default": "./dist/hono/index.cjs"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"./generic": {
|
|
61
|
+
"import": {
|
|
62
|
+
"types": "./dist/generic/index.d.ts",
|
|
63
|
+
"default": "./dist/generic/index.js"
|
|
64
|
+
},
|
|
65
|
+
"require": {
|
|
66
|
+
"types": "./dist/generic/index.d.cts",
|
|
67
|
+
"default": "./dist/generic/index.cjs"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"./react": {
|
|
71
|
+
"import": {
|
|
72
|
+
"types": "./dist/react/index.d.ts",
|
|
73
|
+
"default": "./dist/react/index.js"
|
|
74
|
+
},
|
|
75
|
+
"require": {
|
|
76
|
+
"types": "./dist/react/index.d.cts",
|
|
77
|
+
"default": "./dist/react/index.cjs"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"./hono-openapi": {
|
|
81
|
+
"import": {
|
|
82
|
+
"types": "./dist/hono-openapi/index.d.ts",
|
|
83
|
+
"default": "./dist/hono-openapi/index.js"
|
|
84
|
+
},
|
|
85
|
+
"require": {
|
|
86
|
+
"types": "./dist/hono-openapi/index.d.cts",
|
|
87
|
+
"default": "./dist/hono-openapi/index.cjs"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"./webhooks": {
|
|
91
|
+
"import": {
|
|
92
|
+
"types": "./dist/webhooks/index.d.ts",
|
|
93
|
+
"default": "./dist/webhooks/index.js"
|
|
94
|
+
},
|
|
95
|
+
"require": {
|
|
96
|
+
"types": "./dist/webhooks/index.d.cts",
|
|
97
|
+
"default": "./dist/webhooks/index.cjs"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"./admin": {
|
|
101
|
+
"import": {
|
|
102
|
+
"types": "./dist/admin/index.d.ts",
|
|
103
|
+
"default": "./dist/admin/index.js"
|
|
104
|
+
},
|
|
105
|
+
"require": {
|
|
106
|
+
"types": "./dist/admin/index.d.cts",
|
|
107
|
+
"default": "./dist/admin/index.cjs"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"./s2s": {
|
|
111
|
+
"import": {
|
|
112
|
+
"types": "./dist/s2s/index.d.ts",
|
|
113
|
+
"default": "./dist/s2s/index.js"
|
|
114
|
+
},
|
|
115
|
+
"require": {
|
|
116
|
+
"types": "./dist/s2s/index.d.cts",
|
|
117
|
+
"default": "./dist/s2s/index.cjs"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"./contracts": {
|
|
121
|
+
"import": {
|
|
122
|
+
"types": "./dist/contracts/index.d.ts",
|
|
123
|
+
"default": "./dist/contracts/index.js"
|
|
124
|
+
},
|
|
125
|
+
"require": {
|
|
126
|
+
"types": "./dist/contracts/index.d.cts",
|
|
127
|
+
"default": "./dist/contracts/index.cjs"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"./package.json": "./package.json"
|
|
131
|
+
},
|
|
132
|
+
"files": [
|
|
133
|
+
"dist",
|
|
134
|
+
"LICENSE",
|
|
135
|
+
"README.md",
|
|
136
|
+
"CHANGELOG.md"
|
|
137
|
+
],
|
|
138
|
+
"peerDependencies": {
|
|
139
|
+
"@hono/zod-openapi": ">=1.4.0",
|
|
140
|
+
"hono": ">=4.12.19",
|
|
141
|
+
"react": ">=19.2.6"
|
|
142
|
+
},
|
|
143
|
+
"peerDependenciesMeta": {
|
|
144
|
+
"hono": {
|
|
145
|
+
"optional": true
|
|
146
|
+
},
|
|
147
|
+
"react": {
|
|
148
|
+
"optional": true
|
|
149
|
+
},
|
|
150
|
+
"@hono/zod-openapi": {
|
|
151
|
+
"optional": true
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"dependencies": {
|
|
155
|
+
"bowser": "^2.15.0",
|
|
156
|
+
"jose": "~6.2.14",
|
|
157
|
+
"zod": "^4.6.7"
|
|
158
|
+
},
|
|
159
|
+
"devDependencies": {
|
|
160
|
+
"@arethetypeswrong/cli": "^0.18.5",
|
|
161
|
+
"@eva_solutions/auth-contracts": "0.1.0",
|
|
162
|
+
"@hono/zod-openapi": "^1.6.3",
|
|
163
|
+
"@types/node": "^25.9.9",
|
|
164
|
+
"@types/react": "^19.3.0",
|
|
165
|
+
"@typhonjs-typedoc/typedoc-theme-dmt": "^0.4.0",
|
|
166
|
+
"expect-type": "^1.4.0",
|
|
167
|
+
"hono": "^4.13.14",
|
|
168
|
+
"react": "^19.3.1",
|
|
169
|
+
"tsdown": "^0.22.14",
|
|
170
|
+
"typedoc": "^0.28.20",
|
|
171
|
+
"typescript": "^6.0.3",
|
|
172
|
+
"unrun": "^0.3.1",
|
|
173
|
+
"vitest": "^4.1.12"
|
|
174
|
+
},
|
|
175
|
+
"engines": {
|
|
176
|
+
"node": ">=20"
|
|
177
|
+
},
|
|
178
|
+
"publishConfig": {
|
|
179
|
+
"access": "public",
|
|
180
|
+
"provenance": true
|
|
181
|
+
},
|
|
182
|
+
"sideEffects": false,
|
|
183
|
+
"scripts": {
|
|
184
|
+
"build": "node scripts/build-with-maps.mjs",
|
|
185
|
+
"dev": "tsdown --watch",
|
|
186
|
+
"test": "vitest",
|
|
187
|
+
"test:run": "vitest run",
|
|
188
|
+
"test:types": "vitest run --typecheck.only",
|
|
189
|
+
"type-check": "tsc --noEmit && tsc -p tests/tsconfig.json",
|
|
190
|
+
"docs": "typedoc",
|
|
191
|
+
"attw": "attw --pack . --ignore-rules no-resolution",
|
|
192
|
+
"check:self-contained": "node scripts/check-self-contained.mjs dist",
|
|
193
|
+
"check:react-closure": "node scripts/react-closure-size.mjs dist --max 11800 --max-cjs 12380 --forbid \"\\.meta\\(\""
|
|
194
|
+
}
|
|
6
195
|
}
|