@lyxa.ai/core 1.0.122-auth-2 → 1.0.122-test

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 (48) hide show
  1. package/dist/libraries/mongo/models/activity-log.model.d.ts +2 -2
  2. package/dist/libraries/mongo/models/activity-log.model.js +2 -2
  3. package/dist/libraries/mongo/models/activity-log.model.js.map +1 -1
  4. package/dist/libraries/mongo/models/agent-performance.model.js +1 -0
  5. package/dist/libraries/mongo/models/agent-performance.model.js.map +1 -1
  6. package/dist/libraries/mongo/models/attribute.model.js +2 -2
  7. package/dist/libraries/mongo/models/attribute.model.js.map +1 -1
  8. package/dist/libraries/mongo/models/embedded/attribute-item.model.js +1 -1
  9. package/dist/libraries/mongo/models/embedded/attribute-item.model.js.map +1 -1
  10. package/dist/libraries/mongo/models/embedded/price-breakdown.model.js +1 -1
  11. package/dist/libraries/mongo/models/embedded/price-breakdown.model.js.map +1 -1
  12. package/dist/libraries/mongo/models/embedded/product-nutrition.model.js +2 -2
  13. package/dist/libraries/mongo/models/embedded/product-nutrition.model.js.map +1 -1
  14. package/dist/libraries/mongo/models/embedded/replacement-order.model.d.ts +3 -3
  15. package/dist/libraries/mongo/models/embedded/replacement-order.model.js +6 -6
  16. package/dist/libraries/mongo/models/embedded/replacement-order.model.js.map +1 -1
  17. package/dist/libraries/mongo/models/filter-container.model.d.ts +0 -1
  18. package/dist/libraries/mongo/models/filter-container.model.js +0 -5
  19. package/dist/libraries/mongo/models/filter-container.model.js.map +1 -1
  20. package/dist/libraries/mongo/models/list-container.model.d.ts +0 -1
  21. package/dist/libraries/mongo/models/list-container.model.js +0 -5
  22. package/dist/libraries/mongo/models/list-container.model.js.map +1 -1
  23. package/dist/libraries/mongo/models/product.model.d.ts +2 -1
  24. package/dist/libraries/mongo/models/product.model.js +19 -10
  25. package/dist/libraries/mongo/models/product.model.js.map +1 -1
  26. package/dist/libraries/mongo/models/providers/regular-order.model.d.ts +0 -1
  27. package/dist/libraries/mongo/models/providers/regular-order.model.js +0 -5
  28. package/dist/libraries/mongo/models/providers/regular-order.model.js.map +1 -1
  29. package/dist/libraries/mongo/models/ticket.model.js +1 -0
  30. package/dist/libraries/mongo/models/ticket.model.js.map +1 -1
  31. package/dist/libraries/trpc/middlewares/auth.js +1 -1
  32. package/dist/libraries/trpc/middlewares/auth.js.map +1 -1
  33. package/dist/utilities/enum.d.ts +0 -57
  34. package/dist/utilities/enum.js +2 -60
  35. package/dist/utilities/enum.js.map +1 -1
  36. package/dist/utilities/validation/common-validation.d.ts +218 -6
  37. package/dist/utilities/validation/common-validation.js +3 -4
  38. package/dist/utilities/validation/common-validation.js.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/libraries/event/EventEnums.d.ts +0 -3
  41. package/dist/libraries/event/EventEnums.js +0 -8
  42. package/dist/libraries/event/EventEnums.js.map +0 -1
  43. package/dist/libraries/event/events/admin-logs-event.d.ts +0 -25
  44. package/dist/libraries/event/events/admin-logs-event.js +0 -23
  45. package/dist/libraries/event/events/admin-logs-event.js.map +0 -1
  46. package/dist/utilities/common/logs-common-methods.d.ts +0 -15
  47. package/dist/utilities/common/logs-common-methods.js +0 -33
  48. package/dist/utilities/common/logs-common-methods.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"common-validation.js","sourceRoot":"/","sources":["utilities/validation/common-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { DTO, ZodValidation } from './global-validation';\nimport { GeoLocationType, HolidayWorkStatus, WeekDay, WorkStatus } from '../enum';\n\n/**\n * Define MongoDB query schema (fields + operators) using lazy evaluation to avoid circular dependency\n */\nconst MongoQuerySchema: z.ZodType<Record<string, any>> = z.lazy(() =>\n\tz.record(z.union([z.any(), MongoOperatorsSchema]))\n);\n\n/**\n * Define allowed MongoDB query operators\n */\nconst MongoOperatorsSchema = z.object({\n\t$eq: z.any().optional(),\n\t$ne: z.any().optional(),\n\t$gt: z.any().optional(),\n\t$gte: z.any().optional(),\n\t$lt: z.any().optional(),\n\t$lte: z.any().optional(),\n\t$in: z.array(z.any()).optional(),\n\t$nin: z.array(z.any()).optional(),\n\t$exists: z.boolean().optional(),\n\t$regex: z.string().optional(),\n\t$and: z.array(MongoQuerySchema).optional(),\n\t$or: z.array(MongoQuerySchema).optional(),\n\t$not: MongoQuerySchema.optional(),\n\t$nor: z.array(MongoQuerySchema).optional(),\n});\n\nconst sortSchema = z.record(z.string(), z.union([z.literal(1), z.literal(-1)]));\n\nconst populateSchema: z.ZodType<any> = z.lazy(() =>\n\tz.object({\n\t\tpath: z.string(), // required\n\t\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\t\tmatch: z.record(z.string(), z.any()).optional(),\n\t\toptions: z\n\t\t\t.object({\n\t\t\t\tsort: sortSchema.optional(),\n\t\t\t\tlimit: z.number().optional(),\n\t\t\t\tskip: z.number().optional(),\n\t\t\t})\n\t\t\t.optional(),\n\t\tpopulate: z.union([populateSchema, z.array(populateSchema)]).optional(),\n\t})\n);\n\n/**\n * Define the filter schema using MongoQuerySchema\n */\nexport const FilterSchema = z\n\t.object({\n\t\tsize: z\n\t\t\t.number()\n\t\t\t.min(1, { message: 'Size must be greater than 0.' })\n\t\t\t.max(100, { message: 'Size cannot exceed 100.' })\n\t\t\t.optional()\n\t\t\t.default(10),\n\t\tpage: z.number().min(1, { message: 'Page number must be at least 1.' }).optional().default(1),\n\t\tsort: sortSchema.optional(),\n\t\tquery: MongoQuerySchema.optional(),\n\t\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\t\tpopulate: z.union([populateSchema, z.array(populateSchema)]).optional(),\n\t\tsearch: z.object({ searchKey: z.string(), searchFields: z.array(z.string()).optional() }).optional(),\n\t})\n\t.optional();\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type FilterDTO = z.infer<typeof FilterSchema>;\n\n/**\n * Define String schema\n */\nexport const StringSchema = z.string().min(1, 'String cannot be empty').max(255, 'String is too long');\n\n/**\n * Common address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * address: AddressSchema\n * });\n * ```\n */\nexport const AddressSchema = z.object({\n\taddress: ZodValidation.string('Address'),\n\tdescription: ZodValidation.string('Description').optional(),\n\tcity: ZodValidation.string('City'),\n\tstate: ZodValidation.string('State'),\n\tcountry: ZodValidation.string('Country'),\n\tlocation: z.object({\n\t\ttype: ZodValidation.enumType(GeoLocationType, 'GeoLocationType').default(GeoLocationType.POINT),\n\t\tcoordinates: z.tuple([\n\t\t\tZodValidation.number('Longitude', { min: -180, max: 180 }),\n\t\t\tZodValidation.number('Latitude', { min: -90, max: 90 }),\n\t\t]),\n\t}),\n\tlatitude: ZodValidation.number('Latitude', { min: -90, max: 90 }),\n\tlongitude: ZodValidation.number('Longitude', { min: -180, max: 180 }),\n\tzone: ZodValidation.objectId('Zone').optional(),\n});\nexport type AddressDTO = DTO<typeof AddressSchema>;\n\n/**\n * Common user address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * address: UserAddressSchema\n * });\n * ```\n */\nexport const UserAddressSchema = AddressSchema.extend({\n\taddressLabel: ZodValidation.string('Address Label'),\n\tapartment: ZodValidation.string('Apartment'),\n\tbuildingName: ZodValidation.string('Building Name'),\n\tdeliveryOption: ZodValidation.string('Delivery Option').optional(),\n\tinstructions: ZodValidation.string('Instructions').optional(),\n});\nexport type UserAddressDTO = DTO<typeof UserAddressSchema>;\n\n/**\n * Common courier address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const courierAddressSchema = z.object({\n * name: z.string(),\n * address: courierAddressSchema\n * });\n * ```\n */\nexport const CourierAddressSchema = UserAddressSchema.extend({\n\tname: ZodValidation.string('Name'),\n\tphoneNumber: ZodValidation.string('Phone Number'),\n});\nexport type CourierAddressDTO = DTO<typeof CourierAddressSchema>;\n\n/**\n * Common duration validation schema that can be reused across models.\n * Provides validation for duration fields.\n *\n * @example\n * ```typescript\n * const subscriptionSchema = z.object({\n * fee: z.number(),\n * duration: DurationSchema\n * });\n * ```\n */\nexport const DurationSchema = z.object({\n\tstart: ZodValidation.date('Start'),\n\tend: ZodValidation.date('End').optional(),\n});\n\n/**\n * Common Work Hour validation schema that can be reused across models.\n * Provides validation for workHourSetting fields.\n *\n * @example\n * ```typescript\n * const settingSchema = z.object({\n * vat: z.number(),\n * workHourSetting: WorkHourSettingSchema\n * });\n * ```\n */\nconst StartEndTimeSchema = z.object({\n\tstart: ZodValidation.string('Start'),\n\tend: ZodValidation.string('End'),\n});\n\nexport const NormalHourSchema = z.object({\n\tday: ZodValidation.enumType(WeekDay, 'Day'),\n\tstatus: ZodValidation.enumType(WorkStatus, 'Status'),\n\topeningHours: ZodValidation.array(StartEndTimeSchema).default([]),\n});\n\nexport const HolidayHourSchema = z.object({\n\tdate: ZodValidation.date('Date'),\n\tstatus: ZodValidation.enumType(HolidayWorkStatus, 'Status'),\n\tclosingHour: StartEndTimeSchema,\n});\n\nexport const WorkHourSettingSchema = z.object({\n\tnormalHours: ZodValidation.array(NormalHourSchema).default([]),\n\tholidayHours: ZodValidation.array(HolidayHourSchema).default([]),\n});\n\n/**\n * Schema for validating user login credentials.\n * This schema ensures that the provided email and password meet the required validation rules.\n *\n * @example\n * ```typescript\n * const credentials = {\n * email: 'user@example.com',\n * password: 'securePassword123',\n * };\n * ```\n */\nexport const LoginSchema = z.object({\n\temail: ZodValidation.email('Email', {\n\t\trequiredMessage: 'Please enter a valid email address.',\n\t\tinvalidMessage: 'Please enter a valid email address.',\n\t}),\n\tpassword: ZodValidation.string('Password', { requiredMessage: 'Please enter password' }),\n});\nexport type LoginDTO = DTO<typeof LoginSchema>;\n\nconst metadataSchema = z.object({\n\tpage: ZodValidation.number(),\n\tsize: ZodValidation.number(),\n\ttotalElements: ZodValidation.number(),\n\ttotalPages: ZodValidation.number(),\n});\nexport const createPaginatedSchema = <T>(documentSchema: z.ZodSchema<T>) =>\n\tz.object({\n\t\tmetadata: metadataSchema.optional(),\n\t\tdocuments: ZodValidation.array(documentSchema),\n\t});\n\nexport const createResponseSchema = <T>(schema: z.ZodSchema<T>) =>\n\tz.object({\n\t\tsuccess: ZodValidation.boolean(),\n\t\tmessage: ZodValidation.string(),\n\t\tdata: z.union([createPaginatedSchema(schema), schema]).optional(),\n\t});\n\n/**\n * Schema for validating token data, typically used for authentication.\n * This schema ensures that the provided access token and refresh token are valid strings.\n *\n * @example\n * ```typescript\n * const tokens = {\n * accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n * refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n * };\n * ```\n */\nexport const TokenSchema = z.object({\n\taccessToken: ZodValidation.string('AccessToken'),\n\trefreshToken: ZodValidation.string('RefreshToken'),\n});\n\n/**\n * Schema validation for sorting order\n */\nexport const UpdateSortingOrderSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tnewPosition: ZodValidation.number('newPosition'),\n});\nexport type UpdateSortingOrderDTO = DTO<typeof UpdateSortingOrderSchema>;\n\n/**\n * Schema validation for delete\n */\nexport const DeleteSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tsoftDelete: ZodValidation.boolean('Soft Delete').default(true),\n});\nexport type DeleteDTO = DTO<typeof DeleteSchema>;\n\n/**\n * Schema validation for Id\n */\nexport const IdSchema = ZodValidation.objectId();\n\n/**\n * Schema validation get by id\n */\nexport const GetByIdInputSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\tpopulate: z.union([populateSchema, z.array(populateSchema)]).optional(),\n});\nexport type GetByIdInputDTO = DTO<typeof GetByIdInputSchema>;\n\nconst ShareableLinkSchema = z.object({\n\tlink: ZodValidation.url(),\n});\n\nexport const ShareableLinkResponseSchema = createResponseSchema(ShareableLinkSchema);\nexport type ShareableLinkDTO = DTO<typeof ShareableLinkSchema>;\n"]}
