@neetru/sdk 3.4.2 → 3.4.4

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 (58) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/ai.d.cts +1 -1
  3. package/dist/ai.d.ts +1 -1
  4. package/dist/auth.cjs +17 -7
  5. package/dist/auth.cjs.map +1 -1
  6. package/dist/auth.d.cts +1 -1
  7. package/dist/auth.d.ts +1 -1
  8. package/dist/auth.mjs +17 -7
  9. package/dist/auth.mjs.map +1 -1
  10. package/dist/build-guard.cjs +98 -0
  11. package/dist/build-guard.cjs.map +1 -1
  12. package/dist/build-guard.d.cts +63 -1
  13. package/dist/build-guard.d.ts +63 -1
  14. package/dist/build-guard.mjs +93 -1
  15. package/dist/build-guard.mjs.map +1 -1
  16. package/dist/catalog.d.cts +1 -1
  17. package/dist/catalog.d.ts +1 -1
  18. package/dist/checkout.cjs +17 -7
  19. package/dist/checkout.cjs.map +1 -1
  20. package/dist/checkout.d.cts +1 -1
  21. package/dist/checkout.d.ts +1 -1
  22. package/dist/checkout.mjs +17 -7
  23. package/dist/checkout.mjs.map +1 -1
  24. package/dist/db-react.d.cts +1 -1
  25. package/dist/db-react.d.ts +1 -1
  26. package/dist/db.d.cts +1 -1
  27. package/dist/db.d.ts +1 -1
  28. package/dist/entitlements.d.cts +1 -1
  29. package/dist/entitlements.d.ts +1 -1
  30. package/dist/firestore-compat.d.cts +1 -1
  31. package/dist/firestore-compat.d.ts +1 -1
  32. package/dist/index.cjs +18 -8
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +2 -2
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.mjs +18 -8
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/mocks.d.cts +1 -1
  39. package/dist/mocks.d.ts +1 -1
  40. package/dist/notifications.d.cts +1 -1
  41. package/dist/notifications.d.ts +1 -1
  42. package/dist/react.cjs +62 -3
  43. package/dist/react.cjs.map +1 -1
  44. package/dist/react.d.cts +38 -7
  45. package/dist/react.d.ts +38 -7
  46. package/dist/react.mjs +62 -3
  47. package/dist/react.mjs.map +1 -1
  48. package/dist/support.d.cts +1 -1
  49. package/dist/support.d.ts +1 -1
  50. package/dist/telemetry.d.cts +1 -1
  51. package/dist/telemetry.d.ts +1 -1
  52. package/dist/{types-BlOLDMR0.d.ts → types-Bzxb5rlF.d.ts} +26 -8
  53. package/dist/{types-D-QdG502.d.cts → types-Dw0fqhHm.d.cts} +26 -8
  54. package/dist/usage.d.cts +1 -1
  55. package/dist/usage.d.ts +1 -1
  56. package/dist/webhooks.d.cts +1 -1
  57. package/dist/webhooks.d.ts +1 -1
  58. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, al as SupportNamespace } from './types-D-QdG502.cjs';
1
+ import { ag as ResolvedConfig, al as SupportNamespace } from './types-Dw0fqhHm.cjs';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.cjs';
4
4
 
package/dist/support.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, al as SupportNamespace } from './types-BlOLDMR0.js';
1
+ import { ag as ResolvedConfig, al as SupportNamespace } from './types-Bzxb5rlF.js';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, as as TelemetryEventInput, ar as TelemetryEventAck, au as TelemetryLogInput, at as TelemetryLogAck } from './types-D-QdG502.cjs';
1
+ import { ag as ResolvedConfig, as as TelemetryEventInput, ar as TelemetryEventAck, au as TelemetryLogInput, at as TelemetryLogAck } from './types-Dw0fqhHm.cjs';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, as as TelemetryEventInput, ar as TelemetryEventAck, au as TelemetryLogInput, at as TelemetryLogAck } from './types-BlOLDMR0.js';
1
+ import { ag as ResolvedConfig, as as TelemetryEventInput, ar as TelemetryEventAck, au as TelemetryLogInput, at as TelemetryLogAck } from './types-Bzxb5rlF.js';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.js';
4
4
 
