youeduc-sdk-messaging 0.0.0 → 0.5.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/LICENSE +21 -0
- package/README.md +218 -0
- package/dist/admin.d.ts +61 -0
- package/dist/admin.js +143 -0
- package/dist/admin.js.map +1 -0
- package/dist/config.d.ts +74 -0
- package/dist/config.js +128 -0
- package/dist/config.js.map +1 -0
- package/dist/consumer-client.d.ts +155 -0
- package/dist/consumer-client.js +299 -0
- package/dist/consumer-client.js.map +1 -0
- package/dist/consumer.d.ts +156 -0
- package/dist/consumer.js +1228 -0
- package/dist/consumer.js.map +1 -0
- package/dist/contracts/index.d.ts +16 -0
- package/dist/contracts/index.js +42 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/schemas.d.ts +570 -0
- package/dist/contracts/schemas.js +902 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/contracts/usuarios.d.ts +163 -0
- package/dist/contracts/usuarios.js +5 -0
- package/dist/contracts/usuarios.js.map +1 -0
- package/dist/dedup.d.ts +29 -0
- package/dist/dedup.js +65 -0
- package/dist/dedup.js.map +1 -0
- package/dist/dlq.d.ts +161 -0
- package/dist/dlq.js +341 -0
- package/dist/dlq.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.js +95 -0
- package/dist/errors.js.map +1 -0
- package/dist/headers.d.ts +92 -0
- package/dist/headers.js +144 -0
- package/dist/headers.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/redis.d.ts +118 -0
- package/dist/integrations/redis.js +272 -0
- package/dist/integrations/redis.js.map +1 -0
- package/dist/integrations/runtime.d.ts +232 -0
- package/dist/integrations/runtime.js +554 -0
- package/dist/integrations/runtime.js.map +1 -0
- package/dist/logger.d.ts +37 -0
- package/dist/logger.js +49 -0
- package/dist/logger.js.map +1 -0
- package/dist/messaging.d.ts +145 -0
- package/dist/messaging.js +164 -0
- package/dist/messaging.js.map +1 -0
- package/dist/naming.d.ts +64 -0
- package/dist/naming.js +167 -0
- package/dist/naming.js.map +1 -0
- package/dist/payload.d.ts +8 -0
- package/dist/payload.js +32 -0
- package/dist/payload.js.map +1 -0
- package/dist/publisher.d.ts +50 -0
- package/dist/publisher.js +199 -0
- package/dist/publisher.js.map +1 -0
- package/dist/retry.d.ts +24 -0
- package/dist/retry.js +42 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema.d.ts +83 -0
- package/dist/schema.js +676 -0
- package/dist/schema.js.map +1 -0
- package/dist/telemetry.d.ts +52 -0
- package/dist/telemetry.js +221 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/transport.d.ts +130 -0
- package/dist/transport.js +283 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +148 -0
- package/dist/types.js +35 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +38 -0
- package/dist/util.js +112 -0
- package/dist/util.js.map +1 -0
- package/dist/w3c.d.ts +16 -0
- package/dist/w3c.js +119 -0
- package/dist/w3c.js.map +1 -0
- package/package.json +74 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/contracts/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos dos payloads do domínio `usuarios` (`contracts/usuarios`).
|
|
3
|
+
*
|
|
4
|
+
* Validação completa (formatos, tamanhos, padrões) é feita pelo JSON Schema em runtime;
|
|
5
|
+
* estes tipos cobrem a forma do payload para checagem estática.
|
|
6
|
+
*/
|
|
7
|
+
export interface Usuario {
|
|
8
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
9
|
+
login: string;
|
|
10
|
+
/** Situação do cadastro. false após usuario.desativado; true após usuario.reativado. */
|
|
11
|
+
ativo: boolean;
|
|
12
|
+
/** Identificador único entre os sistemas (nem todo usuário tem). */
|
|
13
|
+
idunica: string | null;
|
|
14
|
+
/** CPF, 11 dígitos, sem máscara. */
|
|
15
|
+
cpf: string | null;
|
|
16
|
+
/** NIS/PIS, 11 dígitos, sem máscara. */
|
|
17
|
+
nis: string | null;
|
|
18
|
+
/** Nome social, quando houver; senão o nome civil. */
|
|
19
|
+
nome: string | null;
|
|
20
|
+
/** Nome civil (de registro); nunca o nome social. */
|
|
21
|
+
nome_civil: string | null;
|
|
22
|
+
/** AAAA-MM-DD. */
|
|
23
|
+
data_nascimento: string | null;
|
|
24
|
+
/** Gênero. */
|
|
25
|
+
genero: "MASCULINO" | "FEMININO" | "OUTROS" | null;
|
|
26
|
+
/** E-mail. */
|
|
27
|
+
email: string | null;
|
|
28
|
+
/** Só dígitos, com DDD (10 ou 11 dígitos). */
|
|
29
|
+
telefone: string | null;
|
|
30
|
+
/** Nome do pai. */
|
|
31
|
+
nome_pai: string | null;
|
|
32
|
+
/** Nome da mãe. */
|
|
33
|
+
nome_mae: string | null;
|
|
34
|
+
/** Nome do responsável legal. */
|
|
35
|
+
responsavel_legal_nome: string | null;
|
|
36
|
+
/** Tipo do responsável legal. */
|
|
37
|
+
responsavel_legal_tipo: "PAI" | "MAE" | "OUTROS" | null;
|
|
38
|
+
/** CEP, 8 dígitos, sem máscara. */
|
|
39
|
+
endereco_cep: string | null;
|
|
40
|
+
/** Sigla da UF. */
|
|
41
|
+
endereco_uf: "AC" | "AL" | "AP" | "AM" | "BA" | "CE" | "DF" | "ES" | "GO" | "MA" | "MT" | "MS" | "MG" | "PA" | "PB" | "PR" | "PE" | "PI" | "RJ" | "RN" | "RS" | "RO" | "RR" | "SC" | "SP" | "SE" | "TO" | null;
|
|
42
|
+
/** Cidade. */
|
|
43
|
+
endereco_cidade: string | null;
|
|
44
|
+
/** Bairro. */
|
|
45
|
+
endereco_bairro: string | null;
|
|
46
|
+
/** Tipo do logradouro (Rua, Avenida...). */
|
|
47
|
+
endereco_tipo_logradouro: string | null;
|
|
48
|
+
/** Logradouro. */
|
|
49
|
+
endereco_logradouro: string | null;
|
|
50
|
+
/** Número (texto: aceita 'S/N', '12A'). */
|
|
51
|
+
endereco_numero: string | null;
|
|
52
|
+
/** Raça/cor (dado sensível, LGPD art. 11). */
|
|
53
|
+
raca_cor: "BRANCA" | "PRETA" | "PARDA" | "AMARELA" | "INDIGENA" | null;
|
|
54
|
+
/** Beneficiário do Bolsa Família (dado sensível). */
|
|
55
|
+
bolsa_familia: boolean | null;
|
|
56
|
+
/** Tipo do usuário (um único tipo por usuário). */
|
|
57
|
+
tipo_usuario: "PROFESSOR" | "ALUNO" | "OPERACIONAL" | null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Payload de `usuario.atualizado` (v1).
|
|
61
|
+
*
|
|
62
|
+
* Cadastro alterado. Carrega o cadastro COMPLETO (snapshot) e a lista dos campos alterados.
|
|
63
|
+
*/
|
|
64
|
+
export interface UsuarioAtualizado {
|
|
65
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
66
|
+
versao: number;
|
|
67
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
68
|
+
ocorrido_em: string;
|
|
69
|
+
usuario: Usuario;
|
|
70
|
+
/** Atributos que mudaram nesta versão (informativo; o estado é o snapshot). */
|
|
71
|
+
campos_alterados: ("ativo" | "idunica" | "cpf" | "nis" | "nome" | "nome_civil" | "data_nascimento" | "genero" | "email" | "telefone" | "nome_pai" | "nome_mae" | "responsavel_legal_nome" | "responsavel_legal_tipo" | "endereco_cep" | "endereco_uf" | "endereco_cidade" | "endereco_bairro" | "endereco_tipo_logradouro" | "endereco_logradouro" | "endereco_numero" | "raca_cor" | "bolsa_familia" | "tipo_usuario")[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Payload de `usuario.criado` (v1).
|
|
75
|
+
*
|
|
76
|
+
* Usuário criado no sistema de origem. Carrega o cadastro completo.
|
|
77
|
+
*/
|
|
78
|
+
export interface UsuarioCriado {
|
|
79
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
80
|
+
versao: number;
|
|
81
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
82
|
+
ocorrido_em: string;
|
|
83
|
+
usuario: Usuario;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Payload de `usuario.desativado` (v1).
|
|
87
|
+
*
|
|
88
|
+
* Cadastro inativado (exclusão lógica). Os dados continuam existindo.
|
|
89
|
+
*/
|
|
90
|
+
export interface UsuarioDesativado {
|
|
91
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
92
|
+
versao: number;
|
|
93
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
94
|
+
ocorrido_em: string;
|
|
95
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
96
|
+
login: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Payload de `usuario.login-alterado` (v1).
|
|
100
|
+
*
|
|
101
|
+
* O login (YRN do usuário) mudou. Publicado com a chave do login ANTERIOR; eventos seguintes usam o novo.
|
|
102
|
+
*/
|
|
103
|
+
export interface UsuarioLoginAlterado {
|
|
104
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
105
|
+
versao: number;
|
|
106
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
107
|
+
ocorrido_em: string;
|
|
108
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
109
|
+
login_anterior: string;
|
|
110
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
111
|
+
login_novo: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Payload de `usuario.mesclado` (v1).
|
|
115
|
+
*
|
|
116
|
+
* Dois cadastros do mesmo usuário foram unificados: login_origem deixa de existir e passa a ser login_destino. Publicado com a chave de login_origem.
|
|
117
|
+
*/
|
|
118
|
+
export interface UsuarioMesclado {
|
|
119
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
120
|
+
versao: number;
|
|
121
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
122
|
+
ocorrido_em: string;
|
|
123
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
124
|
+
login_origem: string;
|
|
125
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
126
|
+
login_destino: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Payload de `usuario.reativado` (v1).
|
|
130
|
+
*
|
|
131
|
+
* Cadastro inativado voltou a ficar ativo.
|
|
132
|
+
*/
|
|
133
|
+
export interface UsuarioReativado {
|
|
134
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
135
|
+
versao: number;
|
|
136
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
137
|
+
ocorrido_em: string;
|
|
138
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
139
|
+
login: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Payload de `usuario.removido` (v1).
|
|
143
|
+
*
|
|
144
|
+
* Remoção definitiva do cadastro no sistema de origem.
|
|
145
|
+
*/
|
|
146
|
+
export interface UsuarioRemovido {
|
|
147
|
+
/** Contador monotônico por usuário (continua após login-alterado). O consumidor ignora eventos com versão menor ou igual à que já aplicou. */
|
|
148
|
+
versao: number;
|
|
149
|
+
/** Quando a mudança aconteceu no sistema de origem (RFC 3339, com fuso). */
|
|
150
|
+
ocorrido_em: string;
|
|
151
|
+
/** YRN do usuário: identificador estável e chave da mensagem no Kafka. Sem espaços; comparação exata (sensível a maiúsculas). */
|
|
152
|
+
login: string;
|
|
153
|
+
}
|
|
154
|
+
/** `event_type` → tipo do payload. */
|
|
155
|
+
export interface EventTypes {
|
|
156
|
+
"usuario.atualizado": UsuarioAtualizado;
|
|
157
|
+
"usuario.criado": UsuarioCriado;
|
|
158
|
+
"usuario.desativado": UsuarioDesativado;
|
|
159
|
+
"usuario.login-alterado": UsuarioLoginAlterado;
|
|
160
|
+
"usuario.mesclado": UsuarioMesclado;
|
|
161
|
+
"usuario.reativado": UsuarioReativado;
|
|
162
|
+
"usuario.removido": UsuarioRemovido;
|
|
163
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Gerado por scripts/gen_contracts.py a partir de contracts/ — não edite.
|
|
2
|
+
// biome-ignore-all format: arquivo gerado por scripts/gen_contracts.py
|
|
3
|
+
// biome-ignore-all lint: arquivo gerado por scripts/gen_contracts.py
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=usuarios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usuarios.js","sourceRoot":"","sources":["../../src/contracts/usuarios.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,qEAAqE"}
|
package/dist/dedup.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** In-memory deduplication (per process). */
|
|
2
|
+
import type { DuplicateChecker } from './types.js';
|
|
3
|
+
export interface InMemoryDuplicateCheckerOptions {
|
|
4
|
+
/** Maximum number of marked keys (the least recently marked are dropped). Default 100 000. */
|
|
5
|
+
maxEntries?: number;
|
|
6
|
+
/** Validity of a mark, in milliseconds. Default 86 400 000 (24 h). */
|
|
7
|
+
ttlMs?: number;
|
|
8
|
+
/** Clock in epoch milliseconds (spec §17). Default `Date.now`. */
|
|
9
|
+
clock?: () => number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* {@link DuplicateChecker} bounded in size and with TTL expiry.
|
|
13
|
+
*
|
|
14
|
+
* - Each `markProcessed` (re)sets the key validity to `now + ttlMs` and moves it to the end of
|
|
15
|
+
* the queue; `isProcessed` only queries (does not renew).
|
|
16
|
+
* - The TTL is constant, so the queue order is the expiry order: expired keys leave from the
|
|
17
|
+
* front in O(expired) (a wall clock stepping back only delays expiry).
|
|
18
|
+
* - Above `maxEntries` the least recently marked keys are dropped.
|
|
19
|
+
*
|
|
20
|
+
* Protects a single process only; for several workers use a shared checker.
|
|
21
|
+
*/
|
|
22
|
+
export declare class InMemoryDuplicateChecker implements DuplicateChecker {
|
|
23
|
+
#private;
|
|
24
|
+
constructor(options?: InMemoryDuplicateCheckerOptions);
|
|
25
|
+
/** Number of keys currently kept (including not yet purged expired ones). */
|
|
26
|
+
get size(): number;
|
|
27
|
+
isProcessed(key: string): Promise<boolean>;
|
|
28
|
+
markProcessed(key: string): Promise<void>;
|
|
29
|
+
}
|
package/dist/dedup.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** In-memory deduplication (per process). */
|
|
2
|
+
import { isPositiveFinite } from './util.js';
|
|
3
|
+
/**
|
|
4
|
+
* {@link DuplicateChecker} bounded in size and with TTL expiry.
|
|
5
|
+
*
|
|
6
|
+
* - Each `markProcessed` (re)sets the key validity to `now + ttlMs` and moves it to the end of
|
|
7
|
+
* the queue; `isProcessed` only queries (does not renew).
|
|
8
|
+
* - The TTL is constant, so the queue order is the expiry order: expired keys leave from the
|
|
9
|
+
* front in O(expired) (a wall clock stepping back only delays expiry).
|
|
10
|
+
* - Above `maxEntries` the least recently marked keys are dropped.
|
|
11
|
+
*
|
|
12
|
+
* Protects a single process only; for several workers use a shared checker.
|
|
13
|
+
*/
|
|
14
|
+
export class InMemoryDuplicateChecker {
|
|
15
|
+
#maxEntries;
|
|
16
|
+
#ttlMs;
|
|
17
|
+
#clock;
|
|
18
|
+
#expiresAt = new Map();
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
const maxEntries = options.maxEntries ?? 100_000;
|
|
21
|
+
const ttlMs = options.ttlMs ?? 86_400_000;
|
|
22
|
+
if (!Number.isInteger(maxEntries) || maxEntries <= 0) {
|
|
23
|
+
throw new RangeError(`'max_entries' must be > 0; got ${String(maxEntries)}`);
|
|
24
|
+
}
|
|
25
|
+
if (!isPositiveFinite(ttlMs))
|
|
26
|
+
throw new RangeError(`'ttl_ms' must be > 0; got ${String(ttlMs)}`);
|
|
27
|
+
this.#maxEntries = maxEntries;
|
|
28
|
+
this.#ttlMs = ttlMs;
|
|
29
|
+
this.#clock = options.clock ?? Date.now;
|
|
30
|
+
}
|
|
31
|
+
/** Number of keys currently kept (including not yet purged expired ones). */
|
|
32
|
+
get size() {
|
|
33
|
+
return this.#expiresAt.size;
|
|
34
|
+
}
|
|
35
|
+
async isProcessed(key) {
|
|
36
|
+
const expiresAt = this.#expiresAt.get(key);
|
|
37
|
+
if (expiresAt === undefined)
|
|
38
|
+
return false;
|
|
39
|
+
if (this.#clock() >= expiresAt) {
|
|
40
|
+
this.#expiresAt.delete(key);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
async markProcessed(key) {
|
|
46
|
+
const now = this.#clock();
|
|
47
|
+
this.#expiresAt.delete(key); // re-insert at the end (most recent)
|
|
48
|
+
this.#expiresAt.set(key, now + this.#ttlMs);
|
|
49
|
+
this.#purgeExpired(now);
|
|
50
|
+
while (this.#expiresAt.size > this.#maxEntries) {
|
|
51
|
+
const oldest = this.#expiresAt.keys().next();
|
|
52
|
+
if (oldest.done)
|
|
53
|
+
break;
|
|
54
|
+
this.#expiresAt.delete(oldest.value);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
#purgeExpired(now) {
|
|
58
|
+
for (const [key, expiresAt] of this.#expiresAt) {
|
|
59
|
+
if (expiresAt > now)
|
|
60
|
+
break;
|
|
61
|
+
this.#expiresAt.delete(key);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=dedup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dedup.js","sourceRoot":"","sources":["../src/dedup.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAW7C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAwB;IAC1B,WAAW,CAAS;IACpB,MAAM,CAAS;IACf,MAAM,CAAe;IACrB,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,YAAY,OAAO,GAAoC,EAAE;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,UAAU,CAAC,kCAAkC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAqC;QAClE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,SAAS,GAAG,GAAG;gBAAE,MAAM;YAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF"}
|
package/dist/dlq.d.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay of a consumer group's DLQ (spec §9; Python `dlq.py`).
|
|
3
|
+
*
|
|
4
|
+
* The message goes back through the group's **first current retry topic**, with the retry/DLQ
|
|
5
|
+
* state removed from the headers (`x-retry-count`, `x-retry-due-at`, `x-dlq-reason`,
|
|
6
|
+
* `x-last-error`, `x-last-error-type`). Without `x-retry-due-at` it is due immediately and the
|
|
7
|
+
* group's consumer processes it with `retryCount = 0`. Only that group receives it: the shared
|
|
8
|
+
* main topic is never touched.
|
|
9
|
+
*
|
|
10
|
+
* Deduplication does not get in the way: the consumer never marks a key on a DLQ outcome.
|
|
11
|
+
*
|
|
12
|
+
* With `resourcePrefix` (spec §2.7) the DLQ, the target and the reader's group id use the prefixed
|
|
13
|
+
* names (`hmg.enrollment.events.v1.learning-worker.dlq`, `hmg.learning-worker.dlq-replay`).
|
|
14
|
+
*
|
|
15
|
+
* Progress: the reader uses its own group id `{group}.dlq-replay` and commits `offset + 1` of each
|
|
16
|
+
* record **after** the send was acknowledged (synchronous commit: a failure propagates). A new run
|
|
17
|
+
* continues where the previous one stopped. The commit is a position: records skipped (outside
|
|
18
|
+
* `reasons`) before a replayed record stay behind in that group id.
|
|
19
|
+
*
|
|
20
|
+
* The end offsets are captured at the start: what comes back to the DLQ during the replay (a new
|
|
21
|
+
* failure) is not read again in the same run.
|
|
22
|
+
*/
|
|
23
|
+
import type { ClientConfig, KafkaConfig } from './config.js';
|
|
24
|
+
import { type TopicPartition, type TopicPartitionOffset } from './consumer-client.js';
|
|
25
|
+
import * as hdr from './headers.js';
|
|
26
|
+
import { type Logger } from './logger.js';
|
|
27
|
+
import * as naming from './naming.js';
|
|
28
|
+
import { RetryPolicy } from './retry.js';
|
|
29
|
+
import { type DlqReason } from './types.js';
|
|
30
|
+
/** A DLQ record as read by the replay. */
|
|
31
|
+
export interface ReplayRecord {
|
|
32
|
+
readonly topic: string;
|
|
33
|
+
readonly partition: number;
|
|
34
|
+
readonly offset: number;
|
|
35
|
+
readonly key: Buffer | null;
|
|
36
|
+
readonly value: Buffer | null;
|
|
37
|
+
readonly headers: hdr.RawHeaders;
|
|
38
|
+
}
|
|
39
|
+
/** What the replay needs from the DLQ reader (manually assigned, no subscription). */
|
|
40
|
+
export interface ReplayConsumerClient {
|
|
41
|
+
connect(): Promise<void>;
|
|
42
|
+
/** Manual assignment; each partition starts at the replay group's committed offset (else earliest). */
|
|
43
|
+
assign(partitions: TopicPartition[]): void;
|
|
44
|
+
/** Log end offset (next offset to be written) of each partition, in the given order. */
|
|
45
|
+
endOffsets(partitions: TopicPartition[]): Promise<number[]>;
|
|
46
|
+
/** Offset of the next record the reader will return for the partition. */
|
|
47
|
+
position(partition: TopicPartition): Promise<number>;
|
|
48
|
+
pause(partitions: TopicPartition[]): void;
|
|
49
|
+
/** Records of (only) the given partitions. */
|
|
50
|
+
poll(options: {
|
|
51
|
+
partitions: TopicPartition[];
|
|
52
|
+
timeoutMs: number;
|
|
53
|
+
}): Promise<ReplayRecord[]>;
|
|
54
|
+
/** Acknowledged commit of the next offsets. */
|
|
55
|
+
commit(offsets: TopicPartitionOffset[]): Promise<void>;
|
|
56
|
+
disconnect(): Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
/** What the replay needs from the producer. */
|
|
59
|
+
export interface ReplayProducerClient {
|
|
60
|
+
connect(): Promise<void>;
|
|
61
|
+
/** Partition ids of the topic (fails when the topic does not exist). */
|
|
62
|
+
partitionsFor(topic: string): Promise<number[]>;
|
|
63
|
+
/** Sends and waits for the broker ack (acks=all). */
|
|
64
|
+
send(topic: string, value: Buffer, options: {
|
|
65
|
+
key: Buffer | null;
|
|
66
|
+
headers: hdr.KafkaHeaders;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
disconnect(): Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
export type ReplayConsumerFactory = (config: ClientConfig) => ReplayConsumerClient | Promise<ReplayConsumerClient>;
|
|
71
|
+
export type ReplayProducerFactory = (config: ClientConfig) => ReplayProducerClient | Promise<ReplayProducerClient>;
|
|
72
|
+
export interface ReplayDlqOptions {
|
|
73
|
+
domain: string;
|
|
74
|
+
version: string;
|
|
75
|
+
group: string;
|
|
76
|
+
/** `null`/absent = every reason except `invalid_payload` (records without a reason included). */
|
|
77
|
+
reasons?: Iterable<DlqReason> | null | undefined;
|
|
78
|
+
/** The target is the first retry topic of this policy (must not be empty). Default `new RetryPolicy()`. */
|
|
79
|
+
retryPolicy?: RetryPolicy | undefined;
|
|
80
|
+
/** Only count (`wouldReplay`): nothing is sent nor committed. Default `true`. */
|
|
81
|
+
dryRun?: boolean | undefined;
|
|
82
|
+
/** Integer `>= 1`: limits `replayed + wouldReplay`. */
|
|
83
|
+
maxMessages?: number | null | undefined;
|
|
84
|
+
/** Resource prefix of the group (spec §2.7); must match the consumer's. Default: none. */
|
|
85
|
+
resourcePrefix?: string | null | undefined;
|
|
86
|
+
/** DLQ reader factory (tests inject fakes). Default {@link createConfluentReplayConsumer}. */
|
|
87
|
+
consumerFactory?: ReplayConsumerFactory | undefined;
|
|
88
|
+
/** Producer factory (tests inject fakes). Default {@link createConfluentReplayProducer}. */
|
|
89
|
+
producerFactory?: ReplayProducerFactory | undefined;
|
|
90
|
+
/** Default: the SDK default logger. */
|
|
91
|
+
logger?: Logger | undefined;
|
|
92
|
+
}
|
|
93
|
+
export interface ReplayReport {
|
|
94
|
+
readonly targetTopic: string;
|
|
95
|
+
readonly replayed: number;
|
|
96
|
+
readonly skipped: number;
|
|
97
|
+
readonly wouldReplay: number;
|
|
98
|
+
}
|
|
99
|
+
/** group.id of the replay reader: `{group}.dlq-replay` (with a prefix, `{prefix}.{group}.dlq-replay`). */
|
|
100
|
+
export declare function replayGroupId(group: string, options?: naming.ResourcePrefixOptions): string;
|
|
101
|
+
/** Headers of the replayed record: no retry/DLQ state, everything else preserved. */
|
|
102
|
+
export declare function replayHeaders(headers: Readonly<hdr.MessageHeaders>): hdr.MessageHeaders;
|
|
103
|
+
/**
|
|
104
|
+
* Resends DLQ messages of the group to its first retry topic.
|
|
105
|
+
*
|
|
106
|
+
* `dryRun: true` (default) only counts what would be resent: nothing is sent nor committed.
|
|
107
|
+
* `maxMessages` limits the resends (or `wouldReplay`) of this run. A send failure propagates;
|
|
108
|
+
* that record is not committed.
|
|
109
|
+
*/
|
|
110
|
+
export declare function replayDlq(config: KafkaConfig, options: ReplayDlqOptions): Promise<ReplayReport>;
|
|
111
|
+
export interface RawMessage {
|
|
112
|
+
topic: string;
|
|
113
|
+
partition: number;
|
|
114
|
+
offset: number;
|
|
115
|
+
key?: Buffer | string | null | undefined;
|
|
116
|
+
value: Buffer | null;
|
|
117
|
+
headers?: Array<Record<string, Buffer | string>> | undefined;
|
|
118
|
+
}
|
|
119
|
+
type Callback<T> = (error: unknown, value: T) => void;
|
|
120
|
+
/** Subset of the callback `KafkaConsumer` used by the replay reader. */
|
|
121
|
+
export interface RawReplayConsumer {
|
|
122
|
+
connect(metadataOptions: null, cb: (error?: unknown) => void): unknown;
|
|
123
|
+
disconnect(cb: (error?: unknown) => void): unknown;
|
|
124
|
+
isConnected(): boolean;
|
|
125
|
+
assign(partitions: TopicPartition[]): unknown;
|
|
126
|
+
pause(partitions: TopicPartition[]): unknown;
|
|
127
|
+
position(partitions: TopicPartition[]): Array<{
|
|
128
|
+
offset?: number;
|
|
129
|
+
}>;
|
|
130
|
+
committed(partitions: TopicPartition[], timeoutMs: number, cb: Callback<Array<{
|
|
131
|
+
offset?: number;
|
|
132
|
+
}>>): unknown;
|
|
133
|
+
queryWatermarkOffsets(topic: string, partition: number, timeoutMs: number, cb: Callback<{
|
|
134
|
+
lowOffset: number;
|
|
135
|
+
highOffset: number;
|
|
136
|
+
}>): unknown;
|
|
137
|
+
setDefaultConsumeTimeout(timeoutMs: number): void;
|
|
138
|
+
consume(count: number, cb: Callback<RawMessage[]>): void;
|
|
139
|
+
commitSync(offsets: TopicPartitionOffset[]): unknown;
|
|
140
|
+
}
|
|
141
|
+
/** DLQ reader over the callback `KafkaConsumer` (manual assignment, synchronous commits). */
|
|
142
|
+
export declare class ConfluentReplayConsumer implements ReplayConsumerClient {
|
|
143
|
+
#private;
|
|
144
|
+
constructor(raw: RawReplayConsumer);
|
|
145
|
+
connect(): Promise<void>;
|
|
146
|
+
assign(partitions: TopicPartition[]): void;
|
|
147
|
+
endOffsets(partitions: TopicPartition[]): Promise<number[]>;
|
|
148
|
+
position(partition: TopicPartition): Promise<number>;
|
|
149
|
+
pause(partitions: TopicPartition[]): void;
|
|
150
|
+
poll(options: {
|
|
151
|
+
partitions: TopicPartition[];
|
|
152
|
+
timeoutMs: number;
|
|
153
|
+
}): Promise<ReplayRecord[]>;
|
|
154
|
+
commit(offsets: TopicPartitionOffset[]): Promise<void>;
|
|
155
|
+
disconnect(): Promise<void>;
|
|
156
|
+
}
|
|
157
|
+
/** Default reader: the callback `KafkaConsumer` of `@confluentinc/kafka-javascript`. */
|
|
158
|
+
export declare const createConfluentReplayConsumer: ReplayConsumerFactory;
|
|
159
|
+
/** Default producer: idempotent KafkaJS producer (acks=all); partitions from its metadata. */
|
|
160
|
+
export declare const createConfluentReplayProducer: ReplayProducerFactory;
|
|
161
|
+
export {};
|