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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/admin.d.ts +61 -0
  4. package/dist/admin.js +143 -0
  5. package/dist/admin.js.map +1 -0
  6. package/dist/config.d.ts +74 -0
  7. package/dist/config.js +128 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/consumer-client.d.ts +155 -0
  10. package/dist/consumer-client.js +299 -0
  11. package/dist/consumer-client.js.map +1 -0
  12. package/dist/consumer.d.ts +156 -0
  13. package/dist/consumer.js +1228 -0
  14. package/dist/consumer.js.map +1 -0
  15. package/dist/contracts/index.d.ts +16 -0
  16. package/dist/contracts/index.js +42 -0
  17. package/dist/contracts/index.js.map +1 -0
  18. package/dist/contracts/schemas.d.ts +570 -0
  19. package/dist/contracts/schemas.js +902 -0
  20. package/dist/contracts/schemas.js.map +1 -0
  21. package/dist/contracts/usuarios.d.ts +163 -0
  22. package/dist/contracts/usuarios.js +5 -0
  23. package/dist/contracts/usuarios.js.map +1 -0
  24. package/dist/dedup.d.ts +29 -0
  25. package/dist/dedup.js +65 -0
  26. package/dist/dedup.js.map +1 -0
  27. package/dist/dlq.d.ts +161 -0
  28. package/dist/dlq.js +341 -0
  29. package/dist/dlq.js.map +1 -0
  30. package/dist/errors.d.ts +72 -0
  31. package/dist/errors.js +95 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/headers.d.ts +92 -0
  34. package/dist/headers.js +144 -0
  35. package/dist/headers.js.map +1 -0
  36. package/dist/index.d.ts +30 -0
  37. package/dist/index.js +32 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/integrations/redis.d.ts +118 -0
  40. package/dist/integrations/redis.js +272 -0
  41. package/dist/integrations/redis.js.map +1 -0
  42. package/dist/integrations/runtime.d.ts +232 -0
  43. package/dist/integrations/runtime.js +554 -0
  44. package/dist/integrations/runtime.js.map +1 -0
  45. package/dist/logger.d.ts +37 -0
  46. package/dist/logger.js +49 -0
  47. package/dist/logger.js.map +1 -0
  48. package/dist/messaging.d.ts +145 -0
  49. package/dist/messaging.js +164 -0
  50. package/dist/messaging.js.map +1 -0
  51. package/dist/naming.d.ts +64 -0
  52. package/dist/naming.js +167 -0
  53. package/dist/naming.js.map +1 -0
  54. package/dist/payload.d.ts +8 -0
  55. package/dist/payload.js +32 -0
  56. package/dist/payload.js.map +1 -0
  57. package/dist/publisher.d.ts +50 -0
  58. package/dist/publisher.js +199 -0
  59. package/dist/publisher.js.map +1 -0
  60. package/dist/retry.d.ts +24 -0
  61. package/dist/retry.js +42 -0
  62. package/dist/retry.js.map +1 -0
  63. package/dist/schema.d.ts +83 -0
  64. package/dist/schema.js +676 -0
  65. package/dist/schema.js.map +1 -0
  66. package/dist/telemetry.d.ts +52 -0
  67. package/dist/telemetry.js +221 -0
  68. package/dist/telemetry.js.map +1 -0
  69. package/dist/transport.d.ts +130 -0
  70. package/dist/transport.js +283 -0
  71. package/dist/transport.js.map +1 -0
  72. package/dist/types.d.ts +148 -0
  73. package/dist/types.js +35 -0
  74. package/dist/types.js.map +1 -0
  75. package/dist/util.d.ts +38 -0
  76. package/dist/util.js +112 -0
  77. package/dist/util.js.map +1 -0
  78. package/dist/w3c.d.ts +16 -0
  79. package/dist/w3c.js +119 -0
  80. package/dist/w3c.js.map +1 -0
  81. package/package.json +74 -1
