@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.
- package/README.md +436 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapters/ITransportAdapter.d.ts +9 -0
- package/dist/adapters/ITransportAdapter.d.ts.map +1 -0
- package/dist/adapters/ITransportAdapter.js +3 -0
- package/dist/adapters/ITransportAdapter.js.map +1 -0
- package/dist/adapters/event-hub/EventHubAdapter.d.ts +33 -0
- package/dist/adapters/event-hub/EventHubAdapter.d.ts.map +1 -0
- package/dist/adapters/event-hub/EventHubAdapter.js +65 -0
- package/dist/adapters/event-hub/EventHubAdapter.js.map +1 -0
- package/dist/adapters/kafka/KafkaAdapter.d.ts +21 -0
- package/dist/adapters/kafka/KafkaAdapter.d.ts.map +1 -0
- package/dist/adapters/kafka/KafkaAdapter.js +163 -0
- package/dist/adapters/kafka/KafkaAdapter.js.map +1 -0
- package/dist/adapters/kafka/index.d.ts +3 -0
- package/dist/adapters/kafka/index.d.ts.map +1 -0
- package/dist/adapters/kafka/index.js +24 -0
- package/dist/adapters/kafka/index.js.map +1 -0
- package/dist/adapters/kafka/types.d.ts +29 -0
- package/dist/adapters/kafka/types.d.ts.map +1 -0
- package/dist/adapters/kafka/types.js +3 -0
- package/dist/adapters/kafka/types.js.map +1 -0
- package/dist/client/AnalyticsClient.d.ts +96 -0
- package/dist/client/AnalyticsClient.d.ts.map +1 -0
- package/dist/client/AnalyticsClient.js +489 -0
- package/dist/client/AnalyticsClient.js.map +1 -0
- package/dist/commands/PublishCommand.d.ts +22 -0
- package/dist/commands/PublishCommand.d.ts.map +1 -0
- package/dist/commands/PublishCommand.js +32 -0
- package/dist/commands/PublishCommand.js.map +1 -0
- package/dist/decorators/RetryDecorator.d.ts +11 -0
- package/dist/decorators/RetryDecorator.d.ts.map +1 -0
- package/dist/decorators/RetryDecorator.js +37 -0
- package/dist/decorators/RetryDecorator.js.map +1 -0
- package/dist/factories/AdapterFactory.d.ts +8 -0
- package/dist/factories/AdapterFactory.d.ts.map +1 -0
- package/dist/factories/AdapterFactory.js +25 -0
- package/dist/factories/AdapterFactory.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/observers/MetricsObserver.d.ts +11 -0
- package/dist/observers/MetricsObserver.d.ts.map +1 -0
- package/dist/observers/MetricsObserver.js +15 -0
- package/dist/observers/MetricsObserver.js.map +1 -0
- package/dist/publishers/BasePublisher.d.ts +15 -0
- package/dist/publishers/BasePublisher.d.ts.map +1 -0
- package/dist/publishers/BasePublisher.js +54 -0
- package/dist/publishers/BasePublisher.js.map +1 -0
- package/dist/publishers/ClientPublisher.d.ts +6 -0
- package/dist/publishers/ClientPublisher.d.ts.map +1 -0
- package/dist/publishers/ClientPublisher.js +27 -0
- package/dist/publishers/ClientPublisher.js.map +1 -0
- package/dist/publishers/EventPublisher.d.ts +6 -0
- package/dist/publishers/EventPublisher.d.ts.map +1 -0
- package/dist/publishers/EventPublisher.js +15 -0
- package/dist/publishers/EventPublisher.js.map +1 -0
- package/dist/publishers/SessionPublisher.d.ts +6 -0
- package/dist/publishers/SessionPublisher.d.ts.map +1 -0
- package/dist/publishers/SessionPublisher.js +15 -0
- package/dist/publishers/SessionPublisher.js.map +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/examples/eventhub.ts +188 -0
- package/examples/kafka.ts +189 -0
- package/package.json +68 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AdapterFactory = void 0;
|
|
7
|
+
const EventHubAdapter_1 = __importDefault(require("../adapters/event-hub/EventHubAdapter"));
|
|
8
|
+
const KafkaAdapter_1 = __importDefault(require("../adapters/kafka/KafkaAdapter"));
|
|
9
|
+
class AdapterFactory {
|
|
10
|
+
static async create(type, config) {
|
|
11
|
+
if (type === 'eventHub') {
|
|
12
|
+
return new EventHubAdapter_1.default(config);
|
|
13
|
+
}
|
|
14
|
+
else if (type === 'kafka') {
|
|
15
|
+
const kafkaAdapter = new KafkaAdapter_1.default(config);
|
|
16
|
+
await kafkaAdapter.init();
|
|
17
|
+
return kafkaAdapter;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new Error(`Unknown adapter type: ${type}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.AdapterFactory = AdapterFactory;
|
|
25
|
+
//# sourceMappingURL=AdapterFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterFactory.js","sourceRoot":"","sources":["../../src/factories/AdapterFactory.ts"],"names":[],"mappings":";;;;;;AAAA,4FAAiF;AAEjF,kFAA0D;AAG1D,MAAa,cAAc;IACzB,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAAiB,EACjB,MAA2C;QAE3C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,yBAAQ,CAAC,MAAwB,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,sBAAY,CAAC,MAA4B,CAAC,CAAC;YACpE,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AAfD,wCAeC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { AnalyticsClient } from './client/AnalyticsClient';
|
|
2
|
+
export { default as PublishCommand } from './commands/PublishCommand';
|
|
3
|
+
export { default as BasePublisher } from './publishers/BasePublisher';
|
|
4
|
+
export { default as SessionPublisher } from './publishers/SessionPublisher';
|
|
5
|
+
export { default as EventPublisher } from './publishers/EventPublisher';
|
|
6
|
+
export { default as ClientPublisher } from './publishers/ClientPublisher';
|
|
7
|
+
export { default as RetryDecorator } from './decorators/RetryDecorator';
|
|
8
|
+
export { AdapterFactory } from './factories/AdapterFactory';
|
|
9
|
+
export { default as MetricsObserver, IAnalyticsObserver } from './observers/MetricsObserver';
|
|
10
|
+
export { default as ITransportAdapter } from './adapters/ITransportAdapter';
|
|
11
|
+
export { default as KafkaAdapter } from './adapters/kafka/KafkaAdapter';
|
|
12
|
+
export type { KafkaConfig, SaslMechanism, KafkaCredentials } from './adapters/kafka';
|
|
13
|
+
export { default as EventHub } from './adapters/event-hub/EventHubAdapter';
|
|
14
|
+
export type { ICommand } from './commands/PublishCommand';
|
|
15
|
+
export type { Event, Session, Client, AdapterType } from './types';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EventHub = exports.KafkaAdapter = exports.MetricsObserver = exports.AdapterFactory = exports.RetryDecorator = exports.ClientPublisher = exports.EventPublisher = exports.SessionPublisher = exports.BasePublisher = exports.PublishCommand = exports.AnalyticsClient = void 0;
|
|
7
|
+
var AnalyticsClient_1 = require("./client/AnalyticsClient");
|
|
8
|
+
Object.defineProperty(exports, "AnalyticsClient", { enumerable: true, get: function () { return AnalyticsClient_1.AnalyticsClient; } });
|
|
9
|
+
var PublishCommand_1 = require("./commands/PublishCommand");
|
|
10
|
+
Object.defineProperty(exports, "PublishCommand", { enumerable: true, get: function () { return __importDefault(PublishCommand_1).default; } });
|
|
11
|
+
var BasePublisher_1 = require("./publishers/BasePublisher");
|
|
12
|
+
Object.defineProperty(exports, "BasePublisher", { enumerable: true, get: function () { return __importDefault(BasePublisher_1).default; } });
|
|
13
|
+
var SessionPublisher_1 = require("./publishers/SessionPublisher");
|
|
14
|
+
Object.defineProperty(exports, "SessionPublisher", { enumerable: true, get: function () { return __importDefault(SessionPublisher_1).default; } });
|
|
15
|
+
var EventPublisher_1 = require("./publishers/EventPublisher");
|
|
16
|
+
Object.defineProperty(exports, "EventPublisher", { enumerable: true, get: function () { return __importDefault(EventPublisher_1).default; } });
|
|
17
|
+
var ClientPublisher_1 = require("./publishers/ClientPublisher");
|
|
18
|
+
Object.defineProperty(exports, "ClientPublisher", { enumerable: true, get: function () { return __importDefault(ClientPublisher_1).default; } });
|
|
19
|
+
var RetryDecorator_1 = require("./decorators/RetryDecorator");
|
|
20
|
+
Object.defineProperty(exports, "RetryDecorator", { enumerable: true, get: function () { return __importDefault(RetryDecorator_1).default; } });
|
|
21
|
+
var AdapterFactory_1 = require("./factories/AdapterFactory");
|
|
22
|
+
Object.defineProperty(exports, "AdapterFactory", { enumerable: true, get: function () { return AdapterFactory_1.AdapterFactory; } });
|
|
23
|
+
var MetricsObserver_1 = require("./observers/MetricsObserver");
|
|
24
|
+
Object.defineProperty(exports, "MetricsObserver", { enumerable: true, get: function () { return __importDefault(MetricsObserver_1).default; } });
|
|
25
|
+
var KafkaAdapter_1 = require("./adapters/kafka/KafkaAdapter");
|
|
26
|
+
Object.defineProperty(exports, "KafkaAdapter", { enumerable: true, get: function () { return __importDefault(KafkaAdapter_1).default; } });
|
|
27
|
+
var EventHubAdapter_1 = require("./adapters/event-hub/EventHubAdapter");
|
|
28
|
+
Object.defineProperty(exports, "EventHub", { enumerable: true, get: function () { return __importDefault(EventHubAdapter_1).default; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA2D;AAAlD,kHAAA,eAAe,OAAA;AACxB,4DAAsE;AAA7D,iIAAA,OAAO,OAAkB;AAClC,4DAAsE;AAA7D,+HAAA,OAAO,OAAiB;AACjC,kEAA4E;AAAnE,qIAAA,OAAO,OAAoB;AACpC,8DAAwE;AAA/D,iIAAA,OAAO,OAAkB;AAClC,gEAA0E;AAAjE,mIAAA,OAAO,OAAmB;AACnC,8DAAwE;AAA/D,iIAAA,OAAO,OAAkB;AAClC,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,+DAA6F;AAApF,mIAAA,OAAO,OAAmB;AAEnC,8DAAwE;AAA/D,6HAAA,OAAO,OAAgB;AAEhC,wEAA2E;AAAlE,4HAAA,OAAO,OAAY"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface IAnalyticsObserver {
|
|
2
|
+
onPublishSuccess(topic: string, messageCount: number): void;
|
|
3
|
+
onPublishError(topic: string, error: Error): void;
|
|
4
|
+
onBatchFull(batchSize: number): void;
|
|
5
|
+
}
|
|
6
|
+
export default class MetricsObserver implements IAnalyticsObserver {
|
|
7
|
+
onPublishSuccess(topic: string, messageCount: number): void;
|
|
8
|
+
onPublishError(topic: string, error: Error): void;
|
|
9
|
+
onBatchFull(batchSize: number): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=MetricsObserver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsObserver.d.ts","sourceRoot":"","sources":["../../src/observers/MetricsObserver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAClD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,kBAAkB;IAChE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGrC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class MetricsObserver {
|
|
4
|
+
onPublishSuccess(topic, messageCount) {
|
|
5
|
+
console.log(`Published ${messageCount} messages to ${topic}`);
|
|
6
|
+
}
|
|
7
|
+
onPublishError(topic, error) {
|
|
8
|
+
console.error(`Failed to publish to ${topic}:`, error);
|
|
9
|
+
}
|
|
10
|
+
onBatchFull(batchSize) {
|
|
11
|
+
console.log(`Batch full with ${batchSize} messages, flushing...`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.default = MetricsObserver;
|
|
15
|
+
//# sourceMappingURL=MetricsObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsObserver.js","sourceRoot":"","sources":["../../src/observers/MetricsObserver.ts"],"names":[],"mappings":";;AAMA,MAAqB,eAAe;IAClC,gBAAgB,CAAC,KAAa,EAAE,YAAoB;QAClD,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,gBAAgB,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,KAAY;QACxC,OAAO,CAAC,KAAK,CAAC,wBAAwB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,wBAAwB,CAAC,CAAC;IACpE,CAAC;CACF;AAZD,kCAYC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import ITransportAdapter from '../adapters/ITransportAdapter';
|
|
2
|
+
import { IAnalyticsObserver } from '../observers/MetricsObserver';
|
|
3
|
+
import { AnalyticsData } from '../types';
|
|
4
|
+
export default abstract class BasePublisher {
|
|
5
|
+
protected adapter: ITransportAdapter;
|
|
6
|
+
protected observers: IAnalyticsObserver[];
|
|
7
|
+
constructor(adapter: ITransportAdapter);
|
|
8
|
+
addObserver(observer: IAnalyticsObserver): void;
|
|
9
|
+
publish(topic: string, key: string, message: AnalyticsData): Promise<void>;
|
|
10
|
+
protected beforePublish(message: AnalyticsData): Promise<void>;
|
|
11
|
+
protected afterPublish(_message: AnalyticsData): Promise<void>;
|
|
12
|
+
protected onPublishError(topic: string, _error: Error): Promise<void>;
|
|
13
|
+
protected abstract validateMessage(message: unknown): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=BasePublisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePublisher.d.ts","sourceRoot":"","sources":["../../src/publishers/BasePublisher.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IACzC,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACrC,SAAS,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAM;gBAEnC,OAAO,EAAE,iBAAiB;IAKtC,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAKzC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;cA8BhE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;cAOpD,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;cAKpD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAC3D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class BasePublisher {
|
|
4
|
+
constructor(adapter) {
|
|
5
|
+
this.observers = [];
|
|
6
|
+
this.adapter = adapter;
|
|
7
|
+
console.log('BasePublisher: Initialized with adapter:', adapter.constructor.name);
|
|
8
|
+
}
|
|
9
|
+
addObserver(observer) {
|
|
10
|
+
this.observers.push(observer);
|
|
11
|
+
console.log('BasePublisher: Observer added:', observer.constructor.name);
|
|
12
|
+
}
|
|
13
|
+
async publish(topic, key, message) {
|
|
14
|
+
console.log(`BasePublisher: Publishing message to topic "${topic}" with key "${key}"`);
|
|
15
|
+
console.log('BasePublisher: Message content:', message);
|
|
16
|
+
try {
|
|
17
|
+
console.log('BasePublisher: Running beforePublish hooks');
|
|
18
|
+
await this.beforePublish(message);
|
|
19
|
+
console.log('BasePublisher: Sending message through adapter');
|
|
20
|
+
await this.adapter.publish(topic, key, message);
|
|
21
|
+
console.log('BasePublisher: Running afterPublish hooks');
|
|
22
|
+
await this.afterPublish(message);
|
|
23
|
+
console.log(`BasePublisher: Message published successfully to topic "${topic}"`);
|
|
24
|
+
this.observers.forEach(obs => {
|
|
25
|
+
obs.onPublishSuccess(topic, 1);
|
|
26
|
+
console.log('BasePublisher: Notified observer of success:', obs.constructor.name);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(`BasePublisher: Error publishing message to topic "${topic}":`, error);
|
|
31
|
+
await this.onPublishError(topic, error);
|
|
32
|
+
this.observers.forEach(obs => {
|
|
33
|
+
obs.onPublishError(topic, error);
|
|
34
|
+
console.log('BasePublisher: Notified observer of error:', obs.constructor.name);
|
|
35
|
+
});
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async beforePublish(message) {
|
|
40
|
+
console.log('BasePublisher: Validating message');
|
|
41
|
+
this.validateMessage(message);
|
|
42
|
+
console.log('BasePublisher: Message validation complete');
|
|
43
|
+
}
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
45
|
+
async afterPublish(_message) {
|
|
46
|
+
// Can add logs here if needed
|
|
47
|
+
}
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
+
async onPublishError(topic, _error) {
|
|
50
|
+
console.log(`BasePublisher: Handling publish error for topic "${topic}"`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.default = BasePublisher;
|
|
54
|
+
//# sourceMappingURL=BasePublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePublisher.js","sourceRoot":"","sources":["../../src/publishers/BasePublisher.ts"],"names":[],"mappings":";;AAIA,MAA8B,aAAa;IAIzC,YAAY,OAA0B;QAF5B,cAAS,GAAyB,EAAE,CAAC;QAG7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,WAAW,CAAC,QAA4B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,GAAW,EAAE,OAAsB;QAC9D,OAAO,CAAC,GAAG,CAAC,+CAA+C,KAAK,eAAe,GAAG,GAAG,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,2DAA2D,KAAK,GAAG,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC3B,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qDAAqD,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;YACrF,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAc,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC3B,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAc,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,OAAsB;QAClD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,6DAA6D;IACnD,KAAK,CAAC,YAAY,CAAC,QAAuB;QAClD,8BAA8B;IAChC,CAAC;IAED,6DAA6D;IACnD,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,MAAa;QACzD,OAAO,CAAC,GAAG,CAAC,oDAAoD,KAAK,GAAG,CAAC,CAAC;IAC5E,CAAC;CAGF;AA7DD,gCA6DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientPublisher.d.ts","sourceRoot":"","sources":["../../src/publishers/ClientPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,aAAa;IACxD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAwBjD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BasePublisher_1 = __importDefault(require("./BasePublisher"));
|
|
7
|
+
class ClientPublisher extends BasePublisher_1.default {
|
|
8
|
+
validateMessage(message) {
|
|
9
|
+
if (!message.clientId || !message.tenantId || !message.captureId) {
|
|
10
|
+
throw new Error('Client message missing required fields: clientId, tenantId, or captureId');
|
|
11
|
+
}
|
|
12
|
+
if (!message.clientCreated || !message.clientIp || !message.clientUserAgent) {
|
|
13
|
+
throw new Error('Client message missing required client fields: clientCreated, clientIp, or clientUserAgent');
|
|
14
|
+
}
|
|
15
|
+
if (!message.dataResidency || !message.country) {
|
|
16
|
+
throw new Error('Client message missing required location fields: dataResidency or country');
|
|
17
|
+
}
|
|
18
|
+
if (typeof message.clientScreenWidth !== 'number' ||
|
|
19
|
+
typeof message.clientScreenHeight !== 'number' ||
|
|
20
|
+
typeof message.clientScreenColorDepth !== 'number' ||
|
|
21
|
+
typeof message.clientScreenPixelDepth !== 'number') {
|
|
22
|
+
throw new Error('Client message missing or invalid screen properties');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = ClientPublisher;
|
|
27
|
+
//# sourceMappingURL=ClientPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientPublisher.js","sourceRoot":"","sources":["../../src/publishers/ClientPublisher.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAE5C,MAAqB,eAAgB,SAAQ,uBAAa;IAC9C,eAAe,CAAC,OAAe;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QAED,IACE,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ;YAC7C,OAAO,OAAO,CAAC,kBAAkB,KAAK,QAAQ;YAC9C,OAAO,OAAO,CAAC,sBAAsB,KAAK,QAAQ;YAClD,OAAO,OAAO,CAAC,sBAAsB,KAAK,QAAQ,EAClD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF;AAzBD,kCAyBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventPublisher.d.ts","sourceRoot":"","sources":["../../src/publishers/EventPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,aAAa;IACvD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;CAKhD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BasePublisher_1 = __importDefault(require("./BasePublisher"));
|
|
7
|
+
class EventPublisher extends BasePublisher_1.default {
|
|
8
|
+
validateMessage(message) {
|
|
9
|
+
if (!message.captureId) {
|
|
10
|
+
throw new Error('Invalid message type: expected Event');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.default = EventPublisher;
|
|
15
|
+
//# sourceMappingURL=EventPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventPublisher.js","sourceRoot":"","sources":["../../src/publishers/EventPublisher.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAE5C,MAAqB,cAAe,SAAQ,uBAAa;IAC7C,eAAe,CAAC,OAAc;QACtC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF;AAND,iCAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionPublisher.d.ts","sourceRoot":"","sources":["../../src/publishers/SessionPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa;IACzD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAKlD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BasePublisher_1 = __importDefault(require("./BasePublisher"));
|
|
7
|
+
class SessionPublisher extends BasePublisher_1.default {
|
|
8
|
+
validateMessage(message) {
|
|
9
|
+
if (!message.sessionId || !message.tenantId) {
|
|
10
|
+
throw new Error('Session message missing required fields');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.default = SessionPublisher;
|
|
15
|
+
//# sourceMappingURL=SessionPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionPublisher.js","sourceRoot":"","sources":["../../src/publishers/SessionPublisher.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAE5C,MAAqB,gBAAiB,SAAQ,uBAAa;IAC/C,eAAe,CAAC,OAAgB;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAND,mCAMC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export interface Event {
|
|
2
|
+
captureId: string;
|
|
3
|
+
tenantId: string;
|
|
4
|
+
spaceId: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
clientId: string;
|
|
7
|
+
eventType: string;
|
|
8
|
+
eventTime: string | Date;
|
|
9
|
+
interaction: boolean;
|
|
10
|
+
ip: string;
|
|
11
|
+
dataResidency: string;
|
|
12
|
+
productId?: string;
|
|
13
|
+
categoryId?: string;
|
|
14
|
+
int1?: number;
|
|
15
|
+
int2?: number;
|
|
16
|
+
int3?: number;
|
|
17
|
+
int4?: number;
|
|
18
|
+
int5?: number;
|
|
19
|
+
str1?: string;
|
|
20
|
+
str2?: string;
|
|
21
|
+
str3?: string;
|
|
22
|
+
str4?: string;
|
|
23
|
+
str5?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Session {
|
|
26
|
+
tenantId: string;
|
|
27
|
+
sessionId: string;
|
|
28
|
+
sessionCreated: string | Date;
|
|
29
|
+
environment: string;
|
|
30
|
+
dataResidency: string;
|
|
31
|
+
country: string;
|
|
32
|
+
spaceId: string;
|
|
33
|
+
appId: string;
|
|
34
|
+
appVersion?: string;
|
|
35
|
+
installationVersion?: string;
|
|
36
|
+
installationId: string;
|
|
37
|
+
deviceId?: string;
|
|
38
|
+
clientId: string;
|
|
39
|
+
ip: string;
|
|
40
|
+
locationAccuracy: number;
|
|
41
|
+
latitude: number;
|
|
42
|
+
longitude: number;
|
|
43
|
+
captureId: string;
|
|
44
|
+
}
|
|
45
|
+
export interface Client {
|
|
46
|
+
captureId: string;
|
|
47
|
+
tenantId: string;
|
|
48
|
+
clientId: string;
|
|
49
|
+
clientCreated: string | Date;
|
|
50
|
+
clientIp: string;
|
|
51
|
+
clientUserAgent: string;
|
|
52
|
+
dataResidency: string;
|
|
53
|
+
country: string;
|
|
54
|
+
locationAccuracy: number;
|
|
55
|
+
latitude: number;
|
|
56
|
+
longitude: number;
|
|
57
|
+
clientScreenWidth: number;
|
|
58
|
+
clientScreenHeight: number;
|
|
59
|
+
clientScreenColorDepth: number;
|
|
60
|
+
clientScreenPixelDepth: number;
|
|
61
|
+
clientDeviceVendor: string;
|
|
62
|
+
clientDeviceModel: string;
|
|
63
|
+
clientDeviceType: string;
|
|
64
|
+
clientOsName: string;
|
|
65
|
+
clientOsVersion: string;
|
|
66
|
+
clientBrowserName: string;
|
|
67
|
+
clientBrowserVersion: string;
|
|
68
|
+
clientBrowserMajor: string;
|
|
69
|
+
clientBrowserEngine: string;
|
|
70
|
+
clientBrowserEngineVersion: string;
|
|
71
|
+
clientCpuArchitecture: string;
|
|
72
|
+
}
|
|
73
|
+
export type AnalyticsData = Event | Session | Client;
|
|
74
|
+
export declare enum Topic {
|
|
75
|
+
ANALYTICS_SESSION = "sessions",
|
|
76
|
+
ANALYTICS_EVENT = "events",
|
|
77
|
+
ANALYTICS_CLIENT = "clients"
|
|
78
|
+
}
|
|
79
|
+
export declare enum EventType {
|
|
80
|
+
ANALYTICS_SESSION = "sessions",
|
|
81
|
+
ANALYTICS_EVENT = "events",
|
|
82
|
+
ANALYTICS_CLIENT = "clients"
|
|
83
|
+
}
|
|
84
|
+
export type AdapterType = 'eventHub' | 'kafka';
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventType = exports.Topic = void 0;
|
|
4
|
+
var Topic;
|
|
5
|
+
(function (Topic) {
|
|
6
|
+
Topic["ANALYTICS_SESSION"] = "sessions";
|
|
7
|
+
Topic["ANALYTICS_EVENT"] = "events";
|
|
8
|
+
Topic["ANALYTICS_CLIENT"] = "clients";
|
|
9
|
+
})(Topic || (exports.Topic = Topic = {}));
|
|
10
|
+
var EventType;
|
|
11
|
+
(function (EventType) {
|
|
12
|
+
EventType["ANALYTICS_SESSION"] = "sessions";
|
|
13
|
+
EventType["ANALYTICS_EVENT"] = "events";
|
|
14
|
+
EventType["ANALYTICS_CLIENT"] = "clients";
|
|
15
|
+
})(EventType || (exports.EventType = EventType = {}));
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AA4EA,IAAY,KAIX;AAJD,WAAY,KAAK;IACf,uCAA8B,CAAA;IAC9B,mCAA0B,CAAA;IAC1B,qCAA4B,CAAA;AAC9B,CAAC,EAJW,KAAK,qBAAL,KAAK,QAIhB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,2CAA8B,CAAA;IAC9B,uCAA0B,CAAA;IAC1B,yCAA4B,CAAA;AAC9B,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventHub Usage Example
|
|
3
|
+
*
|
|
4
|
+
* This example demonstrates how to use the AnalyticsClient with EventHub adapter.
|
|
5
|
+
* Run this with: npm run example:eventhub
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { EventHubConfig } from '../src/adapters/event-hub/EventHubAdapter';
|
|
9
|
+
import { AnalyticsClient } from '../src/client/AnalyticsClient';
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
console.log('🚀 Starting EventHub Analytics Client Example...');
|
|
13
|
+
|
|
14
|
+
// EventHub adapter configuration
|
|
15
|
+
const eventHubAnalytics = new AnalyticsClient({
|
|
16
|
+
adapter: 'eventHub',
|
|
17
|
+
adapterConfig: {
|
|
18
|
+
dataResidency: {
|
|
19
|
+
EU: {
|
|
20
|
+
events:
|
|
21
|
+
'Endpoint=sb://example-eu-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-event;SharedAccessKey=FAKE_KEY_EU_EVENTS_1234567890abcdef;EntityPath=signals-event',
|
|
22
|
+
sessions:
|
|
23
|
+
'Endpoint=sb://example-eu-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-session;SharedAccessKey=FAKE_KEY_EU_SESSIONS_1234567890abcdef;EntityPath=signals-session',
|
|
24
|
+
clients:
|
|
25
|
+
'Endpoint=sb://example-eu-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-client;SharedAccessKey=FAKE_KEY_EU_CLIENTS_1234567890abcdef;EntityPath=signals-client',
|
|
26
|
+
},
|
|
27
|
+
US: {
|
|
28
|
+
events:
|
|
29
|
+
'Endpoint=sb://example-us-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-event;SharedAccessKey=FAKE_KEY_US_EVENTS_1234567890abcdef;EntityPath=signals-event',
|
|
30
|
+
sessions:
|
|
31
|
+
'Endpoint=sb://example-us-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-session;SharedAccessKey=FAKE_KEY_US_SESSIONS_1234567890abcdef;EntityPath=signals-session',
|
|
32
|
+
clients:
|
|
33
|
+
'Endpoint=sb://example-us-eventhub.servicebus.windows.net/;SharedAccessKeyName=signals-client;SharedAccessKey=FAKE_KEY_US_CLIENTS_1234567890abcdef;EntityPath=signals-client',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
} as EventHubConfig,
|
|
37
|
+
bufferSize: 50,
|
|
38
|
+
flushIntervalMs: 3000,
|
|
39
|
+
maxRetries: 3,
|
|
40
|
+
enableMetricsLogging: true,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
console.log('🔧 Initializing EventHub analytics client...');
|
|
45
|
+
await eventHubAnalytics.init();
|
|
46
|
+
console.log('✅ EventHub analytics client initialized');
|
|
47
|
+
|
|
48
|
+
console.log('☁️ Publishing sample events to EventHub...');
|
|
49
|
+
|
|
50
|
+
// Publish Event
|
|
51
|
+
await eventHubAnalytics.publishEvent({
|
|
52
|
+
captureId: 'capture-456',
|
|
53
|
+
tenantId: 'company-y',
|
|
54
|
+
spaceId: 'space-456',
|
|
55
|
+
sessionId: 'session_456',
|
|
56
|
+
clientId: 'client-789',
|
|
57
|
+
eventType: 'page_view',
|
|
58
|
+
eventTime: new Date().toDateString(),
|
|
59
|
+
interaction: false,
|
|
60
|
+
ip: '192.168.1.200',
|
|
61
|
+
dataResidency: 'EU',
|
|
62
|
+
str1: '/dashboard',
|
|
63
|
+
str2: 'user-portal',
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
console.log('✅ Event published to EventHub successfully');
|
|
67
|
+
|
|
68
|
+
// Publish Session
|
|
69
|
+
await eventHubAnalytics.publishSession({
|
|
70
|
+
sessionId: 'session_456',
|
|
71
|
+
tenantId: 'company-y',
|
|
72
|
+
sessionCreated: new Date().toISOString(),
|
|
73
|
+
environment: 'staging',
|
|
74
|
+
dataResidency: 'EU',
|
|
75
|
+
country: 'Germany',
|
|
76
|
+
spaceId: 'space-456',
|
|
77
|
+
appId: 'mobile-app',
|
|
78
|
+
appVersion: '2.0.0',
|
|
79
|
+
installationVersion: '2.0.0',
|
|
80
|
+
installationId: 'install-789',
|
|
81
|
+
deviceId: 'device-456',
|
|
82
|
+
clientId: 'client-789',
|
|
83
|
+
ip: '192.168.1.200',
|
|
84
|
+
locationAccuracy: 15,
|
|
85
|
+
latitude: 52.52,
|
|
86
|
+
longitude: 13.405,
|
|
87
|
+
captureId: 'capture-456',
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
console.log('✅ Session published to EventHub successfully');
|
|
91
|
+
|
|
92
|
+
// Publish Client
|
|
93
|
+
await eventHubAnalytics.publishClient({
|
|
94
|
+
clientId: 'client-789',
|
|
95
|
+
tenantId: 'company-y',
|
|
96
|
+
clientCreated: new Date().toISOString(),
|
|
97
|
+
clientUserAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
|
|
98
|
+
clientScreenWidth: 1920,
|
|
99
|
+
clientScreenHeight: 1080,
|
|
100
|
+
clientScreenColorDepth: 24,
|
|
101
|
+
clientScreenPixelDepth: 24,
|
|
102
|
+
clientIp: '192.168.1.200',
|
|
103
|
+
dataResidency: 'EU',
|
|
104
|
+
country: 'Germany',
|
|
105
|
+
latitude: 52.52,
|
|
106
|
+
longitude: 13.405,
|
|
107
|
+
locationAccuracy: 15,
|
|
108
|
+
captureId: 'capture-456',
|
|
109
|
+
clientDeviceVendor: 'Microsoft',
|
|
110
|
+
clientDeviceModel: 'Surface Pro',
|
|
111
|
+
clientDeviceType: 'tablet',
|
|
112
|
+
clientOsName: 'Windows',
|
|
113
|
+
clientOsVersion: '10.0',
|
|
114
|
+
clientBrowserName: 'Chrome',
|
|
115
|
+
clientBrowserVersion: '120.0.0.0',
|
|
116
|
+
clientBrowserMajor: '120',
|
|
117
|
+
clientBrowserEngine: 'Blink',
|
|
118
|
+
clientBrowserEngineVersion: '120.0.0.0',
|
|
119
|
+
clientCpuArchitecture: 'x64',
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
console.log('✅ Client published to EventHub successfully');
|
|
123
|
+
|
|
124
|
+
// Batch publishing example
|
|
125
|
+
const events = [
|
|
126
|
+
{
|
|
127
|
+
captureId: 'capture-456',
|
|
128
|
+
tenantId: 'company-y',
|
|
129
|
+
spaceId: 'space-456',
|
|
130
|
+
sessionId: 'session_456',
|
|
131
|
+
clientId: 'client-789',
|
|
132
|
+
eventType: 'page_view',
|
|
133
|
+
eventTime: new Date().toISOString(),
|
|
134
|
+
interaction: false,
|
|
135
|
+
ip: '192.168.1.200',
|
|
136
|
+
dataResidency: 'EU',
|
|
137
|
+
str1: '/products',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
captureId: 'capture-456',
|
|
141
|
+
tenantId: 'company-y',
|
|
142
|
+
spaceId: 'space-456',
|
|
143
|
+
sessionId: 'session_456',
|
|
144
|
+
clientId: 'client-789',
|
|
145
|
+
eventType: 'product_view',
|
|
146
|
+
eventTime: new Date().toISOString(),
|
|
147
|
+
interaction: true,
|
|
148
|
+
ip: '192.168.1.200',
|
|
149
|
+
dataResidency: 'EU',
|
|
150
|
+
productId: 'product-456',
|
|
151
|
+
str1: 'electronics',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
captureId: 'capture-456',
|
|
155
|
+
tenantId: 'company-y',
|
|
156
|
+
spaceId: 'space-456',
|
|
157
|
+
sessionId: 'session_456',
|
|
158
|
+
clientId: 'client-789',
|
|
159
|
+
eventType: 'add_to_cart',
|
|
160
|
+
eventTime: new Date().toISOString(),
|
|
161
|
+
interaction: true,
|
|
162
|
+
ip: '192.168.1.200',
|
|
163
|
+
dataResidency: 'EU',
|
|
164
|
+
productId: 'product-456',
|
|
165
|
+
int1: 2,
|
|
166
|
+
str1: 'electronics',
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
|
|
170
|
+
console.log('📦 Publishing batch events to EventHub...');
|
|
171
|
+
for (const event of events) {
|
|
172
|
+
await eventHubAnalytics.publishEvent(event);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
console.log('✅ Multiple events published to EventHub (batched)');
|
|
176
|
+
|
|
177
|
+
console.log('⏳ Waiting for batch flush...');
|
|
178
|
+
await new Promise(resolve => setTimeout(resolve, 4000));
|
|
179
|
+
} catch (error) {
|
|
180
|
+
console.error('❌ Error publishing analytics:', error);
|
|
181
|
+
} finally {
|
|
182
|
+
console.log('🔒 Closing EventHub analytics client...');
|
|
183
|
+
await eventHubAnalytics.close();
|
|
184
|
+
console.log('✅ EventHub analytics client closed');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
main().catch(console.error);
|