@lyxa.ai/core 1.3.165 → 1.3.167

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.
@@ -11,7 +11,10 @@ export declare const FCMServiceForRider = "fcm.service.rider";
11
11
  export declare const FCMServiceForShop = "fcm.service.shop";
12
12
  export declare class FCMService {
13
13
  private messaging;
14
+ private static readonly MAX_BATCH;
14
15
  constructor(app?: App);
16
+ private chunkArray;
17
+ private buildMessage;
15
18
  sendNotification(payload: FCMNotificationPayload, tokens: string[]): Promise<{
16
19
  successTokens: string[];
17
20
  failedTokens: string[];
@@ -8,6 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var FCMService_1;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.FCMService = exports.FCMServiceForShop = exports.FCMServiceForRider = exports.FCMServiceForUser = void 0;
13
14
  const firebase_admin_1 = require("firebase-admin");
@@ -17,18 +18,25 @@ exports.FCMServiceForUser = 'fcm.service.user';
17
18
  exports.FCMServiceForRider = 'fcm.service.rider';
18
19
  exports.FCMServiceForShop = 'fcm.service.shop';
19
20
  let FCMService = class FCMService {
21
+ static { FCMService_1 = this; }
20
22
  messaging;
23
+ static MAX_BATCH = 500;
21
24
  constructor(app) {
22
25
  const firebaseApp = app ?? (0, __1.getLibraries)().getFirebaseService().superApp;
23
26
  this.messaging = (0, firebase_admin_1.messaging)(firebaseApp);
24
27
  }
25
- async sendNotification(payload, tokens) {
26
- if (!tokens.length)
27
- return { successTokens: [], failedTokens: [] };
28
+ chunkArray(arr, size) {
29
+ const chunks = [];
30
+ for (let i = 0; i < arr.length; i += size) {
31
+ chunks.push(arr.slice(i, i + size));
32
+ }
33
+ return chunks;
34
+ }
35
+ buildMessage(payload, batchTokens) {
28
36
  const isInvisible = payload.invisible === true;
29
37
  const message = {
30
38
  data: payload.data || {},
31
- tokens,
39
+ tokens: batchTokens,
32
40
  android: { priority: 'high' },
33
41
  apns: {
34
42
  payload: {
@@ -51,23 +59,39 @@ let FCMService = class FCMService {
51
59
  },
52
60
  };
53
61
  }
62
+ return message;
63
+ }
64
+ async sendNotification(payload, tokens) {
65
+ if (!tokens.length)
66
+ return { successTokens: [], failedTokens: [] };
67
+ const tokenChunks = this.chunkArray(tokens, FCMService_1.MAX_BATCH);
68
+ let successTokens = [];
69
+ let failedTokens = [];
54
70
  try {
55
- const response = await this.messaging.sendEachForMulticast(message);
56
- const successTokens = [];
57
- const failedTokens = [];
58
- response.responses.forEach((resp, idx) => {
59
- if (resp.success) {
60
- successTokens.push(tokens[idx]);
61
- }
62
- else {
63
- const errorCode = resp.error?.code;
64
- if (errorCode === 'messaging/invalid-argument' ||
65
- errorCode === 'messaging/registration-token-not-registered') {
66
- failedTokens.push(tokens[idx]);
71
+ const results = await Promise.all(tokenChunks.map(async (chunk) => {
72
+ const message = this.buildMessage(payload, chunk);
73
+ const response = await this.messaging.sendEachForMulticast(message);
74
+ const batchSuccess = [];
75
+ const batchFailed = [];
76
+ response.responses.forEach((resp, idx) => {
77
+ if (resp.success) {
78
+ batchSuccess.push(chunk[idx]);
79
+ }
80
+ else {
81
+ const errorCode = resp.error?.code;
82
+ if (errorCode === 'messaging/invalid-argument' ||
83
+ errorCode === 'messaging/registration-token-not-registered') {
84
+ batchFailed.push(chunk[idx]);
85
+ }
86
+ console.warn(`FCM Error for token ${chunk[idx]}:`, resp.error?.message);
67
87
  }
68
- console.warn(`FCM Error for token ${tokens[idx]}:`, resp.error?.message);
69
- }
70
- });
88
+ });
89
+ return { batchSuccess, batchFailed };
90
+ }));
91
+ for (const r of results) {
92
+ successTokens.push(...r.batchSuccess);
93
+ failedTokens.push(...r.batchFailed);
94
+ }
71
95
  return { successTokens, failedTokens };
72
96
  }
73
97
  catch (err) {
@@ -77,7 +101,7 @@ let FCMService = class FCMService {
77
101
  }
78
102
  };
79
103
  exports.FCMService = FCMService;
80
- exports.FCMService = FCMService = __decorate([
104
+ exports.FCMService = FCMService = FCMService_1 = __decorate([
81
105
  (0, typedi_1.Service)(),
82
106
  __metadata("design:paramtypes", [Object])
83
107
  ], FCMService);
@@ -1 +1 @@
1
- {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2C;AAC3C,6BAAqC;AACrC,mCAAiC;AAWpB,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AACvC,QAAA,kBAAkB,GAAG,mBAAmB,CAAC;AACzC,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAG7C,IAAM,UAAU,GAAhB,MAAM,UAAU;IACd,SAAS,CAAuB;IAExC,YAAY,GAAS;QACpB,MAAM,WAAW,GAAG,GAAG,IAAI,IAAA,gBAAY,GAAE,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAA,0BAAS,EAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAQD,KAAK,CAAC,gBAAgB,CACrB,OAA+B,EAC/B,MAAgB;QAEhB,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAEnE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC;QAE/C,MAAM,OAAO,GAA+B;YAC3C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,MAAM;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC7B,IAAI,EAAE;gBACL,OAAO,EAAE;oBACR,GAAG,EAAE;wBACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBACjC,gBAAgB,EAAE,IAAI;qBACtB;iBACD;aACD;SACD,CAAC;QAGF,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,CAAC,YAAY,GAAG;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;aAClB,CAAC;YAEF,OAAO,CAAC,OAAO,GAAG;gBACjB,QAAQ,EAAE,MAAM;gBAChB,YAAY,EAAE;oBACb,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,SAAS;iBAC5E;aACD,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAEpE,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;oBACnC,IACC,SAAS,KAAK,4BAA4B;wBAC1C,SAAS,KAAK,6CAA6C,EAC1D,CAAC;wBACF,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1E,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;CACD,CAAA;AA9EY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CA8EtB","sourcesContent":["import { messaging } from 'firebase-admin';\nimport { getLibraries } from '../..';\nimport { Service } from 'typedi';\nimport { App } from 'firebase-admin/app';\n\nexport interface FCMNotificationPayload {\n\ttitle?: string;\n\tbody?: string;\n\tdata?: Record<string, string>;\n\tsound?: string;\n\tinvisible?: boolean;\n}\n\nexport const FCMServiceForUser = 'fcm.service.user';\nexport const FCMServiceForRider = 'fcm.service.rider';\nexport const FCMServiceForShop = 'fcm.service.shop';\n\n@Service()\nexport class FCMService {\n\tprivate messaging!: messaging.Messaging;\n\n\tconstructor(app?: App) {\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\n\t\tthis.messaging = messaging(firebaseApp);\n\t}\n\n\t/**\n\t * Sends a push notification (visible or invisible) to multiple device tokens\n\t * @param payload - Notification title, body, and optional data\n\t * @param tokens - FCM device tokens\n\t * @returns Object containing success and invalid tokens\n\t */\n\tasync sendNotification(\n\t\tpayload: FCMNotificationPayload,\n\t\ttokens: string[]\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\n\t\tif (!tokens.length) return { successTokens: [], failedTokens: [] };\n\n\t\tconst isInvisible = payload.invisible === true;\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: payload.data || {},\n\t\t\ttokens,\n\t\t\tandroid: { priority: 'high' },\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\t// Only add visible notification fields if not invisible\n\t\tif (!isInvisible) {\n\t\t\tmessage.notification = {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t};\n\n\t\t\tmessage.android = {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: payload.sound ? 'android_Push_Notification_Channel_1' : 'default',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\n\n\t\t\tconst successTokens: string[] = [];\n\t\t\tconst failedTokens: string[] = [];\n\n\t\t\tresponse.responses.forEach((resp, idx) => {\n\t\t\t\tif (resp.success) {\n\t\t\t\t\tsuccessTokens.push(tokens[idx]);\n\t\t\t\t} else {\n\t\t\t\t\tconst errorCode = resp.error?.code;\n\t\t\t\t\tif (\n\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\n\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\n\t\t\t\t\t) {\n\t\t\t\t\t\tfailedTokens.push(tokens[idx]);\n\t\t\t\t\t}\n\t\t\t\t\tconsole.warn(`FCM Error for token ${tokens[idx]}:`, resp.error?.message);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn { successTokens, failedTokens };\n\t\t} catch (err) {\n\t\t\tconsole.error('FCM sendNotification error:', err);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":"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","sourcesContent":["import { messaging } from 'firebase-admin';\nimport { getLibraries } from '../..';\nimport { Service } from 'typedi';\nimport { App } from 'firebase-admin/app';\n\nexport interface FCMNotificationPayload {\n\ttitle?: string;\n\tbody?: string;\n\tdata?: Record<string, string>;\n\tsound?: string;\n\tinvisible?: boolean;\n}\n\nexport const FCMServiceForUser = 'fcm.service.user';\nexport const FCMServiceForRider = 'fcm.service.rider';\nexport const FCMServiceForShop = 'fcm.service.shop';\n\n@Service()\nexport class FCMService {\n\tprivate messaging!: messaging.Messaging;\n\tprivate static readonly MAX_BATCH = 500;\n\n\tconstructor(app?: App) {\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\n\t\tthis.messaging = messaging(firebaseApp);\n\t}\n\n\t/**\n\t * Split array into chunks of fixed size\n\t */\n\tprivate chunkArray<T>(arr: T[], size: number): T[][] {\n\t\tconst chunks: T[][] = [];\n\t\tfor (let i = 0; i < arr.length; i += size) {\n\t\t\tchunks.push(arr.slice(i, i + size));\n\t\t}\n\t\treturn chunks;\n\t}\n\n\t/**\n\t * Build multicast message safely\n\t */\n\tprivate buildMessage(payload: FCMNotificationPayload, batchTokens: string[]): messaging.MulticastMessage {\n\t\tconst isInvisible = payload.invisible === true;\n\n\t\tconst message: messaging.MulticastMessage = {\n\t\t\tdata: payload.data || {},\n\t\t\ttokens: batchTokens,\n\t\t\tandroid: { priority: 'high' },\n\t\t\tapns: {\n\t\t\t\tpayload: {\n\t\t\t\t\taps: {\n\t\t\t\t\t\tsound: payload.sound || 'default',\n\t\t\t\t\t\tcontentAvailable: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tif (!isInvisible) {\n\t\t\tmessage.notification = {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t};\n\n\t\t\tmessage.android = {\n\t\t\t\tpriority: 'high',\n\t\t\t\tnotification: {\n\t\t\t\t\tchannelId: payload.sound ? 'android_Push_Notification_Channel_1' : 'default',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn message;\n\t}\n\n\t/**\n\t * Sends a push notification (visible or invisible) to multiple device tokens\n\t * @param payload - Notification title, body, and optional data\n\t * @param tokens - FCM device tokens\n\t * @returns Object containing success and invalid tokens\n\t */\n\tasync sendNotification(\n\t\tpayload: FCMNotificationPayload,\n\t\ttokens: string[]\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\n\t\tif (!tokens.length) return { successTokens: [], failedTokens: [] };\n\n\t\tconst tokenChunks = this.chunkArray(tokens, FCMService.MAX_BATCH);\n\n\t\tlet successTokens: string[] = [];\n\t\tlet failedTokens: string[] = [];\n\n\t\ttry {\n\t\t\t// Parallel batch sending (safe & fast)\n\t\t\tconst results = await Promise.all(\n\t\t\t\ttokenChunks.map(async chunk => {\n\t\t\t\t\tconst message = this.buildMessage(payload, chunk);\n\t\t\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\n\n\t\t\t\t\tconst batchSuccess: string[] = [];\n\t\t\t\t\tconst batchFailed: string[] = [];\n\n\t\t\t\t\tresponse.responses.forEach((resp, idx) => {\n\t\t\t\t\t\tif (resp.success) {\n\t\t\t\t\t\t\tbatchSuccess.push(chunk[idx]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst errorCode = resp.error?.code;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\n\t\t\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbatchFailed.push(chunk[idx]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.warn(`FCM Error for token ${chunk[idx]}:`, resp.error?.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn { batchSuccess, batchFailed };\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tfor (const r of results) {\n\t\t\t\tsuccessTokens.push(...r.batchSuccess);\n\t\t\t\tfailedTokens.push(...r.batchFailed);\n\t\t\t}\n\n\t\t\treturn { successTokens, failedTokens };\n\t\t} catch (err) {\n\t\t\tconsole.error('FCM sendNotification error:', err);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n"]}
@@ -20,8 +20,8 @@ export declare class AdjustmentInformation {
20
20
  }
21
21
  export declare class AdjustmentHistory {
22
22
  suggestedProduct?: Map<string, Ref<Product>[]>;
23
- adjustedLineItems?: Ref<LineItem>[];
24
- addedLineItems?: Ref<LineItem>[];
23
+ adjustedLineItems?: AdjustedLineItem[];
24
+ addedLineItems?: AdjustedLineItem[];
25
25
  timestamp?: Date;
26
26
  adjustmentType?: AdjustmentType;
27
27
  adjustmentRef: string;
@@ -91,11 +91,11 @@ __decorate([
91
91
  __metadata("design:type", Map)
92
92
  ], AdjustmentHistory.prototype, "suggestedProduct", void 0);
93
93
  __decorate([
94
- (0, typegoose_1.prop)({ ref: () => line_item_model_1.LineItem, default: [] }),
94
+ (0, typegoose_1.prop)({ type: () => [AdjustedLineItem], default: [] }),
95
95
  __metadata("design:type", Array)
96
96
  ], AdjustmentHistory.prototype, "adjustedLineItems", void 0);
97
97
  __decorate([
98
- (0, typegoose_1.prop)({ ref: () => line_item_model_1.LineItem, default: [] }),
98
+ (0, typegoose_1.prop)({ type: () => [AdjustedLineItem], default: [] }),
99
99
  __metadata("design:type", Array)
100
100
  ], AdjustmentHistory.prototype, "addedLineItems", void 0);
101
101
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"adjustment-information.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/adjustment-information.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, PropType, Ref } from '@typegoose/typegoose';\nimport { AdjustmentReason, AdjustmentStatus, AdjustmentType } from '../../../../utilities/enum';\nimport { Product } from '../product.model';\nimport { LineItem } from '../line-item.model';\nimport { Admin } from '../admin.model';\nimport { Types } from 'mongoose';\n\nexport class AdjustedLineItem {\n\t@prop({ required: true, ref: () => LineItem })\n\tpublic lineItem!: Ref<LineItem>;\n\n\t@prop({ type: String, maxlength: 150 })\n\tpublic note?: string;\n\n\t@prop({ type: String, enum: AdjustmentStatus })\n\tpublic adjustmentStatus?: AdjustmentStatus;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic adjustedQuantity?: number;\n}\n\nexport class AdjustmentInformation {\n\t@prop({ type: String, enum: AdjustmentReason })\n\tpublic reason?: AdjustmentReason;\n\n\t@prop({ type: () => [Types.ObjectId] }, PropType.MAP)\n\tpublic suggestedProduct?: Map<string, Ref<Product>[]>;\n\n\t@prop({ type: () => [AdjustedLineItem], default: [] })\n\tpublic adjustedLineItems?: AdjustedLineItem[];\n\n\t@prop({ type: Date, default: () => new Date() })\n\tpublic requestedAt?: Date;\n\n\t@prop({ type: () => Date })\n\tpublic resolvedAt?: Date;\n\n\t@prop({ ref: () => Admin })\n\tpublic admin?: Ref<Admin>;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isRequestByShop?: boolean;\n}\n\nexport class AdjustmentHistory {\n\t@prop({ type: () => [Types.ObjectId] }, PropType.MAP)\n\tpublic suggestedProduct?: Map<string, Ref<Product>[]>;\n\n\t@prop({ ref: () => LineItem, default: [] })\n\tpublic adjustedLineItems?: Ref<LineItem>[];\n\n\t@prop({ ref: () => LineItem, default: [] })\n\tpublic addedLineItems?: Ref<LineItem>[];\n\n\t@prop({ type: Date, default: new Date() })\n\tpublic timestamp?: Date;\n\n\t@prop({ type: String, enum: AdjustmentType })\n\tpublic adjustmentType?: AdjustmentType;\n\n\t@prop({ required: true, type: String })\n\tpublic adjustmentRef!: string;\n\n\t@prop({ ref: () => Admin })\n\tpublic admin?: Ref<Admin>;\n}\n"]}
1
+ {"version":3,"file":"adjustment-information.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/adjustment-information.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, PropType, Ref } from '@typegoose/typegoose';\nimport { AdjustmentReason, AdjustmentStatus, AdjustmentType } from '../../../../utilities/enum';\nimport { Product } from '../product.model';\nimport { LineItem } from '../line-item.model';\nimport { Admin } from '../admin.model';\nimport { Types } from 'mongoose';\n\nexport class AdjustedLineItem {\n\t@prop({ required: true, ref: () => LineItem })\n\tpublic lineItem!: Ref<LineItem>;\n\n\t@prop({ type: String, maxlength: 150 })\n\tpublic note?: string;\n\n\t@prop({ type: String, enum: AdjustmentStatus })\n\tpublic adjustmentStatus?: AdjustmentStatus;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic adjustedQuantity?: number;\n}\n\nexport class AdjustmentInformation {\n\t@prop({ type: String, enum: AdjustmentReason })\n\tpublic reason?: AdjustmentReason;\n\n\t@prop({ type: () => [Types.ObjectId] }, PropType.MAP)\n\tpublic suggestedProduct?: Map<string, Ref<Product>[]>;\n\n\t@prop({ type: () => [AdjustedLineItem], default: [] })\n\tpublic adjustedLineItems?: AdjustedLineItem[];\n\n\t@prop({ type: Date, default: () => new Date() })\n\tpublic requestedAt?: Date;\n\n\t@prop({ type: () => Date })\n\tpublic resolvedAt?: Date;\n\n\t@prop({ ref: () => Admin })\n\tpublic admin?: Ref<Admin>;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isRequestByShop?: boolean;\n}\n\nexport class AdjustmentHistory {\n\t@prop({ type: () => [Types.ObjectId] }, PropType.MAP)\n\tpublic suggestedProduct?: Map<string, Ref<Product>[]>;\n\n\t@prop({ type: () => [AdjustedLineItem], default: [] })\n\tpublic adjustedLineItems?: AdjustedLineItem[];\n\n\t@prop({ type: () => [AdjustedLineItem], default: [] })\n\tpublic addedLineItems?: AdjustedLineItem[];\n\n\t@prop({ type: Date, default: new Date() })\n\tpublic timestamp?: Date;\n\n\t@prop({ type: String, enum: AdjustmentType })\n\tpublic adjustmentType?: AdjustmentType;\n\n\t@prop({ required: true, type: String })\n\tpublic adjustmentRef!: string;\n\n\t@prop({ ref: () => Admin })\n\tpublic admin?: Ref<Admin>;\n}\n"]}
@@ -22,7 +22,7 @@ Perfect for sharing types between frontend and backend applications.
22
22
 
23
23
  ## Version
24
24
 
25
- Version: 1.3.165
25
+ Version: 1.3.167
26
26
 
27
27
  ## Dependencies
28
28
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/types",
3
- "version": "1.3.165",
3
+ "version": "1.3.167",
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",
@@ -5,6 +5,7 @@ type DayjsWithTimezone = {
5
5
  getTimezone(): string;
6
6
  max(...dates: (Dayjs | undefined)[]): Dayjs;
7
7
  min(...dates: (Dayjs | undefined)[]): Dayjs;
8
+ duration: typeof dayjs.duration;
8
9
  } & typeof dayjs;
9
10
  declare const dayjsWithTimezone: DayjsWithTimezone;
10
11
  export declare const _setTimezone: (timezone: string) => void;
@@ -8,10 +8,12 @@ const dayjs_1 = __importDefault(require("dayjs"));
8
8
  const utc_1 = __importDefault(require("dayjs/plugin/utc"));
9
9
  const minMax_1 = __importDefault(require("dayjs/plugin/minMax"));
10
10
  const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
11
+ const duration_1 = __importDefault(require("dayjs/plugin/duration"));
11
12
  const time_1 = require("../time");
12
13
  dayjs_1.default.extend(utc_1.default);
13
14
  dayjs_1.default.extend(timezone_1.default);
14
15
  dayjs_1.default.extend(minMax_1.default);
16
+ dayjs_1.default.extend(duration_1.default);
15
17
  let DEFAULT_TIMEZONE = 'Asia/Beirut';
16
18
  const dayjsWithTimezone = ((date, format, tz) => {
17
19
  const targetTimezone = tz || DEFAULT_TIMEZONE;
@@ -30,6 +32,7 @@ dayjsWithTimezone.setTimezone = (timezone) => {
30
32
  dayjsWithTimezone.getTimezone = () => DEFAULT_TIMEZONE;
31
33
  dayjsWithTimezone.max = dayjs_1.default.max;
32
34
  dayjsWithTimezone.min = dayjs_1.default.min;
35
+ dayjsWithTimezone.duration = dayjs_1.default.duration;
33
36
  const _setTimezone = (timezone) => {
34
37
  DEFAULT_TIMEZONE = timezone;
35
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dayjs.js","sourceRoot":"/","sources":["utilities/dayjs/dayjs.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAqC;AACrC,2DAAmC;AACnC,iEAAyC;AACzC,qEAA6C;AAC7C,kCAAmD;AAEnD,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAClB,eAAK,CAAC,MAAM,CAAC,kBAAQ,CAAC,CAAC;AACvB,eAAK,CAAC,MAAM,CAAC,gBAAM,CAAC,CAAC;AAErB,IAAI,gBAAgB,GAAG,aAAa,CAAC;AAUrC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAU,EAAE,MAAY,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,cAAc,GAAG,EAAE,IAAI,gBAAgB,CAAC;IAE9C,IAAA,+BAAwB,EAAC,cAAc,CAAC,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,IAAA,eAAK,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC,CAAsB,CAAC;AAExB,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC/B,iBAAyB,CAAC,GAAG,CAAC,GAAI,eAAa,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,iBAAiB,CAAC,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;IACpD,gBAAgB,GAAG,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAEF,iBAAiB,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAEvD,iBAAiB,CAAC,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC;AAClC,iBAAiB,CAAC,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC;AAE3B,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;IAChD,gBAAgB,GAAG,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAGF,kBAAe,iBAAiB,CAAC","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport minMax from 'dayjs/plugin/minMax';\nimport timezone from 'dayjs/plugin/timezone';\nimport { _setLyxaTimezoneVariable } from '../time';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(minMax);\n\nlet DEFAULT_TIMEZONE = 'Asia/Beirut';\n\ntype DayjsWithTimezone = {\n\t(date?: any, format?: any, tz?: string): Dayjs;\n\tsetTimezone(timezone: string): void;\n\tgetTimezone(): string;\n\tmax(...dates: (Dayjs | undefined)[]): Dayjs;\n\tmin(...dates: (Dayjs | undefined)[]): Dayjs;\n} & typeof dayjs;\n\nconst dayjsWithTimezone = ((date?: any, format?: any, tz?: string) => {\n\tconst targetTimezone = tz || DEFAULT_TIMEZONE;\n\n\t_setLyxaTimezoneVariable(targetTimezone);\n\n\tif (format) {\n\t\treturn dayjs(date, format).tz(targetTimezone);\n\t}\n\treturn dayjs(date).tz(targetTimezone);\n}) as DayjsWithTimezone;\n\nObject.keys(dayjs).forEach(key => {\n\t(dayjsWithTimezone as any)[key] = (dayjs as any)[key];\n});\n\ndayjsWithTimezone.setTimezone = (timezone: string) => {\n\tDEFAULT_TIMEZONE = timezone;\n};\n\ndayjsWithTimezone.getTimezone = () => DEFAULT_TIMEZONE;\n\ndayjsWithTimezone.max = dayjs.max;\ndayjsWithTimezone.min = dayjs.min;\n\nexport const _setTimezone = (timezone: string) => {\n\tDEFAULT_TIMEZONE = timezone;\n};\n\nexport type { Dayjs };\nexport default dayjsWithTimezone;\n"]}
1
+ {"version":3,"file":"dayjs.js","sourceRoot":"/","sources":["utilities/dayjs/dayjs.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAqC;AACrC,2DAAmC;AACnC,iEAAyC;AACzC,qEAA6C;AAC7C,qEAA6C;AAC7C,kCAAmD;AAEnD,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAClB,eAAK,CAAC,MAAM,CAAC,kBAAQ,CAAC,CAAC;AACvB,eAAK,CAAC,MAAM,CAAC,gBAAM,CAAC,CAAC;AACrB,eAAK,CAAC,MAAM,CAAC,kBAAQ,CAAC,CAAC;AAEvB,IAAI,gBAAgB,GAAG,aAAa,CAAC;AAWrC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAU,EAAE,MAAY,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,cAAc,GAAG,EAAE,IAAI,gBAAgB,CAAC;IAE9C,IAAA,+BAAwB,EAAC,cAAc,CAAC,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,IAAA,eAAK,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC,CAAsB,CAAC;AAExB,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC/B,iBAAyB,CAAC,GAAG,CAAC,GAAI,eAAa,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,iBAAiB,CAAC,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;IACpD,gBAAgB,GAAG,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAEF,iBAAiB,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAEvD,iBAAiB,CAAC,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC;AAClC,iBAAiB,CAAC,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC;AAClC,iBAAiB,CAAC,QAAQ,GAAG,eAAK,CAAC,QAAQ,CAAC;AAErC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;IAChD,gBAAgB,GAAG,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAGF,kBAAe,iBAAiB,CAAC","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport minMax from 'dayjs/plugin/minMax';\nimport timezone from 'dayjs/plugin/timezone';\nimport duration from 'dayjs/plugin/duration';\nimport { _setLyxaTimezoneVariable } from '../time';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(minMax);\ndayjs.extend(duration);\n\nlet DEFAULT_TIMEZONE = 'Asia/Beirut';\n\ntype DayjsWithTimezone = {\n\t(date?: any, format?: any, tz?: string): Dayjs;\n\tsetTimezone(timezone: string): void;\n\tgetTimezone(): string;\n\tmax(...dates: (Dayjs | undefined)[]): Dayjs;\n\tmin(...dates: (Dayjs | undefined)[]): Dayjs;\n\tduration: typeof dayjs.duration;\n} & typeof dayjs;\n\nconst dayjsWithTimezone = ((date?: any, format?: any, tz?: string) => {\n\tconst targetTimezone = tz || DEFAULT_TIMEZONE;\n\n\t_setLyxaTimezoneVariable(targetTimezone);\n\n\tif (format) {\n\t\treturn dayjs(date, format).tz(targetTimezone);\n\t}\n\treturn dayjs(date).tz(targetTimezone);\n}) as DayjsWithTimezone;\n\nObject.keys(dayjs).forEach(key => {\n\t(dayjsWithTimezone as any)[key] = (dayjs as any)[key];\n});\n\ndayjsWithTimezone.setTimezone = (timezone: string) => {\n\tDEFAULT_TIMEZONE = timezone;\n};\n\ndayjsWithTimezone.getTimezone = () => DEFAULT_TIMEZONE;\n\ndayjsWithTimezone.max = dayjs.max;\ndayjsWithTimezone.min = dayjs.min;\ndayjsWithTimezone.duration = dayjs.duration;\n\nexport const _setTimezone = (timezone: string) => {\n\tDEFAULT_TIMEZONE = timezone;\n};\n\nexport type { Dayjs };\nexport default dayjsWithTimezone;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.3.165",
3
+ "version": "1.3.167",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",