@phystack/analytics-publisher 4.3.40-dev

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 (69) hide show
  1. package/README.md +436 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/adapters/ITransportAdapter.d.ts +9 -0
  4. package/dist/adapters/ITransportAdapter.d.ts.map +1 -0
  5. package/dist/adapters/ITransportAdapter.js +3 -0
  6. package/dist/adapters/ITransportAdapter.js.map +1 -0
  7. package/dist/adapters/event-hub/EventHubAdapter.d.ts +33 -0
  8. package/dist/adapters/event-hub/EventHubAdapter.d.ts.map +1 -0
  9. package/dist/adapters/event-hub/EventHubAdapter.js +65 -0
  10. package/dist/adapters/event-hub/EventHubAdapter.js.map +1 -0
  11. package/dist/adapters/kafka/KafkaAdapter.d.ts +21 -0
  12. package/dist/adapters/kafka/KafkaAdapter.d.ts.map +1 -0
  13. package/dist/adapters/kafka/KafkaAdapter.js +163 -0
  14. package/dist/adapters/kafka/KafkaAdapter.js.map +1 -0
  15. package/dist/adapters/kafka/index.d.ts +3 -0
  16. package/dist/adapters/kafka/index.d.ts.map +1 -0
  17. package/dist/adapters/kafka/index.js +24 -0
  18. package/dist/adapters/kafka/index.js.map +1 -0
  19. package/dist/adapters/kafka/types.d.ts +29 -0
  20. package/dist/adapters/kafka/types.d.ts.map +1 -0
  21. package/dist/adapters/kafka/types.js +3 -0
  22. package/dist/adapters/kafka/types.js.map +1 -0
  23. package/dist/client/AnalyticsClient.d.ts +96 -0
  24. package/dist/client/AnalyticsClient.d.ts.map +1 -0
  25. package/dist/client/AnalyticsClient.js +489 -0
  26. package/dist/client/AnalyticsClient.js.map +1 -0
  27. package/dist/commands/PublishCommand.d.ts +22 -0
  28. package/dist/commands/PublishCommand.d.ts.map +1 -0
  29. package/dist/commands/PublishCommand.js +32 -0
  30. package/dist/commands/PublishCommand.js.map +1 -0
  31. package/dist/decorators/RetryDecorator.d.ts +11 -0
  32. package/dist/decorators/RetryDecorator.d.ts.map +1 -0
  33. package/dist/decorators/RetryDecorator.js +37 -0
  34. package/dist/decorators/RetryDecorator.js.map +1 -0
  35. package/dist/factories/AdapterFactory.d.ts +8 -0
  36. package/dist/factories/AdapterFactory.d.ts.map +1 -0
  37. package/dist/factories/AdapterFactory.js +25 -0
  38. package/dist/factories/AdapterFactory.js.map +1 -0
  39. package/dist/index.d.ts +16 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +29 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/observers/MetricsObserver.d.ts +11 -0
  44. package/dist/observers/MetricsObserver.d.ts.map +1 -0
  45. package/dist/observers/MetricsObserver.js +15 -0
  46. package/dist/observers/MetricsObserver.js.map +1 -0
  47. package/dist/publishers/BasePublisher.d.ts +15 -0
  48. package/dist/publishers/BasePublisher.d.ts.map +1 -0
  49. package/dist/publishers/BasePublisher.js +54 -0
  50. package/dist/publishers/BasePublisher.js.map +1 -0
  51. package/dist/publishers/ClientPublisher.d.ts +6 -0
  52. package/dist/publishers/ClientPublisher.d.ts.map +1 -0
  53. package/dist/publishers/ClientPublisher.js +27 -0
  54. package/dist/publishers/ClientPublisher.js.map +1 -0
  55. package/dist/publishers/EventPublisher.d.ts +6 -0
  56. package/dist/publishers/EventPublisher.d.ts.map +1 -0
  57. package/dist/publishers/EventPublisher.js +15 -0
  58. package/dist/publishers/EventPublisher.js.map +1 -0
  59. package/dist/publishers/SessionPublisher.d.ts +6 -0
  60. package/dist/publishers/SessionPublisher.d.ts.map +1 -0
  61. package/dist/publishers/SessionPublisher.js +15 -0
  62. package/dist/publishers/SessionPublisher.js.map +1 -0
  63. package/dist/types/index.d.ts +85 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +16 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/examples/eventhub.ts +188 -0
  68. package/examples/kafka.ts +189 -0
  69. package/package.json +68 -0
