@lyxa.ai/core 1.4.332 → 1.4.333

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 (34) hide show
  1. package/dist/libraries/event/events/mongo-stream-changes-batch-process-shops-event.d.ts +2 -2
  2. package/dist/libraries/event/events/punch-marketing/sync-user-shop-punch-marketing-history-event.d.ts +2 -2
  3. package/dist/libraries/event/events/sync-order-again-sections-for-shop-event.d.ts +2 -2
  4. package/dist/libraries/mongo/models/payment-intent.model.d.ts +2 -1
  5. package/dist/libraries/mongo/models/payment-intent.model.js +5 -0
  6. package/dist/libraries/mongo/models/payment-intent.model.js.map +1 -1
  7. package/dist/libraries/notification/firebase-message.builder.d.ts +1 -5
  8. package/dist/libraries/notification/firebase-message.builder.js +1 -32
  9. package/dist/libraries/notification/firebase-message.builder.js.map +1 -1
  10. package/dist/libraries/notification/lyxa-fcm.service.d.ts +0 -1
  11. package/dist/libraries/notification/lyxa-fcm.service.js +0 -16
  12. package/dist/libraries/notification/lyxa-fcm.service.js.map +1 -1
  13. package/dist/libraries/redis/index.d.ts +5 -0
  14. package/dist/libraries/redis/index.js +16 -0
  15. package/dist/libraries/redis/index.js.map +1 -1
  16. package/dist/libraries/socket/events/chatroom-message-send.socket.event.d.ts +25 -25
  17. package/dist/libraries/socket/events/order-actions.socket.event.d.ts +24 -24
  18. package/dist/libraries/socket/events/rider-location-update.socket.event.d.ts +4 -4
  19. package/dist/libraries/socket/events/ticket-actions.socket.event.d.ts +12 -12
  20. package/dist/libraries/socket/events/ticket-assign.socket.event.d.ts +4 -4
  21. package/dist/libraries/trpc/middlewares/auth.d.ts +1 -1
  22. package/dist/libraries/trpc/middlewares/auth.js +2 -0
  23. package/dist/libraries/trpc/middlewares/auth.js.map +1 -1
  24. package/dist/libraries/trpc/middlewares/createRoleProtectedProcedure.d.ts +1 -1
  25. package/dist/libraries/trpc/middlewares/phone-verified.d.ts +1 -1
  26. package/dist/libraries/trpc/middlewares/publicUserDecoder.d.ts +1 -1
  27. package/dist/types/README.md +1 -1
  28. package/dist/types/package.json +1 -1
  29. package/dist/types/utilities/validation/common-validation.d.ts +66 -66
  30. package/dist/types/utilities/validation/validation-for-frontend.d.ts +2 -2
  31. package/dist/utilities/pagination.d.ts +3 -3
  32. package/dist/utilities/validation/common-validation.d.ts +70 -70
  33. package/dist/utilities/validation/validation-for-frontend.d.ts +2 -2
  34. package/package.json +1 -1