1
+ {"version":3,"file":"common-validation.js","sourceRoot":"/","sources":["utilities/validation/common-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z, ZodSchema } from 'zod';\nimport { DTO, ZodValidation } from './global-validation';\nimport { GeoLocationType, HolidayWorkStatus, WeekDay, WorkStatus } from '../enum';\n\n/**\n * Define MongoDB query schema (fields + operators) using lazy evaluation to avoid circular dependency\n */\nconst MongoQuerySchema: z.ZodType<Record<string, any>> = z.lazy(() =>\n\tz.record(z.union([z.any(), MongoOperatorsSchema]))\n);\n\n/**\n * Define allowed MongoDB query operators\n */\nconst MongoOperatorsSchema = z.object({\n\t$eq: z.any().optional(),\n\t$ne: z.any().optional(),\n\t$gt: z.any().optional(),\n\t$gte: z.any().optional(),\n\t$lt: z.any().optional(),\n\t$lte: z.any().optional(),\n\t$in: z.array(z.any()).optional(),\n\t$nin: z.array(z.any()).optional(),\n\t$exists: z.boolean().optional(),\n\t$regex: z.string().optional(),\n\t$and: z.array(MongoQuerySchema).optional(),\n\t$or: z.array(MongoQuerySchema).optional(),\n\t$not: MongoQuerySchema.optional(),\n\t$nor: z.array(MongoQuerySchema).optional(),\n});\n\nconst sortSchema = z.record(z.string(), z.union([z.literal(1), z.literal(-1)]));\n\nconst populateSchema = z.object({\n\tpath: z.string(), // required\n\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\tmatch: z.record(z.string(), z.any()).optional(),\n\toptions: z\n\t\t.object({\n\t\t\tsort: sortSchema.optional(),\n\t\t\tlimit: z.number().optional(),\n\t\t\tskip: z.number().optional(),\n\t\t})\n\t\t.optional(),\n});\n\n/**\n * Define the filter schema using MongoQuerySchema\n */\nexport const FilterSchema = z\n\t.object({\n\t\tsize: z\n\t\t\t.number()\n\t\t\t.min(1, { message: 'Size must be greater than 0.' })\n\t\t\t.max(100, { message: 'Size cannot exceed 100.' })\n\t\t\t.optional()\n\t\t\t.default(10),\n\t\tpage: z.number().min(1, { message: 'Page number must be at least 1.' }).optional().default(1),\n\t\tsort: sortSchema.optional(),\n\t\tquery: MongoQuerySchema.optional(),\n\t\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\t\tpopulate: z.union([populateSchema, z.array(populateSchema)]).optional(),\n\t\tsearch: z.object({ searchKey: z.string(), searchFields: z.array(z.string()).optional() }).optional(),\n\t})\n\t.optional();\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type FilterDTO = z.infer<typeof FilterSchema>;\n\n/**\n * Define String schema\n */\nexport const StringSchema = z.string().min(1, 'String cannot be empty').max(255, 'String is too long');\n\n/**\n * Common address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * address: AddressSchema\n * });\n * ```\n */\nexport const AddressSchema = z.object({\n\taddress: ZodValidation.string('Address'),\n\tdescription: ZodValidation.string('Description').optional(),\n\tcity: ZodValidation.string('City'),\n\tstate: ZodValidation.string('State'),\n\tcountry: ZodValidation.string('Country'),\n\tlocation: z.object({\n\t\ttype: ZodValidation.enumType(GeoLocationType, 'GeoLocationType').default(GeoLocationType.POINT),\n\t\tcoordinates: z.tuple([\n\t\t\tZodValidation.number('Longitude', { min: -180, max: 180 }),\n\t\t\tZodValidation.number('Latitude', { min: -90, max: 90 }),\n\t\t]),\n\t}),\n\tlatitude: ZodValidation.number('Latitude', { min: -90, max: 90 }),\n\tlongitude: ZodValidation.number('Longitude', { min: -180, max: 180 }),\n\tzone: ZodValidation.objectId('Zone').optional(),\n});\nexport type AddressDTO = DTO<typeof AddressSchema>;\n\n/**\n * Common user address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * address: UserAddressSchema\n * });\n * ```\n */\nexport const UserAddressSchema = AddressSchema.extend({\n\taddressLabel: ZodValidation.string('Address Label'),\n\tapartment: ZodValidation.string('Apartment'),\n\tbuildingName: ZodValidation.string('Building Name'),\n\tdeliveryOption: ZodValidation.string('Delivery Option').optional(),\n\tinstructions: ZodValidation.string('Instructions').optional(),\n});\nexport type UserAddressDTO = DTO<typeof UserAddressSchema>;\n\n/**\n * Common courier address validation schema that can be reused across models.\n * Provides validation for address-related fields.\n *\n * @example\n * ```typescript\n * const courierAddressSchema = z.object({\n * name: z.string(),\n * address: courierAddressSchema\n * });\n * ```\n */\nexport const CourierAddressSchema = UserAddressSchema.extend({\n\tname: ZodValidation.string('Name'),\n\tphoneNumber: ZodValidation.string('Phone Number'),\n});\nexport type CourierAddressDTO = DTO<typeof CourierAddressSchema>;\n\n/**\n * Common duration validation schema that can be reused across models.\n * Provides validation for duration fields.\n *\n * @example\n * ```typescript\n * const subscriptionSchema = z.object({\n * fee: z.number(),\n * duration: DurationSchema\n * });\n * ```\n */\nexport const DurationSchema = z.object({\n\tstart: ZodValidation.date('Start'),\n\tend: ZodValidation.date('End').optional(),\n});\n\n/**\n * Common Work Hour validation schema that can be reused across models.\n * Provides validation for workHourSetting fields.\n *\n * @example\n * ```typescript\n * const settingSchema = z.object({\n * vat: z.number(),\n * workHourSetting: WorkHourSettingSchema\n * });\n * ```\n */\nconst StartEndTimeSchema = z.object({\n\tstart: ZodValidation.string('Start'),\n\tend: ZodValidation.string('End'),\n});\n\nexport const NormalHourSchema = z.object({\n\tday: ZodValidation.enumType(WeekDay, 'Day'),\n\tstatus: ZodValidation.enumType(WorkStatus, 'Status'),\n\topeningHours: ZodValidation.array(StartEndTimeSchema).default([]),\n});\n\nexport const HolidayHourSchema = z.object({\n\tdate: ZodValidation.date('Date'),\n\tstatus: ZodValidation.enumType(HolidayWorkStatus, 'Status'),\n\tclosingHour: StartEndTimeSchema,\n});\n\nexport const WorkHourSettingSchema = z.object({\n\tnormalHours: ZodValidation.array(NormalHourSchema).default([]),\n\tholidayHours: ZodValidation.array(HolidayHourSchema).default([]),\n});\n\n/**\n * Schema for validating user login credentials.\n * This schema ensures that the provided email and password meet the required validation rules.\n *\n * @example\n * ```typescript\n * const credentials = {\n * email: 'user@example.com',\n * password: 'securePassword123',\n * };\n * ```\n */\nexport const LoginSchema = z.object({\n\temail: ZodValidation.email('Email', {\n\t\trequiredMessage: 'Please enter a valid email address.',\n\t\tinvalidMessage: 'Please enter a valid email address.',\n\t}),\n\tpassword: ZodValidation.string('Password', { requiredMessage: 'Please enter password' }),\n});\nexport type LoginDTO = DTO<typeof LoginSchema>;\n\nconst metadataSchema = z.object({\n\tpage: ZodValidation.number(),\n\tsize: ZodValidation.number(),\n\ttotalElements: ZodValidation.number(),\n\ttotalPages: ZodValidation.number(),\n});\nexport const createPaginatedSchema = <T>(documentSchema: z.ZodSchema<T>) =>\n\tz.object({\n\t\tmetadata: metadataSchema.optional(),\n\t\tdocuments: ZodValidation.array(documentSchema),\n\t});\n\nexport const createResponseSchema = <T>(schema: z.ZodSchema<T>) =>\n\tz.object({\n\t\tsuccess: ZodValidation.boolean(),\n\t\tmessage: ZodValidation.string(),\n\t\tdata: z.union([createPaginatedSchema(schema), schema]).optional(),\n\t});\n\n/**\n * Schema for validating token data, typically used for authentication.\n * This schema ensures that the provided access token and refresh token are valid strings.\n *\n * @example\n * ```typescript\n * const tokens = {\n * accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n * refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n * };\n * ```\n */\nexport const TokenSchema = z.object({\n\taccessToken: ZodValidation.string('AccessToken'),\n\trefreshToken: ZodValidation.string('RefreshToken'),\n});\n\n/**\n * Schema validation for sorting order\n */\nexport const UpdateSortingOrderSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tnewPosition: ZodValidation.number('newPosition'),\n});\nexport type UpdateSortingOrderDTO = DTO<typeof UpdateSortingOrderSchema>;\n\n/**\n * Schema validation for delete\n */\nexport const DeleteSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tsoftDelete: ZodValidation.boolean('Soft Delete').default(true),\n});\nexport type DeleteDTO = DTO<typeof DeleteSchema>;\n\n/**\n * Schema validation for Id\n */\nexport const IdSchema = ZodValidation.objectId();\n\n/**\n * Schema validation get by id\n */\nexport const GetByIdInputSchema = z.object({\n\t_id: ZodValidation.objectId('_id'),\n\tselect: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional(),\n\tpopulate: z.union([populateSchema, z.array(populateSchema)]).optional(),\n});\nexport type GetByIdInputDTO = DTO<typeof GetByIdInputSchema>;\n\n\nconst ShareableLinkSchema = z.object({\n\tlink: ZodValidation.url()\n});\n\nexport const ShareableLinkResponseSchema = createResponseSchema(ShareableLinkSchema);\nexport type ShareableLinkDTO = DTO<typeof ShareableLinkSchema>;"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.0.122-auth-2",
3
+ "version": "1.0.122-test",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",
@@ -1,3 +0,0 @@
1
- export declare enum PublishEventEnums {
2
- ADMIN_ACTIVITY_LOGS_EVENT = "admin_activity_logs_event"
3
- }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PublishEventEnums = void 0;
4
- var PublishEventEnums;
5
- (function (PublishEventEnums) {
6
- PublishEventEnums["ADMIN_ACTIVITY_LOGS_EVENT"] = "admin_activity_logs_event";
7
- })(PublishEventEnums || (exports.PublishEventEnums = PublishEventEnums = {}));
8
- //# sourceMappingURL=EventEnums.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IACzB,4EAAuD,CAAA;AAC3D,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B","sourcesContent":["export enum PublishEventEnums {\n ADMIN_ACTIVITY_LOGS_EVENT = 'admin_activity_logs_event'\n}"]}
@@ -1,25 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseEvent } from '../BaseEvent';
3
- import { AdminLogsUpdatedFieldsType } from '../../../utilities/enum';
4
- import { DTO } from '../../../utilities/validation/global-validation';
5
- declare const ActivityLogValidationSchema: z.ZodObject<{
6
- admin: 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>]>;
7
- updatedField: z.ZodNativeEnum<typeof AdminLogsUpdatedFieldsType>;
8
- oldDocument: z.ZodAny;
9
- newDocument: z.ZodAny;
10
- }, "strict", z.ZodTypeAny, {
11
- admin: import("mongoose").Types.ObjectId;
12
- updatedField: AdminLogsUpdatedFieldsType;
13
- oldDocument?: any;
14
- newDocument?: any;
15
- }, {
16
- admin: string | import("mongoose").Types.ObjectId;
17
- updatedField: AdminLogsUpdatedFieldsType;
18
- oldDocument?: any;
19
- newDocument?: any;
20
- }>;
21
- type CreateActivityLogDTO = DTO<typeof ActivityLogValidationSchema>;
22
- export declare class AdminActivityLogsEvent extends BaseEvent<Record<string, unknown>> {
23
- constructor(payload: CreateActivityLogDTO);
24
- }
25
- export {};
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdminActivityLogsEvent = void 0;
4
- const zod_1 = require("zod");
5
- const BaseEvent_1 = require("../BaseEvent");
6
- const EventEnums_1 = require("../EventEnums");
7
- const enum_1 = require("../../../utilities/enum");
8
- const global_validation_1 = require("../../../utilities/validation/global-validation");
9
- const baseFields = {
10
- admin: global_validation_1.ZodValidation.objectId('Admin'),
11
- updatedField: global_validation_1.ZodValidation.enumType(enum_1.AdminLogsUpdatedFieldsType, 'Updated Field'),
12
- oldDocument: zod_1.z.any(),
13
- newDocument: zod_1.z.any(),
14
- };
15
- const schemaBuilder = (0, global_validation_1.createSchemaBuilder)(baseFields);
16
- const { BaseSchema: ActivityLogValidationSchema, } = schemaBuilder.getAllSchemas({ createdAt: true });
17
- class AdminActivityLogsEvent extends BaseEvent_1.BaseEvent {
18
- constructor(payload) {
19
- super(EventEnums_1.PublishEventEnums.ADMIN_ACTIVITY_LOGS_EVENT, payload);
20
- }
21
- }
22
- exports.AdminActivityLogsEvent = AdminActivityLogsEvent;
23
- //# sourceMappingURL=admin-logs-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-logs-event.js","sourceRoot":"/","sources":["libraries/event/events/admin-logs-event.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAAyC;AACzC,8CAAkD;AAClD,kDAAqE;AACrE,uFAA0G;AAE1G,MAAM,UAAU,GAAG;IAClB,KAAK,EAAE,iCAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;IACtC,YAAY,EAAE,iCAAa,CAAC,QAAQ,CAAC,iCAA0B,EAAE,eAAe,CAAC;IACjF,WAAW,EAAE,OAAC,CAAC,GAAG,EAAE;IACpB,WAAW,EAAE,OAAC,CAAC,GAAG,EAAE;CACpB,CAAC;AACF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AACtD,MAAM,EACL,UAAU,EAAE,2BAA2B,GACvC,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAIrD,MAAa,sBAAuB,SAAQ,qBAAkC;IAC7E,YAAY,OAA6B;QACxC,KAAK,CAAC,8BAAiB,CAAC,yBAAyB,EAAE,OAAkC,CAAC,CAAC;IACxF,CAAC;CACD;AAJD,wDAIC","sourcesContent":["import { z } from 'zod';\nimport { BaseEvent } from '../BaseEvent';\nimport { PublishEventEnums } from '../EventEnums';\nimport { AdminLogsUpdatedFieldsType } from '../../../utilities/enum';\nimport { createSchemaBuilder, DTO, ZodValidation } from '../../../utilities/validation/global-validation';\n\nconst baseFields = {\n\tadmin: ZodValidation.objectId('Admin'),\n\tupdatedField: ZodValidation.enumType(AdminLogsUpdatedFieldsType, 'Updated Field'),\n\toldDocument: z.any(),\n\tnewDocument: z.any(),\n};\nconst schemaBuilder = createSchemaBuilder(baseFields);\nconst {\n\tBaseSchema: ActivityLogValidationSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\ntype CreateActivityLogDTO = DTO<typeof ActivityLogValidationSchema>;\n\nexport class AdminActivityLogsEvent extends BaseEvent<Record<string, unknown>> {\n\tconstructor(payload: CreateActivityLogDTO) {\n\t\tsuper(PublishEventEnums.ADMIN_ACTIVITY_LOGS_EVENT, payload as Record<string, unknown>);\n\t}\n}"]}
@@ -1,15 +0,0 @@
1
- export declare function getChangedFields<T extends Record<string, any>>(oldDoc: T, newDoc: T, payload?: Partial<T>): Record<keyof T, {
2
- old: any;
3
- new: any;
4
- }>;
5
- export declare function filterRelevantChanges<T>(allChanges: Record<string, {
6
- old: any;
7
- new: any;
8
- }>, payload: Partial<T>): Record<string, {
9
- old: any;
10
- new: any;
11
- }>;
12
- export declare function extractChangedDocument(changes: Record<string, {
13
- old: any;
14
- new: any;
15
- }>, type: 'old' | 'new'): Record<string, any>;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getChangedFields = getChangedFields;
4
- exports.filterRelevantChanges = filterRelevantChanges;
5
- exports.extractChangedDocument = extractChangedDocument;
6
- function getChangedFields(oldDoc, newDoc, payload) {
7
- const changes = {};
8
- const oldObj = typeof oldDoc.toObject === 'function' ? oldDoc.toObject() : oldDoc;
9
- const newObj = typeof newDoc.toObject === 'function' ? newDoc.toObject() : newDoc;
10
- const keysToCheck = payload
11
- ? Object.keys(payload)
12
- : Array.from(new Set([...Object.keys(oldObj), ...Object.keys(newObj)]));
13
- for (const key of keysToCheck) {
14
- const oldValue = oldObj[key];
15
- const newValue = newObj[key];
16
- if (payload || JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
17
- changes[key] = { old: oldValue, new: newValue };
18
- }
19
- }
20
- return changes;
21
- }
22
- function filterRelevantChanges(allChanges, payload) {
23
- return Object.keys(payload).reduce((acc, key) => {
24
- if (allChanges[key]) {
25
- acc[key] = allChanges[key];
26
- }
27
- return acc;
28
- }, {});
29
- }
30
- function extractChangedDocument(changes, type) {
31
- return Object.fromEntries(Object.entries(changes).map(([key, value]) => [key, value[type]]));
32
- }
33
- //# sourceMappingURL=logs-common-methods.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs-common-methods.js","sourceRoot":"/","sources":["utilities/common/logs-common-methods.ts"],"names":[],"mappings":";;AAGC,4CAwBC;AAMD,sDAUC;AAKD,wDAOC;AApDD,SAAgB,gBAAgB,CAC/B,MAAS,EACT,MAAS,EACT,OAAoB;IAEpB,MAAM,OAAO,GAAG,EAA6C,CAAC;IAE9D,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAElF,MAAM,WAAW,GAAG,OAAO;QAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,OAAO,CAAC,GAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC5D,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAMD,SAAgB,qBAAqB,CACpC,UAAkD,EAClD,OAAmB;IAEnB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAA4C,CAAC,CAAC;AAClD,CAAC;AAKD,SAAgB,sBAAsB,CACrC,OAA+C,EAC/C,IAAmB;IAEnB,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CACjE,CAAC;AACH,CAAC","sourcesContent":["/**\n\t * Returns changed fields between two objects (shallow comparison).\n\t */\n\texport function getChangedFields<T extends Record<string, any>>(\n\t\toldDoc: T,\n\t\tnewDoc: T,\n\t\tpayload?: Partial<T>\n\t): Record<keyof T, { old: any; new: any }> {\n\t\tconst changes = {} as Record<keyof T, { old: any; new: any }>;\n\n\t\tconst oldObj = typeof oldDoc.toObject === 'function' ? oldDoc.toObject() : oldDoc;\n\t\tconst newObj = typeof newDoc.toObject === 'function' ? newDoc.toObject() : newDoc;\n\n\t\tconst keysToCheck = payload\n\t\t\t? Object.keys(payload)\n\t\t\t: Array.from(new Set([...Object.keys(oldObj), ...Object.keys(newObj)]));\n\n\t\tfor (const key of keysToCheck) {\n\t\t\tconst oldValue = oldObj[key];\n\t\t\tconst newValue = newObj[key];\n\n\t\t\tif (payload || JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\n\t\t\t\tchanges[key as keyof T] = { old: oldValue, new: newValue };\n\t\t\t}\n\t\t}\n\n\t\treturn changes;\n\t}\n\n\n\t/**\n\t * Filters changed fields to only those that exist in the payload.\n\t */\n\texport function filterRelevantChanges<T>(\n\t\tallChanges: Record<string, { old: any; new: any }>,\n\t\tpayload: Partial<T>\n\t): Record<string, { old: any; new: any }> {\n\t\treturn Object.keys(payload).reduce((acc, key) => {\n\t\t\tif (allChanges[key]) {\n\t\t\t\tacc[key] = allChanges[key];\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} as Record<string, { old: any; new: any }>);\n\t}\n\n\t/**\n\t * Extracts either 'old' or 'new' values from the changes object.\n\t */\n\texport function extractChangedDocument(\n\t\tchanges: Record<string, { old: any; new: any }>,\n\t\ttype: 'old' | 'new'\n\t): Record<string, any> {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(changes).map(([key, value]) => [key, value[type]])\n\t\t);\n\t}\n"]}