@radardata/sdk 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +202 -2
- package/dist/cjs/configuracao.js +28 -0
- package/dist/cjs/configuracao.js.map +1 -0
- package/dist/cjs/dados.js +44 -0
- package/dist/cjs/dados.js.map +1 -0
- package/dist/cjs/erros.js +86 -0
- package/dist/cjs/erros.js.map +1 -0
- package/dist/cjs/index.js +69 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/recursos/analises.js +53 -0
- package/dist/cjs/recursos/analises.js.map +1 -0
- package/dist/cjs/recursos/catalogo.js +21 -0
- package/dist/cjs/recursos/catalogo.js.map +1 -0
- package/dist/cjs/recursos/consultas.js +33 -0
- package/dist/cjs/recursos/consultas.js.map +1 -0
- package/dist/cjs/recursos/verify.js +39 -0
- package/dist/cjs/recursos/verify.js.map +1 -0
- package/dist/cjs/recursos/webhooks.js +45 -0
- package/dist/cjs/recursos/webhooks.js.map +1 -0
- package/dist/cjs/transporte.js +128 -0
- package/dist/cjs/transporte.js.map +1 -0
- package/dist/cjs/webhooks/assinatura.js +65 -0
- package/dist/cjs/webhooks/assinatura.js.map +1 -0
- package/dist/esm/configuracao.d.ts +27 -0
- package/dist/esm/configuracao.d.ts.map +1 -0
- package/dist/esm/configuracao.js +23 -0
- package/dist/esm/configuracao.js.map +1 -0
- package/dist/esm/dados.d.ts +59 -0
- package/dist/esm/dados.d.ts.map +1 -0
- package/dist/esm/dados.js +38 -0
- package/dist/esm/dados.js.map +1 -0
- package/dist/esm/erros.d.ts +53 -0
- package/dist/esm/erros.d.ts.map +1 -0
- package/dist/esm/erros.js +73 -0
- package/dist/esm/erros.js.map +1 -0
- package/dist/esm/index.d.ts +41 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/recursos/analises.d.ts +25 -0
- package/dist/esm/recursos/analises.d.ts.map +1 -0
- package/dist/esm/recursos/analises.js +49 -0
- package/dist/esm/recursos/analises.js.map +1 -0
- package/dist/esm/recursos/catalogo.d.ts +11 -0
- package/dist/esm/recursos/catalogo.d.ts.map +1 -0
- package/dist/esm/recursos/catalogo.js +17 -0
- package/dist/esm/recursos/catalogo.js.map +1 -0
- package/dist/esm/recursos/consultas.d.ts +22 -0
- package/dist/esm/recursos/consultas.d.ts.map +1 -0
- package/dist/esm/recursos/consultas.js +29 -0
- package/dist/esm/recursos/consultas.js.map +1 -0
- package/dist/esm/recursos/verify.d.ts +25 -0
- package/dist/esm/recursos/verify.d.ts.map +1 -0
- package/dist/esm/recursos/verify.js +35 -0
- package/dist/esm/recursos/verify.js.map +1 -0
- package/dist/esm/recursos/webhooks.d.ts +27 -0
- package/dist/esm/recursos/webhooks.d.ts.map +1 -0
- package/dist/esm/recursos/webhooks.js +41 -0
- package/dist/esm/recursos/webhooks.js.map +1 -0
- package/dist/esm/transporte.d.ts +35 -0
- package/dist/esm/transporte.d.ts.map +1 -0
- package/dist/esm/transporte.js +123 -0
- package/dist/esm/transporte.js.map +1 -0
- package/dist/esm/webhooks/assinatura.d.ts +32 -0
- package/dist/esm/webhooks/assinatura.d.ts.map +1 -0
- package/dist/esm/webhooks/assinatura.js +61 -0
- package/dist/esm/webhooks/assinatura.js.map +1 -0
- package/package.json +47 -4
- package/src/configuracao.ts +50 -0
- package/src/dados.ts +93 -0
- package/src/erros.ts +70 -0
- package/src/index.ts +66 -0
- package/src/recursos/analises.ts +61 -0
- package/src/recursos/catalogo.ts +17 -0
- package/src/recursos/consultas.ts +32 -0
- package/src/recursos/verify.ts +40 -0
- package/src/recursos/webhooks.ts +43 -0
- package/src/transporte.ts +145 -0
- 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
|
-
#
|
|
1
|
+
# RadarData SDK para Node e TypeScript
|
|
2
2
|
|
|
3
|
-
|
|
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"}
|