@blackcode_sa/metaestetics-api 1.7.38 → 1.7.40
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/admin/index.d.mts +67 -3
- package/dist/admin/index.d.ts +67 -3
- package/dist/index.d.mts +354 -14
- package/dist/index.d.ts +354 -14
- package/dist/index.js +180 -150
- package/dist/index.mjs +177 -147
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/types/appointment/index.ts +75 -3
- package/src/validations/appointment.schema.ts +52 -1
package/dist/index.js
CHANGED
|
@@ -244,7 +244,7 @@ __export(index_exports, {
|
|
|
244
244
|
module.exports = __toCommonJS(index_exports);
|
|
245
245
|
|
|
246
246
|
// src/validations/appointment.schema.ts
|
|
247
|
-
var
|
|
247
|
+
var import_zod3 = require("zod");
|
|
248
248
|
|
|
249
249
|
// src/types/appointment/index.ts
|
|
250
250
|
var AppointmentStatus = /* @__PURE__ */ ((AppointmentStatus2) => {
|
|
@@ -512,140 +512,197 @@ var updateFilledDocumentDataSchema = import_zod.z.object({
|
|
|
512
512
|
status: filledDocumentStatusSchema.optional()
|
|
513
513
|
});
|
|
514
514
|
|
|
515
|
+
// src/backoffice/types/static/pricing.types.ts
|
|
516
|
+
var PricingMeasure = /* @__PURE__ */ ((PricingMeasure3) => {
|
|
517
|
+
PricingMeasure3["PER_ML"] = "per_ml";
|
|
518
|
+
PricingMeasure3["PER_ZONE"] = "per_zone";
|
|
519
|
+
PricingMeasure3["PER_AREA"] = "per_area";
|
|
520
|
+
PricingMeasure3["PER_SESSION"] = "per_session";
|
|
521
|
+
PricingMeasure3["PER_TREATMENT"] = "per_treatment";
|
|
522
|
+
PricingMeasure3["PER_PACKAGE"] = "per_package";
|
|
523
|
+
return PricingMeasure3;
|
|
524
|
+
})(PricingMeasure || {});
|
|
525
|
+
var Currency = /* @__PURE__ */ ((Currency2) => {
|
|
526
|
+
Currency2["EUR"] = "EUR";
|
|
527
|
+
Currency2["USD"] = "USD";
|
|
528
|
+
Currency2["GBP"] = "GBP";
|
|
529
|
+
Currency2["CHF"] = "CHF";
|
|
530
|
+
Currency2["AUD"] = "AUD";
|
|
531
|
+
return Currency2;
|
|
532
|
+
})(Currency || {});
|
|
533
|
+
|
|
534
|
+
// src/validations/media.schema.ts
|
|
535
|
+
var import_zod2 = require("zod");
|
|
536
|
+
var mediaResourceSchema = import_zod2.z.union([
|
|
537
|
+
import_zod2.z.string().url(),
|
|
538
|
+
import_zod2.z.instanceof(File),
|
|
539
|
+
import_zod2.z.instanceof(Blob)
|
|
540
|
+
]);
|
|
541
|
+
|
|
515
542
|
// src/validations/appointment.schema.ts
|
|
516
543
|
var MIN_STRING_LENGTH = 1;
|
|
517
544
|
var MAX_STRING_LENGTH = 1024;
|
|
518
545
|
var MAX_STRING_LENGTH_LONG = 4096;
|
|
519
546
|
var MAX_ARRAY_LENGTH = 100;
|
|
520
|
-
var appointmentStatusSchema =
|
|
521
|
-
var paymentStatusSchema =
|
|
522
|
-
var mediaTypeSchema =
|
|
523
|
-
var appointmentMediaItemSchema =
|
|
524
|
-
id:
|
|
547
|
+
var appointmentStatusSchema = import_zod3.z.nativeEnum(AppointmentStatus);
|
|
548
|
+
var paymentStatusSchema = import_zod3.z.nativeEnum(PaymentStatus);
|
|
549
|
+
var mediaTypeSchema = import_zod3.z.nativeEnum(MediaType);
|
|
550
|
+
var appointmentMediaItemSchema = import_zod3.z.object({
|
|
551
|
+
id: import_zod3.z.string().min(MIN_STRING_LENGTH, "Media item ID is required"),
|
|
525
552
|
type: mediaTypeSchema,
|
|
526
|
-
url:
|
|
527
|
-
fileName:
|
|
528
|
-
uploadedAt:
|
|
553
|
+
url: import_zod3.z.string().url("Media URL must be a valid URL"),
|
|
554
|
+
fileName: import_zod3.z.string().optional(),
|
|
555
|
+
uploadedAt: import_zod3.z.any().refine(
|
|
529
556
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
530
557
|
"uploadedAt must be a valid timestamp or Date object"
|
|
531
558
|
),
|
|
532
|
-
uploadedBy:
|
|
533
|
-
description:
|
|
534
|
-
});
|
|
535
|
-
var procedureExtendedInfoSchema =
|
|
536
|
-
id:
|
|
537
|
-
name:
|
|
538
|
-
description:
|
|
539
|
-
cost:
|
|
540
|
-
duration:
|
|
541
|
-
procedureFamily:
|
|
542
|
-
procedureCategoryId:
|
|
543
|
-
procedureCategoryName:
|
|
544
|
-
procedureSubCategoryId:
|
|
545
|
-
procedureSubCategoryName:
|
|
546
|
-
procedureTechnologyId:
|
|
547
|
-
procedureTechnologyName:
|
|
548
|
-
procedureProductBrandId:
|
|
549
|
-
procedureProductBrandName:
|
|
550
|
-
procedureProductId:
|
|
551
|
-
procedureProductName:
|
|
552
|
-
});
|
|
553
|
-
var linkedFormInfoSchema =
|
|
554
|
-
formId:
|
|
555
|
-
templateId:
|
|
556
|
-
templateVersion:
|
|
557
|
-
title:
|
|
558
|
-
isUserForm:
|
|
559
|
-
isRequired:
|
|
559
|
+
uploadedBy: import_zod3.z.string().min(MIN_STRING_LENGTH, "Uploaded by user ID is required"),
|
|
560
|
+
description: import_zod3.z.string().max(MAX_STRING_LENGTH, "Description too long").optional()
|
|
561
|
+
});
|
|
562
|
+
var procedureExtendedInfoSchema = import_zod3.z.object({
|
|
563
|
+
id: import_zod3.z.string().min(MIN_STRING_LENGTH),
|
|
564
|
+
name: import_zod3.z.string().min(MIN_STRING_LENGTH),
|
|
565
|
+
description: import_zod3.z.string(),
|
|
566
|
+
cost: import_zod3.z.number().min(0),
|
|
567
|
+
duration: import_zod3.z.number().min(0),
|
|
568
|
+
procedureFamily: import_zod3.z.any(),
|
|
569
|
+
procedureCategoryId: import_zod3.z.string(),
|
|
570
|
+
procedureCategoryName: import_zod3.z.string(),
|
|
571
|
+
procedureSubCategoryId: import_zod3.z.string(),
|
|
572
|
+
procedureSubCategoryName: import_zod3.z.string(),
|
|
573
|
+
procedureTechnologyId: import_zod3.z.string(),
|
|
574
|
+
procedureTechnologyName: import_zod3.z.string(),
|
|
575
|
+
procedureProductBrandId: import_zod3.z.string(),
|
|
576
|
+
procedureProductBrandName: import_zod3.z.string(),
|
|
577
|
+
procedureProductId: import_zod3.z.string(),
|
|
578
|
+
procedureProductName: import_zod3.z.string()
|
|
579
|
+
});
|
|
580
|
+
var linkedFormInfoSchema = import_zod3.z.object({
|
|
581
|
+
formId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Form ID is required"),
|
|
582
|
+
templateId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Template ID is required"),
|
|
583
|
+
templateVersion: import_zod3.z.number().int().positive("Template version must be a positive integer"),
|
|
584
|
+
title: import_zod3.z.string().min(MIN_STRING_LENGTH, "Form title is required"),
|
|
585
|
+
isUserForm: import_zod3.z.boolean(),
|
|
586
|
+
isRequired: import_zod3.z.boolean().optional(),
|
|
560
587
|
status: filledDocumentStatusSchema,
|
|
561
|
-
path:
|
|
562
|
-
submittedAt:
|
|
588
|
+
path: import_zod3.z.string().min(MIN_STRING_LENGTH, "Form path is required"),
|
|
589
|
+
submittedAt: import_zod3.z.any().refine(
|
|
563
590
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
564
591
|
"submittedAt must be a valid timestamp or Date object"
|
|
565
592
|
).optional(),
|
|
566
|
-
completedAt:
|
|
593
|
+
completedAt: import_zod3.z.any().refine(
|
|
567
594
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
568
595
|
"completedAt must be a valid timestamp or Date object"
|
|
569
596
|
).optional()
|
|
570
597
|
});
|
|
571
|
-
var patientReviewInfoSchema =
|
|
572
|
-
reviewId:
|
|
573
|
-
rating:
|
|
574
|
-
comment:
|
|
575
|
-
reviewedAt:
|
|
598
|
+
var patientReviewInfoSchema = import_zod3.z.object({
|
|
599
|
+
reviewId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Review ID is required"),
|
|
600
|
+
rating: import_zod3.z.number().min(1).max(5, "Rating must be between 1 and 5"),
|
|
601
|
+
comment: import_zod3.z.string().max(MAX_STRING_LENGTH_LONG, "Comment too long").optional(),
|
|
602
|
+
reviewedAt: import_zod3.z.any().refine(
|
|
576
603
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
577
604
|
"reviewedAt must be a valid timestamp or Date object"
|
|
578
605
|
)
|
|
579
606
|
});
|
|
580
|
-
var finalizedDetailsSchema =
|
|
581
|
-
by:
|
|
582
|
-
at:
|
|
607
|
+
var finalizedDetailsSchema = import_zod3.z.object({
|
|
608
|
+
by: import_zod3.z.string().min(MIN_STRING_LENGTH, "Finalized by user ID is required"),
|
|
609
|
+
at: import_zod3.z.any().refine(
|
|
583
610
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
584
611
|
"Finalized at must be a valid timestamp or Date object"
|
|
585
612
|
),
|
|
586
|
-
notes:
|
|
587
|
-
});
|
|
588
|
-
var
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
613
|
+
notes: import_zod3.z.string().max(MAX_STRING_LENGTH_LONG, "Finalization notes too long").optional()
|
|
614
|
+
});
|
|
615
|
+
var beforeAfterPerZoneSchema = import_zod3.z.object({
|
|
616
|
+
before: mediaResourceSchema.nullable(),
|
|
617
|
+
after: mediaResourceSchema.nullable(),
|
|
618
|
+
note: import_zod3.z.string().nullable()
|
|
619
|
+
});
|
|
620
|
+
var billingPerZoneSchema = import_zod3.z.object({
|
|
621
|
+
Product: import_zod3.z.string().min(MIN_STRING_LENGTH, "Product name is required"),
|
|
622
|
+
ProductId: import_zod3.z.string().nullable(),
|
|
623
|
+
Quantity: import_zod3.z.number().min(0, "Quantity must be non-negative"),
|
|
624
|
+
UnitOfMeasurement: import_zod3.z.nativeEnum(PricingMeasure),
|
|
625
|
+
UnitPrice: import_zod3.z.number().min(0, "Unit price must be non-negative"),
|
|
626
|
+
UnitCurency: import_zod3.z.nativeEnum(Currency),
|
|
627
|
+
Subtotal: import_zod3.z.number().min(0, "Subtotal must be non-negative"),
|
|
628
|
+
Note: import_zod3.z.string().nullable()
|
|
629
|
+
});
|
|
630
|
+
var finalBillingSchema = import_zod3.z.object({
|
|
631
|
+
subtotalAll: import_zod3.z.number().min(0, "Subtotal all must be non-negative"),
|
|
632
|
+
taxRate: import_zod3.z.number().min(0).max(1, "Tax rate must be between 0 and 1"),
|
|
633
|
+
taxPrice: import_zod3.z.number().min(0, "Tax price must be non-negative"),
|
|
634
|
+
finalPrice: import_zod3.z.number().min(0, "Final price must be non-negative"),
|
|
635
|
+
finalQuantity: import_zod3.z.number().min(0, "Final quantity must be non-negative"),
|
|
636
|
+
currency: import_zod3.z.nativeEnum(Currency),
|
|
637
|
+
unitOfMeasurement: import_zod3.z.nativeEnum(PricingMeasure)
|
|
638
|
+
});
|
|
639
|
+
var appointmentMetadataSchema = import_zod3.z.object({
|
|
640
|
+
selectedZones: import_zod3.z.array(import_zod3.z.string()).nullable(),
|
|
641
|
+
zonePhotos: import_zod3.z.record(import_zod3.z.string(), beforeAfterPerZoneSchema).nullable(),
|
|
642
|
+
zoneBilling: import_zod3.z.record(import_zod3.z.string(), billingPerZoneSchema).nullable(),
|
|
643
|
+
finalbilling: finalBillingSchema.nullable()
|
|
644
|
+
});
|
|
645
|
+
var createAppointmentSchema = import_zod3.z.object({
|
|
646
|
+
clinicBranchId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Clinic branch ID is required"),
|
|
647
|
+
practitionerId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Practitioner ID is required"),
|
|
648
|
+
patientId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Patient ID is required"),
|
|
649
|
+
procedureId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Procedure ID is required"),
|
|
650
|
+
appointmentStartTime: import_zod3.z.any().refine(
|
|
594
651
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
595
652
|
"Appointment start time must be a valid timestamp or Date object"
|
|
596
653
|
),
|
|
597
|
-
appointmentEndTime:
|
|
654
|
+
appointmentEndTime: import_zod3.z.any().refine(
|
|
598
655
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
599
656
|
"Appointment end time must be a valid timestamp or Date object"
|
|
600
657
|
),
|
|
601
|
-
cost:
|
|
602
|
-
currency:
|
|
603
|
-
patientNotes:
|
|
658
|
+
cost: import_zod3.z.number().min(0, "Cost must be a non-negative number"),
|
|
659
|
+
currency: import_zod3.z.string().min(1, "Currency is required"),
|
|
660
|
+
patientNotes: import_zod3.z.string().max(MAX_STRING_LENGTH, "Patient notes too long").nullable().optional(),
|
|
604
661
|
initialStatus: appointmentStatusSchema,
|
|
605
662
|
initialPaymentStatus: paymentStatusSchema.optional().default("unpaid" /* UNPAID */)
|
|
606
663
|
}).refine((data) => data.appointmentEndTime > data.appointmentStartTime, {
|
|
607
664
|
message: "Appointment end time must be after start time",
|
|
608
665
|
path: ["appointmentEndTime"]
|
|
609
666
|
});
|
|
610
|
-
var updateAppointmentSchema =
|
|
667
|
+
var updateAppointmentSchema = import_zod3.z.object({
|
|
611
668
|
status: appointmentStatusSchema.optional(),
|
|
612
|
-
confirmationTime:
|
|
613
|
-
cancellationTime:
|
|
614
|
-
rescheduleTime:
|
|
615
|
-
procedureActualStartTime:
|
|
616
|
-
actualDurationMinutes:
|
|
617
|
-
cancellationReason:
|
|
618
|
-
canceledBy:
|
|
619
|
-
internalNotes:
|
|
620
|
-
patientNotes:
|
|
669
|
+
confirmationTime: import_zod3.z.any().optional().nullable(),
|
|
670
|
+
cancellationTime: import_zod3.z.any().optional().nullable(),
|
|
671
|
+
rescheduleTime: import_zod3.z.any().optional().nullable(),
|
|
672
|
+
procedureActualStartTime: import_zod3.z.any().optional().nullable(),
|
|
673
|
+
actualDurationMinutes: import_zod3.z.number().int().positive("Duration must be a positive integer").optional(),
|
|
674
|
+
cancellationReason: import_zod3.z.string().max(MAX_STRING_LENGTH, "Cancellation reason too long").nullable().optional(),
|
|
675
|
+
canceledBy: import_zod3.z.enum(["patient", "clinic", "practitioner", "system"]).optional(),
|
|
676
|
+
internalNotes: import_zod3.z.string().max(MAX_STRING_LENGTH_LONG, "Internal notes too long").nullable().optional(),
|
|
677
|
+
patientNotes: import_zod3.z.any().optional().nullable(),
|
|
621
678
|
paymentStatus: paymentStatusSchema.optional(),
|
|
622
|
-
paymentTransactionId:
|
|
623
|
-
completedPreRequirements:
|
|
624
|
-
completedPostRequirements:
|
|
625
|
-
linkedFormIds:
|
|
626
|
-
pendingUserFormsIds:
|
|
627
|
-
appointmentStartTime:
|
|
679
|
+
paymentTransactionId: import_zod3.z.any().optional().nullable(),
|
|
680
|
+
completedPreRequirements: import_zod3.z.union([import_zod3.z.array(import_zod3.z.string()), import_zod3.z.any()]).optional(),
|
|
681
|
+
completedPostRequirements: import_zod3.z.union([import_zod3.z.array(import_zod3.z.string()), import_zod3.z.any()]).optional(),
|
|
682
|
+
linkedFormIds: import_zod3.z.union([import_zod3.z.array(import_zod3.z.string()), import_zod3.z.any()]).optional(),
|
|
683
|
+
pendingUserFormsIds: import_zod3.z.union([import_zod3.z.array(import_zod3.z.string()), import_zod3.z.any()]).optional(),
|
|
684
|
+
appointmentStartTime: import_zod3.z.any().refine(
|
|
628
685
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
629
686
|
"Appointment start time must be a valid timestamp or Date object"
|
|
630
687
|
).optional(),
|
|
631
|
-
appointmentEndTime:
|
|
688
|
+
appointmentEndTime: import_zod3.z.any().refine(
|
|
632
689
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
633
690
|
"Appointment end time must be a valid timestamp or Date object"
|
|
634
691
|
).optional(),
|
|
635
|
-
calendarEventId:
|
|
636
|
-
cost:
|
|
637
|
-
clinicBranchId:
|
|
638
|
-
practitionerId:
|
|
639
|
-
linkedForms:
|
|
640
|
-
media:
|
|
641
|
-
|
|
642
|
-
|
|
692
|
+
calendarEventId: import_zod3.z.string().min(MIN_STRING_LENGTH).optional(),
|
|
693
|
+
cost: import_zod3.z.number().min(0).optional(),
|
|
694
|
+
clinicBranchId: import_zod3.z.string().min(MIN_STRING_LENGTH).optional(),
|
|
695
|
+
practitionerId: import_zod3.z.string().min(MIN_STRING_LENGTH).optional(),
|
|
696
|
+
linkedForms: import_zod3.z.union([import_zod3.z.array(linkedFormInfoSchema).max(MAX_ARRAY_LENGTH), import_zod3.z.any()]).optional(),
|
|
697
|
+
media: import_zod3.z.union([
|
|
698
|
+
import_zod3.z.array(appointmentMediaItemSchema).max(MAX_ARRAY_LENGTH),
|
|
699
|
+
import_zod3.z.any()
|
|
643
700
|
]).optional(),
|
|
644
|
-
reviewInfo:
|
|
645
|
-
finalizedDetails:
|
|
646
|
-
isArchived:
|
|
647
|
-
updatedAt:
|
|
648
|
-
metadata:
|
|
701
|
+
reviewInfo: import_zod3.z.union([patientReviewInfoSchema.nullable(), import_zod3.z.any()]).optional(),
|
|
702
|
+
finalizedDetails: import_zod3.z.union([finalizedDetailsSchema.nullable(), import_zod3.z.any()]).optional(),
|
|
703
|
+
isArchived: import_zod3.z.boolean().optional(),
|
|
704
|
+
updatedAt: import_zod3.z.any().optional(),
|
|
705
|
+
metadata: appointmentMetadataSchema.optional()
|
|
649
706
|
}).refine(
|
|
650
707
|
(data) => {
|
|
651
708
|
if (data.status === "canceled_clinic" /* CANCELED_CLINIC */ || data.status === "canceled_patient" /* CANCELED_PATIENT */ || data.status === "canceled_patient_rescheduled" /* CANCELED_PATIENT_RESCHEDULED */) {
|
|
@@ -669,24 +726,24 @@ var updateAppointmentSchema = import_zod2.z.object({
|
|
|
669
726
|
path: ["appointmentEndTime"]
|
|
670
727
|
}
|
|
671
728
|
);
|
|
672
|
-
var searchAppointmentsSchema =
|
|
673
|
-
patientId:
|
|
674
|
-
practitionerId:
|
|
675
|
-
clinicBranchId:
|
|
676
|
-
startDate:
|
|
729
|
+
var searchAppointmentsSchema = import_zod3.z.object({
|
|
730
|
+
patientId: import_zod3.z.string().optional(),
|
|
731
|
+
practitionerId: import_zod3.z.string().optional(),
|
|
732
|
+
clinicBranchId: import_zod3.z.string().optional(),
|
|
733
|
+
startDate: import_zod3.z.any().refine(
|
|
677
734
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
678
735
|
"Start date must be a valid timestamp or Date object"
|
|
679
736
|
).optional(),
|
|
680
|
-
endDate:
|
|
737
|
+
endDate: import_zod3.z.any().refine(
|
|
681
738
|
(val) => val === void 0 || val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
682
739
|
"End date must be a valid timestamp or Date object"
|
|
683
740
|
).optional(),
|
|
684
|
-
status:
|
|
741
|
+
status: import_zod3.z.union([
|
|
685
742
|
appointmentStatusSchema,
|
|
686
|
-
|
|
743
|
+
import_zod3.z.array(appointmentStatusSchema).nonempty()
|
|
687
744
|
]).optional(),
|
|
688
|
-
limit:
|
|
689
|
-
startAfter:
|
|
745
|
+
limit: import_zod3.z.number().positive().int().optional().default(20),
|
|
746
|
+
startAfter: import_zod3.z.any().optional()
|
|
690
747
|
}).refine(
|
|
691
748
|
(data) => {
|
|
692
749
|
if (!data.startDate && !data.endDate && !data.status) {
|
|
@@ -710,13 +767,13 @@ var searchAppointmentsSchema = import_zod2.z.object({
|
|
|
710
767
|
path: ["endDate"]
|
|
711
768
|
}
|
|
712
769
|
);
|
|
713
|
-
var rescheduleAppointmentSchema =
|
|
714
|
-
appointmentId:
|
|
715
|
-
newStartTime:
|
|
770
|
+
var rescheduleAppointmentSchema = import_zod3.z.object({
|
|
771
|
+
appointmentId: import_zod3.z.string().min(MIN_STRING_LENGTH, "Appointment ID is required"),
|
|
772
|
+
newStartTime: import_zod3.z.any().refine(
|
|
716
773
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
717
774
|
"New start time must be a valid timestamp, Date object, number, or string"
|
|
718
775
|
),
|
|
719
|
-
newEndTime:
|
|
776
|
+
newEndTime: import_zod3.z.any().refine(
|
|
720
777
|
(val) => val instanceof Date || (val == null ? void 0 : val._seconds) !== void 0 || (val == null ? void 0 : val.seconds) !== void 0 || typeof val === "number" || typeof val === "string" || val && typeof val.toMillis === "function",
|
|
721
778
|
"New end time must be a valid timestamp, Date object, number, or string"
|
|
722
779
|
)
|
|
@@ -817,24 +874,24 @@ var USERS_COLLECTION = "users";
|
|
|
817
874
|
var import_zod20 = require("zod");
|
|
818
875
|
|
|
819
876
|
// src/validations/schemas.ts
|
|
820
|
-
var
|
|
821
|
-
var emailSchema =
|
|
822
|
-
var passwordSchema =
|
|
877
|
+
var import_zod4 = require("zod");
|
|
878
|
+
var emailSchema = import_zod4.z.string().email("Invalid email format").min(5, "Email must be at least 5 characters").max(255, "Email must be less than 255 characters");
|
|
879
|
+
var passwordSchema = import_zod4.z.string().min(8, "Password must be at least 8 characters").max(100, "Password must be less than 100 characters").regex(
|
|
823
880
|
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d\w\W]{8,}$/,
|
|
824
881
|
"Password must contain at least one uppercase letter, one lowercase letter, and one number"
|
|
825
882
|
);
|
|
826
|
-
var userRoleSchema =
|
|
827
|
-
var userRolesSchema =
|
|
828
|
-
var timestampSchema =
|
|
883
|
+
var userRoleSchema = import_zod4.z.nativeEnum(UserRole);
|
|
884
|
+
var userRolesSchema = import_zod4.z.array(userRoleSchema).min(1, "User must have at least one role").max(3, "User cannot have more than 3 roles");
|
|
885
|
+
var timestampSchema = import_zod4.z.custom((data) => {
|
|
829
886
|
if (data && typeof data === "object" && "isEqual" in data) {
|
|
830
887
|
return true;
|
|
831
888
|
}
|
|
832
889
|
return data && typeof data === "object" && "toDate" in data && "seconds" in data && "nanoseconds" in data;
|
|
833
890
|
}, "Must be a Timestamp object or serverTimestamp");
|
|
834
|
-
var clinicAdminOptionsSchema =
|
|
835
|
-
isGroupOwner:
|
|
836
|
-
groupToken:
|
|
837
|
-
groupId:
|
|
891
|
+
var clinicAdminOptionsSchema = import_zod4.z.object({
|
|
892
|
+
isGroupOwner: import_zod4.z.boolean(),
|
|
893
|
+
groupToken: import_zod4.z.string().optional(),
|
|
894
|
+
groupId: import_zod4.z.string().optional()
|
|
838
895
|
}).refine(
|
|
839
896
|
(data) => {
|
|
840
897
|
if (!data.isGroupOwner && (!data.groupToken || !data.groupId)) {
|
|
@@ -849,20 +906,20 @@ var clinicAdminOptionsSchema = import_zod3.z.object({
|
|
|
849
906
|
message: "Invalid clinic admin options configuration"
|
|
850
907
|
}
|
|
851
908
|
);
|
|
852
|
-
var createUserOptionsSchema =
|
|
909
|
+
var createUserOptionsSchema = import_zod4.z.object({
|
|
853
910
|
clinicAdminData: clinicAdminOptionsSchema.optional()
|
|
854
911
|
});
|
|
855
|
-
var userSchema =
|
|
856
|
-
uid:
|
|
857
|
-
email:
|
|
858
|
-
roles:
|
|
859
|
-
isAnonymous:
|
|
912
|
+
var userSchema = import_zod4.z.object({
|
|
913
|
+
uid: import_zod4.z.string(),
|
|
914
|
+
email: import_zod4.z.string().email().nullable(),
|
|
915
|
+
roles: import_zod4.z.array(userRoleSchema),
|
|
916
|
+
isAnonymous: import_zod4.z.boolean(),
|
|
860
917
|
createdAt: timestampSchema,
|
|
861
918
|
updatedAt: timestampSchema,
|
|
862
919
|
lastLoginAt: timestampSchema,
|
|
863
|
-
patientProfile:
|
|
864
|
-
practitionerProfile:
|
|
865
|
-
adminProfile:
|
|
920
|
+
patientProfile: import_zod4.z.string().optional(),
|
|
921
|
+
practitionerProfile: import_zod4.z.string().optional(),
|
|
922
|
+
adminProfile: import_zod4.z.string().optional()
|
|
866
923
|
});
|
|
867
924
|
|
|
868
925
|
// src/errors/auth.errors.ts
|
|
@@ -1546,14 +1603,6 @@ var Gender = /* @__PURE__ */ ((Gender2) => {
|
|
|
1546
1603
|
var import_zod7 = require("zod");
|
|
1547
1604
|
var import_firestore5 = require("firebase/firestore");
|
|
1548
1605
|
|
|
1549
|
-
// src/validations/media.schema.ts
|
|
1550
|
-
var import_zod4 = require("zod");
|
|
1551
|
-
var mediaResourceSchema = import_zod4.z.union([
|
|
1552
|
-
import_zod4.z.string().url(),
|
|
1553
|
-
import_zod4.z.instanceof(File),
|
|
1554
|
-
import_zod4.z.instanceof(Blob)
|
|
1555
|
-
]);
|
|
1556
|
-
|
|
1557
1606
|
// src/validations/patient/medical-info.schema.ts
|
|
1558
1607
|
var import_zod6 = require("zod");
|
|
1559
1608
|
|
|
@@ -3747,25 +3796,6 @@ var ProcedureFamily = /* @__PURE__ */ ((ProcedureFamily2) => {
|
|
|
3747
3796
|
return ProcedureFamily2;
|
|
3748
3797
|
})(ProcedureFamily || {});
|
|
3749
3798
|
|
|
3750
|
-
// src/backoffice/types/static/pricing.types.ts
|
|
3751
|
-
var PricingMeasure = /* @__PURE__ */ ((PricingMeasure3) => {
|
|
3752
|
-
PricingMeasure3["PER_ML"] = "per_ml";
|
|
3753
|
-
PricingMeasure3["PER_ZONE"] = "per_zone";
|
|
3754
|
-
PricingMeasure3["PER_AREA"] = "per_area";
|
|
3755
|
-
PricingMeasure3["PER_SESSION"] = "per_session";
|
|
3756
|
-
PricingMeasure3["PER_TREATMENT"] = "per_treatment";
|
|
3757
|
-
PricingMeasure3["PER_PACKAGE"] = "per_package";
|
|
3758
|
-
return PricingMeasure3;
|
|
3759
|
-
})(PricingMeasure || {});
|
|
3760
|
-
var Currency = /* @__PURE__ */ ((Currency2) => {
|
|
3761
|
-
Currency2["EUR"] = "EUR";
|
|
3762
|
-
Currency2["USD"] = "USD";
|
|
3763
|
-
Currency2["GBP"] = "GBP";
|
|
3764
|
-
Currency2["CHF"] = "CHF";
|
|
3765
|
-
Currency2["AUD"] = "AUD";
|
|
3766
|
-
return Currency2;
|
|
3767
|
-
})(Currency || {});
|
|
3768
|
-
|
|
3769
3799
|
// src/validations/shared.schema.ts
|
|
3770
3800
|
var sharedClinicContactInfoSchema = import_zod12.z.object({
|
|
3771
3801
|
email: import_zod12.z.string().email(),
|