@uber-clone/common 1.0.7 → 1.0.9

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.
@@ -0,0 +1,37 @@
1
+ import { Subjects } from "./subjects";
2
+ export interface DriverCreatedEvent {
3
+ type: Subjects.DriverCreated;
4
+ data: {
5
+ id: string;
6
+ name: string;
7
+ email: string;
8
+ phone: string;
9
+ city: string;
10
+ vehicle: {
11
+ make: string;
12
+ model: string;
13
+ year: number;
14
+ plate: string;
15
+ };
16
+ userId: string;
17
+ version: number;
18
+ };
19
+ }
20
+ export interface DriverUpdatedEvent {
21
+ type: Subjects.DriverUpdated;
22
+ data: {
23
+ id: string;
24
+ name?: string;
25
+ email?: string;
26
+ phone?: string;
27
+ city?: string;
28
+ vehicle?: {
29
+ make: string;
30
+ model: string;
31
+ year: number;
32
+ plate: string;
33
+ };
34
+ userId: string;
35
+ version: number;
36
+ };
37
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -77,53 +77,54 @@ class KafkaClient {
77
77
  }
78
78
  ensureTopics() {
79
79
  return __awaiter(this, void 0, void 0, function* () {
80
+ const replicationFactor = parseInt(process.env.KAFKA_REPLICATION_FACTOR || "-1");
80
81
  const topics = [
81
82
  // User events
82
- { topic: subjects_1.Subjects.UserCreated, partitions: 3, replicationFactor: 3 },
83
- { topic: subjects_1.Subjects.UserUpdated, partitions: 3, replicationFactor: 3 },
84
- { topic: subjects_1.Subjects.UserDeleted, partitions: 3, replicationFactor: 3 },
83
+ { topic: subjects_1.Subjects.UserCreated, partitions: 3, replicationFactor },
84
+ { topic: subjects_1.Subjects.UserUpdated, partitions: 3, replicationFactor },
85
+ { topic: subjects_1.Subjects.UserDeleted, partitions: 3, replicationFactor },
85
86
  {
86
87
  topic: subjects_1.Subjects.UserProfileUpdated,
87
88
  partitions: 3,
88
- replicationFactor: 3,
89
+ replicationFactor,
89
90
  },
90
91
  // Auth events
91
- { topic: subjects_1.Subjects.UserSignedIn, partitions: 3, replicationFactor: 3 },
92
- { topic: subjects_1.Subjects.UserSignedOut, partitions: 3, replicationFactor: 3 },
92
+ { topic: subjects_1.Subjects.UserSignedIn, partitions: 3, replicationFactor },
93
+ { topic: subjects_1.Subjects.UserSignedOut, partitions: 3, replicationFactor },
93
94
  {
94
95
  topic: subjects_1.Subjects.UserPasswordChanged,
95
96
  partitions: 3,
96
- replicationFactor: 3,
97
+ replicationFactor,
97
98
  },
98
99
  {
99
100
  topic: subjects_1.Subjects.UserAccountLocked,
100
101
  partitions: 3,
101
- replicationFactor: 3,
102
+ replicationFactor,
102
103
  },
103
104
  // // Ride events
104
- // { topic: Subjects.RideRequested, partitions: 6, replicationFactor: 3 },
105
- // { topic: Subjects.RideAccepted, partitions: 6, replicationFactor: 3 },
106
- // { topic: Subjects.RideStarted, partitions: 6, replicationFactor: 3 },
107
- // { topic: Subjects.RideCompleted, partitions: 6, replicationFactor: 3 },
108
- // { topic: Subjects.RideCancelled, partitions: 6, replicationFactor: 3 },
105
+ { topic: subjects_1.Subjects.RideRequested, partitions: 6, replicationFactor },
106
+ { topic: subjects_1.Subjects.RideAccepted, partitions: 6, replicationFactor },
107
+ { topic: subjects_1.Subjects.RideStarted, partitions: 6, replicationFactor },
108
+ { topic: subjects_1.Subjects.RideCompleted, partitions: 6, replicationFactor },
109
+ { topic: subjects_1.Subjects.RideCancelled, partitions: 6, replicationFactor },
109
110
  // // Driver events
110
- // { topic: Subjects.DriverOnline, partitions: 6, replicationFactor: 3 },
111
- // { topic: Subjects.DriverOffline, partitions: 6, replicationFactor: 3 },
112
- // {
113
- // topic: Subjects.DriverLocationUpdated,
114
- // partitions: 12,
115
- // replicationFactor: 3,
116
- // },
117
- // {
118
- // topic: Subjects.DriverRideAccepted,
119
- // partitions: 6,
120
- // replicationFactor: 3,
121
- // },
122
- // {
123
- // topic: Subjects.DriverRideCompleted,
124
- // partitions: 6,
125
- // replicationFactor: 3,
126
- // },
111
+ { topic: subjects_1.Subjects.DriverOnline, partitions: 6, replicationFactor },
112
+ { topic: subjects_1.Subjects.DriverOffline, partitions: 6, replicationFactor },
113
+ {
114
+ topic: subjects_1.Subjects.DriverLocationUpdated,
115
+ partitions: 12,
116
+ replicationFactor,
117
+ },
118
+ {
119
+ topic: subjects_1.Subjects.DriverRideAccepted,
120
+ partitions: 6,
121
+ replicationFactor,
122
+ },
123
+ {
124
+ topic: subjects_1.Subjects.DriverRideCompleted,
125
+ partitions: 6,
126
+ replicationFactor,
127
+ },
127
128
  // // Payment events
128
129
  // { topic: Subjects.PaymentInitiated, partitions: 4, replicationFactor: 3 },
129
130
  // { topic: Subjects.PaymentCompleted, partitions: 4, replicationFactor: 3 },
@@ -0,0 +1,25 @@
1
+ import { Subjects } from "./subjects";
2
+ export interface PassengerCreatedEvent {
3
+ type: Subjects.PassengerCreated;
4
+ data: {
5
+ id: string;
6
+ name: string;
7
+ email: string;
8
+ phone: string;
9
+ paymentMethod: string;
10
+ userId: string;
11
+ version: number;
12
+ };
13
+ }
14
+ export interface PassengerUpdatedEvent {
15
+ type: Subjects.PassengerUpdated;
16
+ data: {
17
+ id: string;
18
+ name?: string;
19
+ email?: string;
20
+ phone?: string;
21
+ paymentMethod?: string;
22
+ userId: string;
23
+ version: number;
24
+ };
25
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -17,6 +17,10 @@ export declare enum Subjects {
17
17
  DriverLocationUpdated = "driver.location-updated",
18
18
  DriverRideAccepted = "driver.ride-accepted",
19
19
  DriverRideCompleted = "driver.ride-completed",
20
+ DriverCreated = "driver.created",
21
+ DriverUpdated = "driver.updated",
22
+ PassengerCreated = "passenger.created",
23
+ PassengerUpdated = "passenger.updated",
20
24
  PaymentInitiated = "payment.initiated",
21
25
  PaymentCompleted = "payment.completed",
22
26
  PaymentFailed = "payment.failed",
@@ -26,6 +26,10 @@ var Subjects;
26
26
  Subjects["DriverLocationUpdated"] = "driver.location-updated";
27
27
  Subjects["DriverRideAccepted"] = "driver.ride-accepted";
28
28
  Subjects["DriverRideCompleted"] = "driver.ride-completed";
29
+ Subjects["DriverCreated"] = "driver.created";
30
+ Subjects["DriverUpdated"] = "driver.updated";
31
+ Subjects["PassengerCreated"] = "passenger.created";
32
+ Subjects["PassengerUpdated"] = "passenger.updated";
29
33
  // Payment events
30
34
  Subjects["PaymentInitiated"] = "payment.initiated";
31
35
  Subjects["PaymentCompleted"] = "payment.completed";
package/build/index.d.ts CHANGED
@@ -11,6 +11,8 @@ export * from "./middlewares/validate-request";
11
11
  export * from "./events/kafka-client";
12
12
  export * from "./events/types";
13
13
  export * from "./events/subjects";
14
+ export * from "./events/driver-events";
15
+ export * from "./events/passenger-events";
14
16
  export * from "./metrics/app.metrics";
15
17
  export * from "./utils/logger";
16
18
  export * from "./redis/redis-client";
package/build/index.js CHANGED
@@ -27,6 +27,8 @@ __exportStar(require("./middlewares/validate-request"), exports);
27
27
  __exportStar(require("./events/kafka-client"), exports);
28
28
  __exportStar(require("./events/types"), exports);
29
29
  __exportStar(require("./events/subjects"), exports);
30
+ __exportStar(require("./events/driver-events"), exports);
31
+ __exportStar(require("./events/passenger-events"), exports);
30
32
  __exportStar(require("./metrics/app.metrics"), exports);
31
33
  __exportStar(require("./utils/logger"), exports);
32
34
  __exportStar(require("./redis/redis-client"), exports);
@@ -1,3 +1,6 @@
1
+ import { RedisClientType } from "redis";
2
+ import Redlock from "redlock";
3
+ import { Logger } from "../utils/logger";
1
4
  export interface GeoLocation {
2
5
  type?: "Point";
3
6
  coordinates: [number, number];
@@ -21,11 +24,13 @@ export interface RedisConfig {
21
24
  }
22
25
  export declare class RedisClient {
23
26
  private config;
24
- private redis;
25
- private redlock;
26
- private logger;
27
- private isConnected;
27
+ protected static instance: RedisClient;
28
+ protected redis: RedisClientType;
29
+ protected redlock: Redlock | null;
30
+ protected logger: Logger;
31
+ protected isConnected: boolean;
28
32
  constructor(config?: RedisConfig);
33
+ static getInstance(): RedisClient;
29
34
  private initializeRedlock;
30
35
  private setupEventListeners;
31
36
  connect(): Promise<void>;
@@ -21,8 +21,8 @@ class RedisClient {
21
21
  constructor(config = {}) {
22
22
  this.config = config;
23
23
  this.redlock = null;
24
- this.isConnected = false;
25
24
  this.logger = new logger_1.Logger("RedisClient");
25
+ this.isConnected = false;
26
26
  this.redis = (0, redis_1.createClient)({
27
27
  url: process.env.REDIS_URL || "redis://redis-cluster:6379",
28
28
  socket: {
@@ -32,13 +32,17 @@ class RedisClient {
32
32
  },
33
33
  connectTimeout: 10000,
34
34
  },
35
- // password: config.password,
36
- // database: config.db || 0,
37
35
  });
38
36
  this.initializeRedlock();
39
37
  this.setupEventListeners();
40
38
  this.connect().catch((err) => this.logger.error("Auto-connect failed:", err));
41
39
  }
40
+ static getInstance() {
41
+ if (!this.instance) {
42
+ this.instance = new RedisClient();
43
+ }
44
+ return this.instance;
45
+ }
42
46
  initializeRedlock() {
43
47
  try {
44
48
  this.redlock = new redlock_1.default([this.redis], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uber-clone/common",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "main": "./build/index.js",
5
5
  "types": "./build/index.d.ts",
6
6
  "files": [
@@ -33,4 +33,4 @@
33
33
  "redlock": "^5.0.0-beta.2",
34
34
  "winston": "^3.18.3"
35
35
  }
36
- }
36
+ }