@@ -39,20 +39,20 @@ export declare const OrderActionsOutputSchema: z.ZodObject<{
39
39
  riderTips: z.ZodNumber;
40
40
  secondaryRiderTips: z.ZodNumber;
41
41
  }, "strip", z.ZodTypeAny, {
42
+ total: number;
42
43
  deliveryFee: number;
43
44
  secondaryDeliveryFee: number;
44
45
  riderTips: number;
45
46
  secondaryRiderTips: number;
46
- total: number;
47
47
  secondaryTotal: number;
48
48
  paidAmount: number;
49
49
  secondaryPaidAmount: number;
50
50
  }, {
51
+ total: number;
51
52
  deliveryFee: number;
52
53
  secondaryDeliveryFee: number;
53
54
  riderTips: number;
54
55
  secondaryRiderTips: number;
55
- total: number;
56
56
  secondaryTotal: number;
57
57
  paidAmount: number;
58
58
  secondaryPaidAmount: number;
@@ -60,11 +60,11 @@ export declare const OrderActionsOutputSchema: z.ZodObject<{
60
60
  }, "strip", z.ZodTypeAny, {
61
61
  paymentMethod: PaymentMethod;
62
62
  pricing: {
63
+ total: number;
63
64
  deliveryFee: number;
64
65
  secondaryDeliveryFee: number;
65
66
  riderTips: number;
66
67
  secondaryRiderTips: number;
67
- total: number;
68
68
  secondaryTotal: number;
69
69
  paidAmount: number;
70
70
  secondaryPaidAmount: number;
@@ -73,11 +73,11 @@ export declare const OrderActionsOutputSchema: z.ZodObject<{
73
73
  }, {
74
74
  paymentMethod: PaymentMethod;
75
75
  pricing: {
76
+ total: number;
76
77
  deliveryFee: number;
77
78
  secondaryDeliveryFee: number;
78
79
  riderTips: number;
79
80
  secondaryRiderTips: number;
80
- total: number;
81
81
  secondaryTotal: number;
82
82
  paidAmount: number;
83
83
  secondaryPaidAmount: number;
@@ -89,58 +89,58 @@ export declare const OrderActionsOutputSchema: z.ZodObject<{
89
89
  orderActionType: z.ZodNativeEnum<typeof OrderAction>;
90
90
  }, "strip", z.ZodTypeAny, {
91
91
  _id: import("mongoose").Types.ObjectId;
92
- orderId: string;
93
- shopId: import("mongoose").Types.ObjectId;
94
92
  createdAt: Date;
95
93
  user: {
96
94
  _id: import("mongoose").Types.ObjectId;
97
95
  name: string;
98
96
  };
97
+ orderId: string;
98
+ shopId: import("mongoose").Types.ObjectId;
99
+ paymentMethod: PaymentMethod;
99
100
  triggerAt: Date;
100
101
  adjustedFinance: {
101
102
  paymentMethod: PaymentMethod;
102
103
  pricing: {
104
+ total: number;
103
105
  deliveryFee: number;
104
106
  secondaryDeliveryFee: number;
105
107
  riderTips: number;
106
108
  secondaryRiderTips: number;
107
- total: number;
108
109
  secondaryTotal: number;
109
110
  paidAmount: number;
110
111
  secondaryPaidAmount: number;
111
112
  };
112
113
  shopProfit: number;
113
114
  };
114
- paymentMethod: PaymentMethod;
115
115
  orderActionType: OrderAction;
116
116
  orderStatus: RegularOrderStatus;
117
117
  orderAction: OrderAction;
118
118
  preparationTimeMinutes: number;
119
119
  }, {
120
120
  _id: string | import("mongoose").Types.ObjectId;
121
- orderId: string;
122
- shopId: string | import("mongoose").Types.ObjectId;
123
121
  createdAt: Date;
124
122
  user: {
125
123
  _id: string | import("mongoose").Types.ObjectId;
126
124
  name: string;
127
125
  };
126
+ orderId: string;
127
+ shopId: string | import("mongoose").Types.ObjectId;
128
+ paymentMethod: PaymentMethod;
128
129
  triggerAt: Date;
129
130
  adjustedFinance: {
130
131
  paymentMethod: PaymentMethod;
131
132
  pricing: {
133
+ total: number;
132
134
  deliveryFee: number;
133
135
  secondaryDeliveryFee: number;
134
136
  riderTips: number;
135
137
  secondaryRiderTips: number;
136
- total: number;
137
138
  secondaryTotal: number;
138
139
  paidAmount: number;
139
140
  secondaryPaidAmount: number;
140
141
  };
141
142
  shopProfit: number;
142
143
  };
143
- paymentMethod: PaymentMethod;
144
144
  orderActionType: OrderAction;
145
145
  orderStatus: RegularOrderStatus;
146
146
  orderAction: OrderAction;
@@ -183,20 +183,20 @@ export declare class OrderActionsSocketEvent extends BaseSocketEvent<typeof Orde
183
183
  riderTips: z.ZodNumber;
184
184
  secondaryRiderTips: z.ZodNumber;
185
185
  }, "strip", z.ZodTypeAny, {
186
+ total: number;
186
187
  deliveryFee: number;
187
188
  secondaryDeliveryFee: number;
188
189
  riderTips: number;
189
190
  secondaryRiderTips: number;
190
- total: number;
191
191
  secondaryTotal: number;
192
192
  paidAmount: number;
193
193
  secondaryPaidAmount: number;
194
194
  }, {
195
+ total: number;
195
196
  deliveryFee: number;
196
197
  secondaryDeliveryFee: number;
197
198
  riderTips: number;
198
199
  secondaryRiderTips: number;
199
- total: number;
200
200
  secondaryTotal: number;
201
201
  paidAmount: number;
202
202
  secondaryPaidAmount: number;
@@ -204,11 +204,11 @@ export declare class OrderActionsSocketEvent extends BaseSocketEvent<typeof Orde
204
204
  }, "strip", z.ZodTypeAny, {
205
205
  paymentMethod: PaymentMethod;
206
206
  pricing: {
207
+ total: number;
207
208
  deliveryFee: number;
208
209
  secondaryDeliveryFee: number;
209
210
  riderTips: number;
210
211
  secondaryRiderTips: number;
211
- total: number;
212
212
  secondaryTotal: number;
213
213
  paidAmount: number;
214
214
  secondaryPaidAmount: number;
@@ -217,11 +217,11 @@ export declare class OrderActionsSocketEvent extends BaseSocketEvent<typeof Orde
217
217
  }, {
218
218
  paymentMethod: PaymentMethod;
219
219
  pricing: {
220
+ total: number;
220
221
  deliveryFee: number;
221
222
  secondaryDeliveryFee: number;
222
223
  riderTips: number;
223
224
  secondaryRiderTips: number;
224
- total: number;
225
225
  secondaryTotal: number;
226
226
  paidAmount: number;
227
227
  secondaryPaidAmount: number;
@@ -233,58 +233,58 @@ export declare class OrderActionsSocketEvent extends BaseSocketEvent<typeof Orde
233
233
  orderActionType: z.ZodNativeEnum<typeof OrderAction>;
234
234
  }, "strip", z.ZodTypeAny, {
235
235
  _id: import("mongoose").Types.ObjectId;
236
- orderId: string;
237
- shopId: import("mongoose").Types.ObjectId;
238
236
  createdAt: Date;
239
237
  user: {
240
238
  _id: import("mongoose").Types.ObjectId;
241
239
  name: string;
242
240
  };
241
+ orderId: string;
242
+ shopId: import("mongoose").Types.ObjectId;
243
+ paymentMethod: PaymentMethod;
243
244
  triggerAt: Date;
244
245
  adjustedFinance: {
245
246
  paymentMethod: PaymentMethod;
246
247
  pricing: {
248
+ total: number;
247
249
  deliveryFee: number;
248
250
  secondaryDeliveryFee: number;
249
251
  riderTips: number;
250
252
  secondaryRiderTips: number;
251
- total: number;
252
253
  secondaryTotal: number;
253
254
  paidAmount: number;
254
255
  secondaryPaidAmount: number;
255
256
  };
256
257
  shopProfit: number;
257
258
  };
258
- paymentMethod: PaymentMethod;
259
259
  orderActionType: OrderAction;
260
260
  orderStatus: RegularOrderStatus;
261
261
  orderAction: OrderAction;
262
262
  preparationTimeMinutes: number;
263
263
  }, {
264
264
  _id: string | import("mongoose").Types.ObjectId;
265
- orderId: string;
266
- shopId: string | import("mongoose").Types.ObjectId;
267
265
  createdAt: Date;
268
266
  user: {
269
267
  _id: string | import("mongoose").Types.ObjectId;
270
268
  name: string;
271
269
  };
270
+ orderId: string;
271
+ shopId: string | import("mongoose").Types.ObjectId;
272
+ paymentMethod: PaymentMethod;
272
273
  triggerAt: Date;
273
274
  adjustedFinance: {
274
275
  paymentMethod: PaymentMethod;
275
276
  pricing: {
277
+ total: number;
276
278
  deliveryFee: number;
277
279
  secondaryDeliveryFee: number;
278
280
  riderTips: number;
279
281
  secondaryRiderTips: number;
280
- total: number;
281
282
  secondaryTotal: number;
282
283
  paidAmount: number;
283
284
  secondaryPaidAmount: number;
284
285
  };
285
286
  shopProfit: number;
286
287
  };
287
- paymentMethod: PaymentMethod;
288
288
  orderActionType: OrderAction;
289
289
  orderStatus: RegularOrderStatus;
290
290
  orderAction: OrderAction;
@@ -20,16 +20,16 @@ export declare const RiderLocationUpdateSocketOutputSchema: z.ZodObject<{
20
20
  updatedAt: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
21
21
  }, "strip", z.ZodTypeAny, {
22
22
  _id: import("mongoose").Types.ObjectId;
23
+ updatedAt: Date;
23
24
  latitude: number;
24
25
  longitude: number;
25
- updatedAt: Date;
26
26
  riderId: import("mongoose").Types.ObjectId;
27
27
  bearing?: number | undefined;
28
28
  }, {
29
29
  _id: string | import("mongoose").Types.ObjectId;
30
+ updatedAt: string | Date;
30
31
  latitude: number;
31
32
  longitude: number;
32
- updatedAt: string | Date;
33
33
  riderId: string | import("mongoose").Types.ObjectId;
34
34
  bearing?: number | undefined;
35
35
  }>;
@@ -56,16 +56,16 @@ export declare class RiderLocationUpdateSocketEvent extends BaseSocketEvent<type
56
56
  updatedAt: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
57
57
  }, "strip", z.ZodTypeAny, {
58
58
  _id: import("mongoose").Types.ObjectId;
59
+ updatedAt: Date;
59
60
  latitude: number;
60
61
  longitude: number;
61
- updatedAt: Date;
62
62
  riderId: import("mongoose").Types.ObjectId;
63
63
  bearing?: number | undefined;
64
64
  }, {
65
65
  _id: string | import("mongoose").Types.ObjectId;
66
+ updatedAt: string | Date;
66
67
  latitude: number;
67
68
  longitude: number;
68
- updatedAt: string | Date;
69
69
  riderId: string | import("mongoose").Types.ObjectId;
70
70
  bearing?: number | undefined;
71
71
  }>;
@@ -8,30 +8,30 @@ export declare const TicketActionsSocketOutputSchema: z.ZodObject<{
8
8
  _id: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
9
9
  status: z.ZodNativeEnum<typeof TicketStatus>;
10
10
  type: z.ZodNativeEnum<typeof TicketType>;
11
- content: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
12
- title: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
11
+ content: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
12
+ title: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
13
13
  silent: z.ZodOptional<z.ZodBoolean>;
14
14
  }, "strip", z.ZodTypeAny, {
15
15
  status: TicketStatus;
16
16
  type: TicketType;
17
17
  _id: import("mongoose").Types.ObjectId;
18
+ silent?: boolean | undefined;
18
19
  title?: string | undefined;
19
20
  content?: string | undefined;
20
- silent?: boolean | undefined;
21
21
  }, {
22
22
  status: TicketStatus;
23
23
  type: TicketType;
24
24
  _id: import("mongoose").Types.ObjectId;
25
+ silent?: boolean | undefined;
25
26
  title?: string | undefined;
26
27
  content?: string | undefined;
27
- silent?: boolean | undefined;
28
28
  }>;
29
29
  export declare const TicketActionsPushOutputSchema: z.ZodObject<{
30
30
  ticketId: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
31
31
  status: z.ZodNativeEnum<typeof TicketStatus>;
32
32
  type: z.ZodNativeEnum<typeof TicketType>;
33
- content: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
34
- title: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
33
+ content: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
34
+ title: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
35
35
  }, "strip", z.ZodTypeAny, {
36
36
  status: TicketStatus;
37
37
  type: TicketType;
@@ -55,30 +55,30 @@ export declare class TicketActionsSocketEvent extends BaseSocketEvent<typeof Tic
55
55
  _id: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
56
56
  status: z.ZodNativeEnum<typeof TicketStatus>;
57
57
  type: z.ZodNativeEnum<typeof TicketType>;
58
- content: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
59
- title: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
58
+ content: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
59
+ title: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
60
60
  silent: z.ZodOptional<z.ZodBoolean>;
61
61
  }, "strip", z.ZodTypeAny, {
62
62
  status: TicketStatus;
63
63
  type: TicketType;
64
64
  _id: import("mongoose").Types.ObjectId;
65
+ silent?: boolean | undefined;
65
66
  title?: string | undefined;
66
67
  content?: string | undefined;
67
- silent?: boolean | undefined;
68
68
  }, {
69
69
  status: TicketStatus;
70
70
  type: TicketType;
71
71
  _id: import("mongoose").Types.ObjectId;
72
+ silent?: boolean | undefined;
72
73
  title?: string | undefined;
73
74
  content?: string | undefined;
74
- silent?: boolean | undefined;
75
75
  }>;
76
76
  pushNotificationOutput: z.ZodObject<{
77
77
  ticketId: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
78
78
  status: z.ZodNativeEnum<typeof TicketStatus>;
79
79
  type: z.ZodNativeEnum<typeof TicketType>;
80
- content: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
81
- title: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>> | z.ZodOptional<z.ZodString>;
80
+ content: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
81
+ title: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
82
82
  }, "strip", z.ZodTypeAny, {
83
83
  status: TicketStatus;
84
84
  type: TicketType;
@@ -48,13 +48,13 @@ export declare const TicketAssignSocketOutputSchema: z.ZodObject<{
48
48
  createdAt: Date;
49
49
  content: string;
50
50
  };
51
+ unreadCount: number;
51
52
  client: {
52
53
  type: UserRef;
53
54
  _id: import("mongoose").Types.ObjectId;
54
55
  name: string;
55
56
  profilePhoto: string | null;
56
57
  };
57
- unreadCount: number;
58
58
  chatroomId: import("mongoose").Types.ObjectId;
59
59
  orderId?: import("mongoose").Types.ObjectId | undefined;
60
60
  }, {
@@ -67,13 +67,13 @@ export declare const TicketAssignSocketOutputSchema: z.ZodObject<{
67
67
  createdAt: string | Date;
68
68
  content: string;
69
69
  };
70
+ unreadCount: number;
70
71
  client: {
71
72
  type: UserRef;
72
73
  _id: string | import("mongoose").Types.ObjectId;
73
74
  name: string;
74
75
  profilePhoto: string | null;
75
76
  };
76
- unreadCount: number;
77
77
  chatroomId: string | import("mongoose").Types.ObjectId;
78
78
  orderId?: string | import("mongoose").Types.ObjectId | undefined;
79
79
  }>;
@@ -126,13 +126,13 @@ export declare class TicketAssignEvent extends BaseSocketEvent<typeof TicketAssi
126
126
  createdAt: Date;
127
127
  content: string;
128
128
  };
129
+ unreadCount: number;
129
130
  client: {
130
131
  type: UserRef;
131
132
  _id: import("mongoose").Types.ObjectId;
132
133
  name: string;
133
134
  profilePhoto: string | null;
134
135
  };
135
- unreadCount: number;
136
136
  chatroomId: import("mongoose").Types.ObjectId;
137
137
  orderId?: import("mongoose").Types.ObjectId | undefined;
138
138
  }, {
@@ -145,13 +145,13 @@ export declare class TicketAssignEvent extends BaseSocketEvent<typeof TicketAssi
145
145
  createdAt: string | Date;
146
146
  content: string;
147
147
  };
148
+ unreadCount: number;
148
149
  client: {
149
150
  type: UserRef;
150
151
  _id: string | import("mongoose").Types.ObjectId;
151
152
  name: string;
152
153
  profilePhoto: string | null;
153
154
  };
154
- unreadCount: number;
155
155
  chatroomId: string | import("mongoose").Types.ObjectId;
156
156
  orderId?: string | import("mongoose").Types.ObjectId | undefined;
157
157
  }>;
@@ -6,9 +6,9 @@ interface AuthOptions {
6
6
  }
7
7
  export declare function createAuthenticatedProcedure(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
8
8
  requestId: string | undefined;
9
+ entity: import("../context").EntityContext | undefined;
9
10
  req: import("http").IncomingMessage;
10
11
  res: import("http").ServerResponse<import("http").IncomingMessage>;
11
- entity: import("../context").EntityContext | undefined;
12
12
  tokenType: TokenType | undefined;
13
13
  usedRefreshToken: boolean | undefined;
14
14
  tokenRenewed: boolean | undefined;
@@ -7,6 +7,7 @@ const auth_1 = require("../../auth");
7
7
  const models_1 = require("../../mongo/models");
8
8
  const enum_1 = require("../../../utilities/enum");
9
9
  const error_common_1 = require("../../../utilities/error-common");
10
+ const __1 = require("../../..");
10
11
  function createAuthenticatedProcedure(options) {
11
12
  const { entityTypes, allowRefreshToken = true, autoRefresh = true } = options;
12
13
  return index_1.publicProcedure.use(async ({ ctx, next }) => {
@@ -74,6 +75,7 @@ function createAuthenticatedProcedure(options) {
74
75
  else {
75
76
  (0, error_common_1.unauthorizedError)('You have been logged out, Please login in again');
76
77
  }
78
+ await (0, __1.getLibraries)().getRedisService().setLastOnline(auth_1.AuthEntityType.DELIVERY_BOY, rider._id.toString());
77
79
  }
78
80
  if (entity) {
79
81
  ctx.entity = entity;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"/","sources":["libraries/trpc/middlewares/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import { TRPCError } from '@trpc/server';\nimport { publicProcedure } from '../index';\nimport { AuthEntityType, handleTokenRenewal, TokenType, verifyAccessToken, } from '../../auth';\nimport {\n\tAdminModel,\n\tgetCoreUserModel,\n\tParentModel,\n\tRiderModel,\n\tShopAccessControlModel,\n\tShopModel,\n} from '../../mongo/models';\nimport { Status } from '../../../utilities/enum';\nimport { unauthorizedError } from '../../../utilities/error-common';\n\ninterface AuthOptions {\n\tentityTypes: AuthEntityType[];\n\tallowRefreshToken?: boolean;\n\tautoRefresh?: boolean;\n}\n\n/**\n * A factory that creates an authenticated procedure, optionally allowing\n * refresh tokens and auto-refreshing expired access tokens.\n */\nexport function createAuthenticatedProcedure(options: AuthOptions) {\n\tconst { entityTypes, allowRefreshToken = true, autoRefresh = true } = options;\n\n\treturn publicProcedure.use(async ({ ctx, next }) => {\n\t\tconst authHeader = ctx.req.headers['authorization'];\n\t\tconst refreshTokenHeader = ctx.req.headers['x-refresh-token'];\n\n\t\tif (!authHeader) {\n\t\t\tthrow new TRPCError({ code: 'UNAUTHORIZED', message: 'No authorization header' });\n\t\t}\n\n\t\tconst accessToken = authHeader.replace(/^Bearer\\s+/, '');\n\t\tlet refreshToken = '';\n\n\t\tif (refreshTokenHeader) {\n\t\t\trefreshToken =\n\t\t\t\ttypeof refreshTokenHeader === 'string'\n\t\t\t\t\t? refreshTokenHeader.replace(/^Bearer\\s+/, '')\n\t\t\t\t\t: refreshTokenHeader[0].replace(/^Bearer\\s+/, '');\n\t\t}\n\n\t\tif (!accessToken) unauthorizedError('Missing access token');\n\n\t\tlet entity = await verifyAccessToken(entityTypes, accessToken);\n\n\t\tif (entity?.type == AuthEntityType.USER) {\n\t\t\tconst user = await getCoreUserModel().findOne({ _id: entity.parameters.coreUserId });\n\n\t\t\tif (!user) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'User not found' });\n\t\t\tif (user.status !== Status.ACTIVE) unauthorizedError('User is not active');\n\t\t}\n\n\t\tif (entity?.type == AuthEntityType.CRM) {\n\t\t\tconst admin = await AdminModel.findOne({ _id: entity.parameters.adminId });\n\n\t\t\tif (!admin) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Admin not found' });\n\t\t\tif (admin.status !== Status.ACTIVE) unauthorizedError('Admin is not active');\n\t\t}\n\n\t\t// Seller\n\t\tif (entity?.type == AuthEntityType.SELLER) {\n\t\t\tconst shopAccessControlModel = await ShopAccessControlModel.findOne({ _id: entity.id });\n\t\t\tif (!shopAccessControlModel) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\n\t\t\t// For Parent\n\t\t\tif (['parent', 'parent_manager', 'parent_order_manager'].includes(shopAccessControlModel.role)) {\n\t\t\t\tconst parent = await ParentModel.findOne({ _id: shopAccessControlModel.parent });\n\n\t\t\t\tif (!parent) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\t\t\t\tif (parent.status !== Status.ACTIVE) unauthorizedError('Seller is not active');\n\t\t\t}\n\n\t\t\t// For Shop\n\t\t\tconst shops = shopAccessControlModel.shops ?? [];\n\n\t\t\tif (\n\t\t\t\tshops.length > 0 &&\n\t\t\t\t['shop', 'shop_manager', 'shop_order_manager'].includes(shopAccessControlModel.role)\n\t\t\t) {\n\t\t\t\tconst shopId = shops[0];\n\t\t\t\tconst shop = await ShopModel.findOne({ _id: shopId });\n\n\t\t\t\tif (!shop) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\t\t\t\tif (shop.status !== Status.ACTIVE) unauthorizedError('Seller is not active');\n\t\t\t}\n\t\t}\n\n\t\t// For rider\n\t\tif (entity?.type == AuthEntityType.DELIVERY_BOY) {\n\t\t\tconst rider = await RiderModel.findOne({ _id: entity.id });\n\n\t\t\t// Check the rider exists or not\n\t\t\tif (!rider) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Admin not found' });\n\n\t\t\t// Check the rider isLogin true or false\n\t\t\tif (rider.isLogin) {\n\t\t\t\tif (rider.lastLoginDeviceId !== entity.parameters.deviceId) {\n\t\t\t\t\tunauthorizedError('You already logged in another device');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunauthorizedError('You have been logged out, Please login in again');\n\t\t\t}\n\t\t}\n\n\t\tif (entity) {\n\t\t\tctx.entity = entity;\n\t\t\tctx.tokenType = TokenType.ACCESS;\n\t\t\tctx.usedRefreshToken = false;\n\t\t\tctx.tokenRenewed = false;\n\n\t\t\treturn next({ ctx });\n\t\t}\n\n\t\tif (!allowRefreshToken || !refreshToken) unauthorizedError('Invalid access token');\n\n\t\tconst renewalResult = await handleTokenRenewal(refreshToken);\n\n\t\tif (!renewalResult.success) {\n\t\t\tconst errorMessage =\n\t\t\t\trenewalResult.tokenStatus === 'revoked' ? 'Refresh token has been revoked' : 'Invalid refresh token';\n\n\t\t\tunauthorizedError(errorMessage);\n\t\t}\n\n\t\tif (!entityTypes.includes(renewalResult.entity!.type)) unauthorizedError('Unauthorized entity type');\n\n\t\tctx.entity = renewalResult.entity;\n\t\tctx.tokenType = TokenType.REFRESH;\n\t\tctx.usedRefreshToken = true;\n\n\t\tctx.tokenRenewed = renewalResult.tokenStatus === 'expired';\n\n\t\tif (autoRefresh && renewalResult.newTokens) {\n\t\t\tif (renewalResult.newTokens.accessToken) {\n\t\t\t\tctx.res.setHeader('X-New-Access-Token', renewalResult.newTokens.accessToken);\n\t\t\t}\n\n\t\t\tif (renewalResult.newTokens.refreshToken) {\n\t\t\t\tctx.res.setHeader('X-New-Refresh-Token', renewalResult.newTokens.refreshToken);\n\t\t\t}\n\t\t}\n\n\t\treturn next({ ctx });\n\t});\n}\n"]}
1
+ {"version":3,"file":"auth.js","sourceRoot":"/","sources":["libraries/trpc/middlewares/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import { TRPCError } from '@trpc/server';\nimport { publicProcedure } from '../index';\nimport { AuthEntityType, handleTokenRenewal, TokenType, verifyAccessToken } from '../../auth';\nimport {\n\tAdminModel,\n\tgetCoreUserModel,\n\tParentModel,\n\tRiderModel,\n\tShopAccessControlModel,\n\tShopModel,\n} from '../../mongo/models';\nimport { Status } from '../../../utilities/enum';\nimport { unauthorizedError } from '../../../utilities/error-common';\nimport { getLibraries } from '../../..';\n\ninterface AuthOptions {\n\tentityTypes: AuthEntityType[];\n\tallowRefreshToken?: boolean;\n\tautoRefresh?: boolean;\n}\n\n/**\n * A factory that creates an authenticated procedure, optionally allowing\n * refresh tokens and auto-refreshing expired access tokens.\n */\nexport function createAuthenticatedProcedure(options: AuthOptions) {\n\tconst { entityTypes, allowRefreshToken = true, autoRefresh = true } = options;\n\n\treturn publicProcedure.use(async ({ ctx, next }) => {\n\t\tconst authHeader = ctx.req.headers['authorization'];\n\t\tconst refreshTokenHeader = ctx.req.headers['x-refresh-token'];\n\n\t\tif (!authHeader) {\n\t\t\tthrow new TRPCError({ code: 'UNAUTHORIZED', message: 'No authorization header' });\n\t\t}\n\n\t\tconst accessToken = authHeader.replace(/^Bearer\\s+/, '');\n\t\tlet refreshToken = '';\n\n\t\tif (refreshTokenHeader) {\n\t\t\trefreshToken =\n\t\t\t\ttypeof refreshTokenHeader === 'string'\n\t\t\t\t\t? refreshTokenHeader.replace(/^Bearer\\s+/, '')\n\t\t\t\t\t: refreshTokenHeader[0].replace(/^Bearer\\s+/, '');\n\t\t}\n\n\t\tif (!accessToken) unauthorizedError('Missing access token');\n\n\t\tlet entity = await verifyAccessToken(entityTypes, accessToken);\n\n\t\tif (entity?.type == AuthEntityType.USER) {\n\t\t\tconst user = await getCoreUserModel().findOne({ _id: entity.parameters.coreUserId });\n\n\t\t\tif (!user) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'User not found' });\n\t\t\tif (user.status !== Status.ACTIVE) unauthorizedError('User is not active');\n\t\t}\n\n\t\tif (entity?.type == AuthEntityType.CRM) {\n\t\t\tconst admin = await AdminModel.findOne({ _id: entity.parameters.adminId });\n\n\t\t\tif (!admin) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Admin not found' });\n\t\t\tif (admin.status !== Status.ACTIVE) unauthorizedError('Admin is not active');\n\t\t}\n\n\t\t// Seller\n\t\tif (entity?.type == AuthEntityType.SELLER) {\n\t\t\tconst shopAccessControlModel = await ShopAccessControlModel.findOne({ _id: entity.id });\n\t\t\tif (!shopAccessControlModel) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\n\t\t\t// For Parent\n\t\t\tif (['parent', 'parent_manager', 'parent_order_manager'].includes(shopAccessControlModel.role)) {\n\t\t\t\tconst parent = await ParentModel.findOne({ _id: shopAccessControlModel.parent });\n\n\t\t\t\tif (!parent) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\t\t\t\tif (parent.status !== Status.ACTIVE) unauthorizedError('Seller is not active');\n\t\t\t}\n\n\t\t\t// For Shop\n\t\t\tconst shops = shopAccessControlModel.shops ?? [];\n\n\t\t\tif (\n\t\t\t\tshops.length > 0 &&\n\t\t\t\t['shop', 'shop_manager', 'shop_order_manager'].includes(shopAccessControlModel.role)\n\t\t\t) {\n\t\t\t\tconst shopId = shops[0];\n\t\t\t\tconst shop = await ShopModel.findOne({ _id: shopId });\n\n\t\t\t\tif (!shop) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Seller not found' });\n\t\t\t\tif (shop.status !== Status.ACTIVE) unauthorizedError('Seller is not active');\n\t\t\t}\n\t\t}\n\n\t\t// For rider\n\t\tif (entity?.type == AuthEntityType.DELIVERY_BOY) {\n\t\t\tconst rider = await RiderModel.findOne({ _id: entity.id });\n\n\t\t\t// Check the rider exists or not\n\t\t\tif (!rider) throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Admin not found' });\n\n\t\t\t// Check the rider isLogin true or false\n\t\t\tif (rider.isLogin) {\n\t\t\t\tif (rider.lastLoginDeviceId !== entity.parameters.deviceId) {\n\t\t\t\t\tunauthorizedError('You already logged in another device');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunauthorizedError('You have been logged out, Please login in again');\n\t\t\t}\n\n\t\t\tawait getLibraries().getRedisService().setLastOnline(AuthEntityType.DELIVERY_BOY, rider._id.toString());\n\t\t}\n\n\t\tif (entity) {\n\t\t\tctx.entity = entity;\n\t\t\tctx.tokenType = TokenType.ACCESS;\n\t\t\tctx.usedRefreshToken = false;\n\t\t\tctx.tokenRenewed = false;\n\n\t\t\treturn next({ ctx });\n\t\t}\n\n\t\tif (!allowRefreshToken || !refreshToken) unauthorizedError('Invalid access token');\n\n\t\tconst renewalResult = await handleTokenRenewal(refreshToken);\n\n\t\tif (!renewalResult.success) {\n\t\t\tconst errorMessage =\n\t\t\t\trenewalResult.tokenStatus === 'revoked' ? 'Refresh token has been revoked' : 'Invalid refresh token';\n\n\t\t\tunauthorizedError(errorMessage);\n\t\t}\n\n\t\tif (!entityTypes.includes(renewalResult.entity!.type)) unauthorizedError('Unauthorized entity type');\n\n\t\tctx.entity = renewalResult.entity;\n\t\tctx.tokenType = TokenType.REFRESH;\n\t\tctx.usedRefreshToken = true;\n\n\t\tctx.tokenRenewed = renewalResult.tokenStatus === 'expired';\n\n\t\tif (autoRefresh && renewalResult.newTokens) {\n\t\t\tif (renewalResult.newTokens.accessToken) {\n\t\t\t\tctx.res.setHeader('X-New-Access-Token', renewalResult.newTokens.accessToken);\n\t\t\t}\n\n\t\t\tif (renewalResult.newTokens.refreshToken) {\n\t\t\t\tctx.res.setHeader('X-New-Refresh-Token', renewalResult.newTokens.refreshToken);\n\t\t\t}\n\t\t}\n\n\t\treturn next({ ctx });\n\t});\n}\n"]}
@@ -5,9 +5,9 @@ interface RoleProtectedOptions {
5
5
  }
6
6
  export declare function createRoleProtectedProcedure(options: RoleProtectedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
7
7
  requestId: string | undefined;
8
+ entity: import("../context").EntityContext | undefined;
8
9
  req: import("http").IncomingMessage;
9
10
  res: import("http").ServerResponse<import("http").IncomingMessage>;
10
- entity: import("../context").EntityContext | undefined;
11
11
  tokenType: import("../../auth").TokenType | undefined;
12
12
  usedRefreshToken: boolean | undefined;
13
13
  tokenRenewed: boolean | undefined;
@@ -4,9 +4,9 @@ interface PhoneVerifiedOptions {
4
4
  }
5
5
  export declare function createPhoneVerifiedProcedure(options: PhoneVerifiedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
6
6
  requestId: string | undefined;
7
+ entity: import("../context").EntityContext | undefined;
7
8
  req: import("http").IncomingMessage;
8
9
  res: import("http").ServerResponse<import("http").IncomingMessage>;
9
- entity: import("../context").EntityContext | undefined;
10
10
  tokenType: import("../../auth").TokenType | undefined;
11
11
  usedRefreshToken: boolean | undefined;
12
12
  tokenRenewed: boolean | undefined;
@@ -6,9 +6,9 @@ interface AuthOptions {
6
6
  }
7
7
  export declare function publicUserDecoder(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
8
8
  requestId: string | undefined;
9
+ entity: import("../context").EntityContext | undefined;
9
10
  req: import("http").IncomingMessage;
10
11
  res: import("http").ServerResponse<import("http").IncomingMessage>;
11
- entity: import("../context").EntityContext | undefined;
12
12
  tokenType: TokenType | undefined;
13
13
  usedRefreshToken: boolean | undefined;
14
14
  tokenRenewed: boolean | undefined;
@@ -22,7 +22,7 @@ Perfect for sharing types between frontend and backend applications.
22
22
 
23
23
  ## Version
24
24
 
25
- Version: 1.4.332
25
+ Version: 1.4.333
26
26
 
27
27
  ## Dependencies
28
28
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/types",
3
- "version": "1.4.332",
3
+ "version": "1.4.333",
4
4
  "description": "Lyxa type definitions and validation schemas for both frontend and backend",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",