@lexnode/legal-data-sdk 1.30.0 → 1.32.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.
- package/README.md +223 -191
- package/dist/client.d.ts +217 -24
- package/dist/client.js +6 -103
- package/dist/errors.d.ts +86 -41
- package/dist/errors.js +1 -49
- package/dist/freshness.d.ts +88 -41
- package/dist/freshness.js +0 -47
- package/dist/index.d.ts +10 -6
- package/dist/index.js +0 -10
- package/dist/lookup.d.ts +105 -39
- package/dist/lookup.js +0 -40
- package/dist/paginate.d.ts +15 -5
- package/dist/paginate.js +0 -30
- package/dist/search.d.ts +57 -23
- package/dist/search.js +0 -17
- package/dist/types.d.ts +77 -68
- package/dist/watch.d.ts +78 -43
- package/dist/watch.js +0 -35
- package/dist/webhooks.d.ts +184 -93
- package/dist/webhooks.js +0 -65
- package/package.json +7 -4
- package/schema.d.ts +611 -521
package/dist/types.d.ts
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
import type { paths } from "../schema.js";
|
|
2
|
-
/**
|
|
3
|
-
* A ponte entre o documento OpenAPI gerado e as assinaturas do cliente.
|
|
4
|
-
*
|
|
5
|
-
* Tudo aqui deriva de `paths`: nenhuma forma de requisição ou de resposta é
|
|
6
|
-
* redigitada. Quando o contrato ganha rota, campo ou código de resposta, o
|
|
7
|
-
* cliente acompanha sem edição — e uma chamada que deixou de casar o contrato
|
|
8
|
-
* falha no compilador do consumidor, não em produção.
|
|
9
|
-
*/
|
|
10
|
-
/** O objeto vazio, escrito sem a sintaxe que a regra de tipo-vazio recusa. */
|
|
2
|
+
/** Um objeto sem campos. */
|
|
11
3
|
type Empty = {
|
|
12
4
|
[K in never]: never;
|
|
13
5
|
};
|
|
14
|
-
/** Os métodos
|
|
6
|
+
/** Os métodos HTTP das rotas `/v1`. */
|
|
15
7
|
export type HttpMethod = "get" | "post" | "patch" | "delete";
|
|
16
|
-
/**
|
|
17
|
-
* Os métodos que uma rota de fato aceita.
|
|
18
|
-
*
|
|
19
|
-
* O gerador declara os métodos ausentes como `put?: never`, então filtrar por
|
|
20
|
-
* `keyof` sozinho ofereceria `put` em toda rota; o que separa os dois é o tipo
|
|
21
|
-
* do valor.
|
|
22
|
-
*/
|
|
8
|
+
/** Os métodos HTTP que a rota `P` aceita no contrato. */
|
|
23
9
|
export type MethodOf<P extends keyof paths> = {
|
|
24
10
|
[M in Extract<keyof paths[P], HttpMethod>]: paths[P][M] extends undefined ? never : M;
|
|
25
11
|
}[Extract<keyof paths[P], HttpMethod>];
|
|
26
|
-
/** A operação
|
|
12
|
+
/** A operação do contrato para a rota `P` e o método `M`. */
|
|
27
13
|
export type Operation<P extends keyof paths, M extends MethodOf<P>> = M extends keyof paths[P] ? NonNullable<paths[P][M]> : never;
|
|
28
14
|
type PathParamsOf<O> = O extends {
|
|
29
15
|
parameters: {
|
|
@@ -42,17 +28,14 @@ type BodyOf<O> = O extends {
|
|
|
42
28
|
};
|
|
43
29
|
};
|
|
44
30
|
} ? B : never;
|
|
45
|
-
/** Os códigos de sucesso
|
|
31
|
+
/** Os códigos HTTP de sucesso das rotas `/v1`. */
|
|
46
32
|
type SuccessStatus = 200 | 201 | 202;
|
|
47
33
|
type JsonBody<R> = R extends {
|
|
48
34
|
content: {
|
|
49
35
|
"application/json": infer C;
|
|
50
36
|
};
|
|
51
37
|
} ? C : never;
|
|
52
|
-
/**
|
|
53
|
-
* O corpo de sucesso — UNIÃO quando a rota responde mais de um código, que é o
|
|
54
|
-
* caso da busca de processos (200 síncrono, 202 enfileirado).
|
|
55
|
-
*/
|
|
38
|
+
/** O corpo de sucesso; uma união quando a rota responde mais de um código. */
|
|
56
39
|
type SuccessBody<O> = O extends {
|
|
57
40
|
responses: infer R;
|
|
58
41
|
} ? {
|
|
@@ -70,41 +53,47 @@ export type PathParams<P extends keyof paths, M extends MethodOf<P>> = PathParam
|
|
|
70
53
|
export type Query<P extends keyof paths, M extends MethodOf<P>> = QueryParamsOf<Operation<P, M>>;
|
|
71
54
|
/** O corpo JSON de uma rota, ou `never` quando ela não recebe corpo. */
|
|
72
55
|
export type Body<P extends keyof paths, M extends MethodOf<P>> = BodyOf<Operation<P, M>>;
|
|
73
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* O `data` da resposta de sucesso de uma rota. Na rota que responde mais de um
|
|
58
|
+
* código, como a busca de processos (200 com o resultado, 202 com a busca
|
|
59
|
+
* enfileirada), é a união dos dois.
|
|
60
|
+
*/
|
|
74
61
|
export type Data<P extends keyof paths, M extends MethodOf<P>> = DataOf<Operation<P, M>>;
|
|
75
|
-
/** O `meta`
|
|
62
|
+
/** O `meta` da resposta de sucesso de uma rota, como o contrato o declara. */
|
|
76
63
|
export type Meta<P extends keyof paths, M extends MethodOf<P>> = MetaOf<Operation<P, M>>;
|
|
77
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Os cabeçalhos de limite de vazão de uma resposta. A API os envia em toda
|
|
66
|
+
* resposta autenticada, de sucesso ou de recusa.
|
|
67
|
+
*/
|
|
78
68
|
export interface RateLimitSnapshot {
|
|
79
|
-
/**
|
|
69
|
+
/** As chamadas permitidas por janela (`RateLimit-Limit`), ou `null`. */
|
|
80
70
|
limit: number | null;
|
|
81
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* As chamadas que restam na janela (`RateLimit-Remaining`), ou `null`. Use-o
|
|
73
|
+
* para desacelerar antes de ser recusado.
|
|
74
|
+
*/
|
|
82
75
|
remaining: number | null;
|
|
83
76
|
/**
|
|
84
|
-
* O
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* até a janela reabrir; no SUCESSO é o COMPRIMENTO da janela (60 s), que é
|
|
88
|
-
* constante. Espaçar por este número depois de um sucesso perto do teto faz
|
|
89
|
-
* dormir a janela inteira — para desacelerar, olhe `remaining`.
|
|
77
|
+
* O valor de `RateLimit-Reset`, ou `null`. Na recusa, são os segundos até a
|
|
78
|
+
* janela reabrir; no sucesso, é a duração da janela (60 s), que não muda.
|
|
79
|
+
* Para desacelerar depois de um sucesso, use `remaining`.
|
|
90
80
|
*/
|
|
91
81
|
resetSeconds: number | null;
|
|
92
82
|
/**
|
|
93
|
-
* O `Retry-After` da recusa,
|
|
94
|
-
*
|
|
95
|
-
* `meta.lakeRescue.retryAfterSeconds`.
|
|
83
|
+
* O `Retry-After` da recusa, ou `null` em toda resposta de sucesso. Quando a
|
|
84
|
+
* leitura de um processo é respondida com a cópia guardada, a espera pedida
|
|
85
|
+
* pela fonte está em `meta.lakeRescue.retryAfterSeconds`.
|
|
96
86
|
*/
|
|
97
87
|
retryAfterSeconds: number | null;
|
|
98
88
|
}
|
|
99
|
-
/**
|
|
100
|
-
* O que o cliente acrescenta ao `meta` do contrato.
|
|
101
|
-
*
|
|
102
|
-
* `status` viaja aqui porque a busca de processos responde 200 ou 202 na MESMA
|
|
103
|
-
* operação: sem o código, distinguir resultado pronto de trabalho enfileirado
|
|
104
|
-
* exigiria farejar campos do corpo.
|
|
105
|
-
*/
|
|
89
|
+
/** Os campos que este pacote acrescenta ao `meta` de toda resposta. */
|
|
106
90
|
export interface MetaExtras {
|
|
91
|
+
/**
|
|
92
|
+
* O código HTTP da resposta. Distingue 200 de 202 nas rotas que respondem
|
|
93
|
+
* os dois, como a busca de processos.
|
|
94
|
+
*/
|
|
107
95
|
status: number;
|
|
96
|
+
/** Os cabeçalhos de limite de vazão, ou `null` quando nenhum veio. */
|
|
108
97
|
rateLimit: RateLimitSnapshot | null;
|
|
109
98
|
}
|
|
110
99
|
/** O par `{ data, meta }` que toda chamada devolve, tipado pela rota. */
|
|
@@ -135,52 +124,72 @@ type BodySlot<O> = [BodyOf<O>] extends [never] ? {
|
|
|
135
124
|
} : {
|
|
136
125
|
body: BodyOf<O>;
|
|
137
126
|
};
|
|
138
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* A política de retentativa, desligada por padrão.
|
|
129
|
+
*
|
|
130
|
+
* Repete só erros retentáveis. `GET` e `DELETE` são repetidos; uma escrita, só
|
|
131
|
+
* com `idempotent: true` na chamada ou, em
|
|
132
|
+
* `POST /v1/publications/text-searches`, com o `requestId` fixado por você. O
|
|
133
|
+
* tempo esgotado da fonte (`UPSTREAM_TIMEOUT`) na ficha, no retrato e em
|
|
134
|
+
* `processLookups.create` não é repetido. Entre as tentativas, espera o
|
|
135
|
+
* `Retry-After` da recusa ou, sem ele, `baseDelayMs` dobrando a cada
|
|
136
|
+
* tentativa, sempre até `maxDelayMs`. A recusa que pede uma espera maior que
|
|
137
|
+
* `maxDelayMs` não é repetida: ela é lançada, e `retryAfterSeconds` diz
|
|
138
|
+
* quando vale tentar de novo.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* const lexnode = createLexNodeClient({
|
|
143
|
+
* baseUrl,
|
|
144
|
+
* apiKey,
|
|
145
|
+
* retry: { attempts: 3, baseDelayMs: 500 },
|
|
146
|
+
* });
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
139
149
|
export interface RetryPolicy {
|
|
140
|
-
/** Total de tentativas, contando a primeira. `1`
|
|
150
|
+
/** Total de tentativas, contando a primeira. `1` ou menos desliga. */
|
|
141
151
|
attempts: number;
|
|
142
|
-
/**
|
|
152
|
+
/** A espera antes da primeira repetição, em ms. Padrão: 500. */
|
|
143
153
|
baseDelayMs?: number;
|
|
144
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* A espera máxima entre tentativas, em ms. Padrão: 8 000. A recusa cujo
|
|
156
|
+
* `Retry-After` pede mais que isso é lançada sem repetição.
|
|
157
|
+
*/
|
|
145
158
|
maxDelayMs?: number;
|
|
146
159
|
}
|
|
147
160
|
/** O que toda chamada aceita, além dos parâmetros da própria rota. */
|
|
148
161
|
export interface CallOptions {
|
|
149
162
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
163
|
+
* Escritório (sub-tenant) desta chamada, no cabeçalho `X-Office-Id`.
|
|
164
|
+
* Substitui o do construtor; `null` envia a chamada sem o cabeçalho, mesmo
|
|
165
|
+
* que o construtor tenha um.
|
|
153
166
|
*/
|
|
154
167
|
officeId?: string | null;
|
|
155
|
-
/**
|
|
168
|
+
/** Cancela a chamada. Vale junto com o prazo: o que vier primeiro encerra. */
|
|
156
169
|
signal?: AbortSignal;
|
|
157
170
|
/**
|
|
158
|
-
* Prazo desta chamada, em ms.
|
|
159
|
-
*
|
|
171
|
+
* Prazo desta chamada, em ms. Substitui o do construtor e o calculado a
|
|
172
|
+
* partir de `waitSeconds` nas leituras de um processo.
|
|
160
173
|
*/
|
|
161
174
|
timeoutMs?: number;
|
|
162
175
|
/**
|
|
163
|
-
* `X-Request-Id
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
* a busca já congelada sem cobrar de novo; é essa rota, e não a presença do
|
|
168
|
-
* id, que autoriza a retentativa de uma escrita.
|
|
176
|
+
* O `X-Request-Id` da chamada; criado quando ausente. Serve para o suporte
|
|
177
|
+
* encontrar a chamada. Em `POST /v1/publications/text-searches`, reenviar o
|
|
178
|
+
* mesmo valor devolve a busca já feita sem nova cobrança, e só ali ele
|
|
179
|
+
* libera a retentativa de uma escrita.
|
|
169
180
|
*/
|
|
170
181
|
requestId?: string;
|
|
171
182
|
/**
|
|
172
|
-
* Declara que repetir
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* A afirmação é de quem chama: sem ela, uma escrita repetida cria um segundo
|
|
176
|
-
* recurso — e o consumidor guarda o segundo sem nunca ver o primeiro.
|
|
183
|
+
* Declara que repetir esta escrita é seguro e libera a retentativa nela.
|
|
184
|
+
* Sem isso, a retentativa só repete as escritas que o contrato declara
|
|
185
|
+
* repetíveis: repetir uma criação cria um segundo recurso.
|
|
177
186
|
*/
|
|
178
187
|
idempotent?: boolean;
|
|
179
|
-
/** `X-Trace-Id` da operação
|
|
188
|
+
/** O `X-Trace-Id` da operação; criado quando ausente. */
|
|
180
189
|
traceId?: string;
|
|
181
|
-
/** Política de retentativa desta chamada.
|
|
190
|
+
/** Política de retentativa desta chamada. Substitui a do construtor. */
|
|
182
191
|
retry?: RetryPolicy;
|
|
183
192
|
}
|
|
184
|
-
/** O argumento
|
|
193
|
+
/** O argumento de `request`: parâmetros, corpo e opções da chamada. */
|
|
185
194
|
export type RequestArgs<P extends keyof paths, M extends MethodOf<P>> = ParamsSlot<Operation<P, M>> & BodySlot<Operation<P, M>> & CallOptions;
|
|
186
195
|
export {};
|
package/dist/watch.d.ts
CHANGED
|
@@ -1,67 +1,88 @@
|
|
|
1
1
|
import type { LexNodeClient } from "./client.js";
|
|
2
2
|
import type { CallOptions, Data } from "./types.js";
|
|
3
3
|
import type { MonitorSyncSucceededPayload, WebhookEvent } from "./webhooks.js";
|
|
4
|
-
/**
|
|
5
|
-
* Vigiar um processo para N interessados.
|
|
6
|
-
*
|
|
7
|
-
* O motor separa duas primitivas que costumam ser confundidas:
|
|
8
|
-
*
|
|
9
|
-
* - o **sensor** (`Monitor`) é quem varre a fonte. Ele é único por alvo dentro
|
|
10
|
-
* da conta e do projeto, e tem teto: pedir um segundo para o mesmo processo
|
|
11
|
-
* responde 409;
|
|
12
|
-
* - a **assinatura** (`ProcessSubscription`) é quem quer ser avisado. Ela é
|
|
13
|
-
* única por `externalRef`, não tem teto, e o aviso
|
|
14
|
-
* `PROCESS_MOVEMENT_CREATED` a ecoa de volta.
|
|
15
|
-
*
|
|
16
|
-
* Milhares de interessados no mesmo processo são, portanto, UM sensor e N
|
|
17
|
-
* assinaturas. Este módulo é essa composição.
|
|
18
|
-
*/
|
|
4
|
+
/** O processo a vigiar e o interessado que recebe os avisos. */
|
|
19
5
|
export interface WatchProcessInput {
|
|
6
|
+
/** O número do processo. */
|
|
20
7
|
processNumber: string;
|
|
8
|
+
/** O tribunal, pela sigla (por exemplo, `TJSP`). */
|
|
21
9
|
tribunalAlias: string;
|
|
22
|
-
/** O sub-tenant do interessado
|
|
10
|
+
/** O escritório (sub-tenant) do interessado; a assinatura é criada nele. */
|
|
23
11
|
officeId?: string | null;
|
|
24
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* A sua referência para o interessado, devolvida no evento
|
|
14
|
+
* `PROCESS_MOVEMENT_CREATED`.
|
|
15
|
+
*/
|
|
25
16
|
externalRef: string;
|
|
17
|
+
/** Um rótulo para o monitor. */
|
|
26
18
|
label?: string;
|
|
27
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* A data de distribuição (AAAA-MM-DD) do processo que ainda não aparece na
|
|
21
|
+
* fonte, para o monitor saber até quando esperá-lo.
|
|
22
|
+
*/
|
|
28
23
|
distributedAt?: string;
|
|
29
24
|
}
|
|
25
|
+
/** O resultado de `watchProcess`. */
|
|
30
26
|
export interface WatchProcessResult {
|
|
31
27
|
/**
|
|
32
|
-
* O
|
|
33
|
-
*
|
|
34
|
-
* recusa não o traz.
|
|
28
|
+
* O monitor do processo, criado agora ou já existente; `null` só quando a
|
|
29
|
+
* recusa de monitor repetido não informou o id.
|
|
35
30
|
*/
|
|
36
31
|
monitorId: string | null;
|
|
32
|
+
/** Se o monitor já existia antes desta chamada. */
|
|
37
33
|
monitorAlreadyExisted: boolean;
|
|
34
|
+
/** A assinatura criada para o interessado. */
|
|
38
35
|
subscription: Data<"/v1/subscriptions", "post">;
|
|
39
36
|
}
|
|
40
37
|
/**
|
|
41
|
-
*
|
|
38
|
+
* Vigia um processo para um interessado: garante o monitor do processo e cria
|
|
39
|
+
* a assinatura do interessado.
|
|
40
|
+
*
|
|
41
|
+
* Cada processo tem um monitor por conta e projeto, que consulta a fonte, e
|
|
42
|
+
* cada interessado tem a própria assinatura, identificada pelo `externalRef`,
|
|
43
|
+
* que recebe os avisos. Chame esta função uma vez por interessado: a primeira
|
|
44
|
+
* chamada cria o monitor, e as seguintes reaproveitam o existente
|
|
45
|
+
* (`monitorAlreadyExisted: true`). O monitor é criado sem escritório, para
|
|
46
|
+
* ficar ao alcance das chamadas de todos os escritórios — um monitor criado
|
|
47
|
+
* num escritório não aparece para as chamadas de outro —, e a assinatura é
|
|
48
|
+
* criada no escritório de `officeId`.
|
|
42
49
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* com o escritório de quem quer o aviso.
|
|
50
|
+
* Lança `LexNodeError` nas recusas da API, exceto a de monitor repetido. A
|
|
51
|
+
* chave de teste (`lapi_test_`) não cria monitores: a criação responde 403
|
|
52
|
+
* `SANDBOX_UPSTREAM_DISABLED`, e a vigília exige a chave de produção.
|
|
47
53
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const { monitorId, subscription } = await watchProcess(lexnode, {
|
|
57
|
+
* processNumber: "00012345620268260100",
|
|
58
|
+
* tribunalAlias: "TJSP",
|
|
59
|
+
* officeId: "usuario-4711",
|
|
60
|
+
* externalRef: "caso-42",
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
50
63
|
*/
|
|
51
64
|
export declare function watchProcess(client: LexNodeClient, input: WatchProcessInput, opts?: CallOptions): Promise<WatchProcessResult>;
|
|
65
|
+
/** O interessado que deixa de vigiar o processo. */
|
|
52
66
|
export interface UnwatchProcessInput {
|
|
67
|
+
/** A referência usada em `watchProcess`. */
|
|
53
68
|
externalRef: string;
|
|
69
|
+
/** O escritório (sub-tenant) usado em `watchProcess`. */
|
|
54
70
|
officeId?: string | null;
|
|
55
71
|
}
|
|
56
72
|
/**
|
|
57
|
-
*
|
|
73
|
+
* Cancela a assinatura deste interessado no processo.
|
|
58
74
|
*
|
|
59
|
-
* O
|
|
60
|
-
*
|
|
61
|
-
*
|
|
75
|
+
* O monitor do processo continua ativo, porque outros interessados podem
|
|
76
|
+
* depender dele. Quando o último interessado sair, remova o monitor com
|
|
77
|
+
* `client.monitors.delete(monitorId)`.
|
|
78
|
+
*
|
|
79
|
+
* Lança `LexNodeError` nas recusas da API.
|
|
62
80
|
*/
|
|
63
81
|
export declare function unwatchProcess(client: LexNodeClient, input: UnwatchProcessInput, opts?: CallOptions): Promise<Data<"/v1/subscriptions", "delete">>;
|
|
64
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* O evento `MONITOR_SYNC_SUCCEEDED` que anuncia a primeira aparição do
|
|
84
|
+
* processo na fonte (`firstAppearance: true`).
|
|
85
|
+
*/
|
|
65
86
|
export type FirstAppearanceEvent = Extract<WebhookEvent, {
|
|
66
87
|
type: "MONITOR_SYNC_SUCCEEDED";
|
|
67
88
|
}> & {
|
|
@@ -70,24 +91,38 @@ export type FirstAppearanceEvent = Extract<WebhookEvent, {
|
|
|
70
91
|
};
|
|
71
92
|
};
|
|
72
93
|
/**
|
|
73
|
-
*
|
|
94
|
+
* Diz se o evento anuncia a primeira aparição do processo na fonte.
|
|
74
95
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* primeira aparição, o assinante não recebe nada. Refazer o
|
|
79
|
-
* `POST /v1/subscriptions` depois deste evento preenche o vínculo.
|
|
96
|
+
* Uma assinatura criada antes de o processo aparecer na fonte não recebe
|
|
97
|
+
* `PROCESS_MOVEMENT_CREATED` até ser refeita. Quando este evento chegar,
|
|
98
|
+
* refaça as assinaturas do processo com `resubscribeOnFirstAppearance`.
|
|
80
99
|
*/
|
|
81
100
|
export declare function isFirstAppearance(event: WebhookEvent): event is FirstAppearanceEvent;
|
|
101
|
+
/**
|
|
102
|
+
* Um interessado a assinar de novo: a referência e o escritório usados em
|
|
103
|
+
* `watchProcess`.
|
|
104
|
+
*/
|
|
82
105
|
export interface ResubscribeSubscriber {
|
|
106
|
+
/** A referência do interessado. */
|
|
83
107
|
externalRef: string;
|
|
108
|
+
/** O escritório (sub-tenant) do interessado. */
|
|
84
109
|
officeId?: string | null;
|
|
85
110
|
}
|
|
86
111
|
/**
|
|
87
|
-
* Refaz as assinaturas de um
|
|
112
|
+
* Refaz as assinaturas de um processo que acabou de aparecer na fonte.
|
|
113
|
+
*
|
|
114
|
+
* Passe o evento recebido e os interessados do processo, que o evento não
|
|
115
|
+
* traz. Devolve as assinaturas refeitas, ou uma lista vazia, sem chamar a API,
|
|
116
|
+
* quando o evento não é de primeira aparição ou não traz o tribunal e o número
|
|
117
|
+
* do processo. Lança `LexNodeError` nas recusas da API.
|
|
88
118
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* if (isFirstAppearance(evento)) {
|
|
122
|
+
* await resubscribeOnFirstAppearance(lexnode, evento, [
|
|
123
|
+
* { externalRef: "caso-42", officeId: "usuario-4711" },
|
|
124
|
+
* ]);
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
92
127
|
*/
|
|
93
128
|
export declare function resubscribeOnFirstAppearance(client: LexNodeClient, event: WebhookEvent, subscribers: ReadonlyArray<ResubscribeSubscriber>, opts?: CallOptions): Promise<Array<Data<"/v1/subscriptions", "post">>>;
|
package/dist/watch.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import { LexNodeError } from "./errors.js";
|
|
2
|
-
/** A recusa de alvo já vigiado — que, para esta composição, é sucesso. */
|
|
3
2
|
const MONITOR_ALREADY_EXISTS = "MONITOR_ALREADY_EXISTS";
|
|
4
|
-
/**
|
|
5
|
-
* Garante o sensor e registra o interessado.
|
|
6
|
-
*
|
|
7
|
-
* O sensor é criado **sem `X-Office-Id`**: o motor recorta monitor por
|
|
8
|
-
* escritório na listagem e na remoção, e um sensor preso ao escritório do
|
|
9
|
-
* primeiro interessado desapareceria para o segundo. A assinatura, sim, nasce
|
|
10
|
-
* com o escritório de quem quer o aviso.
|
|
11
|
-
*
|
|
12
|
-
* A chave de teste (`lapi_test_`) não cria trabalho de fundo: o sensor responde
|
|
13
|
-
* 403 `SANDBOX_UPSTREAM_DISABLED`. A composição só fecha com chave viva.
|
|
14
|
-
*/
|
|
15
3
|
export async function watchProcess(client, input, opts = {}) {
|
|
16
4
|
let monitorId = null;
|
|
17
5
|
let monitorAlreadyExisted = false;
|
|
@@ -43,37 +31,14 @@ export async function watchProcess(client, input, opts = {}) {
|
|
|
43
31
|
}, { ...opts, officeId: input.officeId });
|
|
44
32
|
return { monitorId, monitorAlreadyExisted, subscription };
|
|
45
33
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Remove o interesse de UM assinante.
|
|
48
|
-
*
|
|
49
|
-
* O sensor fica de pé de propósito: quantos interessados restam é contagem do
|
|
50
|
-
* consumidor, e o SDK não tem como adivinhá-la — desligar a varredura aqui
|
|
51
|
-
* calaria o aviso de todo mundo que continua assinando o mesmo processo.
|
|
52
|
-
*/
|
|
53
34
|
export async function unwatchProcess(client, input, opts = {}) {
|
|
54
35
|
const { data } = await client.subscriptions.delete({ reason: "CASE_LINK", externalRef: input.externalRef }, { ...opts, officeId: input.officeId });
|
|
55
36
|
return data;
|
|
56
37
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Se este evento anuncia a primeira aparição do alvo na fonte.
|
|
59
|
-
*
|
|
60
|
-
* Importa porque a assinatura criada ANTES de o processo entrar no acervo
|
|
61
|
-
* nasce sem vínculo com a linha canônica, e o leque de
|
|
62
|
-
* `PROCESS_MOVEMENT_CREATED` escolhe assinantes por esse vínculo: até a
|
|
63
|
-
* primeira aparição, o assinante não recebe nada. Refazer o
|
|
64
|
-
* `POST /v1/subscriptions` depois deste evento preenche o vínculo.
|
|
65
|
-
*/
|
|
66
38
|
export function isFirstAppearance(event) {
|
|
67
39
|
return (event.type === "MONITOR_SYNC_SUCCEEDED" &&
|
|
68
40
|
event.payload.firstAppearance === true);
|
|
69
41
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Refaz as assinaturas de um alvo que acabou de aparecer na fonte.
|
|
72
|
-
*
|
|
73
|
-
* Quem são os interessados é do consumidor — o evento não os carrega —, então
|
|
74
|
-
* eles entram por parâmetro. Sem `tribunalAlias` no payload, nada é refeito: a
|
|
75
|
-
* assinatura é por (fonte, tribunal, processo).
|
|
76
|
-
*/
|
|
77
42
|
export async function resubscribeOnFirstAppearance(client, event, subscribers, opts = {}) {
|
|
78
43
|
if (!isFirstAppearance(event))
|
|
79
44
|
return [];
|