@@ -23,18 +23,36 @@ interface CheckoutStartInput {
23
23
  autoRedirect?: boolean;
24
24
  /**
25
25
  * **C2 (auditoria 2026-06-10):** access_token OIDC do **usuário final** que
26
- * está assinando. OBRIGATÓRIO no modo HTTP real — o endpoint de checkout do
26
+ * está assinando. Usado no modo HTTP real — o endpoint de checkout do
27
27
  * Core (`/api/v1/checkout/intents`) autentica a identidade do cliente (Bearer
28
- * access_token OIDC ou cookie de sessão), NÃO a chave de API do SDK (`nrt_*`).
29
- * Enviar a chave `nrt_*` resultava em 401 sempre. O SDK é BFF-pattern: o app
30
- * consumidor gerencia o ciclo OIDC e passa o access_token aqui.
28
+ * access_token/id_token OIDC ou cookie de sessão), NÃO a chave de API do SDK
29
+ * (`nrt_*`). Enviar a chave `nrt_*` resultava em 401 sempre.
30
+ *
31
+ * Passe `accessToken` **ou** `idToken` (pelo menos um é obrigatório no HTTP
32
+ * real). Veja `idToken` para o padrão BFF/cookie recomendado.
31
33
  */
32
34
  accessToken?: string;
35
+ /**
36
+ * **BFF/cookie (padrão recomendado):** id_token OIDC do **usuário final**.
37
+ *
38
+ * No padrão BFF, o app troca `code`→tokens **no servidor**, guarda só o
39
+ * `id_token` num cookie **httpOnly** e **descarta o access_token** — logo o
40
+ * browser NUNCA tem o access_token. O endpoint de checkout do Core aceita o
41
+ * id_token no header Bearer (via `verifyIdToken`, mesma validação forte de
42
+ * assinatura/kid/iss/exp do access_token), então o **BFF do app** passa aqui
43
+ * o id_token que ele TEM (lido do cookie httpOnly, server-side).
44
+ *
45
+ * Quando ambos são passados, `accessToken` tem prioridade (é revogável no
46
+ * servidor via o espelho `jti`; o id_token não é revogável, só expira ~15min).
47
+ */
48
+ idToken?: string;
33
49
  }
34
- /** Auth por chamada do checkout — access_token OIDC do usuário final. */
50
+ /** Auth por chamada do checkout — access_token OU id_token OIDC do usuário final. */
35
51
  interface CheckoutAuthOpts {
36
- /** access_token OIDC do usuário final (vide CheckoutStartInput.accessToken). */
52
+ /** access_token OIDC do usuário final (vide `CheckoutStartInput.accessToken`). */
37
53
  accessToken?: string;
54
+ /** id_token OIDC do usuário final — padrão BFF/cookie (vide `CheckoutStartInput.idToken`). */
55
+ idToken?: string;
38
56
  }
