@lexnode/legal-data-sdk 1.30.0 → 1.31.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/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 que a superfície `/v1` usa. */
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 de uma rota + método, já sem o `undefined` do método ausente. */
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 que a superfície usa. */
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
- /** O `data` do envelope de sucesso de uma rota. */
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` do envelope de sucesso de uma rota, como o contrato o declara. */
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
- /** O que o motor anuncia sobre o teto por minuto, em TODA resposta. */
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
- /** Teto da janela, ou `null` quando o cabeçalho não veio. */
69
+ /** As chamadas permitidas por janela (`RateLimit-Limit`), ou `null`. */
80
70
  limit: number | null;
81
- /** Quanto resta na janela, ou `null` quando o cabeçalho não veio. */
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 que o cabeçalho `RateLimit-Reset` trouxe, ou `null`.
85
- *
86
- * Os dois sentidos são do motor, não do cliente: na RECUSA são os segundos
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, quando houve; `null` em todo sucesso. A espera
94
- * que a fonte pediu a uma leitura socorrida pelo acervo sai em
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
- /** Política de retentativa. Desligada por padrão — ver `createLexNodeClient`. */
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` (ou menos) desliga. */
150
+ /** Total de tentativas, contando a primeira. `1` ou menos desliga. */
141
151
  attempts: number;
142
- /** Espera da primeira retentativa, em ms; dobra a cada rodada. */
152
+ /** A espera antes da primeira repetição, em ms. Padrão: 500. */
143
153
  baseDelayMs?: number;
144
- /** Teto da espera, em ms. */
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
- * Sub-tenant desta chamada. Vence o do construtor; `null` OMITE o cabeçalho
151
- * mesmo quando o construtor trouxe um — é o que a vigília precisa, porque o
152
- * motor recorta monitor por escritório na listagem e na remoção.
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
- /** Aborta a chamada. É COMBINADO com o prazo, nunca o substitui. */
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. Vence o do construtor e o que o cliente
159
- * calcula para a ficha e o retrato de um processo a partir da espera.
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`. Cunhado quando ausente.
164
- *
165
- * É rastreio em toda rota. Chave de replay em uma só —
166
- * `POST /v1/publications/text-searches`, onde reenviar o mesmo valor devolve
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 ESTA escrita é seguro, liberando a retentativa numa
173
- * rota que o contrato não declara idempotente.
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 lógica. Cunhado quando ausente. */
188
+ /** O `X-Trace-Id` da operação; criado quando ausente. */
180
189
  traceId?: string;
181
- /** Política de retentativa desta chamada. Vence a do construtor. */
190
+ /** Política de retentativa desta chamada. Substitui a do construtor. */
182
191
  retry?: RetryPolicy;
183
192
  }
184
- /** O argumento da chamada genérica: parâmetros, corpo e opções de transporte. */
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. A ASSINATURA nasce com ele. */
10
+ /** O escritório (sub-tenant) do interessado; a assinatura é criada nele. */
23
11
  officeId?: string | null;
24
- /** O ponteiro do consumidor, ecoado no evento de movimentação. */
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
- /** AAAA-MM-DD da distribuição, para a vigília de aparição ter critério. */
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 sensor do alvo, tenha ele nascido agora ou já existido — a recusa 409
33
- * carrega o id do que está lá, em `details.monitorId`. Nulo só quando a
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
- * Garante o sensor e registra o interessado.
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
- * O sensor é criado **sem `X-Office-Id`**: o motor recorta monitor por
44
- * escritório na listagem e na remoção, e um sensor preso ao escritório do
45
- * primeiro interessado desapareceria para o segundo. A assinatura, sim, nasce
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
- * A chave de teste (`lapi_test_`) não cria trabalho de fundo: o sensor responde
49
- * 403 `SANDBOX_UPSTREAM_DISABLED`. A composição só fecha com chave viva.
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
- * Remove o interesse de UM assinante.
73
+ * Cancela a assinatura deste interessado no processo.
58
74
  *
59
- * O sensor fica de pé de propósito: quantos interessados restam é contagem do
60
- * consumidor, e o SDK não tem como adivinhá-la — desligar a varredura aqui
61
- * calaria o aviso de todo mundo que continua assinando o mesmo processo.
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
- /** O evento de varredura em que um alvo antes ausente apareceu na fonte. */
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
- * Se este evento anuncia a primeira aparição do alvo na fonte.
94
+ * Diz se o evento anuncia a primeira aparição do processo na fonte.
74
95
  *
75
- * Importa porque a assinatura criada ANTES de o processo entrar no acervo
76
- * nasce sem vínculo com a linha canônica, e o leque de
77
- * `PROCESS_MOVEMENT_CREATED` escolhe assinantes por esse vínculo: até a
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 alvo que acabou de aparecer na fonte.
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
- * Quem são os interessados é do consumidor — o evento não os carrega —, então
90
- * eles entram por parâmetro. Sem `tribunalAlias` no payload, nada é refeito: a
91
- * assinatura é por (fonte, tribunal, processo).
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 [];