@lyxa.ai/core 1.3.209 → 1.3.211

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.
@@ -1,5 +1,7 @@
1
1
  import { CardType } from '../../../../utilities/enum';
2
2
  export declare class PaymentInformation {
3
3
  cardType: CardType;
4
- paymentIntentId: string;
4
+ paymentIntentId?: string;
5
+ orderId?: string;
6
+ transactionId?: string;
5
7
  }
@@ -15,6 +15,8 @@ const enum_1 = require("../../../../utilities/enum");
15
15
  class PaymentInformation {
16
16
  cardType;
17
17
  paymentIntentId;
18
+ orderId;
19
+ transactionId;
18
20
  }
19
21
  exports.PaymentInformation = PaymentInformation;
20
22
  __decorate([
@@ -22,7 +24,15 @@ __decorate([
22
24
  __metadata("design:type", String)
23
25
  ], PaymentInformation.prototype, "cardType", void 0);
24
26
  __decorate([
25
- (0, typegoose_1.prop)({ required: true, type: String }),
27
+ (0, typegoose_1.prop)({ type: String }),
26
28
  __metadata("design:type", String)
27
29
  ], PaymentInformation.prototype, "paymentIntentId", void 0);
30
+ __decorate([
31
+ (0, typegoose_1.prop)({ type: String }),
32
+ __metadata("design:type", String)
33
+ ], PaymentInformation.prototype, "orderId", void 0);
34
+ __decorate([
35
+ (0, typegoose_1.prop)({ type: String }),
36
+ __metadata("design:type", String)
37
+ ], PaymentInformation.prototype, "transactionId", void 0);
28
38
  //# sourceMappingURL=payment-infromation.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment-infromation.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/payment-infromation.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAC5C,qDAAsD;AAEtD,MAAa,kBAAkB;IAEvB,QAAQ,CAAY;IAGpB,eAAe,CAAU;CAChC;AAND,gDAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAQ,EAAE,OAAO,EAAE,eAAQ,CAAC,MAAM,EAAE,CAAC;;oDACtD;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2DACP","sourcesContent":["import { prop } from '@typegoose/typegoose';\nimport { CardType } from '../../../../utilities/enum';\n\nexport class PaymentInformation {\n\t@prop({ required: true, type: String, enum: CardType, default: CardType.STRIPE })\n\tpublic cardType!: CardType;\n\n\t@prop({ required: true, type: String })\n\tpublic paymentIntentId!: string;\n}\n"]}
1
+ {"version":3,"file":"payment-infromation.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/payment-infromation.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAC5C,qDAAsD;AAEtD,MAAa,kBAAkB;IAEvB,QAAQ,CAAY;IAGpB,eAAe,CAAU;IAGzB,OAAO,CAAU;IAGjB,aAAa,CAAU;CAC9B;AAZD,gDAYC;AAVO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAQ,EAAE,OAAO,EAAE,eAAQ,CAAC,MAAM,EAAE,CAAC;;oDACtD;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2DACS;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;mDACC;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yDACO","sourcesContent":["import { prop } from '@typegoose/typegoose';\nimport { CardType } from '../../../../utilities/enum';\n\nexport class PaymentInformation {\n\t@prop({ required: true, type: String, enum: CardType, default: CardType.STRIPE })\n\tpublic cardType!: CardType;\n\n\t@prop({ type: String })\n\tpublic paymentIntentId?: string;\n\n\t@prop({ type: String })\n\tpublic orderId?: string;\n\n\t@prop({ type: String })\n\tpublic transactionId?: string;\n}\n"]}
@@ -9,8 +9,8 @@ export declare class PaymentIntent extends TimeStamps {
9
9
  orderId: string;
10
10
  token: string;
11
11
  amount: number;
12
- secondaryAmount: number;
12
+ secondaryAmount?: number;
13
13
  authorization?: string;
14
- orderContext?: any;
14
+ paymentContext?: any;
15
15
  status?: PaymentIntentStatus;
16
16
  }
@@ -23,7 +23,7 @@ let PaymentIntent = class PaymentIntent extends defaultClasses_1.TimeStamps {
23
23
  amount;
24
24
  secondaryAmount;
25
25
  authorization;
26
- orderContext;
26
+ paymentContext;
27
27
  status;
28
28
  };
29
29
  exports.PaymentIntent = PaymentIntent;
@@ -48,7 +48,7 @@ __decorate([
48
48
  __metadata("design:type", Number)
49
49
  ], PaymentIntent.prototype, "amount", void 0);
50
50
  __decorate([
51
- (0, typegoose_1.prop)({ required: true, type: Number }),
51
+ (0, typegoose_1.prop)({ type: Number }),
52
52
  __metadata("design:type", Number)
53
53
  ], PaymentIntent.prototype, "secondaryAmount", void 0);
54
54
  __decorate([
@@ -58,7 +58,7 @@ __decorate([
58
58
  __decorate([
59
59
  (0, typegoose_1.prop)({ type: typegoose_1.mongoose.Schema.Types.Mixed }),
60
60
  __metadata("design:type", Object)
61
- ], PaymentIntent.prototype, "orderContext", void 0);
61
+ ], PaymentIntent.prototype, "paymentContext", void 0);
62
62
  __decorate([
63
63
  (0, typegoose_1.prop)({ type: String, enum: enum_1.PaymentIntentStatus, default: enum_1.PaymentIntentStatus.PENDING }),
64
64
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"payment-intent.model.js","sourceRoot":"/","sources":["libraries/mongo/models/payment-intent.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAmF;AACnF,4EAAqE;AACrE,uDAA6C;AAC7C,kDAA8F;AAC9F,6CAAoC;AAQ7B,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,2BAAU;IAErC,QAAQ,CAAiB;IAGzB,IAAI,CAAa;IAGjB,OAAO,CAAU;IAGjB,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,eAAe,CAAU;IAGzB,aAAa,CAAU;IAGvB,YAAY,CAAO;IAGnB,MAAM,CAAuB;CACpC,CAAA;AA3BY,sCAAa;AAElB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,0BAAQ,EAAE,CAAC;;+CACd;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAI,EAAE,CAAC;;2CAClB;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACf;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;6CAChB;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sDACP;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACO;AAGvB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,oBAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;;mDAClB;AAGnB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAAmB,EAAE,OAAO,EAAE,0BAAmB,CAAC,OAAO,EAAE,CAAC;;6CACpD;wBA1BxB,aAAa;IANzB,IAAA,wBAAY,EAAC;QACb,aAAa,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;QAC/C,OAAO,EAAE;YACR,UAAU,EAAE,oBAAQ,CAAC,KAAK;SAC1B;KACD,CAAC;GACW,aAAa,CA2BzB","sourcesContent":["import { modelOptions, mongoose, prop, Ref, Severity } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { CoreUser } from './core-user.model';\nimport { CardStatus, CardType, Currency, PaymentIntentStatus } from '../../../utilities/enum';\nimport { User } from './user.model';\n\n@modelOptions({\n\tschemaOptions: { collection: 'paymentIntents' },\n\toptions: {\n\t\tallowMixed: Severity.ALLOW,\n\t},\n})\nexport class PaymentIntent extends TimeStamps {\n\t@prop({ required: true, ref: () => CoreUser })\n\tpublic coreUser!: Ref<CoreUser>;\n\n\t@prop({ required: true, ref: () => User })\n\tpublic user!: Ref<User>;\n\n\t@prop({ required: true, type: String })\n\tpublic orderId!: string;\n\n\t@prop({ required: true, type: String })\n\tpublic token!: string;\n\n\t@prop({ required: true, type: Number })\n\tpublic amount!: number;\n\n\t@prop({ required: true, type: Number })\n\tpublic secondaryAmount!: number;\n\n\t@prop({ type: String })\n\tpublic authorization?: string;\n\n\t@prop({ type: mongoose.Schema.Types.Mixed })\n\tpublic orderContext?: any;\n\n\t@prop({ type: String, enum: PaymentIntentStatus, default: PaymentIntentStatus.PENDING })\n\tpublic status?: PaymentIntentStatus;\n}\n"]}
1
+ {"version":3,"file":"payment-intent.model.js","sourceRoot":"/","sources":["libraries/mongo/models/payment-intent.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAmF;AACnF,4EAAqE;AACrE,uDAA6C;AAC7C,kDAA8F;AAC9F,6CAAoC;AAQ7B,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,2BAAU;IAErC,QAAQ,CAAiB;IAGzB,IAAI,CAAa;IAGjB,OAAO,CAAU;IAGjB,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,eAAe,CAAU;IAGzB,aAAa,CAAU;IAGvB,cAAc,CAAO;IAGrB,MAAM,CAAuB;CACpC,CAAA;AA3BY,sCAAa;AAElB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,0BAAQ,EAAE,CAAC;;+CACd;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAI,EAAE,CAAC;;2CAClB;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACf;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;6CAChB;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sDACS;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACO;AAGvB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,oBAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;;qDAChB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAAmB,EAAE,OAAO,EAAE,0BAAmB,CAAC,OAAO,EAAE,CAAC;;6CACpD;wBA1BxB,aAAa;IANzB,IAAA,wBAAY,EAAC;QACb,aAAa,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;QAC/C,OAAO,EAAE;YACR,UAAU,EAAE,oBAAQ,CAAC,KAAK;SAC1B;KACD,CAAC;GACW,aAAa,CA2BzB","sourcesContent":["import { modelOptions, mongoose, prop, Ref, Severity } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { CoreUser } from './core-user.model';\nimport { CardStatus, CardType, Currency, PaymentIntentStatus } from '../../../utilities/enum';\nimport { User } from './user.model';\n\n@modelOptions({\n\tschemaOptions: { collection: 'paymentIntents' },\n\toptions: {\n\t\tallowMixed: Severity.ALLOW,\n\t},\n})\nexport class PaymentIntent extends TimeStamps {\n\t@prop({ required: true, ref: () => CoreUser })\n\tpublic coreUser!: Ref<CoreUser>;\n\n\t@prop({ required: true, ref: () => User })\n\tpublic user!: Ref<User>;\n\n\t@prop({ required: true, type: String })\n\tpublic orderId!: string;\n\n\t@prop({ required: true, type: String })\n\tpublic token!: string;\n\n\t@prop({ required: true, type: Number })\n\tpublic amount!: number;\n\n\t@prop({ type: Number })\n\tpublic secondaryAmount?: number;\n\n\t@prop({ type: String })\n\tpublic authorization?: string;\n\n\t@prop({ type: mongoose.Schema.Types.Mixed })\n\tpublic paymentContext?: any;\n\n\t@prop({ type: String, enum: PaymentIntentStatus, default: PaymentIntentStatus.PENDING })\n\tpublic status?: PaymentIntentStatus;\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.209
25
+ Version: 1.3.211
26
26
 
27
27
  ## Dependencies
28
28
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/types",
3
- "version": "1.3.209",
3
+ "version": "1.3.211",
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",
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.getVendorAndLyxaOpenTimings = exports.getShopAndLyxaOpenTimings = exports.isLyxaOpen = exports.adminAfterHolidayWorkingHours = exports.subtractSegment = exports.getHolidayIntersectedHours = exports.checkWithinHolidayHours = exports.checkWithinNormalHours = exports.getIntersectedHours = exports.calculateIntersection = exports.parseTimeString = exports.getFullDayHours = exports.getDaysOfWeek = void 0;
4
7
  const dayjs_1 = require("../utilities/dayjs");
5
8
  const enum_1 = require("./enum");
6
9
  const time_1 = require("./time");
10
+ const dayjs_2 = __importDefault(require("./dayjs/dayjs"));
7
11
  const getDaysOfWeek = () => {
8
12
  return Array.from({ length: 7 }, (_, i) => (0, dayjs_1.dayjs)().day(i).format('dddd'));
9
13
  };
@@ -139,7 +143,9 @@ const adminAfterHolidayWorkingHours = (workHourSetting) => {
139
143
  };
140
144
  exports.adminAfterHolidayWorkingHours = adminAfterHolidayWorkingHours;
141
145
  const isLyxaOpen = (workHourSetting) => {
142
- const currentTime = new Date().getHours() * 100 + new Date().getMinutes();
146
+ const now = (0, dayjs_2.default)();
147
+ console.log(`Current Time: ${now.format()} in timezone ${time_1.LyxaTimezone}`);
148
+ const currentTime = now.hour() * 100 + now.minute();
143
149
  const lyxaOpenHour = (0, exports.adminAfterHolidayWorkingHours)(workHourSetting);
144
150
  return lyxaOpenHour.some(timing => parseInt(timing.start) <= currentTime && currentTime <= parseInt(timing.end));
145
151
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workHourSetting.js","sourceRoot":"/","sources":["utilities/workHourSetting.ts"],"names":[],"mappings":"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","sourcesContent":["import { dayjs, Dayjs } from '../utilities/dayjs';\nimport { HolidayHour, NormalHour, StartEndTime } from '../libraries/mongo/models/shared/work-hour.model';\nimport { HolidayWorkStatus, WeekDay, WorkStatus } from './enum';\nimport { LyxaTimezone } from './time';\n\nexport const getDaysOfWeek = (): string[] => {\n\treturn Array.from({ length: 7 }, (_, i) => dayjs().day(i).format('dddd'));\n};\n\nexport const getFullDayHours = (): StartEndTime[] => {\n\treturn [{ start: '0000', end: '2359' }];\n};\n\nexport const parseTimeString = (timeHHMM: string, zone: string): Dayjs => {\n\tconst hour = Number(timeHHMM.slice(0, 2));\n\tconst minute = Number(timeHHMM.slice(2));\n\treturn dayjs().tz(zone).hour(hour).minute(minute).second(0).millisecond(0);\n};\nexport const calculateIntersection = (\n\topening: StartEndTime,\n\tvalid: StartEndTime,\n\ttimeZone: string\n): StartEndTime | null => {\n\tconst openingStart = parseTimeString(opening.start, timeZone);\n\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\tconst validStart = parseTimeString(valid.start, timeZone);\n\tconst validEnd = parseTimeString(valid.end, timeZone);\n\n\tconst intersectionStart = dayjs.max(openingStart, validStart);\n\tconst intersectionEnd = dayjs.min(openingEnd, validEnd);\n\n\treturn intersectionStart && intersectionEnd && intersectionStart.isBefore(intersectionEnd)\n\t\t? {\n\t\t\t\tstart: intersectionStart.format('HHmm'),\n\t\t\t\tend: intersectionEnd.format('HHmm'),\n\t\t\t}\n\t\t: null;\n};\n\nexport const getIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tvalidHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tconst intersections: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tfor (const valid of validHours) {\n\t\t\tconst intersection = calculateIntersection(opening, valid, timeZone);\n\n\t\t\tif (intersection !== null) {\n\t\t\t\tintersections.push(intersection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn intersections;\n};\n\nexport const checkWithinNormalHours = (\n\thours: StartEndTime[],\n\tnormalTimings: NormalHour[],\n\tday: keyof typeof WeekDay\n): StartEndTime[] => {\n\tconst dayTiming = normalTimings.find(timing => timing.day === WeekDay[day]);\n\n\tif (!dayTiming) return [];\n\n\tconst statusHandlers = {\n\t\t[WorkStatus.CLOSED]: () => [],\n\t\t[WorkStatus.FULL_DAY]: () => getFullDayHours(),\n\t\t[WorkStatus.OPEN]: () =>\n\t\t\tdayTiming.openingHours?.length ? getIntersectedHours(dayTiming.openingHours, hours) : [],\n\t};\n\n\treturn statusHandlers[dayTiming.status]?.() || [];\n};\n\nexport const checkWithinHolidayHours = (\n\thours: StartEndTime[],\n\tholidayTimings: HolidayHour[],\n\tcurrentDate: Dayjs\n): StartEndTime[] => {\n\tif (!holidayTimings.length) {\n\t\treturn hours;\n\t}\n\n\t/** Find If Today Is Holiday */\n\tconst currentDateInTimezone = currentDate.tz(LyxaTimezone);\n\tconst todaysHoliday = holidayTimings.find(holiday => {\n\t\tif (!holiday.date) return false;\n\t\tconst holidayDate = dayjs(holiday.date).tz(LyxaTimezone);\n\t\treturn currentDateInTimezone.isSame(holidayDate, 'day');\n\t});\n\n\t/** No holiday today - return original hours */\n\tif (!todaysHoliday) return hours;\n\n\t/** Handle holiday status --> Full Day Holiday */\n\tif (todaysHoliday.status === HolidayWorkStatus.FULL_DAY) return [];\n\n\t/** Handle holiday status --> Certain Hour Closed Holiday */\n\tif (\n\t\ttodaysHoliday.status === HolidayWorkStatus.CLOSED &&\n\t\ttodaysHoliday.closingHour?.start &&\n\t\ttodaysHoliday.closingHour?.end\n\t) {\n\t\treturn getHolidayIntersectedHours(hours, [todaysHoliday.closingHour]);\n\t}\n\n\t/** Default fallback - return original hours */\n\treturn hours;\n};\n\nexport const getHolidayIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tclosingHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tif (!openingHours.length || !closingHours.length) {\n\t\treturn openingHours;\n\t}\n\n\tconst result: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tconst openingStart = parseTimeString(opening.start, timeZone);\n\t\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\n\t\tlet segments = [{ start: openingStart, end: openingEnd }];\n\n\t\t/** Applying each closing period to current segments */\n\t\tfor (const closing of closingHours) {\n\t\t\tconst closingStart = parseTimeString(closing.start, timeZone);\n\t\t\tconst closingEnd = parseTimeString(closing.end, timeZone);\n\t\t\tconst block = { start: closingStart, end: closingEnd };\n\n\t\t\tsegments = segments.flatMap(segment => subtractSegment(segment, block));\n\t\t}\n\n\t\t/** Converting segments to result format */\n\t\tfor (const segment of segments) {\n\t\t\tresult.push({\n\t\t\t\tstart: segment.start.format('HHmm'),\n\t\t\t\tend: segment.end.format('HHmm'),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n};\nexport const subtractSegment = (\n\tsegment: { start: Dayjs; end: Dayjs },\n\tblock: { start: Dayjs; end: Dayjs }\n): { start: Dayjs; end: Dayjs }[] => {\n\tconst { start, end } = segment;\n\tconst { start: blockStart, end: blockEnd } = block;\n\n\t/** Sequence Matter */\n\t/** No Overlap */\n\tif (end.isBefore(blockStart) || start.isAfter(blockEnd)) return [segment];\n\n\t/** Fully Overlapped */\n\tif (blockStart.isBefore(start) && blockEnd.isAfter(end)) return [];\n\n\t/** Block Inside Segment (Middle Cut) */\n\tif (blockStart.isAfter(start) && blockEnd.isBefore(end)) {\n\t\treturn [\n\t\t\t{ start, end: blockStart },\n\t\t\t{ start: blockEnd, end },\n\t\t];\n\t}\n\n\t/** Overlap At Start */\n\tif (blockStart.isBefore(end) && blockEnd.isBefore(end) && blockEnd.isAfter(start)) {\n\t\treturn [{ start: blockEnd, end }];\n\t}\n\n\t/** Overlap At End */\n\tif (blockEnd.isAfter(start) && blockStart.isAfter(start) && blockStart.isBefore(end)) {\n\t\treturn [{ start, end: blockStart }];\n\t}\n\n\treturn [];\n};\n\nexport const adminAfterHolidayWorkingHours = (workHourSetting: any) => {\n\tconst fullDayHours = getFullDayHours();\n\tconst now = dayjs().tz(LyxaTimezone);\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = dayjs().utc().startOf('day');\n\n\t/**Admin Normal Working Hour*/\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tworkHourSetting.normalHours,\n\t\tcurrentDay\n\t);\n\t/**Admin Working Hour After Subtracting From Admin Holiday Hour */\n\treturn checkWithinHolidayHours(adminNormalWorkingHours, workHourSetting.holidayHours, currentDate);\n};\n\nexport const isLyxaOpen = (workHourSetting: any) => {\n\tconst currentTime = new Date().getHours() * 100 + new Date().getMinutes();\n\tconst lyxaOpenHour = adminAfterHolidayWorkingHours(workHourSetting);\n\treturn lyxaOpenHour.some(\n\t\ttiming => parseInt(timing.start) <= currentTime && currentTime <= parseInt(timing.end)\n\t);\n};\n\nexport const getShopAndLyxaOpenTimings = (shop: any, adminSettings: any, scheduledFor?: Date) => {\n\tconst fullDayHours = [{ start: '0000', end: '2359' }];\n\tconst now = scheduledFor ? dayjs(scheduledFor).tz(LyxaTimezone) : dayjs().tz(LyxaTimezone); // ✅ current time in correct timezone\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = scheduledFor ? dayjs(scheduledFor).utc().startOf('day') : dayjs().utc().startOf('day');\n\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tadminSettings.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\tconst adminAfterHolidayWorkingHours = checkWithinHolidayHours(\n\t\tadminNormalWorkingHours,\n\t\tadminSettings.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n\n\tconst shopNormalWorkingHours = checkWithinNormalHours(\n\t\tadminAfterHolidayWorkingHours,\n\t\tshop.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\treturn checkWithinHolidayHours(\n\t\tshopNormalWorkingHours,\n\t\tshop.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n};\n\nexport const getVendorAndLyxaOpenTimings = (vendor: any, adminSettings: any, date: Date) => {\n\treturn getShopAndLyxaOpenTimings(vendor, adminSettings, date);\n};\n"]}
1
+ {"version":3,"file":"workHourSetting.js","sourceRoot":"/","sources":["utilities/workHourSetting.ts"],"names":[],"mappings":"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","sourcesContent":["import { dayjs, Dayjs } from '../utilities/dayjs';\nimport { HolidayHour, NormalHour, StartEndTime } from '../libraries/mongo/models/shared/work-hour.model';\nimport { HolidayWorkStatus, WeekDay, WorkStatus } from './enum';\nimport { LyxaTimezone } from './time';\nimport dayjsWithTimezone from './dayjs/dayjs';\n\nexport const getDaysOfWeek = (): string[] => {\n\treturn Array.from({ length: 7 }, (_, i) => dayjs().day(i).format('dddd'));\n};\n\nexport const getFullDayHours = (): StartEndTime[] => {\n\treturn [{ start: '0000', end: '2359' }];\n};\n\nexport const parseTimeString = (timeHHMM: string, zone: string): Dayjs => {\n\tconst hour = Number(timeHHMM.slice(0, 2));\n\tconst minute = Number(timeHHMM.slice(2));\n\treturn dayjs().tz(zone).hour(hour).minute(minute).second(0).millisecond(0);\n};\nexport const calculateIntersection = (\n\topening: StartEndTime,\n\tvalid: StartEndTime,\n\ttimeZone: string\n): StartEndTime | null => {\n\tconst openingStart = parseTimeString(opening.start, timeZone);\n\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\tconst validStart = parseTimeString(valid.start, timeZone);\n\tconst validEnd = parseTimeString(valid.end, timeZone);\n\n\tconst intersectionStart = dayjs.max(openingStart, validStart);\n\tconst intersectionEnd = dayjs.min(openingEnd, validEnd);\n\n\treturn intersectionStart && intersectionEnd && intersectionStart.isBefore(intersectionEnd)\n\t\t? {\n\t\t\tstart: intersectionStart.format('HHmm'),\n\t\t\tend: intersectionEnd.format('HHmm'),\n\t\t}\n\t\t: null;\n};\n\nexport const getIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tvalidHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tconst intersections: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tfor (const valid of validHours) {\n\t\t\tconst intersection = calculateIntersection(opening, valid, timeZone);\n\n\t\t\tif (intersection !== null) {\n\t\t\t\tintersections.push(intersection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn intersections;\n};\n\nexport const checkWithinNormalHours = (\n\thours: StartEndTime[],\n\tnormalTimings: NormalHour[],\n\tday: keyof typeof WeekDay\n): StartEndTime[] => {\n\tconst dayTiming = normalTimings.find(timing => timing.day === WeekDay[day]);\n\n\tif (!dayTiming) return [];\n\n\tconst statusHandlers = {\n\t\t[WorkStatus.CLOSED]: () => [],\n\t\t[WorkStatus.FULL_DAY]: () => getFullDayHours(),\n\t\t[WorkStatus.OPEN]: () =>\n\t\t\tdayTiming.openingHours?.length ? getIntersectedHours(dayTiming.openingHours, hours) : [],\n\t};\n\n\treturn statusHandlers[dayTiming.status]?.() || [];\n};\n\nexport const checkWithinHolidayHours = (\n\thours: StartEndTime[],\n\tholidayTimings: HolidayHour[],\n\tcurrentDate: Dayjs\n): StartEndTime[] => {\n\tif (!holidayTimings.length) {\n\t\treturn hours;\n\t}\n\n\t/** Find If Today Is Holiday */\n\tconst currentDateInTimezone = currentDate.tz(LyxaTimezone);\n\tconst todaysHoliday = holidayTimings.find(holiday => {\n\t\tif (!holiday.date) return false;\n\t\tconst holidayDate = dayjs(holiday.date).tz(LyxaTimezone);\n\t\treturn currentDateInTimezone.isSame(holidayDate, 'day');\n\t});\n\n\t/** No holiday today - return original hours */\n\tif (!todaysHoliday) return hours;\n\n\t/** Handle holiday status --> Full Day Holiday */\n\tif (todaysHoliday.status === HolidayWorkStatus.FULL_DAY) return [];\n\n\t/** Handle holiday status --> Certain Hour Closed Holiday */\n\tif (\n\t\ttodaysHoliday.status === HolidayWorkStatus.CLOSED &&\n\t\ttodaysHoliday.closingHour?.start &&\n\t\ttodaysHoliday.closingHour?.end\n\t) {\n\t\treturn getHolidayIntersectedHours(hours, [todaysHoliday.closingHour]);\n\t}\n\n\t/** Default fallback - return original hours */\n\treturn hours;\n};\n\nexport const getHolidayIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tclosingHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tif (!openingHours.length || !closingHours.length) {\n\t\treturn openingHours;\n\t}\n\n\tconst result: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tconst openingStart = parseTimeString(opening.start, timeZone);\n\t\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\n\t\tlet segments = [{ start: openingStart, end: openingEnd }];\n\n\t\t/** Applying each closing period to current segments */\n\t\tfor (const closing of closingHours) {\n\t\t\tconst closingStart = parseTimeString(closing.start, timeZone);\n\t\t\tconst closingEnd = parseTimeString(closing.end, timeZone);\n\t\t\tconst block = { start: closingStart, end: closingEnd };\n\n\t\t\tsegments = segments.flatMap(segment => subtractSegment(segment, block));\n\t\t}\n\n\t\t/** Converting segments to result format */\n\t\tfor (const segment of segments) {\n\t\t\tresult.push({\n\t\t\t\tstart: segment.start.format('HHmm'),\n\t\t\t\tend: segment.end.format('HHmm'),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n};\nexport const subtractSegment = (\n\tsegment: { start: Dayjs; end: Dayjs },\n\tblock: { start: Dayjs; end: Dayjs }\n): { start: Dayjs; end: Dayjs }[] => {\n\tconst { start, end } = segment;\n\tconst { start: blockStart, end: blockEnd } = block;\n\n\t/** Sequence Matter */\n\t/** No Overlap */\n\tif (end.isBefore(blockStart) || start.isAfter(blockEnd)) return [segment];\n\n\t/** Fully Overlapped */\n\tif (blockStart.isBefore(start) && blockEnd.isAfter(end)) return [];\n\n\t/** Block Inside Segment (Middle Cut) */\n\tif (blockStart.isAfter(start) && blockEnd.isBefore(end)) {\n\t\treturn [\n\t\t\t{ start, end: blockStart },\n\t\t\t{ start: blockEnd, end },\n\t\t];\n\t}\n\n\t/** Overlap At Start */\n\tif (blockStart.isBefore(end) && blockEnd.isBefore(end) && blockEnd.isAfter(start)) {\n\t\treturn [{ start: blockEnd, end }];\n\t}\n\n\t/** Overlap At End */\n\tif (blockEnd.isAfter(start) && blockStart.isAfter(start) && blockStart.isBefore(end)) {\n\t\treturn [{ start, end: blockStart }];\n\t}\n\n\treturn [];\n};\n\nexport const adminAfterHolidayWorkingHours = (workHourSetting: any) => {\n\tconst fullDayHours = getFullDayHours();\n\tconst now = dayjs().tz(LyxaTimezone);\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = dayjs().utc().startOf('day');\n\n\t/**Admin Normal Working Hour*/\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tworkHourSetting.normalHours,\n\t\tcurrentDay\n\t);\n\t/**Admin Working Hour After Subtracting From Admin Holiday Hour */\n\treturn checkWithinHolidayHours(adminNormalWorkingHours, workHourSetting.holidayHours, currentDate);\n};\n\nexport const isLyxaOpen = (workHourSetting: any) => {\n\tconst now = dayjsWithTimezone();\n\tconsole.log(`Current Time: ${now.format()} in timezone ${LyxaTimezone}`);\n\tconst currentTime = now.hour() * 100 + now.minute();\n\tconst lyxaOpenHour = adminAfterHolidayWorkingHours(workHourSetting);\n\treturn lyxaOpenHour.some(\n\t\ttiming => parseInt(timing.start) <= currentTime && currentTime <= parseInt(timing.end)\n\t);\n};\n\nexport const getShopAndLyxaOpenTimings = (shop: any, adminSettings: any, scheduledFor?: Date) => {\n\tconst fullDayHours = [{ start: '0000', end: '2359' }];\n\tconst now = scheduledFor ? dayjs(scheduledFor).tz(LyxaTimezone) : dayjs().tz(LyxaTimezone); // ✅ current time in correct timezone\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = scheduledFor ? dayjs(scheduledFor).utc().startOf('day') : dayjs().utc().startOf('day');\n\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tadminSettings.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\tconst adminAfterHolidayWorkingHours = checkWithinHolidayHours(\n\t\tadminNormalWorkingHours,\n\t\tadminSettings.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n\n\tconst shopNormalWorkingHours = checkWithinNormalHours(\n\t\tadminAfterHolidayWorkingHours,\n\t\tshop.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\treturn checkWithinHolidayHours(\n\t\tshopNormalWorkingHours,\n\t\tshop.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n};\n\nexport const getVendorAndLyxaOpenTimings = (vendor: any, adminSettings: any, date: Date) => {\n\treturn getShopAndLyxaOpenTimings(vendor, adminSettings, date);\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.3.209",
3
+ "version": "1.3.211",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",