@radardata/sdk 0.0.0-stage → 0.1.0

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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +202 -2
  3. package/dist/cjs/configuracao.js +28 -0
  4. package/dist/cjs/configuracao.js.map +1 -0
  5. package/dist/cjs/dados.js +44 -0
  6. package/dist/cjs/dados.js.map +1 -0
  7. package/dist/cjs/erros.js +86 -0
  8. package/dist/cjs/erros.js.map +1 -0
  9. package/dist/cjs/index.js +69 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/package.json +1 -0
  12. package/dist/cjs/recursos/analises.js +53 -0
  13. package/dist/cjs/recursos/analises.js.map +1 -0
  14. package/dist/cjs/recursos/catalogo.js +21 -0
  15. package/dist/cjs/recursos/catalogo.js.map +1 -0
  16. package/dist/cjs/recursos/consultas.js +33 -0
  17. package/dist/cjs/recursos/consultas.js.map +1 -0
  18. package/dist/cjs/recursos/verify.js +39 -0
  19. package/dist/cjs/recursos/verify.js.map +1 -0
  20. package/dist/cjs/recursos/webhooks.js +45 -0
  21. package/dist/cjs/recursos/webhooks.js.map +1 -0
  22. package/dist/cjs/transporte.js +128 -0
  23. package/dist/cjs/transporte.js.map +1 -0
  24. package/dist/cjs/webhooks/assinatura.js +65 -0
  25. package/dist/cjs/webhooks/assinatura.js.map +1 -0
  26. package/dist/esm/configuracao.d.ts +27 -0
  27. package/dist/esm/configuracao.d.ts.map +1 -0
  28. package/dist/esm/configuracao.js +23 -0
  29. package/dist/esm/configuracao.js.map +1 -0
  30. package/dist/esm/dados.d.ts +59 -0
  31. package/dist/esm/dados.d.ts.map +1 -0
  32. package/dist/esm/dados.js +38 -0
  33. package/dist/esm/dados.js.map +1 -0
  34. package/dist/esm/erros.d.ts +53 -0
  35. package/dist/esm/erros.d.ts.map +1 -0
  36. package/dist/esm/erros.js +73 -0
  37. package/dist/esm/erros.js.map +1 -0
  38. package/dist/esm/index.d.ts +41 -0
  39. package/dist/esm/index.d.ts.map +1 -0
  40. package/dist/esm/index.js +47 -0
  41. package/dist/esm/index.js.map +1 -0
  42. package/dist/esm/recursos/analises.d.ts +25 -0
  43. package/dist/esm/recursos/analises.d.ts.map +1 -0
  44. package/dist/esm/recursos/analises.js +49 -0
  45. package/dist/esm/recursos/analises.js.map +1 -0
  46. package/dist/esm/recursos/catalogo.d.ts +11 -0
  47. package/dist/esm/recursos/catalogo.d.ts.map +1 -0
  48. package/dist/esm/recursos/catalogo.js +17 -0
  49. package/dist/esm/recursos/catalogo.js.map +1 -0
  50. package/dist/esm/recursos/consultas.d.ts +22 -0
  51. package/dist/esm/recursos/consultas.d.ts.map +1 -0
  52. package/dist/esm/recursos/consultas.js +29 -0
  53. package/dist/esm/recursos/consultas.js.map +1 -0
  54. package/dist/esm/recursos/verify.d.ts +25 -0
  55. package/dist/esm/recursos/verify.d.ts.map +1 -0
  56. package/dist/esm/recursos/verify.js +35 -0
  57. package/dist/esm/recursos/verify.js.map +1 -0
  58. package/dist/esm/recursos/webhooks.d.ts +27 -0
  59. package/dist/esm/recursos/webhooks.d.ts.map +1 -0
  60. package/dist/esm/recursos/webhooks.js +41 -0
  61. package/dist/esm/recursos/webhooks.js.map +1 -0
  62. package/dist/esm/transporte.d.ts +35 -0
  63. package/dist/esm/transporte.d.ts.map +1 -0
  64. package/dist/esm/transporte.js +123 -0
  65. package/dist/esm/transporte.js.map +1 -0
  66. package/dist/esm/webhooks/assinatura.d.ts +32 -0
  67. package/dist/esm/webhooks/assinatura.d.ts.map +1 -0
  68. package/dist/esm/webhooks/assinatura.js +61 -0
  69. package/dist/esm/webhooks/assinatura.js.map +1 -0
  70. package/package.json +46 -4
  71. package/src/configuracao.ts +50 -0
  72. package/src/dados.ts +93 -0
  73. package/src/erros.ts +70 -0
  74. package/src/index.ts +66 -0
  75. package/src/recursos/analises.ts +61 -0
  76. package/src/recursos/catalogo.ts +17 -0
  77. package/src/recursos/consultas.ts +32 -0
  78. package/src/recursos/verify.ts +40 -0
  79. package/src/recursos/webhooks.ts +43 -0
  80. package/src/transporte.ts +145 -0
  81. package/src/webhooks/assinatura.ts +72 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 RadarData
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,203 @@
1
- # Temporary Holding Version
1
+ # RadarData SDK para Node e TypeScript
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ SDK oficial do [RadarData](https://radardata.com.br) para Node 18+, em
4
+ TypeScript, **sem dependência em tempo de execução**. Embrulha a API pública
5
+ (`/api/v2`): consultas, Verify (verificação de identidade), Motor de Análises e
6
+ webhooks.
7
+
8
+ A API continua disponível para quem preferir chamá-la direto. Este pacote
9
+ existe para você não precisar.
10
+
11
+ ```bash
12
+ npm i @radardata/sdk
13
+ ```
14
+
15
+ ## Começando
16
+
17
+ ```ts
18
+ import { RadarData, emReais } from "@radardata/sdk";
19
+
20
+ const radar = new RadarData({ token: process.env.RADARDATA_TOKEN! });
21
+
22
+ const saldo = await radar.catalogo.saldo();
23
+ console.log(emReais(saldo.centavos)); // 5.000,00
24
+ console.log(saldo.disponivelCentavos); // 500000
25
+ ```
26
+
27
+ O token é o **token de API**, criado no painel, e não o da sua sessão do
28
+ painel. Ele carrega escopos (`consultas`, `verify`, `analises`, `leitura`,
29
+ `webhooks`): uma chamada fora do escopo volta `SemEscopo`.
30
+
31
+ Funciona em ESM e em CommonJS:
32
+
33
+ ```js
34
+ const { RadarData } = require("@radardata/sdk");
35
+ ```
36
+
37
+ ## Consultas
38
+
39
+ ```ts
40
+ const resultado = await radar.consultas.executar("cpf", "12345678909");
41
+ ```
42
+
43
+ Gasta saldo. O retorno não é tipado porque cada serviço devolve um corpo
44
+ diferente e a lista cresce: tipar tudo aqui faria o SDK desatualizar a cada
45
+ serviço novo sem ninguém perceber.
46
+
47
+ Para saber o que a **sua** conta pode consultar, e por quanto:
48
+
49
+ ```ts
50
+ for (const s of await radar.catalogo.servicos()) {
51
+ console.log(`${s.slug}: ${s.nome} (${s.precoCentavos} centavos)`);
52
+ }
53
+ ```
54
+
55
+ ## Verify
56
+
57
+ ```ts
58
+ const sessao = await radar.verify.criarSessao(
59
+ "kyc-cnpj", // uuid do fluxo ou o alias dele
60
+ { cnpj: "11222333000181" },
61
+ { reference_id: "pedido-4471", redirect_url: "https://seusite.com/ok" },
62
+ );
63
+
64
+ console.log(sessao.url); // mande a pessoa para cá
65
+ ```
66
+
67
+ O resultado chega por **webhook**. Dá para consultar também:
68
+
69
+ ```ts
70
+ const atual = await radar.verify.sessao(sessao.id);
71
+
72
+ if (atual.status === "completed" && atual.resultado === "APROVADO") {
73
+ // ...
74
+ }
75
+ ```
76
+
77
+ > **Criar sessão não é idempotente.** Se der timeout, **não chame de novo às
78
+ > cegas**: você pagaria duas sessões. Mande um `reference_id` seu e procure por
79
+ > ele antes de criar outra.
80
+
81
+ ## Análises
82
+
83
+ Assíncrono: criar devolve o id, o resultado chega por webhook.
84
+
85
+ ```ts
86
+ const analise = await radar.analises.criar("kyc-pf", { cpf: "12345678909" });
87
+ const estado = await radar.analises.mostrar(String(analise.id));
88
+ ```
89
+
90
+ Um `NaoEncontrado` aqui pode querer dizer **"o Motor não está liberado para a
91
+ sua conta"**, e não "caminho errado": enquanto ele não está liberado, nada dele
92
+ aparece para o cliente, de propósito.
93
+
94
+ ## Webhooks: conferir que o aviso é nosso
95
+
96
+ ```ts
97
+ import express from "express";
98
+ import { exigirAssinatura } from "@radardata/sdk";
99
+
100
+ const app = express();
101
+
102
+ // `express.raw`, NÃO `express.json`: a assinatura é do corpo cru.
103
+ app.post("/radardata/webhook", express.raw({ type: "application/json" }), (req, res) => {
104
+ const evento = exigirAssinatura(
105
+ req.body, // Buffer, o corpo CRU
106
+ req.header("X-RadarData-Signature"),
107
+ process.env.RADARDATA_WEBHOOK_SECRET!,
108
+ );
109
+
110
+ // Deduplique: reenviamos em caso de falha.
111
+ const entrega = req.header("X-RadarData-Delivery");
112
+
113
+ res.status(204).end();
114
+ });
115
+ ```
116
+
117
+ Três coisas que costumam dar errado aqui, e valem a leitura:
118
+
119
+ **Use o corpo cru.** `express.raw()`, não `express.json()`. Reserializar muda
120
+ espaços e ordem das chaves, o HMAC muda junto e a conferência falha sem motivo
121
+ aparente. É o erro mais comum de qualquer integração deste tipo, e há um teste
122
+ neste repositório que o demonstra.
123
+
124
+ **Deduplique pelo `X-RadarData-Delivery`.** Reenviamos quando a entrega falha,
125
+ então o mesmo evento pode chegar duas vezes.
126
+
127
+ **A assinatura prova origem e conteúdo, não a hora.** O timestamp e o id de
128
+ entrega viajam em cabeçalho, fora do corpo assinado, então ela não protege
129
+ contra o reenvio de um aviso antigo e autêntico por quem o tenha interceptado.
130
+ A dedup acima é a defesa prática.
131
+
132
+ ## Erros
133
+
134
+ Cada situação tem a sua classe, para você não comparar strings:
135
+
136
+ | Classe | Quando |
137
+ |---|---|
138
+ | `NaoAutenticado` | 401, token ausente, inválido ou revogado |
139
+ | `SaldoInsuficiente` | 402, a conta não tem saldo para a operação |
140
+ | `SemEscopo` | 403, o token não tem o escopo daquela rota |
141
+ | `NaoEncontrado` | 404 |
142
+ | `EntradaInvalida` | 422, veja `.corpo` para os campos |
143
+ | `MuitasTentativas` | 429, teto de chamadas |
144
+ | `ErroDoServidor` | 5xx, falha nossa |
145
+ | `FalhaDeRede` | **sem resposta**: timeout, DNS, conexão recusada |
146
+
147
+ Todas estendem `ErroRadarData`, que traz `.codigo`, `.status` e `.corpo`. O
148
+ `.codigo` é o que vale para decidir no código; a mensagem é escrita para pessoa
149
+ e muda.
150
+
151
+ `FalhaDeRede` é separado de propósito: ali o SDK **não sabe** se a operação
152
+ aconteceu. Numa chamada que gasta saldo isso importa, e o caminho é consultar
153
+ pela mesma chave de idempotência, não repetir às cegas.
154
+
155
+ ## Teto de chamadas
156
+
157
+ A API limita por token, **5 requisições por segundo** no plano padrão, e o
158
+ grupo de webhooks tem teto próprio. Ao passar do teto vem `MuitasTentativas`
159
+ (429); o SDK já respeita o `Retry-After` quando ele aparece.
160
+
161
+ ## Repetição automática, e por que ela não é global
162
+
163
+ O SDK repete em 429 e 5xx **somente** nas chamadas em que manda
164
+ `Idempotency-Key`: consultas, análises e operações. A mesma chave faz a API
165
+ devolver a resposta anterior em vez de cobrar de novo.
166
+
167
+ Criar sessão de Verify **não** tem idempotência na API, então o SDK **não
168
+ repete** ali, qualquer que seja a configuração. Repetir criaria uma segunda
169
+ sessão faturável, e um SDK que cobra duas vezes do seu cliente é pior do que
170
+ um SDK que devolve erro.
171
+
172
+ A chave é gerada automaticamente quando você não passa uma. Guarde a sua se
173
+ quiser poder reconsultar o resultado depois de um timeout:
174
+
175
+ ```ts
176
+ import { chaveIdempotencia } from "@radardata/sdk";
177
+
178
+ const chave = chaveIdempotencia();
179
+ await radar.consultas.executar("cpf", "12345678909", {}, chave);
180
+ ```
181
+
182
+ ## Apontando para outro ambiente
183
+
184
+ ```ts
185
+ const radar = new RadarData({
186
+ token: process.env.RADARDATA_TOKEN!,
187
+ base: "https://api.radardata.dev.local/api/v2",
188
+ timeoutMs: 10_000,
189
+ });
190
+ ```
191
+
192
+ ## Desenvolvimento
193
+
194
+ ```bash
195
+ npm install
196
+ npm test
197
+ npm run typecheck
198
+ npm run build
199
+ ```
200
+
201
+ ## Licença
202
+
203
+ MIT.
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSAO = void 0;
4
+ exports.resolver = resolver;
5
+ exports.userAgent = userAgent;
6
+ exports.VERSAO = "0.1.0";
7
+ /** @internal */
8
+ function resolver(c) {
9
+ if (!c.token)
10
+ throw new Error("RadarData: token de API é obrigatório.");
11
+ const buscar = c.fetch ?? globalThis.fetch;
12
+ if (typeof buscar !== "function") {
13
+ throw new Error("RadarData: `fetch` não existe neste runtime. Use Node 18 ou mais novo, ou passe um `fetch` na configuração.");
14
+ }
15
+ return {
16
+ token: c.token,
17
+ base: (c.base ?? "https://api.radardata.com.br/api/v2").replace(/\/+$/, ""),
18
+ timeoutMs: c.timeoutMs ?? 30_000,
19
+ tentativas: c.tentativas ?? 3,
20
+ fetch: buscar,
21
+ };
22
+ }
23
+ /** @internal */
24
+ function userAgent() {
25
+ const v = typeof process !== "undefined" ? process.versions?.node : undefined;
26
+ return `radardata-sdk-node/${exports.VERSAO}${v ? ` node/${v}` : ""}`;
27
+ }
28
+ //# sourceMappingURL=configuracao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuracao.js","sourceRoot":"","sources":["../../src/configuracao.ts"],"names":[],"mappings":";;;AA0BA,4BAiBC;AAGD,8BAGC;AA/BY,QAAA,MAAM,GAAG,OAAO,CAAC;AAO9B,gBAAgB;AAChB,SAAgB,QAAQ,CAAC,CAAe;IACtC,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAC3C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,qCAAqC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3E,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,MAAM;QAChC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC;QAC7B,KAAK,EAAE,MAAM;KACd,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,SAAS;IACvB,MAAM,CAAC,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,sBAAsB,cAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChE,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /** Tipos do que a api devolve, onde tipar compensa. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.paraSaldo = paraSaldo;
5
+ exports.paraServico = paraServico;
6
+ exports.paraSessao = paraSessao;
7
+ exports.emReais = emReais;
8
+ /** @internal */
9
+ function paraSaldo(d) {
10
+ return {
11
+ centavos: Number(d.saldo ?? 0),
12
+ disponivelCentavos: Number(d.saldo_disponivel ?? 0),
13
+ modoCobranca: String(d.modo_cobranca ?? ""),
14
+ };
15
+ }
16
+ /** @internal */
17
+ function paraServico(d) {
18
+ return {
19
+ slug: String(d.slug ?? ""),
20
+ nome: String(d.nome ?? ""),
21
+ categoria: d.categoria ?? null,
22
+ descricao: d.descricao ?? null,
23
+ tipoDocumento: d.tipo_documento ?? null,
24
+ precoCentavos: Number(d.preco ?? 0),
25
+ };
26
+ }
27
+ /** @internal */
28
+ function paraSessao(d) {
29
+ return {
30
+ id: String(d.session_id ?? ""),
31
+ status: String(d.status ?? ""),
32
+ url: d.url ?? null,
33
+ resultado: d.outcome ?? null,
34
+ expiraEm: d.expires_at ?? null,
35
+ referenceId: d.reference_id ?? null,
36
+ custoCentavos: Number(d.custo_total_centavos ?? 0),
37
+ cru: d,
38
+ };
39
+ }
40
+ /** Em reais, para exibir. O calculo continua em centavos. */
41
+ function emReais(centavos) {
42
+ return (centavos / 100).toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
43
+ }
44
+ //# sourceMappingURL=dados.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dados.js","sourceRoot":"","sources":["../../src/dados.ts"],"names":[],"mappings":";AAAA,uDAAuD;;AAuDvD,8BAMC;AAGD,kCASC;AAGD,gCAWC;AAGD,0BAEC;AAtCD,gBAAgB;AAChB,SAAgB,SAAS,CAAC,CAA0B;IAClD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACnD,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CAAC,CAA0B;IACpD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,SAAS,EAAG,CAAC,CAAC,SAA2B,IAAI,IAAI;QACjD,SAAS,EAAG,CAAC,CAAC,SAA2B,IAAI,IAAI;QACjD,aAAa,EAAG,CAAC,CAAC,cAAgC,IAAI,IAAI;QAC1D,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,UAAU,CAAC,CAA0B;IACnD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9B,GAAG,EAAG,CAAC,CAAC,GAAqB,IAAI,IAAI;QACrC,SAAS,EAAG,CAAC,CAAC,OAAyB,IAAI,IAAI;QAC/C,QAAQ,EAAG,CAAC,CAAC,UAA4B,IAAI,IAAI;QACjD,WAAW,EAAG,CAAC,CAAC,YAA8B,IAAI,IAAI;QACtD,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAClD,GAAG,EAAE,CAAC;KACP,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,SAAgB,OAAO,CAAC,QAAgB;IACtC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1G,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FalhaDeRede = exports.ErroDoServidor = exports.MuitasTentativas = exports.EntradaInvalida = exports.NaoEncontrado = exports.SemEscopo = exports.SaldoInsuficiente = exports.NaoAutenticado = exports.ErroRadarData = void 0;
4
+ exports.erroDoStatus = erroDoStatus;
5
+ /**
6
+ * Erros do SDK, um por situacao.
7
+ *
8
+ * A api devolve sempre `{"error": {"code": "...", "message": "..."}}`, e o
9
+ * `code` e o que vale para decidir no codigo: a `message` e escrita para
10
+ * pessoa e muda. Por isso ele fica acessivel aqui, e cada classe existe para
11
+ * um `catch` especifico, em vez de obrigar quem integra a comparar strings.
12
+ */
13
+ class ErroRadarData extends Error {
14
+ codigo;
15
+ status;
16
+ corpo;
17
+ constructor(mensagem, codigo = null, status = null,
18
+ /** O corpo cru, para quando o SDK nao previu algo. */
19
+ corpo = {}, opcoes) {
20
+ super(mensagem, opcoes);
21
+ this.codigo = codigo;
22
+ this.status = status;
23
+ this.corpo = corpo;
24
+ this.name = new.target.name;
25
+ Object.setPrototypeOf(this, new.target.prototype);
26
+ }
27
+ }
28
+ exports.ErroRadarData = ErroRadarData;
29
+ /** 401, token ausente, invalido ou revogado. */
30
+ class NaoAutenticado extends ErroRadarData {
31
+ }
32
+ exports.NaoAutenticado = NaoAutenticado;
33
+ /** 402, a conta nao tem saldo para esta operacao. */
34
+ class SaldoInsuficiente extends ErroRadarData {
35
+ }
36
+ exports.SaldoInsuficiente = SaldoInsuficiente;
37
+ /** 403, o token existe mas nao tem o escopo daquela rota. */
38
+ class SemEscopo extends ErroRadarData {
39
+ }
40
+ exports.SemEscopo = SemEscopo;
41
+ /** 404, recurso inexistente ou de outra empresa. */
42
+ class NaoEncontrado extends ErroRadarData {
43
+ }
44
+ exports.NaoEncontrado = NaoEncontrado;
45
+ /** 422, o que foi enviado nao passou na validacao. Veja `corpo`. */
46
+ class EntradaInvalida extends ErroRadarData {
47
+ }
48
+ exports.EntradaInvalida = EntradaInvalida;
49
+ /** 429, teto de chamadas atingido. */
50
+ class MuitasTentativas extends ErroRadarData {
51
+ }
52
+ exports.MuitasTentativas = MuitasTentativas;
53
+ /** 5xx, falha nossa. */
54
+ class ErroDoServidor extends ErroRadarData {
55
+ }
56
+ exports.ErroDoServidor = ErroDoServidor;
57
+ /**
58
+ * Nao houve resposta: timeout, DNS, conexao recusada.
59
+ *
60
+ * Separado dos erros com status de proposito: aqui o SDK NAO SABE se a
61
+ * operacao aconteceu. Numa chamada que gasta saldo isso importa, e o jeito de
62
+ * descobrir e consultar pela mesma chave de idempotencia, nao repetir as
63
+ * cegas.
64
+ */
65
+ class FalhaDeRede extends ErroRadarData {
66
+ }
67
+ exports.FalhaDeRede = FalhaDeRede;
68
+ /** @internal */
69
+ function erroDoStatus(status, mensagem, codigo, corpo) {
70
+ if (status === 401)
71
+ return new NaoAutenticado(mensagem, codigo, status, corpo);
72
+ if (status === 402)
73
+ return new SaldoInsuficiente(mensagem, codigo, status, corpo);
74
+ if (status === 403)
75
+ return new SemEscopo(mensagem, codigo, status, corpo);
76
+ if (status === 404)
77
+ return new NaoEncontrado(mensagem, codigo, status, corpo);
78
+ if (status === 422)
79
+ return new EntradaInvalida(mensagem, codigo, status, corpo);
80
+ if (status === 429)
81
+ return new MuitasTentativas(mensagem, codigo, status, corpo);
82
+ if (status >= 500)
83
+ return new ErroDoServidor(mensagem, codigo, status, corpo);
84
+ return new ErroRadarData(mensagem, codigo, status, corpo);
85
+ }
86
+ //# sourceMappingURL=erros.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erros.js","sourceRoot":"","sources":["../../src/erros.ts"],"names":[],"mappings":";;;AAuDA,oCAcC;AArED;;;;;;;GAOG;AACH,MAAa,aAAc,SAAQ,KAAK;IAG3B;IACA;IAEA;IALX,YACE,QAAgB,EACP,SAAwB,IAAI,EAC5B,SAAwB,IAAI;IACrC,sDAAsD;IAC7C,QAAiC,EAAE,EAC5C,MAA4B;QAE5B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QANf,WAAM,GAAN,MAAM,CAAsB;QAC5B,WAAM,GAAN,MAAM,CAAsB;QAE5B,UAAK,GAAL,KAAK,CAA8B;QAI5C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAbD,sCAaC;AAED,gDAAgD;AAChD,MAAa,cAAe,SAAQ,aAAa;CAAG;AAApD,wCAAoD;AAEpD,qDAAqD;AACrD,MAAa,iBAAkB,SAAQ,aAAa;CAAG;AAAvD,8CAAuD;AAEvD,6DAA6D;AAC7D,MAAa,SAAU,SAAQ,aAAa;CAAG;AAA/C,8BAA+C;AAE/C,oDAAoD;AACpD,MAAa,aAAc,SAAQ,aAAa;CAAG;AAAnD,sCAAmD;AAEnD,oEAAoE;AACpE,MAAa,eAAgB,SAAQ,aAAa;CAAG;AAArD,0CAAqD;AAErD,sCAAsC;AACtC,MAAa,gBAAiB,SAAQ,aAAa;CAAG;AAAtD,4CAAsD;AAEtD,wBAAwB;AACxB,MAAa,cAAe,SAAQ,aAAa;CAAG;AAApD,wCAAoD;AAEpD;;;;;;;GAOG;AACH,MAAa,WAAY,SAAQ,aAAa;CAAG;AAAjD,kCAAiD;AAEjD,gBAAgB;AAChB,SAAgB,YAAY,CAC1B,MAAc,EACd,QAAgB,EAChB,MAAqB,EACrB,KAA8B;IAE9B,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/E,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClF,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChF,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjF,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9E,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Webhooks = exports.Verify = exports.Consultas = exports.Catalogo = exports.Analises = exports.SemEscopo = exports.SaldoInsuficiente = exports.NaoEncontrado = exports.NaoAutenticado = exports.MuitasTentativas = exports.FalhaDeRede = exports.ErroRadarData = exports.ErroDoServidor = exports.EntradaInvalida = exports.emReais = exports.exigirAssinatura = exports.confereAssinatura = exports.chaveIdempotencia = exports.RadarData = void 0;
4
+ const configuracao_js_1 = require("./configuracao.js");
5
+ const analises_js_1 = require("./recursos/analises.js");
6
+ const catalogo_js_1 = require("./recursos/catalogo.js");
7
+ const consultas_js_1 = require("./recursos/consultas.js");
8
+ const verify_js_1 = require("./recursos/verify.js");
9
+ const webhooks_js_1 = require("./recursos/webhooks.js");
10
+ const transporte_js_1 = require("./transporte.js");
11
+ /**
12
+ * Ponto de entrada do SDK.
13
+ *
14
+ * ```ts
15
+ * import { RadarData } from "@radardata/sdk";
16
+ *
17
+ * const radar = new RadarData({ token: process.env.RADARDATA_TOKEN! });
18
+ * const saldo = await radar.catalogo.saldo();
19
+ * ```
20
+ *
21
+ * O token e o de API, criado no painel, e NAO o de sessao do painel. Ele
22
+ * carrega escopos: uma chamada fora do escopo do token volta `SemEscopo`, e
23
+ * isso e proposital, para um token de servidor nao poder redirecionar os seus
24
+ * webhooks.
25
+ */
26
+ class RadarData {
27
+ catalogo;
28
+ consultas;
29
+ verify;
30
+ analises;
31
+ webhooks;
32
+ constructor(config) {
33
+ const t = new transporte_js_1.Transporte((0, configuracao_js_1.resolver)(config));
34
+ this.catalogo = new catalogo_js_1.Catalogo(t);
35
+ this.consultas = new consultas_js_1.Consultas(t);
36
+ this.verify = new verify_js_1.Verify(t);
37
+ this.analises = new analises_js_1.Analises(t);
38
+ this.webhooks = new webhooks_js_1.Webhooks(t);
39
+ }
40
+ }
41
+ exports.RadarData = RadarData;
42
+ var transporte_js_2 = require("./transporte.js");
43
+ Object.defineProperty(exports, "chaveIdempotencia", { enumerable: true, get: function () { return transporte_js_2.chaveIdempotencia; } });
44
+ var assinatura_js_1 = require("./webhooks/assinatura.js");
45
+ Object.defineProperty(exports, "confereAssinatura", { enumerable: true, get: function () { return assinatura_js_1.confereAssinatura; } });
46
+ Object.defineProperty(exports, "exigirAssinatura", { enumerable: true, get: function () { return assinatura_js_1.exigirAssinatura; } });
47
+ var dados_js_1 = require("./dados.js");
48
+ Object.defineProperty(exports, "emReais", { enumerable: true, get: function () { return dados_js_1.emReais; } });
49
+ var erros_js_1 = require("./erros.js");
50
+ Object.defineProperty(exports, "EntradaInvalida", { enumerable: true, get: function () { return erros_js_1.EntradaInvalida; } });
51
+ Object.defineProperty(exports, "ErroDoServidor", { enumerable: true, get: function () { return erros_js_1.ErroDoServidor; } });
52
+ Object.defineProperty(exports, "ErroRadarData", { enumerable: true, get: function () { return erros_js_1.ErroRadarData; } });
53
+ Object.defineProperty(exports, "FalhaDeRede", { enumerable: true, get: function () { return erros_js_1.FalhaDeRede; } });
54
+ Object.defineProperty(exports, "MuitasTentativas", { enumerable: true, get: function () { return erros_js_1.MuitasTentativas; } });
55
+ Object.defineProperty(exports, "NaoAutenticado", { enumerable: true, get: function () { return erros_js_1.NaoAutenticado; } });
56
+ Object.defineProperty(exports, "NaoEncontrado", { enumerable: true, get: function () { return erros_js_1.NaoEncontrado; } });
57
+ Object.defineProperty(exports, "SaldoInsuficiente", { enumerable: true, get: function () { return erros_js_1.SaldoInsuficiente; } });
58
+ Object.defineProperty(exports, "SemEscopo", { enumerable: true, get: function () { return erros_js_1.SemEscopo; } });
59
+ var analises_js_2 = require("./recursos/analises.js");
60
+ Object.defineProperty(exports, "Analises", { enumerable: true, get: function () { return analises_js_2.Analises; } });
61
+ var catalogo_js_2 = require("./recursos/catalogo.js");
62
+ Object.defineProperty(exports, "Catalogo", { enumerable: true, get: function () { return catalogo_js_2.Catalogo; } });
63
+ var consultas_js_2 = require("./recursos/consultas.js");
64
+ Object.defineProperty(exports, "Consultas", { enumerable: true, get: function () { return consultas_js_2.Consultas; } });
65
+ var verify_js_2 = require("./recursos/verify.js");
66
+ Object.defineProperty(exports, "Verify", { enumerable: true, get: function () { return verify_js_2.Verify; } });
67
+ var webhooks_js_2 = require("./recursos/webhooks.js");
68
+ Object.defineProperty(exports, "Webhooks", { enumerable: true, get: function () { return webhooks_js_2.Webhooks; } });
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAgE;AAChE,wDAAkD;AAClD,wDAAkD;AAClD,0DAAoD;AACpD,oDAA8C;AAC9C,wDAAkD;AAClD,mDAA6C;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAa,SAAS;IACX,QAAQ,CAAW;IAEnB,SAAS,CAAY;IAErB,MAAM,CAAS;IAEf,QAAQ,CAAW;IAEnB,QAAQ,CAAW;IAE5B,YAAY,MAAoB;QAC9B,MAAM,CAAC,GAAG,IAAI,0BAAU,CAAC,IAAA,0BAAQ,EAAC,MAAM,CAAC,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAQ,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;CACF;AApBD,8BAoBC;AAED,iDAAoD;AAA3C,kHAAA,iBAAiB,OAAA;AAC1B,0DAA+E;AAAtE,kHAAA,iBAAiB,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAC5C,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAGhB,uCAUoB;AATlB,2GAAA,eAAe,OAAA;AACf,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAChB,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,6GAAA,iBAAiB,OAAA;AACjB,qGAAA,SAAS,OAAA;AAEX,sDAAkD;AAAzC,uGAAA,QAAQ,OAAA;AACjB,sDAAkD;AAAzC,uGAAA,QAAQ,OAAA;AACjB,wDAAoD;AAA3C,yGAAA,SAAS,OAAA;AAClB,kDAA8C;AAArC,mGAAA,MAAM,OAAA;AACf,sDAAkD;AAAzC,uGAAA,QAAQ,OAAA"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Analises = void 0;
4
+ const transporte_js_1 = require("../transporte.js");
5
+ /**
6
+ * Motor de Analises. Escopo `analises`. GASTA SALDO.
7
+ *
8
+ * E ASSINCRONO: criar devolve o id e o resultado chega por webhook. Consultar
9
+ * em laco funciona, mas o webhook e o caminho previsto; veja
10
+ * `confereAssinatura` para conferir que o aviso e nosso.
11
+ *
12
+ * Um 404 aqui pode querer dizer "o Motor nao esta liberado para a sua conta",
13
+ * e nao "caminho errado": enquanto ele nao esta liberado, nada dele aparece
14
+ * para o cliente, de proposito.
15
+ */
16
+ class Analises {
17
+ t;
18
+ constructor(t) {
19
+ this.t = t;
20
+ }
21
+ /** Produtos liberados para esta conta. */
22
+ async produtos() {
23
+ return this.t.pedir("GET", "analises/produtos");
24
+ }
25
+ async criar(slug, campos, opcoes = {}, chave) {
26
+ return this.t.pedir("POST", `analises/${encodeURIComponent(slug)}`, {
27
+ corpo: { campos, ...opcoes },
28
+ chaveIdempotencia: chave ?? (0, transporte_js_1.chaveIdempotencia)(),
29
+ });
30
+ }
31
+ async mostrar(id) {
32
+ return this.t.pedir("GET", `analises/${encodeURIComponent(id)}`);
33
+ }
34
+ async decidir(id, decisao, motivo) {
35
+ const corpo = { decisao };
36
+ if (motivo !== undefined)
37
+ corpo.motivo = motivo;
38
+ return this.t.pedir("POST", `analises/${encodeURIComponent(id)}/decisao`, { corpo });
39
+ }
40
+ async monitorar(slug, campos, opcoes = {}) {
41
+ return this.t.pedir("POST", `analises/monitorar/${encodeURIComponent(slug)}`, {
42
+ corpo: { campos, ...opcoes },
43
+ });
44
+ }
45
+ async monitoramentos() {
46
+ return this.t.pedir("GET", "analises/monitoramentos");
47
+ }
48
+ async cancelarMonitoramento(id) {
49
+ return this.t.pedir("DELETE", `analises/monitoramentos/${encodeURIComponent(id)}`);
50
+ }
51
+ }
52
+ exports.Analises = Analises;
53
+ //# sourceMappingURL=analises.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analises.js","sourceRoot":"","sources":["../../../src/recursos/analises.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;AAEtE;;;;;;;;;;GAUG;AACH,MAAa,QAAQ;IACU;IAA7B,YAA6B,CAAa;QAAb,MAAC,GAAD,CAAC,CAAY;IAAG,CAAC;IAE9C,0CAA0C;IAC1C,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAA4B,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,MAA+B,EAC/B,SAAkC,EAAE,EACpC,KAAc;QAEd,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;YAClE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;YAC5B,iBAAiB,EAAE,KAAK,IAAI,IAAA,iCAAiB,GAAE;SAChD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,OAAe,EAAE,MAAe;QACxD,MAAM,KAAK,GAA4B,EAAE,OAAO,EAAE,CAAC;QACnD,IAAI,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChD,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,MAA+B,EAC/B,SAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5E,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAA4B,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAAU;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,2BAA2B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;CACF;AA/CD,4BA+CC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Catalogo = void 0;
4
+ const dados_js_1 = require("../dados.js");
5
+ /** Catalogo e saldo. Escopo `leitura`, nao gasta nada. */
6
+ class Catalogo {
7
+ t;
8
+ constructor(t) {
9
+ this.t = t;
10
+ }
11
+ /** O que ESTA conta pode consultar, com o preco dela. */
12
+ async servicos() {
13
+ const dados = await this.t.pedir("GET", "servicos");
14
+ return dados.map(dados_js_1.paraServico);
15
+ }
16
+ async saldo() {
17
+ return (0, dados_js_1.paraSaldo)(await this.t.pedir("GET", "saldo"));
18
+ }
19
+ }
20
+ exports.Catalogo = Catalogo;
21
+ //# sourceMappingURL=catalogo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogo.js","sourceRoot":"","sources":["../../../src/recursos/catalogo.ts"],"names":[],"mappings":";;;AAAA,0CAA+E;AAG/E,0DAA0D;AAC1D,MAAa,QAAQ;IACU;IAA7B,YAA6B,CAAa;QAAb,MAAC,GAAD,CAAC,CAAY;IAAG,CAAC;IAE9C,yDAAyD;IACzD,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAA4B,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC,GAAG,CAAC,sBAAW,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAA,oBAAS,EAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAZD,4BAYC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Consultas = void 0;
4
+ const transporte_js_1 = require("../transporte.js");
5
+ /**
6
+ * Consultas. Escopo `consultas`. GASTA SALDO.
7
+ *
8
+ * O retorno vem como objeto solto e nao tipado de proposito: cada servico
9
+ * devolve um corpo diferente, a lista cresce, e tipar tudo aqui faria o SDK
10
+ * desatualizar a cada servico novo sem ninguem perceber.
11
+ */
12
+ class Consultas {
13
+ t;
14
+ constructor(t) {
15
+ this.t = t;
16
+ }
17
+ /**
18
+ * Executa uma consulta pelo slug do servico.
19
+ *
20
+ * A chave de idempotencia e GERADA quando voce nao passa uma, e e ela que
21
+ * torna seguro repetir: a mesma chave devolve a mesma resposta em vez de
22
+ * cobrar de novo. Guarde a sua se quiser poder reconsultar o resultado
23
+ * depois de um timeout.
24
+ */
25
+ async executar(slug, documento, extras = {}, chave) {
26
+ return this.t.pedir("POST", slug, {
27
+ corpo: { documento, ...extras },
28
+ chaveIdempotencia: chave ?? (0, transporte_js_1.chaveIdempotencia)(),
29
+ });
30
+ }
31
+ }
32
+ exports.Consultas = Consultas;
33
+ //# sourceMappingURL=consultas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consultas.js","sourceRoot":"","sources":["../../../src/recursos/consultas.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;AAEtE;;;;;;GAMG;AACH,MAAa,SAAS;IACS;IAA7B,YAA6B,CAAa;QAAb,MAAC,GAAD,CAAC,CAAY;IAAG,CAAC;IAE9C;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,SAAiB,EACjB,SAAkC,EAAE,EACpC,KAAc;QAEd,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;YAChC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;YAC/B,iBAAiB,EAAE,KAAK,IAAI,IAAA,iCAAiB,GAAE;SAChD,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,8BAsBC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Verify = void 0;
4
+ const dados_js_1 = require("../dados.js");
5
+ /**
6
+ * Verify: verificacao de identidade. Escopo `verify`. GASTA SALDO.
7
+ *
8
+ * ATENCAO ao criar: esta rota NAO tem idempotencia na api, entao o SDK nao
9
+ * repete a chamada sozinho. Se der timeout, NAO chame de novo as cegas: mande
10
+ * um `reference_id` seu na criacao e, na duvida, procure por ele antes de
11
+ * criar outra, senao voce paga duas sessoes.
12
+ */
13
+ class Verify {
14
+ t;
15
+ constructor(t) {
16
+ this.t = t;
17
+ }
18
+ /**
19
+ * Cria a sessao e devolve a URL para mandar a pessoa.
20
+ *
21
+ * @param fluxo uuid do fluxo ou o alias dele (ex.: "kyc-cnpj")
22
+ * @param input o que o fluxo pede de entrada (ex.: cpf)
23
+ * @param opcoes prefill, consent, redirect_url, webhook_url, reference_id
24
+ */
25
+ async criarSessao(fluxo, input = {}, opcoes = {}) {
26
+ const corpo = { flow_id: fluxo, ...opcoes };
27
+ if (Object.keys(input).length > 0)
28
+ corpo.input = input;
29
+ return (0, dados_js_1.paraSessao)(await this.t.pedir("POST", "verify/sessions", { corpo }));
30
+ }
31
+ async sessao(id) {
32
+ return (0, dados_js_1.paraSessao)(await this.t.pedir("GET", `verify/sessions/${encodeURIComponent(id)}`));
33
+ }
34
+ async cancelar(id) {
35
+ return (0, dados_js_1.paraSessao)(await this.t.pedir("POST", `verify/sessions/${encodeURIComponent(id)}/cancel`));
36
+ }
37
+ }
38
+ exports.Verify = Verify;
39
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/recursos/verify.ts"],"names":[],"mappings":";;;AAAA,0CAA4D;AAG5D;;;;;;;GAOG;AACH,MAAa,MAAM;IACY;IAA7B,YAA6B,CAAa;QAAb,MAAC,GAAD,CAAC,CAAY;IAAG,CAAC;IAE9C;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,QAAiC,EAAE,EACnC,SAAkC,EAAE;QAEpC,MAAM,KAAK,GAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;QACrE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEvD,OAAO,IAAA,qBAAU,EAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAA,qBAAU,EAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAA,qBAAU,EAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACpG,CAAC;CACF;AA5BD,wBA4BC"}