@@ -0,0 +1,21 @@
1
+ import { KafkaAdapterConfig } from './types';
2
+ import { IKafkaAdapter } from '../ITransportAdapter';
3
+ import { AnalyticsData } from '../../types';
4
+ declare class KafkaAdapter implements IKafkaAdapter {
5
+ private kafka;
6
+ private producer;
7
+ private config;
8
+ private connected;
9
+ constructor(config: KafkaAdapterConfig);
10
+ init(): Promise<void>;
11
+ publish(topic: string, key: string, message: AnalyticsData): Promise<void>;
12
+ close(): Promise<void>;
13
+ isConnected(): boolean;
14
+ private setupDisconnectHandlers;
15
+ healthCheck(): Promise<{
16
+ healthy: boolean;
17
+ details: Record<string, unknown>;
18
+ }>;
19
+ }
20
+ export default KafkaAdapter;
21
+ //# sourceMappingURL=KafkaAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KafkaAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/kafka/KafkaAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,cAAM,YAAa,YAAW,aAAa;IACzC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,kBAAkB;IAiChC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BrB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAsD1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,uBAAuB;IASzB,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CA+BrF;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const kafkajs_1 = require("kafkajs");
4
+ class KafkaAdapter {
5
+ constructor(config) {
6
+ this.connected = false;
7
+ this.config = config;
8
+ this.kafka = new kafkajs_1.Kafka({
9
+ clientId: this.config.clientId || 'analytics-client',
10
+ brokers: this.config.brokers,
11
+ connectionTimeout: this.config.connectionTimeout || 10000,
12
+ requestTimeout: this.config.requestTimeout || 30000,
13
+ ...(this.config.sasl && {
14
+ sasl: this.config.sasl,
15
+ }),
16
+ ...(this.config.ssl && { ssl: this.config.ssl }),
17
+ logLevel: kafkajs_1.logLevel.ERROR,
18
+ retry: this.config.retry || {
19
+ retries: 5,
20
+ initialRetryTime: 300,
21
+ maxRetryTime: 30000,
22
+ },
23
+ });
24
+ this.producer = this.kafka.producer({
25
+ allowAutoTopicCreation: true,
26
+ transactionTimeout: 30000,
27
+ idempotent: true,
28
+ maxInFlightRequests: 5,
29
+ retry: this.config.retry || {
30
+ retries: 5,
31
+ initialRetryTime: 300,
32
+ maxRetryTime: 30000,
33
+ },
34
+ });
35
+ }
36
+ async init() {
37
+ try {
38
+ console.log('Initializing Kafka adapter...');
39
+ console.log('Connecting to Kafka...');
40
+ try {
41
+ await this.producer.connect();
42
+ this.connected = true;
43
+ console.log('✅ Connected to Kafka successfully');
44
+ }
45
+ catch (connectError) {
46
+ console.warn('⚠️ Failed to connect to Kafka:', connectError instanceof Error ? connectError.message : String(connectError));
47
+ console.log('🔄 Will retry connection when publishing messages');
48
+ this.connected = false;
49
+ }
50
+ this.setupDisconnectHandlers();
51
+ }
52
+ catch (error) {
53
+ this.connected = false;
54
+ console.error('❌ Failed to initialize Kafka adapter:', error);
55
+ throw new Error(`Kafka initialization failed: ${error}`);
56
+ }
57
+ }
58
+ async publish(topic, key, message) {
59
+ console.log('🚀 KafkaAdapter.publish called with:', {
60
+ topic,
61
+ key,
62
+ });
63
+ if (!this.connected) {
64
+ console.error('❌ Kafka adapter not connected!');
65
+ throw new Error('Kafka adapter not initialized. Call init() first.');
66
+ }
67
+ try {
68
+ console.log('🔄 Ensuring producer connection...');
69
+ await this.producer.connect();
70
+ console.log('✅ Producer connected');
71
+ }
72
+ catch (connectError) {
73
+ console.error('❌ Failed to connect producer:', connectError);
74
+ throw new Error(`Kafka connection failed: ${connectError instanceof Error ? connectError.message : String(connectError)}`);
75
+ }
76
+ try {
77
+ const value = typeof message === 'string' ? message : JSON.stringify(message);
78
+ const record = {
79
+ topic: topic,
80
+ messages: [
81
+ {
82
+ value,
83
+ timestamp: Date.now().toString(),
84
+ headers: {
85
+ 'content-type': 'application/json',
86
+ 'produced-at': new Date().toISOString(),
87
+ },
88
+ },
89
+ ],
90
+ acks: -1,
91
+ timeout: 30000,
92
+ };
93
+ const result = await this.producer.send(record);
94
+ console.log('Message published to Kafka:', {
95
+ topic,
96
+ partition: result[0]?.partition,
97
+ offset: result[0]?.baseOffset,
98
+ });
99
+ }
100
+ catch (error) {
101
+ console.error('Failed to publish message to Kafka:', error);
102
+ throw new Error(`Kafka publish failed: ${error}`);
103
+ }
104
+ }
105
+ async close() {
106
+ if (!this.connected) {
107
+ return;
108
+ }
109
+ try {
110
+ console.log('Closing Kafka adapter...');
111
+ await this.producer.disconnect();
112
+ this.connected = false;
113
+ console.log('✅ Kafka adapter closed');
114
+ }
115
+ catch (error) {
116
+ console.error('Error closing Kafka adapter:', error);
117
+ throw error;
118
+ }
119
+ }
120
+ isConnected() {
121
+ return this.connected;
122
+ }
123
+ setupDisconnectHandlers() {
124
+ this.producer.on('producer.disconnect', () => {
125
+ console.warn('⚠️ Kafka producer disconnected');
126
+ });
127
+ this.producer.on('producer.network.request_timeout', payload => {
128
+ console.error('Kafka request timeout:', payload);
129
+ });
130
+ }
131
+ async healthCheck() {
132
+ try {
133
+ if (!this.connected) {
134
+ return {
135
+ healthy: false,
136
+ details: { reason: 'Not connected' },
137
+ };
138
+ }
139
+ const admin = this.kafka.admin();
140
+ await admin.connect();
141
+ const cluster = await admin.describeCluster();
142
+ await admin.disconnect();
143
+ return {
144
+ healthy: true,
145
+ details: {
146
+ connected: this.connected,
147
+ brokers: cluster.brokers.length,
148
+ controller: cluster.controller,
149
+ },
150
+ };
151
+ }
152
+ catch (error) {
153
+ return {
154
+ healthy: false,
155
+ details: {
156
+ error: error instanceof Error ? error.message : 'Unknown error',
157
+ },
158
+ };
159
+ }
160
+ }
161
+ }
162
+ exports.default = KafkaAdapter;
163
+ //# sourceMappingURL=KafkaAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KafkaAdapter.js","sourceRoot":"","sources":["../../../src/adapters/kafka/KafkaAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default as KafkaAdapter } from './KafkaAdapter';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/kafka/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,SAAS,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.KafkaAdapter = void 0;
21
+ var KafkaAdapter_1 = require("./KafkaAdapter");
22
+ Object.defineProperty(exports, "KafkaAdapter", { enumerable: true, get: function () { return __importDefault(KafkaAdapter_1).default; } });
23
+ __exportStar(require("./types"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/kafka/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,0CAAwB"}
@@ -0,0 +1,29 @@
1
+ import { KafkaConfig as KafkaJSConfig, SASLOptions } from 'kafkajs';
2
+ export interface KafkaConfig extends Partial<KafkaJSConfig> {
3
+ brokers: string[];
4
+ clientId?: string;
5
+ connectionTimeout?: number;
6
+ requestTimeout?: number;
7
+ sasl?: SASLOptions;
8
+ ssl?: boolean | {
9
+ rejectUnauthorized?: boolean;
10
+ ca?: string[];
11
+ key?: string;
12
+ cert?: string;
13
+ };
14
+ retry?: {
15
+ retries?: number;
16
+ initialRetryTime?: number;
17
+ maxRetryTime?: number;
18
+ };
19
+ }
20
+ export type KafkaAdapterConfig = KafkaConfig;
21
+ export type SaslMechanism = 'plain' | 'scram-sha-256' | 'scram-sha-512' | 'aws' | 'oauthbearer';
22
+ export type KafkaCredentials = {
23
+ broker: string;
24
+ username: string;
25
+ password: string;
26
+ sasl_mechanism: SaslMechanism;
27
+ tls?: string;
28
+ };
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/kafka/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,aAAa,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,GAAG,CAAC,EACA,OAAO,GACP;QACE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACN,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,KAAK,GAAG,aAAa,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/kafka/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { ICommand } from '../commands/PublishCommand';
2
+ import { KafkaAdapterConfig } from '../adapters/kafka';
3
+ import { EventHubConfig } from '../adapters/event-hub/EventHubAdapter';
4
+ import { AdapterType, Client, Event, Session } from '../types';
5
+ interface AnalyticsConfig {
6
+ adapter: AdapterType;
7
+ adapterConfig: KafkaAdapterConfig | EventHubConfig;
8
+ bufferSize?: number;
9
+ flushIntervalMs?: number;
10
+ maxRetries?: number;
11
+ onPublishError?: (error: Error, command: ICommand) => void;
12
+ enableBackpressure?: boolean;
13
+ backpressureThreshold?: number;
14
+ backpressureDelayMs?: number;
15
+ maxBatchSize?: number;
16
+ parallelBatchLimit?: number;
17
+ commandTimeoutMs?: number;
18
+ enableMetricsLogging?: boolean;
19
+ metricsLogIntervalMs?: number;
20
+ autoInit?: boolean;
21
+ initRetries?: number;
22
+ initRetryDelayMs?: number;
23
+ }
24
+ declare enum ClientState {
25
+ INITIALIZING = "initializing",
26
+ READY = "ready",
27
+ DEGRADED = "degraded",
28
+ CLOSING = "closing",
29
+ CLOSED = "closed"
30
+ }
31
+ interface Metrics {
32
+ state: ClientState;
33
+ bufferSize: number;
34
+ maxBufferSize: number;
35
+ bufferUsagePercent: number;
36
+ consecutiveFailures: number;
37
+ lastSuccessfulFlush?: Date;
38
+ heapUsedMB: number;
39
+ activeBatchCount: number;
40
+ totalFlushes: number;
41
+ totalMessagesProcessed: number;
42
+ droppedMessages: number;
43
+ backpressureHits: number;
44
+ throughput: number;
45
+ avgFlushDurationMs: number;
46
+ successRate: number;
47
+ }
48
+ export declare class AnalyticsClient {
49
+ private adapter?;
50
+ private messageBuffer;
51
+ private flushTimer?;
52
+ private config;
53
+ private state;
54
+ private readonly MAX_BUFFER_SIZE;
55
+ private totalFlushes;
56
+ private totalMessagesProcessed;
57
+ private totalMessagesFailed;
58
+ private consecutiveFailures;
59
+ private readonly MAX_FAILURES_BEFORE_DEGRADED;
60
+ private lastSuccessfulFlush?;
61
+ private activeBatchCount;
62
+ private droppedMessages;
63
+ private backpressureHits;
64
+ private totalFlushDurationMs;
65
+ private lastMetricsLog;
66
+ private initTime;
67
+ private shutdownPromise?;
68
+ private initPromise?;
69
+ private initAttempts;
70
+ private isInitializing;
71
+ private convertToISOString;
72
+ private normalizeEvent;
73
+ private normalizeSession;
74
+ private normalizeClient;
75
+ constructor(config: AnalyticsConfig);
76
+ init(): Promise<void>;
77
+ private performInit;
78
+ publishSession(session: Session): Promise<void>;
79
+ publishEvent(event: Event): Promise<void>;
80
+ publishClient(client: Client): Promise<void>;
81
+ private publish;
82
+ flush(): Promise<void>;
83
+ private startFlushTimer;
84
+ private stopFlushTimer;
85
+ private logMetricsPeriodically;
86
+ close(): Promise<void>;
87
+ private performClose;
88
+ isHealthy(): boolean;
89
+ getState(): ClientState;
90
+ getMetrics(): Metrics;
91
+ private calculateThroughput;
92
+ forceFlush(): Promise<void>;
93
+ reconnect(): Promise<void>;
94
+ }
95
+ export {};
96
+ //# sourceMappingURL=AnalyticsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsClient.d.ts","sourceRoot":"","sources":["../../src/client/AnalyticsClient.ts"],"names":[],"mappings":"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"}