@lyxa.ai/core 1.1.108 → 1.1.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libraries/socket/core/socket-event-registry.map.d.ts +3 -0
- package/dist/libraries/socket/events/rider-location-update.socket.event.d.ts +6 -0
- package/dist/libraries/socket/events/rider-location-update.socket.event.js +1 -0
- package/dist/libraries/socket/events/rider-location-update.socket.event.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/utilities/time.d.ts +5 -0
- package/dist/utilities/time.js +9 -0
- package/dist/utilities/time.js.map +1 -1
- package/package.json +1 -1
|
@@ -245,10 +245,13 @@ export declare const REGISTRY: {
|
|
|
245
245
|
readonly schemas: {
|
|
246
246
|
input: import("zod").ZodObject<{
|
|
247
247
|
riderId: import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>;
|
|
248
|
+
orderId: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
|
|
248
249
|
}, "strip", import("zod").ZodTypeAny, {
|
|
249
250
|
riderId: import("mongoose").Types.ObjectId;
|
|
251
|
+
orderId?: import("mongoose").Types.ObjectId | undefined;
|
|
250
252
|
}, {
|
|
251
253
|
riderId: string | import("mongoose").Types.ObjectId;
|
|
254
|
+
orderId?: string | import("mongoose").Types.ObjectId | undefined;
|
|
252
255
|
}>;
|
|
253
256
|
output: import("zod").ZodObject<{
|
|
254
257
|
latitude: import("zod").ZodNumber;
|
|
@@ -3,10 +3,13 @@ import { BaseSocketEvent } from '../BaseSocketEvent';
|
|
|
3
3
|
import { DTO } from '../../../utilities/validation';
|
|
4
4
|
export declare const RiderLocationUpdateSocketInputSchema: z.ZodObject<{
|
|
5
5
|
riderId: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>;
|
|
6
|
+
orderId: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
|
|
6
7
|
}, "strip", z.ZodTypeAny, {
|
|
7
8
|
riderId: import("mongoose").Types.ObjectId;
|
|
9
|
+
orderId?: import("mongoose").Types.ObjectId | undefined;
|
|
8
10
|
}, {
|
|
9
11
|
riderId: string | import("mongoose").Types.ObjectId;
|
|
12
|
+
orderId?: string | import("mongoose").Types.ObjectId | undefined;
|
|
10
13
|
}>;
|
|
11
14
|
export declare const RiderLocationUpdateSocketOutputSchema: z.ZodObject<{
|
|
12
15
|
latitude: z.ZodNumber;
|
|
@@ -27,10 +30,13 @@ export declare class RiderLocationUpdateSocketEvent extends BaseSocketEvent<type
|
|
|
27
30
|
static readonly schemas: {
|
|
28
31
|
input: z.ZodObject<{
|
|
29
32
|
riderId: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>;
|
|
33
|
+
orderId: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
|
|
30
34
|
}, "strip", z.ZodTypeAny, {
|
|
31
35
|
riderId: import("mongoose").Types.ObjectId;
|
|
36
|
+
orderId?: import("mongoose").Types.ObjectId | undefined;
|
|
32
37
|
}, {
|
|
33
38
|
riderId: string | import("mongoose").Types.ObjectId;
|
|
39
|
+
orderId?: string | import("mongoose").Types.ObjectId | undefined;
|
|
34
40
|
}>;
|
|
35
41
|
output: z.ZodObject<{
|
|
36
42
|
latitude: z.ZodNumber;
|
|
@@ -10,6 +10,7 @@ const validation_1 = require("../../../utilities/validation");
|
|
|
10
10
|
const enum_1 = require("../../../utilities/enum");
|
|
11
11
|
exports.RiderLocationUpdateSocketInputSchema = zod_1.default.object({
|
|
12
12
|
riderId: validation_1.ZodValidation.objectId('riderId'),
|
|
13
|
+
orderId: validation_1.ZodValidation.objectId('orderId').optional(),
|
|
13
14
|
});
|
|
14
15
|
exports.RiderLocationUpdateSocketOutputSchema = zod_1.default.object({
|
|
15
16
|
latitude: validation_1.ZodValidation.number('latitude'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rider-location-update.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/rider-location-update.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,wDAAqD;AACrD,8DAAmE;AACnE,kDAA0D;AAE7C,QAAA,oCAAoC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rider-location-update.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/rider-location-update.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,wDAAqD;AACrD,8DAAmE;AACnE,kDAA0D;AAE7C,QAAA,oCAAoC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1C,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEU,QAAA,qCAAqC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC7D,QAAQ,EAAE,0BAAa,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5C,SAAS,EAAE,0BAAa,CAAC,IAAI,CAAC,WAAW,CAAC;CAC1C,CAAC,CAAC;AAKH,MAAa,8BAA+B,SAAQ,iCAGnD;IACA,MAAM,CAAU,OAAO,GAAG;QACzB,KAAK,EAAE,4CAAoC;QAC3C,MAAM,EAAE,6CAAqC;KAC7C,CAAC;IAEF,YAAY,OAA2C;QACtD,KAAK,CAAC,sBAAe,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAA2D;QAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;;AAfF,wEAgBC","sourcesContent":["import z from 'zod';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\nimport { DTO, ZodValidation } from '../../../utilities/validation';\nimport { SocketEventType } from '../../../utilities/enum';\n\nexport const RiderLocationUpdateSocketInputSchema = z.object({\n\triderId: ZodValidation.objectId('riderId'),\n\torderId: ZodValidation.objectId('orderId').optional(),\n});\n\nexport const RiderLocationUpdateSocketOutputSchema = z.object({\n\tlatitude: ZodValidation.number('latitude'),\n\tlongitude: ZodValidation.number('longitude'),\n\tupdatedAt: ZodValidation.date('updatedAt'),\n});\n\nexport type RiderLocationUpdateSocketInputDTO = DTO<typeof RiderLocationUpdateSocketInputSchema>;\nexport type RiderLocationUpdateSocketOutputDTO = DTO<typeof RiderLocationUpdateSocketOutputSchema>;\n\nexport class RiderLocationUpdateSocketEvent extends BaseSocketEvent<\n\ttypeof RiderLocationUpdateSocketInputSchema,\n\ttypeof RiderLocationUpdateSocketOutputSchema\n> {\n\tstatic readonly schemas = {\n\t\tinput: RiderLocationUpdateSocketInputSchema,\n\t\toutput: RiderLocationUpdateSocketOutputSchema,\n\t};\n\n\tconstructor(payload: RiderLocationUpdateSocketOutputDTO) {\n\t\tsuper(SocketEventType.RIDER_LOCATION_UPDATE, RiderLocationUpdateSocketEvent.schemas, payload);\n\t}\n\n\tstatic identifier(input: z.infer<typeof RiderLocationUpdateSocketInputSchema>): string {\n\t\treturn input.riderId.toString();\n\t}\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
package/dist/utilities/time.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
1
2
|
export declare const LyxaTimezone = "Asia/Dhaka";
|
|
2
3
|
export declare const convertTimeToUTC: (timeStr: string, zone?: string) => string;
|
|
3
4
|
export declare const convertTimeFromUTC: (utcTimeStr: string, zone?: string) => string;
|
|
@@ -5,3 +6,7 @@ export declare function normalizeWorkingHourTimeFormat(data: any): any;
|
|
|
5
6
|
export declare function deNormalizeWorkingHourTimeFormat(data: any): any;
|
|
6
7
|
export declare function parseTime(time: string): number;
|
|
7
8
|
export declare function formatTimeString(time: string): string;
|
|
9
|
+
export declare function getCurrentTimeInfo(): {
|
|
10
|
+
currentTimeStamp: dayjs.Dayjs;
|
|
11
|
+
timeInHHmm: number;
|
|
12
|
+
};
|
package/dist/utilities/time.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.normalizeWorkingHourTimeFormat = normalizeWorkingHourTimeFormat;
|
|
|
8
8
|
exports.deNormalizeWorkingHourTimeFormat = deNormalizeWorkingHourTimeFormat;
|
|
9
9
|
exports.parseTime = parseTime;
|
|
10
10
|
exports.formatTimeString = formatTimeString;
|
|
11
|
+
exports.getCurrentTimeInfo = getCurrentTimeInfo;
|
|
11
12
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
12
13
|
const utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
13
14
|
const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
|
|
@@ -112,4 +113,12 @@ function formatTimeString(time) {
|
|
|
112
113
|
}
|
|
113
114
|
return time.slice(0, 2) + ":" + time.slice(2);
|
|
114
115
|
}
|
|
116
|
+
function getCurrentTimeInfo() {
|
|
117
|
+
const currentTimeStamp = (0, dayjs_1.default)().tz(exports.LyxaTimezone);
|
|
118
|
+
const timeInHHmm = Number(currentTimeStamp.format('HHmm'));
|
|
119
|
+
return {
|
|
120
|
+
currentTimeStamp,
|
|
121
|
+
timeInHHmm
|
|
122
|
+
};
|
|
123
|
+
}
|
|
115
124
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"/","sources":["utilities/time.ts"],"names":[],"mappings":";;;;;;AAyCA,wEA4BC;AAED,4EA2BC;AAED,8BAWC;AAGD,4CAKC;
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"/","sources":["utilities/time.ts"],"names":[],"mappings":";;;;;;AAyCA,wEA4BC;AAED,4EA2BC;AAED,8BAWC;AAGD,4CAKC;AAED,gDAOC;AAhID,kDAA0B;AAC1B,2DAAmC;AACnC,qEAA6C;AAC7C,iDAAiD;AAEjD,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAClB,eAAK,CAAC,MAAM,CAAC,kBAAQ,CAAC,CAAC;AAEV,QAAA,YAAY,GAAG,YAAY,CAAC;AAIlC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,IAAI,GAAG,aAAa,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAA,eAAK,GAAE;SACZ,EAAE,CAAC,IAAI,CAAC;SACR,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;SACjB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;SACrB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChB,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;SACrB,GAAG,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B;AAIK,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAE,IAAI,GAAG,aAAa,EAAE,EAAE;IAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAA,eAAK,GAAE;SACZ,GAAG,EAAE;SACL,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;SACjB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;SACrB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChB,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;SACrB,EAAE,CAAC,IAAI,CAAC;SACR,MAAM,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAGF,SAAgB,8BAA8B,CAAC,IAAS;IACvD,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAE1C,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,SAAS,GAAQ,CAAC,GAAQ,EAAE,EAAE;QAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9D,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,gCAAgC,CAAC,IAAS;IACzD,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,SAAS,GAAQ,CAAC,GAAQ,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9D,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY;IACrC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/D,IACC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAChB,CAAC;QACF,IAAA,8BAAe,EAAC,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAGD,SAAgB,gBAAgB,CAAC,IAAY;IAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAA,8BAAe,EAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,kBAAkB;IACjC,MAAM,gBAAgB,GAAG,IAAA,eAAK,GAAE,CAAC,EAAE,CAAC,oBAAY,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO;QACN,gBAAgB;QAChB,UAAU;KACV,CAAA;AACF,CAAC","sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { badRequestError } from './error-common';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const LyxaTimezone = 'Asia/Dhaka';\n\n// input: timeStr: 1500\n// output: 1200\nexport const convertTimeToUTC = (timeStr: string, zone = 'Asia/Beirut') => {\n\tconst hour = Number(timeStr.slice(0, 2));\n\tconst minute = Number(timeStr.slice(2));\n\treturn dayjs()\n\t\t.tz(zone)\n\t\t.set('hour', hour)\n\t\t.set('minute', minute)\n\t\t.set('second', 0)\n\t\t.set('millisecond', 0)\n\t\t.utc()\n\t\t.format('HHmm');\n};\n\n// input: timeStr: 1200\n// output: 1500\nexport const convertTimeFromUTC = (utcTimeStr: string, zone = 'Asia/Beirut') => {\n\tconst hour = Number(utcTimeStr.slice(0, 2));\n\tconst minute = Number(utcTimeStr.slice(2));\n\treturn dayjs()\n\t\t.utc()\n\t\t.set('hour', hour)\n\t\t.set('minute', minute)\n\t\t.set('second', 0)\n\t\t.set('millisecond', 0)\n\t\t.tz(zone)\n\t\t.format('HHmm');\n};\n\n\nexport function normalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{1,2}):(\\d{1,2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = match[1].padStart(2, '0');\n\t\tconst minutes = match[2].padStart(2, '0');\n\t\treturn `${hours}${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\n\treturn transform(JSON.parse(JSON.stringify(data))); // deep copy to avoid mutation\n}\n\nexport function deNormalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{2})(\\d{2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = String(Number(match[1])); // remove leading zero\n\t\tconst minutes = String(Number(match[2])).padStart(2, '0');\n\t\treturn `${hours}:${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\t// return transform(JSON.parse((data)));\n\treturn transform(JSON.parse(JSON.stringify(data)));\n}\n\nexport function parseTime(time: string): number {\n\tconst [hh, mm] = formatTimeString(time).split(\":\").map(Number);\n\tif (\n\t\tisNaN(hh) || isNaN(mm) ||\n\t\thh < 0 || hh > 23 ||\n\t\tmm < 0 || mm > 59\n\t) {\n\t\tbadRequestError(`Invalid time format: ${formatTimeString(time)}`);\n\t}\n\n\treturn hh * 60 + mm;\n}\n\n// i/p: 0600, o/p: 06:00 \nexport function formatTimeString(time: string): string {\n\tif (!/^\\d{4}$/.test(time)) {\n\t\tbadRequestError(`Invalid time format: ${time}`);\n\t}\n\treturn time.slice(0, 2) + \":\" + time.slice(2);\n}\n\nexport function getCurrentTimeInfo() {\n\tconst currentTimeStamp = dayjs().tz(LyxaTimezone);\n\tconst timeInHHmm = Number(currentTimeStamp.format('HHmm')); // 0930\n\treturn {\n\t\tcurrentTimeStamp,\n\t\ttimeInHHmm\n\t}\n}\n\n"]}
|