package/dist/w3c.js ADDED
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Minimal W3C Trace Context (`traceparent`/`tracestate`) + W3C Baggage propagator, built only
3
+ * on `@opentelemetry/api`.
4
+ *
5
+ * Python's OpenTelemetry API defaults the global propagator to `tracecontext,baggage`; the JS
6
+ * API defaults to a no-op propagator until an SDK registers one. `OtelTelemetry` falls back to
7
+ * this propagator while the global one is the no-op, so a Node service propagates trace context
8
+ * exactly like a Python one even when the application only set a tracer provider.
9
+ */
10
+ import { createTraceState, isSpanContextValid, isValidSpanId, isValidTraceId, propagation, trace, } from '@opentelemetry/api';
11
+ const TRACEPARENT = 'traceparent';
12
+ const TRACESTATE = 'tracestate';
13
+ const BAGGAGE = 'baggage';
14
+ const TRACEPARENT_RE = /^([\da-f]{2})-([\da-f]{32})-([\da-f]{16})-([\da-f]{2})(-.*)?$/;
15
+ const MAX_BAGGAGE_LENGTH = 8192;
16
+ const MAX_BAGGAGE_ENTRIES = 180;
17
+ function first(value) {
18
+ return Array.isArray(value) ? value[0] : value;
19
+ }
20
+ function parseTraceparent(header) {
21
+ const match = TRACEPARENT_RE.exec(header.trim());
22
+ if (match === null)
23
+ return null;
24
+ const [, version, traceId, spanId, flags, rest] = match;
25
+ if (version === undefined || traceId === undefined || spanId === undefined || flags === undefined)
26
+ return null;
27
+ if (version === 'ff' || (version === '00' && rest !== undefined))
28
+ return null;
29
+ if (!isValidTraceId(traceId) || !isValidSpanId(spanId))
30
+ return null;
31
+ return { traceId, spanId, traceFlags: Number.parseInt(flags, 16) };
32
+ }
33
+ function encodeBaggage(context) {
34
+ const baggage = propagation.getBaggage(context);
35
+ if (baggage === undefined)
36
+ return undefined;
37
+ const parts = [];
38
+ let length = 0;
39
+ for (const [key, entry] of baggage.getAllEntries()) {
40
+ if (parts.length >= MAX_BAGGAGE_ENTRIES)
41
+ break;
42
+ let part = `${encodeURIComponent(key)}=${encodeURIComponent(entry.value)}`;
43
+ if (entry.metadata !== undefined)
44
+ part += `;${entry.metadata.toString()}`;
45
+ if (length + part.length + (parts.length > 0 ? 1 : 0) > MAX_BAGGAGE_LENGTH)
46
+ break;
47
+ length += part.length + (parts.length > 0 ? 1 : 0);
48
+ parts.push(part);
49
+ }
50
+ return parts.length > 0 ? parts.join(',') : undefined;
51
+ }
52
+ function decodeComponent(value) {
53
+ try {
54
+ return decodeURIComponent(value.trim());
55
+ }
56
+ catch {
57
+ return undefined;
58
+ }
59
+ }
60
+ function extractBaggage(context, header) {
61
+ const entries = {};
62
+ let count = 0;
63
+ for (const item of header.split(',')) {
64
+ const [pair] = item.split(';');
65
+ if (pair === undefined)
66
+ continue;
67
+ const separator = pair.indexOf('=');
68
+ if (separator <= 0)
69
+ continue;
70
+ const key = decodeComponent(pair.slice(0, separator));
71
+ const value = decodeComponent(pair.slice(separator + 1));
72
+ if (key === undefined || value === undefined || key === '')
73
+ continue;
74
+ entries[key] = { value };
75
+ count += 1;
76
+ if (count >= MAX_BAGGAGE_ENTRIES)
77
+ break;
78
+ }
79
+ if (count === 0)
80
+ return context;
81
+ return propagation.setBaggage(context, propagation.createBaggage(entries));
82
+ }
83
+ /** W3C `traceparent`, `tracestate` and `baggage`. */
84
+ export class W3CPropagator {
85
+ inject(context, carrier, setter) {
86
+ const spanContext = trace.getSpanContext(context);
87
+ if (spanContext !== undefined && isSpanContextValid(spanContext)) {
88
+ const flags = (spanContext.traceFlags & 0xff).toString(16).padStart(2, '0');
89
+ setter.set(carrier, TRACEPARENT, `00-${spanContext.traceId}-${spanContext.spanId}-${flags}`);
90
+ const state = spanContext.traceState?.serialize();
91
+ if (state)
92
+ setter.set(carrier, TRACESTATE, state);
93
+ }
94
+ const baggage = encodeBaggage(context);
95
+ if (baggage !== undefined)
96
+ setter.set(carrier, BAGGAGE, baggage);
97
+ }
98
+ extract(context, carrier, getter) {
99
+ let result = context;
100
+ const traceparent = first(getter.get(carrier, TRACEPARENT));
101
+ const parsed = traceparent === undefined ? null : parseTraceparent(traceparent);
102
+ if (parsed !== null) {
103
+ const tracestate = first(getter.get(carrier, TRACESTATE));
104
+ result = trace.setSpanContext(result, {
105
+ ...parsed,
106
+ isRemote: true,
107
+ ...(tracestate ? { traceState: createTraceState(tracestate) } : {}),
108
+ });
109
+ }
110
+ const baggage = first(getter.get(carrier, BAGGAGE));
111
+ if (baggage)
112
+ result = extractBaggage(result, baggage);
113
+ return result;
114
+ }
115
+ fields() {
116
+ return [TRACEPARENT, TRACESTATE, BAGGAGE];
117
+ }
118
+ }
119
+ //# sourceMappingURL=w3c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"w3c.js","sourceRoot":"","sources":["../src/w3c.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1,74 @@
1
- {"name": "youeduc-sdk-messaging", "version": "0.0.0", "description": "Reserva de nome: use a versão mais recente.", "license": "MIT"}
1
+ {
2
+ "name": "youeduc-sdk-messaging",
3
+ "version": "0.5.0",
4
+ "description": "SDK de mensageria assíncrona orientada a eventos sobre Apache Kafka (@confluentinc/kafka-javascript)",
5
+ "keywords": [
6
+ "kafka",
7
+ "librdkafka",
8
+ "messaging",
9
+ "events",
10
+ "typescript",
11
+ "json-schema",
12
+ "retry",
13
+ "dlq"
14
+ ],
15
+ "author": "YouEduc",
16
+ "license": "MIT",
17
+ "private": false,
18
+ "type": "module",
19
+ "engines": {
20
+ "node": ">=22"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./redis": {
32
+ "types": "./dist/integrations/redis.d.ts",
33
+ "import": "./dist/integrations/redis.js",
34
+ "default": "./dist/integrations/redis.js"
35
+ }
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "scripts": {
43
+ "build": "tsc -p tsconfig.build.json",
44
+ "typecheck": "tsc -p tsconfig.json --noEmit",
45
+ "lint": "biome check .",
46
+ "format": "biome format --write .",
47
+ "test": "vitest run --project unit",
48
+ "test:integration": "vitest run --project integration"
49
+ },
50
+ "dependencies": {
51
+ "@confluentinc/kafka-javascript": "1.10.1",
52
+ "@opentelemetry/api": "1.9.1",
53
+ "ajv": "8.20.0",
54
+ "ajv-formats": "3.0.1",
55
+ "pino": "10.3.1"
56
+ },
57
+ "devDependencies": {
58
+ "@biomejs/biome": "2.5.14",
59
+ "@opentelemetry/sdk-metrics": "2.11.0",
60
+ "@opentelemetry/sdk-trace-base": "2.11.0",
61
+ "@types/node": "22.20.4",
62
+ "redis": "6.2.1",
63
+ "typescript": "7.0.2",
64
+ "vitest": "5.0.2"
65
+ },
66
+ "peerDependencies": {
67
+ "redis": "^6.0.0"
68
+ },
69
+ "peerDependenciesMeta": {
70
+ "redis": {
71
+ "optional": true
72
+ }
73
+ }
74
+ }