39
57
  interface CheckoutStartResult {
40
58
  intentId: string;
@@ -68,9 +86,9 @@ interface CheckoutNamespace {
68
86
  * Dev mode (`NEETRU_ENV=dev`): retorna URL fake `https://localhost:9003/portal/checkout/mock-XXXX`.
69
87
  */
70
88
  start(input: CheckoutStartInput): Promise<CheckoutStartResult>;
71
- /** Lê estado atual do intent (Core). Requer `opts.accessToken` no HTTP real. */
89
+ /** Lê estado atual do intent (Core). Requer `opts.accessToken` **ou** `opts.idToken` no HTTP real. */
72
90
  get(intentId: string, opts?: CheckoutAuthOpts): Promise<CheckoutIntentInfo>;
73
- /** Cancela um intent que ainda não virou `stripe_redirected`. Requer `opts.accessToken` no HTTP real. */
91
+ /** Cancela um intent que ainda não virou `stripe_redirected`. Requer `opts.accessToken` **ou** `opts.idToken` no HTTP real. */
74
92
  cancel(intentId: string, opts?: CheckoutAuthOpts): Promise<{
75
93
  ok: true;
76
94
  alreadyCancelled: boolean;
@@ -23,18 +23,36 @@ interface CheckoutStartInput {
23
23
  autoRedirect?: boolean;
24
24
  /**
25
25
  * **C2 (auditoria 2026-06-10):** access_token OIDC do **usuário final** que
26
- * está assinando. OBRIGATÓRIO no modo HTTP real — o endpoint de checkout do
26
+ * está assinando. Usado no modo HTTP real — o endpoint de checkout do
27
27
  * Core (`/api/v1/checkout/intents`) autentica a identidade do cliente (Bearer
28
- * access_token OIDC ou cookie de sessão), NÃO a chave de API do SDK (`nrt_*`).
29
- * Enviar a chave `nrt_*` resultava em 401 sempre. O SDK é BFF-pattern: o app
30
- * consumidor gerencia o ciclo OIDC e passa o access_token aqui.
28
+ * access_token/id_token OIDC ou cookie de sessão), NÃO a chave de API do SDK
29
+ * (`nrt_*`). Enviar a chave `nrt_*` resultava em 401 sempre.
30
+ *
31
+ * Passe `accessToken` **ou** `idToken` (pelo menos um é obrigatório no HTTP
32
+ * real). Veja `idToken` para o padrão BFF/cookie recomendado.
31
33
  */
32
34
  accessToken?: string;
35
+ /**
36
+ * **BFF/cookie (padrão recomendado):** id_token OIDC do **usuário final**.
37
+ *
38
+ * No padrão BFF, o app troca `code`→tokens **no servidor**, guarda só o
39
+ * `id_token` num cookie **httpOnly** e **descarta o access_token** — logo o
40
+ * browser NUNCA tem o access_token. O endpoint de checkout do Core aceita o
41
+ * id_token no header Bearer (via `verifyIdToken`, mesma validação forte de
42
+ * assinatura/kid/iss/exp do access_token), então o **BFF do app** passa aqui
43
+ * o id_token que ele TEM (lido do cookie httpOnly, server-side).
44
+ *
45
+ * Quando ambos são passados, `accessToken` tem prioridade (é revogável no
46
+ * servidor via o espelho `jti`; o id_token não é revogável, só expira ~15min).
47
+ */
48
+ idToken?: string;
33
49
  }
34
- /** Auth por chamada do checkout — access_token OIDC do usuário final. */
50
+ /** Auth por chamada do checkout — access_token OU id_token OIDC do usuário final. */
35
51
  interface CheckoutAuthOpts {
36
- /** access_token OIDC do usuário final (vide CheckoutStartInput.accessToken). */
52
+ /** access_token OIDC do usuário final (vide `CheckoutStartInput.accessToken`). */
37
53
  accessToken?: string;
54
+ /** id_token OIDC do usuário final — padrão BFF/cookie (vide `CheckoutStartInput.idToken`). */
55
+ idToken?: string;
38
56
  }
39
57
  interface CheckoutStartResult {
40
58
  intentId: string;
@@ -68,9 +86,9 @@ interface CheckoutNamespace {
68
86
  * Dev mode (`NEETRU_ENV=dev`): retorna URL fake `https://localhost:9003/portal/checkout/mock-XXXX`.
69
87
  */
70
88
  start(input: CheckoutStartInput): Promise<CheckoutStartResult>;
71
- /** Lê estado atual do intent (Core). Requer `opts.accessToken` no HTTP real. */
89
+ /** Lê estado atual do intent (Core). Requer `opts.accessToken` **ou** `opts.idToken` no HTTP real. */
72
90
  get(intentId: string, opts?: CheckoutAuthOpts): Promise<CheckoutIntentInfo>;
73
- /** Cancela um intent que ainda não virou `stripe_redirected`. Requer `opts.accessToken` no HTTP real. */
91
+ /** Cancela um intent que ainda não virou `stripe_redirected`. Requer `opts.accessToken` **ou** `opts.idToken` no HTTP real. */
74
92
  cancel(intentId: string, opts?: CheckoutAuthOpts): Promise<{
75
93
  ok: true;
76
94
  alreadyCancelled: boolean;
package/dist/usage.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, ax as UsageNamespace } from './types-D-QdG502.cjs';
1
+ import { ag as ResolvedConfig, ax as UsageNamespace } from './types-Dw0fqhHm.cjs';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.cjs';
4
4
 
package/dist/usage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ag as ResolvedConfig, ax as UsageNamespace } from './types-BlOLDMR0.js';
1
+ import { ag as ResolvedConfig, ax as UsageNamespace } from './types-Bzxb5rlF.js';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.js';
4
4
 
@@ -1,3 +1,3 @@
1
- export { U as MockWebhooks, af as RegisterWebhookInput, aA as VerifyWebhookRequestOptions, aB as VerifyWebhookRequestResult, aC as WebhookEndpoint, aD as WebhookEvent, aE as WebhookScopeOptions, aF as WebhookTestResult, aG as WebhooksNamespace, aO as createWebhooksNamespace, aV as verifyWebhookRequest, aW as verifyWebhookSignature } from './types-D-QdG502.cjs';
1
+ export { U as MockWebhooks, af as RegisterWebhookInput, aA as VerifyWebhookRequestOptions, aB as VerifyWebhookRequestResult, aC as WebhookEndpoint, aD as WebhookEvent, aE as WebhookScopeOptions, aF as WebhookTestResult, aG as WebhooksNamespace, aO as createWebhooksNamespace, aV as verifyWebhookRequest, aW as verifyWebhookSignature } from './types-Dw0fqhHm.cjs';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.cjs';
@@ -1,3 +1,3 @@
1
- export { U as MockWebhooks, af as RegisterWebhookInput, aA as VerifyWebhookRequestOptions, aB as VerifyWebhookRequestResult, aC as WebhookEndpoint, aD as WebhookEvent, aE as WebhookScopeOptions, aF as WebhookTestResult, aG as WebhooksNamespace, aO as createWebhooksNamespace, aV as verifyWebhookRequest, aW as verifyWebhookSignature } from './types-BlOLDMR0.js';
1
+ export { U as MockWebhooks, af as RegisterWebhookInput, aA as VerifyWebhookRequestOptions, aB as VerifyWebhookRequestResult, aC as WebhookEndpoint, aD as WebhookEvent, aE as WebhookScopeOptions, aF as WebhookTestResult, aG as WebhooksNamespace, aO as createWebhooksNamespace, aV as verifyWebhookRequest, aW as verifyWebhookSignature } from './types-Bzxb5rlF.js';
2
2
  import 'drizzle-orm/node-postgres';
3
3
  import './errors.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neetru/sdk",
3
- "version": "3.4.2",
3
+ "version": "3.4.4",
4
4
  "description": "Neetru SDK 3.0 — biblioteca runtime universal (browser/Node/Edge) para consumir o ecossistema Neetru. Paths canonical /api/sdk/v1/*, productId obrigatório, Idempotency-Key em mutations, WebCrypto signatures, baseUrl allowlist fail-closed.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",