diff --git a/apps/api/v2/package.json b/apps/api/v2/package.json
index e920a5e21c..2ab92e5169 100644
--- a/apps/api/v2/package.json
+++ b/apps/api/v2/package.json
@@ -28,7 +28,7 @@
"dependencies": {
"@calcom/platform-constants": "*",
"@calcom/platform-enums": "*",
- "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.46",
+ "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.47",
"@calcom/platform-libraries-0.0.2": "npm:@calcom/platform-libraries@0.0.2",
"@calcom/platform-types": "*",
"@calcom/platform-utils": "*",
diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/user-bookings.controller.e2e-spec.ts b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/user-bookings.controller.e2e-spec.ts
index d1bf1082ef..66611391e6 100644
--- a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/user-bookings.controller.e2e-spec.ts
+++ b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/user-bookings.controller.e2e-spec.ts
@@ -662,7 +662,6 @@ describe("Bookings Endpoints 2024-08-13", () => {
expect(responseBody.data).toBeDefined();
const data: (BookingOutput_2024_08_13 | RecurringBookingOutput_2024_08_13)[] = responseBody.data;
expect(data.length).toEqual(2);
- console.log("asap data", JSON.stringify(data, null, 2));
expect(data[0].start).toEqual(createdBooking.start);
expect(data[1].start).toEqual(bookingInThePast.startTime.toISOString());
});
diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.e2e-spec.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.e2e-spec.ts
index b55123bb0f..edadded6c8 100644
--- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.e2e-spec.ts
+++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/controllers/event-types.controller.e2e-spec.ts
@@ -31,6 +31,7 @@ import {
ApiSuccessResponse,
CreateEventTypeInput_2024_06_14,
EventTypeOutput_2024_06_14,
+ NameFieldInput_2024_06_14,
UpdateEventTypeInput_2024_06_14,
} from "@calcom/platform-types";
import { SchedulingType } from "@calcom/prisma/enums";
@@ -199,6 +200,13 @@ describe("Event types Endpoints", () => {
});
it("should create an event type", async () => {
+ const nameBookingField: NameFieldInput_2024_06_14 = {
+ type: "name",
+ label: "Your name sir / madam",
+ placeholder: "john doe",
+ disableOnPrefill: false,
+ };
+
const body: CreateEventTypeInput_2024_06_14 = {
title: "Coding class",
slug: "coding-class",
@@ -211,6 +219,7 @@ describe("Event types Endpoints", () => {
},
],
bookingFields: [
+ nameBookingField,
{
type: "select",
label: "select which language you want to learn",
@@ -218,6 +227,7 @@ describe("Event types Endpoints", () => {
required: true,
placeholder: "select language",
options: ["javascript", "python", "cobol"],
+ disableOnPrefill: true,
},
],
scheduleId: firstSchedule.id,
@@ -304,12 +314,14 @@ describe("Event types Endpoints", () => {
);
expect(createdEventType.color).toEqual(body.color);
- const responseBookingFields = body.bookingFields || [];
+ const requestBookingFields = body.bookingFields || [];
const expectedBookingFields = [
- { isDefault: true, required: true, slug: "name", type: "name" },
+ { isDefault: true, required: true, slug: "name", ...nameBookingField },
{ isDefault: true, required: true, slug: "email", type: "email" },
{ isDefault: true, required: false, slug: "rescheduleReason", type: "textarea" },
- ...responseBookingFields.map((field) => ({ isDefault: false, ...field })),
+ ...requestBookingFields
+ .filter((field) => field.type !== "name" && field.type !== "email")
+ .map((field) => ({ isDefault: false, ...field })),
];
expect(createdEventType.bookingFields).toEqual(expectedBookingFields);
@@ -630,11 +642,30 @@ describe("Event types Endpoints", () => {
});
it("should update event type", async () => {
+ const nameBookingField: NameFieldInput_2024_06_14 = {
+ type: "name",
+ label: "Your name sir / madam",
+ placeholder: "john doe",
+ disableOnPrefill: true,
+ };
+
const newTitle = "Coding class in Italian!";
const body: UpdateEventTypeInput_2024_06_14 = {
title: newTitle,
scheduleId: secondSchedule.id,
+ bookingFields: [
+ nameBookingField,
+ {
+ type: "select",
+ label: "select which language you want to learn",
+ slug: "select-language",
+ required: true,
+ placeholder: "select language",
+ options: ["javascript", "python", "cobol"],
+ disableOnPrefill: false,
+ },
+ ],
bookingLimitsCount: {
day: 4,
week: 10,
@@ -694,7 +725,19 @@ describe("Event types Endpoints", () => {
expect(updatedEventType.description).toEqual(eventType.description);
expect(updatedEventType.lengthInMinutes).toEqual(eventType.lengthInMinutes);
expect(updatedEventType.locations).toEqual(eventType.locations);
- expect(updatedEventType.bookingFields).toEqual(eventType.bookingFields);
+
+ const requestBookingFields = body.bookingFields || [];
+ const expectedBookingFields = [
+ { isDefault: true, required: true, slug: "name", ...nameBookingField },
+ { isDefault: true, required: true, slug: "email", type: "email" },
+ { isDefault: true, required: false, slug: "rescheduleReason", type: "textarea" },
+ ...requestBookingFields
+ .filter((field) => field.type !== "name" && field.type !== "email")
+ .map((field) => ({ isDefault: false, ...field })),
+ ];
+
+ expect(updatedEventType.bookingFields).toEqual(expectedBookingFields);
+
expect(updatedEventType.ownerId).toEqual(user.id);
expect(updatedEventType.scheduleId).toEqual(secondSchedule.id);
expect(updatedEventType.bookingLimitsCount).toEqual(body.bookingLimitsCount);
@@ -732,6 +775,7 @@ describe("Event types Endpoints", () => {
eventType.hideCalendarEventDetails = updatedEventType.hideCalendarEventDetails;
eventType.lockTimeZoneToggleOnBookingPage = updatedEventType.lockTimeZoneToggleOnBookingPage;
eventType.color = updatedEventType.color;
+ eventType.bookingFields = updatedEventType.bookingFields;
});
});
diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts
index 6580dd94e0..9dbc59ff25 100644
--- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts
+++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts
@@ -20,6 +20,8 @@ import {
transformEventColorsApiToInternal,
validateCustomEventName,
transformSeatsApiToInternal,
+ SystemField,
+ CustomField,
} from "@calcom/platform-libraries";
import {
CreateEventTypeInput_2024_06_14,
@@ -211,16 +213,27 @@ export class InputEventTypesService_2024_06_14 {
inputBookingFields: CreateEventTypeInput_2024_06_14["bookingFields"],
hasMultipleLocations: boolean
) {
- const defaultFieldsBefore = [systemBeforeFieldName, systemBeforeFieldEmail];
+ const customFields: (SystemField | CustomField)[] = inputBookingFields
+ ? transformBookingFieldsApiToInternal(inputBookingFields)
+ : [];
+ const customFieldsWithoutNameEmail = customFields.filter(
+ (field) => field.type !== "name" && field.type !== "email"
+ );
+ const customNameField = customFields?.find((field) => field.type === "name");
+ const customEmailField = customFields?.find((field) => field.type === "email");
+
+ const defaultFieldsBefore: (SystemField | CustomField)[] = [
+ customNameField || systemBeforeFieldName,
+ customEmailField || systemBeforeFieldEmail,
+ ];
// note(Lauris): if event type has multiple locations then a radio button booking field has to be displayed to allow booker to pick location
if (hasMultipleLocations) {
defaultFieldsBefore.push(systemBeforeFieldLocation);
}
- const customFields = transformBookingFieldsApiToInternal(inputBookingFields);
const defaultFieldsAfter = [systemAfterFieldRescheduleReason];
- return [...defaultFieldsBefore, ...customFields, ...defaultFieldsAfter];
+ return [...defaultFieldsBefore, ...customFieldsWithoutNameEmail, ...defaultFieldsAfter];
}
transformInputIntervalLimits(inputBookingFields: CreateEventTypeInput_2024_06_14["bookingLimitsCount"]) {
diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json
index 062e80206d..2ae76dea1b 100644
--- a/apps/api/v2/swagger/documentation.json
+++ b/apps/api/v2/swagger/documentation.json
@@ -5977,6 +5977,10 @@
},
"placeholder": {
"type": "string"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled."
}
},
"required": [
@@ -6010,6 +6014,10 @@
"placeholder": {
"type": "string",
"example": "e.g., 1234 Main St"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`, the address field will be prefilled with this value and disabled."
}
},
"required": [
@@ -6043,6 +6051,10 @@
"placeholder": {
"type": "string",
"example": "e.g., Enter text here"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `who-referred-you` and the URL contains query parameter `&who-referred-you=bob`, the text field will be prefilled with this value and disabled."
}
},
"required": [
@@ -6076,6 +6088,10 @@
"placeholder": {
"type": "string",
"example": "e.g., 100"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `calories-per-day` and the URL contains query parameter `&calories-per-day=3000`, the number field will be prefilled with this value and disabled."
}
},
"required": [
@@ -6109,6 +6125,10 @@
"placeholder": {
"type": "string",
"example": "e.g., Detailed description here..."
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `dear-diary` and the URL contains query parameter `&dear-diary=Today I shipped a feature`, the text area will be prefilled with this value and disabled."
}
},
"required": [
@@ -6152,6 +6172,10 @@
"items": {
"type": "string"
}
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' will be selected and the select field will be disabled."
}
},
"required": [
@@ -6192,6 +6216,10 @@
"items": {
"type": "string"
}
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled."
}
},
"required": [
@@ -6225,6 +6253,10 @@
"placeholder": {
"type": "string",
"example": "e.g., example@example.com"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`, the these emails will be added and none more can be added."
}
},
"required": [
@@ -6264,6 +6296,10 @@
"items": {
"type": "string"
}
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `notify-me` and the URL contains query parameter `¬ify-me=true`, the checkbox will be selected and the checkbox field will be disabled."
}
},
"required": [
@@ -6303,6 +6339,10 @@
"items": {
"type": "string"
}
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio buttom will be selected and the select field will be disabled."
}
},
"required": [
@@ -6332,6 +6372,9 @@
},
"required": {
"type": "boolean"
+ },
+ "disableOnPrefill": {
+ "type": "boolean"
}
},
"required": [
@@ -6875,6 +6918,37 @@
"EmailDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone",
+ "address",
+ "text",
+ "number",
+ "textarea",
+ "select",
+ "multiselect",
+ "multiemail",
+ "checkbox",
+ "radio",
+ "boolean"
+ ],
+ "example": "email",
+ "description": "only allowed value for type is `email`",
+ "default": "email"
+ },
+ "label": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&email=bob@gmail.com`, the email field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": true,
@@ -6885,24 +6959,51 @@
"type": "string",
"default": "email"
},
- "type": {
- "type": "string",
- "default": "email"
- },
"required": {
"type": "boolean"
}
},
"required": [
+ "type",
"isDefault",
"slug",
- "type",
"required"
]
},
"NameDefaultFieldOutput_2024_06_14": {
"type": "object",
"properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone",
+ "address",
+ "text",
+ "number",
+ "textarea",
+ "select",
+ "multiselect",
+ "multiemail",
+ "checkbox",
+ "radio",
+ "boolean"
+ ],
+ "example": "name",
+ "description": "only allowed value for type is `name`",
+ "default": "name"
+ },
+ "label": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if URL contains query parameter `&name=bob`, the name field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": true,
@@ -6913,18 +7014,14 @@
"type": "string",
"default": "name"
},
- "type": {
- "type": "string",
- "default": "name"
- },
"required": {
"type": "boolean"
}
},
"required": [
+ "type",
"isDefault",
"slug",
- "type",
"required"
]
},
@@ -7074,6 +7171,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7105,6 +7204,10 @@
"type": "string",
"example": "e.g., 1234 Main St"
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`, the address field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7126,6 +7229,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7153,6 +7258,9 @@
"required": {
"type": "boolean"
},
+ "disableOnPrefill": {
+ "type": "boolean"
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7174,6 +7282,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7211,6 +7321,10 @@
"type": "string"
}
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `notify-me` and the URL contains query parameter `¬ify-me=true`, the checkbox will be selected and the checkbox field will be disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7233,6 +7347,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7264,6 +7380,10 @@
"type": "string",
"example": "e.g., example@example.com"
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`, the these emails will be added and none more can be added."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7285,6 +7405,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7322,6 +7444,10 @@
"type": "string"
}
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `consultants` and the URL contains query parameter `&consultants=en&language=it`, the 'en' and 'it' will be selected and the select field will be disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7344,6 +7470,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7375,6 +7503,10 @@
"type": "string",
"example": "e.g., 100"
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `calories-per-day` and the URL contains query parameter `&calories-per-day=3000`, the number field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7396,6 +7528,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7425,6 +7559,10 @@
"placeholder": {
"type": "string"
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`, the phone field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7446,6 +7584,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7483,6 +7623,10 @@
"type": "string"
}
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' radio buttom will be selected and the select field will be disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7505,6 +7649,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7546,6 +7692,10 @@
"type": "string"
}
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`, the 'italian' will be selected and the select field will be disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7568,6 +7718,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7599,6 +7751,10 @@
"type": "string",
"example": "e.g., Detailed description here..."
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `dear-diary` and the URL contains query parameter `&dear-diary=Today I shipped a feature`, the text area will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
@@ -7620,6 +7776,8 @@
"type": {
"type": "string",
"enum": [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -7651,6 +7809,10 @@
"type": "string",
"example": "e.g., Enter text here"
},
+ "disableOnPrefill": {
+ "type": "boolean",
+ "description": "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value. For example, if the slug is `who-referred-you` and the URL contains query parameter `&who-referred-you=bob`, the text field will be prefilled with this value and disabled."
+ },
"isDefault": {
"type": "object",
"default": false,
diff --git a/packages/lib/event-types/transformers/api-to-internal/api-to-internal.spec.ts b/packages/lib/event-types/transformers/api-to-internal/api-to-internal.spec.ts
index 71240c9950..2e917d88b2 100644
--- a/packages/lib/event-types/transformers/api-to-internal/api-to-internal.spec.ts
+++ b/packages/lib/event-types/transformers/api-to-internal/api-to-internal.spec.ts
@@ -21,7 +21,12 @@ import type {
SeatOptionsDisabledSchema,
} from "@calcom/platform-types";
-import type { CustomField } from "../internal-to-api/booking-fields";
+import {
+ systemBeforeFieldEmail,
+ systemBeforeFieldName,
+ type CustomField,
+ type SystemField,
+} from "../internal-to-api/booking-fields";
import {
transformLocationsApiToInternal,
transformBookingFieldsApiToInternal,
@@ -105,6 +110,59 @@ describe("transformLocationsApiToInternal", () => {
});
describe("transformBookingFieldsApiToInternal", () => {
+ it("should transform name field", () => {
+ const bookingField: InputBookingField_2024_06_14 = {
+ type: "name",
+ label: "Your name number",
+ placeholder: "123456789",
+ disableOnPrefill: true,
+ };
+ const input: InputBookingField_2024_06_14[] = [bookingField];
+
+ const expectedField = {
+ ...systemBeforeFieldName,
+ label: "Your name number",
+ placeholder: "123456789",
+ disableOnPrefill: true,
+ };
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ expectedField.variantsConfig.variants.fullName.fields[0].label = "Your name number";
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ expectedField.variantsConfig.variants.fullName.fields[0].placeholder = "123456789";
+
+ const expectedOutput: SystemField[] = [expectedField];
+
+ const result = transformBookingFieldsApiToInternal(input);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
+ it("should transform email field", () => {
+ const bookingField: InputBookingField_2024_06_14 = {
+ type: "email",
+ label: "Your email",
+ placeholder: "bob@gmail.com",
+ disableOnPrefill: true,
+ };
+
+ const input: InputBookingField_2024_06_14[] = [bookingField];
+
+ const expectedOutput: SystemField[] = [
+ {
+ ...systemBeforeFieldEmail,
+ label: "Your email",
+ placeholder: "bob@gmail.com",
+ disableOnPrefill: true,
+ },
+ ];
+
+ const result = transformBookingFieldsApiToInternal(input);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
it("should transform phone field", () => {
const bookingField: InputBookingField_2024_06_14 = {
type: "phone",
@@ -470,6 +528,44 @@ describe("transformBookingFieldsApiToInternal", () => {
const input: InputBookingField_2024_06_14[] = [bookingField];
+ const expectedOutput: CustomField[] = [
+ {
+ name: bookingField.slug,
+ type: bookingField.type,
+ label: bookingField.label,
+ labelAsSafeHtml: `
${bookingField.label}
\n`,
+ sources: [
+ {
+ id: "user",
+ type: "user",
+ label: "User",
+ fieldRequired: true,
+ },
+ ],
+ editable: "user",
+ required: bookingField.required,
+ },
+ ];
+
+ const result = transformBookingFieldsApiToInternal(input);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
+ it("should keep disableOnPrefill property", () => {
+ const disableOnPrefill = true;
+
+ const bookingField: InputBookingField_2024_06_14 = {
+ type: "radio",
+ slug: "radio",
+ label: "Your radio buttons",
+ required: true,
+ options: ["Radio 1", "Radio 2"],
+ disableOnPrefill,
+ };
+
+ const input: InputBookingField_2024_06_14[] = [bookingField];
+
const expectedOutput: CustomField[] = [
{
name: bookingField.slug,
@@ -486,6 +582,8 @@ describe("transformBookingFieldsApiToInternal", () => {
editable: "user",
required: bookingField.required,
placeholder: "",
+ options: transformSelectOptionsApiToInternal(bookingField.options),
+ disableOnPrefill,
},
];
diff --git a/packages/lib/event-types/transformers/api-to-internal/booking-fields.ts b/packages/lib/event-types/transformers/api-to-internal/booking-fields.ts
index 09a29ae37e..bad9f4407a 100644
--- a/packages/lib/event-types/transformers/api-to-internal/booking-fields.ts
+++ b/packages/lib/event-types/transformers/api-to-internal/booking-fields.ts
@@ -1,19 +1,70 @@
-import { type CreateEventTypeInput_2024_06_14 } from "@calcom/platform-types";
+import type { InputBookingField_2024_06_14 } from "@calcom/platform-types";
-import type { CustomField } from "../internal-to-api";
+import {
+ systemBeforeFieldEmail,
+ systemBeforeFieldName,
+ type CustomField,
+ type SystemField,
+} from "../internal-to-api";
export function transformBookingFieldsApiToInternal(
- inputBookingFields: CreateEventTypeInput_2024_06_14["bookingFields"]
-) {
- if (!inputBookingFields) {
- return [];
+ inputBookingFields: InputBookingField_2024_06_14[]
+): (SystemField | CustomField)[] {
+ const customBookingFields = inputBookingFields.map((field) => {
+ const baseProperties = getBaseProperties(field);
+
+ const options =
+ "options" in field && field.options ? transformSelectOptionsApiToInternal(field.options) : undefined;
+
+ if (!options) {
+ return baseProperties;
+ }
+
+ return {
+ ...baseProperties,
+ options,
+ };
+ });
+
+ return customBookingFields;
+}
+
+function getBaseProperties(field: InputBookingField_2024_06_14): SystemField | CustomField {
+ if (field.type === "name") {
+ const systemName = { ...systemBeforeFieldName };
+ if (systemName.variantsConfig?.variants?.fullName?.fields?.[0]) {
+ systemName.variantsConfig.variants.fullName.fields[0].label = field.label;
+ }
+
+ if (systemName.variantsConfig?.variants?.fullName?.fields?.[0]) {
+ systemName.variantsConfig.variants.fullName.fields[0].placeholder = field.placeholder;
+ }
+ // note(Lauris): we attach top level label and placeholder for easier access when converting database event type
+ // to v2 response event type even though form builder uses label and placeholder from variantsConfig.
+ systemName.label = field.label;
+ systemName.placeholder = field.placeholder;
+
+ return {
+ ...systemName,
+ disableOnPrefill: field.disableOnPrefill,
+ };
}
- const customBookingFields = inputBookingFields.map((field) => {
- const commonFields: CustomField = {
+ if (field.type === "email") {
+ return {
+ ...systemBeforeFieldEmail,
+ label: field.label,
+ placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
+ };
+ }
+
+ if (field.type === "boolean") {
+ return {
name: field.slug,
type: field.type,
label: field.label,
+ labelAsSafeHtml: `${field.label}
\n`,
sources: [
{
id: "user",
@@ -24,23 +75,27 @@ export function transformBookingFieldsApiToInternal(
],
editable: "user",
required: field.required,
- placeholder: "placeholder" in field && field.placeholder ? field.placeholder : "",
+ disableOnPrefill: field.disableOnPrefill,
};
+ }
- const options =
- "options" in field && field.options ? transformSelectOptionsApiToInternal(field.options) : undefined;
-
- if (!options) {
- return commonFields;
- }
-
- return {
- ...commonFields,
- options,
- };
- });
-
- return customBookingFields;
+ return {
+ name: field.slug,
+ type: field.type,
+ label: field.label,
+ sources: [
+ {
+ id: "user",
+ type: "user",
+ label: "User",
+ fieldRequired: true,
+ },
+ ],
+ editable: "user",
+ required: field.required,
+ placeholder: "placeholder" in field && field.placeholder ? field.placeholder : "",
+ disableOnPrefill: field.disableOnPrefill,
+ };
}
export function transformSelectOptionsApiToInternal(options: string[]) {
diff --git a/packages/lib/event-types/transformers/internal-to-api/booking-fields.ts b/packages/lib/event-types/transformers/internal-to-api/booking-fields.ts
index 9089db9f24..96f8341083 100644
--- a/packages/lib/event-types/transformers/internal-to-api/booking-fields.ts
+++ b/packages/lib/event-types/transformers/internal-to-api/booking-fields.ts
@@ -25,6 +25,9 @@ export function transformBookingFieldsInternalToApi(
type: field.type,
slug: field.name,
required: field.required,
+ label: field.label,
+ placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "email":
return {
@@ -32,6 +35,9 @@ export function transformBookingFieldsInternalToApi(
type: field.type,
slug: field.name,
required: field.required,
+ label: field.label,
+ placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "location":
return {
@@ -85,6 +91,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "address":
return {
@@ -94,6 +101,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "text":
return {
@@ -103,6 +111,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "number":
return {
@@ -112,6 +121,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "textarea":
return {
@@ -121,6 +131,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "multiemail":
return {
@@ -130,6 +141,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
placeholder: field.placeholder,
+ disableOnPrefill: field.disableOnPrefill,
};
case "boolean":
return {
@@ -138,6 +150,7 @@ export function transformBookingFieldsInternalToApi(
slug: field.name,
label: field.label,
required: field.required,
+ disableOnPrefill: field.disableOnPrefill,
};
case "select":
return {
@@ -148,6 +161,7 @@ export function transformBookingFieldsInternalToApi(
required: field.required,
placeholder: field.placeholder,
options: field.options ? field.options.map((option) => option.value) : [],
+ disableOnPrefill: field.disableOnPrefill,
};
case "multiselect":
return {
@@ -157,6 +171,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
options: field.options ? field.options?.map((option) => option.value) : [],
+ disableOnPrefill: field.disableOnPrefill,
};
case "checkbox":
return {
@@ -166,6 +181,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
options: field.options ? field.options?.map((option) => option.value) : [],
+ disableOnPrefill: field.disableOnPrefill,
};
case "radio":
return {
@@ -175,6 +191,7 @@ export function transformBookingFieldsInternalToApi(
label: field.label,
required: field.required,
options: field.options ? field.options?.map((option) => option.value) : [],
+ disableOnPrefill: field.disableOnPrefill,
};
default:
throw new Error(`Unsupported booking field type '${field.type}'.`);
@@ -203,6 +220,7 @@ const CustomFieldsSchema = z.object({
name: z.string(),
type: CustomFieldTypeEnum,
label: z.string(),
+ labelAsSafeHtml: z.string().optional(),
sources: z.array(
z.object({
id: z.literal("user"),
@@ -211,7 +229,7 @@ const CustomFieldsSchema = z.object({
fieldRequired: z.literal(true),
})
),
- editable: z.literal("user"),
+ editable: z.enum(["user", "user-readonly"]),
required: z.boolean(),
placeholder: z.string().optional(),
options: z
@@ -222,6 +240,7 @@ const CustomFieldsSchema = z.object({
})
)
.optional(),
+ disableOnPrefill: z.boolean().optional(),
});
const SystemFieldSchema = z.object({
@@ -244,6 +263,7 @@ const SystemFieldSchema = z.object({
)
.optional(),
defaultPlaceholder: z.enum(["", "share_additional_notes", "email", "reschedule_placeholder"]).optional(),
+ placeholder: z.string().optional(),
hidden: z.boolean().optional(),
required: z.boolean(),
hideWhenJustOneOption: z.boolean().optional(),
@@ -262,12 +282,31 @@ const SystemFieldSchema = z.object({
}),
})
.optional(),
+ disableOnPrefill: z.boolean().optional(),
});
const NameSystemFieldSchema = SystemFieldSchema.extend({
name: z.literal("name"),
type: z.literal("name"),
required: z.literal(true),
+ variant: z.literal("fullName").optional(),
+ variantsConfig: z
+ .object({
+ variants: z.object({
+ fullName: z.object({
+ fields: z.array(
+ z.object({
+ name: z.literal("fullName"),
+ type: z.literal("text"),
+ label: z.string().optional(),
+ required: z.literal(true),
+ placeholder: z.string().optional(),
+ })
+ ),
+ }),
+ }),
+ })
+ .optional(),
});
const EmailSystemFieldSchema = SystemFieldSchema.extend({
@@ -306,8 +345,8 @@ const GuestsSystemFieldSchema = SystemFieldSchema.extend({
required: z.literal(false),
});
-type NameSystemField = z.infer;
-type EmailSystemField = z.infer;
+export type NameSystemField = z.infer;
+export type EmailSystemField = z.infer;
type RescheduleReasonSystemField = z.infer;
type LocationReasonSystemField = z.infer;
type TitleSystemField = z.infer;
@@ -343,6 +382,7 @@ export const systemBeforeFieldName: NameSystemField = {
editable: "system",
defaultLabel: "your_name",
required: true,
+ variant: "fullName",
sources: [
{
label: "Default",
@@ -350,21 +390,19 @@ export const systemBeforeFieldName: NameSystemField = {
type: "default",
},
],
-};
-
-export const systemBeforeFieldNameReadOnly: NameSystemField = {
- type: "name",
- name: "name",
- editable: "user-readonly",
- defaultLabel: "your_name",
- required: true,
- sources: [
- {
- label: "Default",
- id: "default",
- type: "default",
+ variantsConfig: {
+ variants: {
+ fullName: {
+ fields: [
+ {
+ name: "fullName",
+ type: "text",
+ required: true,
+ },
+ ],
+ },
},
- ],
+ },
};
export const systemBeforeFieldEmail: EmailSystemField = {
@@ -382,21 +420,6 @@ export const systemBeforeFieldEmail: EmailSystemField = {
],
};
-export const systemBeforeFieldEmailReadOnly: EmailSystemField = {
- defaultLabel: "email_address",
- type: "email",
- name: "email",
- required: true,
- editable: "user-readonly",
- sources: [
- {
- label: "Default",
- id: "default",
- type: "default",
- },
- ],
-};
-
export const systemBeforeFieldLocation: LocationReasonSystemField = {
defaultLabel: "location",
type: "radioInput",
diff --git a/packages/lib/event-types/transformers/internal-to-api/internal-to-api.spec.ts b/packages/lib/event-types/transformers/internal-to-api/internal-to-api.spec.ts
index 9307971af0..e5a8b006f0 100644
--- a/packages/lib/event-types/transformers/internal-to-api/internal-to-api.spec.ts
+++ b/packages/lib/event-types/transformers/internal-to-api/internal-to-api.spec.ts
@@ -31,13 +31,18 @@ import {
transformEventTypeColorsInternalToApi,
transformSeatsInternalToApi,
} from ".";
-import type { CustomField } from "./booking-fields";
+import {
+ systemBeforeFieldEmail,
+ systemBeforeFieldName,
+ type CustomField,
+ type SystemField,
+} from "./booking-fields";
describe("transformLocationsInternalToApi", () => {
it("should reverse transform address location", () => {
const transformedLocation = [
{
- type: "inPerson",
+ type: "inPerson" as const,
address: "1234 Main St",
displayLocationPublicly: true,
},
@@ -59,7 +64,7 @@ describe("transformLocationsInternalToApi", () => {
it("should reverse transform link location", () => {
const transformedLocation = [
{
- type: "link",
+ type: "link" as const,
link: "https://example.com",
displayLocationPublicly: true,
},
@@ -81,7 +86,7 @@ describe("transformLocationsInternalToApi", () => {
it("should reverse transform phone location", () => {
const transformedLocation = [
{
- type: "userPhone",
+ type: "userPhone" as const,
hostPhoneNumber: "123456789",
displayLocationPublicly: true,
},
@@ -103,7 +108,7 @@ describe("transformLocationsInternalToApi", () => {
it("should reverse transform integration location", () => {
const transformedLocation = [
{
- type: "integrations:daily",
+ type: "integrations:daily" as const,
},
];
@@ -121,6 +126,109 @@ describe("transformLocationsInternalToApi", () => {
});
describe("transformBookingFieldsInternalToApi", () => {
+ it("should reverse transform not modified name default field", () => {
+ const transformedField: SystemField[] = [systemBeforeFieldName];
+
+ const expectedOutput = [
+ {
+ type: "name",
+ slug: "name",
+ isDefault: true,
+ required: true,
+ },
+ ];
+
+ const result = transformBookingFieldsInternalToApi(transformedField);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
+ it("should reverse transform modified name default field", () => {
+ const nameField = {
+ ...systemBeforeFieldName,
+ placeholder: "custom placeholder",
+ disableOnPrefill: true,
+ label: "custom label",
+ variantsConfig: {
+ variants: {
+ fullName: {
+ fields: [
+ {
+ name: "fullName",
+ label: "custom label",
+ placeholder: "custom placeholder",
+ type: "text",
+ required: true,
+ },
+ ],
+ },
+ },
+ },
+ };
+
+ const transformedField: SystemField[] = [nameField];
+
+ const expectedOutput = [
+ {
+ type: "name",
+ slug: "name",
+ isDefault: true,
+ required: true,
+ placeholder: "custom placeholder",
+ disableOnPrefill: true,
+ label: "custom label",
+ },
+ ];
+
+ const result = transformBookingFieldsInternalToApi(transformedField);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
+ it("should reverse transform not modified email default field", () => {
+ const transformedField: SystemField[] = [systemBeforeFieldEmail];
+
+ const expectedOutput = [
+ {
+ type: "email",
+ slug: "email",
+ isDefault: true,
+ required: true,
+ },
+ ];
+
+ const result = transformBookingFieldsInternalToApi(transformedField);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
+ it("should reverse transform modified email default field", () => {
+ const transformedField: SystemField[] = [
+ {
+ ...systemBeforeFieldEmail,
+ placeholder: "custom placeholder",
+ disableOnPrefill: true,
+ label: "custom label",
+ },
+ ];
+
+ const expectedOutput = [
+ {
+ type: "email",
+ slug: "email",
+ isDefault: true,
+ required: true,
+ placeholder: "custom placeholder",
+ disableOnPrefill: true,
+ label: "custom label",
+ },
+ ];
+
+ const result = transformBookingFieldsInternalToApi(transformedField);
+
+ expect(result).toEqual(expectedOutput);
+ });
+
it("should reverse transform phone field", () => {
const transformedField: CustomField[] = [
{
@@ -511,7 +619,6 @@ describe("transformBookingFieldsInternalToApi", () => {
],
editable: "user",
required: true,
- placeholder: "",
},
];
@@ -733,7 +840,7 @@ describe("transformRequiresConfirmationInternalToApi", () => {
};
const result = transformRequiresConfirmationInternalToApi(
transformedField.requiresConfirmation,
- !!undefined,
+ false,
undefined
);
diff --git a/packages/platform/atoms/booker/BookerPlatformWrapper.tsx b/packages/platform/atoms/booker/BookerPlatformWrapper.tsx
index b700f86ab2..3c909817ae 100644
--- a/packages/platform/atoms/booker/BookerPlatformWrapper.tsx
+++ b/packages/platform/atoms/booker/BookerPlatformWrapper.tsx
@@ -62,10 +62,6 @@ export type BookerPlatformWrapperAtomProps = Omit<
notes?: string;
rescheduleReason?: string;
} & Record;
- readOnlyFormValues?: {
- name?: boolean;
- email?: boolean;
- };
handleCreateBooking?: (input: UseCreateBookingInput) => void;
onCreateBookingSuccess?: (data: ApiSuccessResponse) => void;
onCreateBookingError?: (data: ApiErrorResponse | Error) => void;
@@ -153,7 +149,7 @@ export const BookerPlatformWrapper = (
isPending: isTeamPending,
data:
teamEventTypeData && teamEventTypeData.length > 0
- ? transformApiTeamEventTypeForAtom(teamEventTypeData[0], props.entity, props.readOnlyFormValues)
+ ? transformApiTeamEventTypeForAtom(teamEventTypeData[0], props.entity, props.defaultFormValues)
: undefined,
};
}
@@ -164,7 +160,7 @@ export const BookerPlatformWrapper = (
isPending,
data:
data && data.length > 0
- ? transformApiEventTypeForAtom(data[0], props.entity, props.readOnlyFormValues)
+ ? transformApiEventTypeForAtom(data[0], props.entity, props.defaultFormValues)
: undefined,
};
}, [
diff --git a/packages/platform/atoms/cal-provider/BaseCalProvider.tsx b/packages/platform/atoms/cal-provider/BaseCalProvider.tsx
index c29bd90949..dd5f388770 100644
--- a/packages/platform/atoms/cal-provider/BaseCalProvider.tsx
+++ b/packages/platform/atoms/cal-provider/BaseCalProvider.tsx
@@ -113,7 +113,7 @@ export function BaseCalProvider({
let translation =
labels?.[resolvedKey as keyof typeof labels] ?? String(getTranslation(resolvedKey, language) ?? "");
if (!translation) {
- return "";
+ return key;
}
if (values) {
const valueKeys = Object.keys(values) as (keyof typeof values)[];
diff --git a/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts b/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts
index c4066b88a9..512677a153 100644
--- a/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts
+++ b/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts
@@ -8,13 +8,13 @@ import {
systemBeforeFieldLocation,
systemAfterFieldRescheduleReason,
transformRecurrenceApiToInternal,
- systemBeforeFieldNameReadOnly,
- systemBeforeFieldEmailReadOnly,
} from "@calcom/lib/event-types/transformers";
import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client";
import type {
CustomFieldOutput_2024_06_14,
+ EmailDefaultFieldOutput_2024_06_14,
EventTypeOutput_2024_06_14,
+ NameDefaultFieldOutput_2024_06_14,
TeamEventTypeOutput_2024_06_14,
} from "@calcom/platform-types";
import {
@@ -30,7 +30,7 @@ import type { BookerPlatformWrapperAtomProps } from "../../booker/BookerPlatform
export function transformApiEventTypeForAtom(
eventType: Omit,
entity: BookerPlatformWrapperAtomProps["entity"] | undefined,
- readOnlyFormValues: BookerPlatformWrapperAtomProps["readOnlyFormValues"] | undefined
+ defaultFormValues: BookerPlatformWrapperAtomProps["defaultFormValues"] | undefined
) {
const { lengthInMinutes, locations, bookingFields, users, recurrence, ...rest } = eventType;
@@ -50,7 +50,7 @@ export function transformApiEventTypeForAtom(
...rest,
length: lengthInMinutes,
locations: getLocations(locations),
- bookingFields: getBookingFields(bookingFields, readOnlyFormValues),
+ bookingFields: getBookingFields(bookingFields, defaultFormValues),
isDefault,
isDynamic: false,
profile: {
@@ -107,7 +107,7 @@ export function transformApiEventTypeForAtom(
export function transformApiTeamEventTypeForAtom(
eventType: TeamEventTypeOutput_2024_06_14,
entity: BookerPlatformWrapperAtomProps["entity"] | undefined,
- readOnlyFormValues: BookerPlatformWrapperAtomProps["readOnlyFormValues"] | undefined
+ defaultFormValues: BookerPlatformWrapperAtomProps["defaultFormValues"] | undefined
) {
const { lengthInMinutes, locations, hosts, bookingFields, recurrence, ...rest } = eventType;
@@ -126,7 +126,7 @@ export function transformApiTeamEventTypeForAtom(
...rest,
length: lengthInMinutes,
locations: getLocations(locations),
- bookingFields: getBookingFields(bookingFields, readOnlyFormValues),
+ bookingFields: getBookingFields(bookingFields, defaultFormValues),
isDefault,
isDynamic: false,
profile: {
@@ -226,26 +226,48 @@ function getLocations(locations: EventTypeOutput_2024_06_14["locations"]) {
function getBookingFields(
bookingFields: EventTypeOutput_2024_06_14["bookingFields"],
- readOnlyFormValues: BookerPlatformWrapperAtomProps["readOnlyFormValues"] | undefined
+ defaultFormValues: BookerPlatformWrapperAtomProps["defaultFormValues"] | undefined
) {
+ // note(Lauris): the peculiar thing about returning atom booking fields using v2 event type is that v2 event type has more possible
+ // booking field outputs than inputs due to default system fields that cant be passed as inputs, which is why we take v2 from response
+ // only the custom fields and default editable fields aka fields that can be passed as inputs for event type booking fields.
+ const customFields: (SystemField | CustomField)[] = bookingFields
+ ? transformBookingFieldsApiToInternal(
+ bookingFields.filter((field) => isCustomField(field) || isDefaultEditableField(field))
+ )
+ : [];
+
+ const customFieldsWithoutNameEmail = customFields.filter(
+ (field) => field.type !== "name" && field.type !== "email"
+ );
+ const customNameField = customFields?.find((field) => field.type === "name");
+ const customEmailField = customFields?.find((field) => field.type === "email");
+
const systemBeforeFields: SystemField[] = [
- readOnlyFormValues?.name ? systemBeforeFieldNameReadOnly : systemBeforeFieldName,
- readOnlyFormValues?.email ? systemBeforeFieldEmailReadOnly : systemBeforeFieldEmail,
+ customNameField || systemBeforeFieldName,
+ customEmailField || systemBeforeFieldEmail,
systemBeforeFieldLocation,
];
- const transformedCustomFields: CustomField[] = transformBookingFieldsApiToInternal(
- bookingFields.filter((field) => isCustomField(field))
- );
-
const systemAfterFields: SystemField[] = [systemAfterFieldRescheduleReason];
const transformedBookingFields: (SystemField | CustomField)[] = [
...systemBeforeFields,
- ...transformedCustomFields,
+ ...customFieldsWithoutNameEmail,
...systemAfterFields,
];
+ // note(Lauris): in web app booking form values can be passed as url query params, but booker atom does not accept booking field values via url,
+ // so defaultFormValues act as a way to prefill booking form fields, and if the field in database has disableOnPrefill=true and value passed then its read only.
+ const defaultFormValuesKeys = defaultFormValues ? Object.keys(defaultFormValues) : [];
+ if (defaultFormValuesKeys.length) {
+ for (const field of transformedBookingFields) {
+ if (defaultFormValuesKeys.includes(field.name) && field.disableOnPrefill) {
+ field.editable = "user-readonly";
+ }
+ }
+ }
+
return eventTypeBookingFields.brand<"HAS_SYSTEM_FIELDS">().parse(transformedBookingFields);
}
@@ -254,3 +276,9 @@ function isCustomField(
): field is CustomFieldOutput_2024_06_14 {
return !field.isDefault;
}
+
+function isDefaultEditableField(
+ field: EventTypeOutput_2024_06_14["bookingFields"][number]
+): field is NameDefaultFieldOutput_2024_06_14 | EmailDefaultFieldOutput_2024_06_14 {
+ return field.type === "name" || field.type === "email";
+}
diff --git a/packages/platform/libraries/index.ts b/packages/platform/libraries/index.ts
index efa8b22794..34471f0475 100644
--- a/packages/platform/libraries/index.ts
+++ b/packages/platform/libraries/index.ts
@@ -125,7 +125,12 @@ export {
systemAfterFieldRescheduleReason,
} from "@calcom/lib/event-types/transformers";
-export type { SystemField, CustomField } from "@calcom/lib/event-types/transformers";
+export type {
+ SystemField,
+ CustomField,
+ NameSystemField,
+ EmailSystemField,
+} from "@calcom/lib/event-types/transformers";
export { parseBookingLimit, parseEventTypeColor } from "@calcom/lib";
diff --git a/packages/platform/types/event-types/event-types_2024_06_14/inputs/booking-fields.input.ts b/packages/platform/types/event-types/event-types_2024_06_14/inputs/booking-fields.input.ts
index 056ae86e25..f844f77307 100644
--- a/packages/platform/types/event-types/event-types_2024_06_14/inputs/booking-fields.input.ts
+++ b/packages/platform/types/event-types/event-types_2024_06_14/inputs/booking-fields.input.ts
@@ -1,11 +1,13 @@
import { BadRequestException } from "@nestjs/common";
-import { ApiProperty as DocsProperty } from "@nestjs/swagger";
+import { ApiProperty as DocsProperty, ApiPropertyOptional as DocsPropertyOptional } from "@nestjs/swagger";
import { plainToInstance } from "class-transformer";
import { IsString, IsBoolean, IsArray, IsIn, IsOptional } from "class-validator";
import type { ValidationOptions, ValidatorConstraintInterface } from "class-validator";
import { registerDecorator, validate, ValidatorConstraint } from "class-validator";
const inputBookingFieldTypes = [
+ "name",
+ "email",
"phone",
"address",
"text",
@@ -19,6 +21,59 @@ const inputBookingFieldTypes = [
"boolean",
] as const;
+export class NameFieldInput_2024_06_14 {
+ @IsIn(inputBookingFieldTypes)
+ @DocsProperty({ example: "name", description: "only allowed value for type is `name`" })
+ type!: "name";
+
+ @IsString()
+ @IsOptional()
+ @DocsProperty()
+ label?: string;
+
+ @IsString()
+ @IsOptional()
+ @DocsProperty()
+ placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if URL contains query parameter `&name=bob`,\
+ the name field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
+}
+
+export class EmailFieldInput_2024_06_14 {
+ @IsIn(inputBookingFieldTypes)
+ @DocsProperty({ example: "email", description: "only allowed value for type is `email`" })
+ type!: "email";
+
+ @IsString()
+ @IsOptional()
+ @DocsProperty()
+ label?: string;
+
+ @IsString()
+ @IsOptional()
+ @DocsProperty()
+ placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if URL contains query parameter `&email=bob@gmail.com`,\
+ the email field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
+}
export class PhoneFieldInput_2024_06_14 {
@IsIn(inputBookingFieldTypes)
@DocsProperty({ example: "phone", description: "only allowed value for type is `phone`" })
@@ -44,6 +99,17 @@ export class PhoneFieldInput_2024_06_14 {
@IsOptional()
@DocsProperty()
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `phone` and the URL contains query parameter `&phone=1234567890`,\
+ the phone field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class AddressFieldInput_2024_06_14 {
@@ -72,6 +138,17 @@ export class AddressFieldInput_2024_06_14 {
@DocsProperty()
@DocsProperty({ example: "e.g., 1234 Main St" })
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `address` and the URL contains query parameter `&address=1234 Main St, London`,\
+ the address field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class TextFieldInput_2024_06_14 {
@@ -100,6 +177,17 @@ export class TextFieldInput_2024_06_14 {
@IsOptional()
@DocsProperty()
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `who-referred-you` and the URL contains query parameter `&who-referred-you=bob`,\
+ the text field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class NumberFieldInput_2024_06_14 {
@@ -128,6 +216,17 @@ export class NumberFieldInput_2024_06_14 {
@IsOptional()
@DocsProperty()
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `calories-per-day` and the URL contains query parameter `&calories-per-day=3000`,\
+ the number field will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class TextAreaFieldInput_2024_06_14 {
@@ -156,6 +255,17 @@ export class TextAreaFieldInput_2024_06_14 {
@IsOptional()
@DocsProperty()
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `dear-diary` and the URL contains query parameter `&dear-diary=Today I shipped a feature`,\
+ the text area will be prefilled with this value and disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class SelectFieldInput_2024_06_14 {
@@ -188,6 +298,17 @@ export class SelectFieldInput_2024_06_14 {
@IsArray()
@DocsProperty({ type: [String], example: ["Option 1", "Option 2"] })
options!: string[];
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`,\
+ the 'italian' will be selected and the select field will be disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class MultiSelectFieldInput_2024_06_14 {
@@ -214,6 +335,17 @@ export class MultiSelectFieldInput_2024_06_14 {
@IsArray()
@DocsProperty({ type: [String], example: ["Option 1", "Option 2"] })
options!: string[];
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `consultants` and the URL contains query parameter `&consultants=en&language=it`,\
+ the 'en' and 'it' will be selected and the select field will be disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class MultiEmailFieldInput_2024_06_14 {
@@ -242,6 +374,17 @@ export class MultiEmailFieldInput_2024_06_14 {
@IsOptional()
@DocsProperty()
placeholder?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `consultants` and the URL contains query parameter `&consultants=alice@gmail.com&consultants=bob@gmail.com`,\
+ the these emails will be added and none more can be added.",
+ })
+ disableOnPrefill?: boolean;
}
export class CheckboxGroupFieldInput_2024_06_14 {
@@ -268,6 +411,17 @@ export class CheckboxGroupFieldInput_2024_06_14 {
@IsArray()
@DocsProperty({ type: [String], example: ["Checkbox 1", "Checkbox 2"] })
options!: string[];
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `notify-me` and the URL contains query parameter `¬ify-me=true`,\
+ the checkbox will be selected and the checkbox field will be disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class RadioGroupFieldInput_2024_06_14 {
@@ -294,6 +448,17 @@ export class RadioGroupFieldInput_2024_06_14 {
@IsArray()
@DocsProperty({ type: [String], example: ["Radio 1", "Radio 2"] })
options!: string[];
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({
+ type: Boolean,
+ description:
+ "Disable this booking field if the URL contains query parameter with key equal to the slug and prefill it with the provided value.\
+ For example, if the slug is `language` and options of this select field are ['english', 'italian'] and the URL contains query parameter `&language=italian`,\
+ the 'italian' radio buttom will be selected and the select field will be disabled.",
+ })
+ disableOnPrefill?: boolean;
}
export class BooleanFieldInput_2024_06_14 {
@@ -316,9 +481,16 @@ export class BooleanFieldInput_2024_06_14 {
@IsBoolean()
@DocsProperty()
required!: boolean;
+
+ @IsBoolean()
+ @IsOptional()
+ @DocsPropertyOptional({ type: Boolean })
+ disableOnPrefill?: boolean;
}
export type InputBookingField_2024_06_14 =
+ | NameFieldInput_2024_06_14
+ | EmailFieldInput_2024_06_14
| PhoneFieldInput_2024_06_14
| AddressFieldInput_2024_06_14
| TextFieldInput_2024_06_14
@@ -334,6 +506,8 @@ export type InputBookingField_2024_06_14 =
@ValidatorConstraint({ async: true })
class InputBookingFieldValidator_2024_06_14 implements ValidatorConstraintInterface {
private classTypeMap: { [key: string]: new () => InputBookingField_2024_06_14 } = {
+ name: NameFieldInput_2024_06_14,
+ email: EmailFieldInput_2024_06_14,
phone: PhoneFieldInput_2024_06_14,
address: AddressFieldInput_2024_06_14,
text: TextFieldInput_2024_06_14,
@@ -347,7 +521,7 @@ class InputBookingFieldValidator_2024_06_14 implements ValidatorConstraintInterf
boolean: BooleanFieldInput_2024_06_14,
};
- private reservedSystemSlugs = ["name", "email", "location", "rescheduleReason"];
+ private reservedSystemSlugs = ["location", "rescheduleReason"];
async validate(bookingFields: { type: string; slug: string }[]) {
if (!Array.isArray(bookingFields)) {
@@ -365,7 +539,8 @@ class InputBookingFieldValidator_2024_06_14 implements ValidatorConstraintInterf
throw new BadRequestException(`Each booking field must have a 'type' property.`);
}
- if (!slug) {
+ const notSystemEditableField = type !== "name" && type !== "email";
+ if (notSystemEditableField && !slug) {
throw new BadRequestException(`Each booking field must have a 'slug' property.`);
}
@@ -382,7 +557,9 @@ class InputBookingFieldValidator_2024_06_14 implements ValidatorConstraintInterf
`Duplicate bookingFields slug '${slug}' found. All bookingFields slugs must be unique.`
);
}
- slugs.push(slug);
+ if (notSystemEditableField) {
+ slugs.push(slug);
+ }
const ClassType = this.classTypeMap[type];
if (!ClassType) {
diff --git a/packages/platform/types/event-types/event-types_2024_06_14/outputs/booking-fields.output.ts b/packages/platform/types/event-types/event-types_2024_06_14/outputs/booking-fields.output.ts
index 4253f443ee..69510be221 100644
--- a/packages/platform/types/event-types/event-types_2024_06_14/outputs/booking-fields.output.ts
+++ b/packages/platform/types/event-types/event-types_2024_06_14/outputs/booking-fields.output.ts
@@ -17,9 +17,11 @@ import {
CheckboxGroupFieldInput_2024_06_14,
RadioGroupFieldInput_2024_06_14,
BooleanFieldInput_2024_06_14,
+ NameFieldInput_2024_06_14,
+ EmailFieldInput_2024_06_14,
} from "../inputs";
-export class NameDefaultFieldOutput_2024_06_14 {
+export class NameDefaultFieldOutput_2024_06_14 extends NameFieldInput_2024_06_14 {
@IsBoolean()
@DocsProperty({
description: "This property is always true because it's a default field",
@@ -45,7 +47,7 @@ export class NameDefaultFieldOutput_2024_06_14 {
required!: true;
}
-export class EmailDefaultFieldOutput_2024_06_14 {
+export class EmailDefaultFieldOutput_2024_06_14 extends EmailFieldInput_2024_06_14 {
@IsBoolean()
@DocsProperty({
description: "This property is always true because it's a default field",
diff --git a/yarn.lock b/yarn.lock
index 3d43af0bb1..a55bb50b6d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4125,7 +4125,7 @@ __metadata:
dependencies:
"@calcom/platform-constants": "*"
"@calcom/platform-enums": "*"
- "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.45"
+ "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.47"
"@calcom/platform-libraries-0.0.2": "npm:@calcom/platform-libraries@0.0.2"
"@calcom/platform-types": "*"
"@calcom/platform-utils": "*"
@@ -4318,28 +4318,6 @@ __metadata:
languageName: unknown
linkType: soft
-"@calcom/atoms@npm:1.0.60":
- version: 1.0.60
- resolution: "@calcom/atoms@npm:1.0.60"
- dependencies:
- "@radix-ui/react-dialog": ^1.0.4
- "@radix-ui/react-slot": ^1.0.2
- "@radix-ui/react-switch": ^1.1.0
- "@radix-ui/react-toast": ^1.1.5
- "@tanstack/react-query": ^5.17.15
- class-variance-authority: ^0.7.0
- clsx: ^2.0.0
- react-use: ^17.4.2
- tailwind-merge: ^1.13.2
- tailwindcss: ^3.3.3
- tailwindcss-animate: ^1.0.6
- peerDependencies:
- react: ">=18.0.0"
- typescript: ">=5.4.5"
- checksum: b216d40948ca1a96d8374c0f9878c1c9b5776b2b6cc569ba7fb344fec360fe4a43f23f97a4d82e4c5ad75c83ea6c8b63de079088598594564bf44d00d7cb9b42
- languageName: node
- linkType: hard
-
"@calcom/autocheckin@workspace:packages/app-store/autocheckin":
version: 0.0.0-use.local
resolution: "@calcom/autocheckin@workspace:packages/app-store/autocheckin"
@@ -4497,7 +4475,7 @@ __metadata:
chart.js: ^3.7.1
client-only: ^0.0.1
eslint: ^8.34.0
- next: ^13.5.6
+ next: ^13.5.4
next-auth: ^4.22.1
next-i18next: ^13.2.2
postcss: ^8.4.18
@@ -5154,14 +5132,14 @@ __metadata:
languageName: node
linkType: hard
-"@calcom/platform-libraries@npm:@calcom/platform-libraries@0.0.45":
- version: 0.0.45
- resolution: "@calcom/platform-libraries@npm:0.0.45"
+"@calcom/platform-libraries@npm:@calcom/platform-libraries@0.0.47":
+ version: 0.0.47
+ resolution: "@calcom/platform-libraries@npm:0.0.47"
dependencies:
"@calcom/core": "*"
"@calcom/features": "*"
"@calcom/lib": "*"
- checksum: 69f3513cd389d328153ba6704db3eb6251a005618f4d71de7b6102e553393004da9c420c3685370c8a4daa255a0964d2f2f6979079e66036e0be2e4c2277c8ce
+ checksum: 2a942510e6d1165903dcb6abb37cc1ab7f8ff1cd8cd69512a5ed6affca2f3a1698c3072b453055140e7aa3def1b04bd1fb153485f50fb4ff390621fd823398b9
languageName: node
linkType: hard
@@ -5513,6 +5491,15 @@ __metadata:
languageName: unknown
linkType: soft
+"@calcom/telli@workspace:packages/app-store/telli":
+ version: 0.0.0-use.local
+ resolution: "@calcom/telli@workspace:packages/app-store/telli"
+ dependencies:
+ "@calcom/lib": "*"
+ "@calcom/types": "*"
+ languageName: unknown
+ linkType: soft
+
"@calcom/trpc@*, @calcom/trpc@workspace:packages/trpc":
version: 0.0.0-use.local
resolution: "@calcom/trpc@workspace:packages/trpc"
@@ -5821,7 +5808,6 @@ __metadata:
dependencies:
"@algora/sdk": ^0.1.2
"@calcom/app-store": "*"
- "@calcom/atoms": 1.0.60
"@calcom/config": "*"
"@calcom/dayjs": "*"
"@calcom/embed-react": "workspace:^"
@@ -5831,8 +5817,6 @@ __metadata:
"@calcom/tsconfig": "*"
"@calcom/ui": "*"
"@datocms/cma-client-node": ^2.0.0
- "@dub/analytics": ^0.0.15
- "@eslint/js": ^9.9.0
"@floating-ui/react-dom": ^1.0.0
"@flodlc/nebula": ^1.0.56
"@graphql-codegen/cli": ^5.0.0
@@ -5850,7 +5834,6 @@ __metadata:
"@radix-ui/react-dropdown-menu": ^2.0.5
"@radix-ui/react-navigation-menu": ^1.0.0
"@radix-ui/react-portal": ^1.0.0
- "@radix-ui/react-select": ^2.1.1
"@radix-ui/react-slider": ^1.0.0
"@radix-ui/react-tabs": ^1.0.0
"@radix-ui/react-tooltip": ^1.0.0
@@ -5870,7 +5853,6 @@ __metadata:
"@vercel/og": ^0.5.0
autoprefixer: ^10.4.12
bcryptjs: ^2.4.3
- class-variance-authority: ^0.7.0
clsx: ^1.2.1
cobe: ^0.4.1
concurrently: ^7.6.0
@@ -5879,14 +5861,10 @@ __metadata:
datocms-structured-text-utils: ^2.0.4
debounce: ^1.2.1
dotenv: ^16.3.1
- embla-carousel-react: ^8.1.8
enquirer: ^2.4.1
env-cmd: ^10.1.0
- eslint: ^9.9.0
- eslint-plugin-react: ^7.35.0
+ eslint: ^8.34.0
fathom-client: ^3.5.0
- framer-motion: ^11.0.25
- globals: ^15.9.0
globby: ^13.1.3
graphql: ^16.8.0
graphql-codegen: ^0.4.0
@@ -5896,7 +5874,7 @@ __metadata:
i18n-unused: ^0.13.0
iframe-resizer-react: ^1.1.0
keen-slider: ^6.8.0
- lucide-react: ^0.364.0
+ lucide-react: ^0.171.0
micro: ^10.0.1
next: ^14.1.3
next-auth: ^4.22.1
@@ -5905,11 +5883,10 @@ __metadata:
next-seo: ^6.0.0
playwright-core: ^1.38.1
postcss: ^8.4.18
- prettier: 3.3.3
prism-react-renderer: ^1.3.5
react: ^18.2.0
react-confetti: ^6.0.1
- react-datocms: ^5.0.3
+ react-datocms: ^3.1.0
react-device-detect: ^2.2.2
react-dom: ^18.2.0
react-fast-marquee: ^1.6.4
@@ -5919,10 +5896,8 @@ __metadata:
react-live-chat-loader: ^2.8.1
react-markdown: ^9.0.1
react-merge-refs: 1.1.0
- react-parallax-tilt: ^1.7.226
react-resize-detector: ^9.1.0
react-twemoji: ^0.3.0
- react-twitter-embed: ^4.0.4
react-use-measure: ^2.1.1
react-wrap-balancer: ^1.0.0
remark: ^14.0.2
@@ -5932,8 +5907,7 @@ __metadata:
tailwind-merge: ^1.13.2
tailwindcss: ^3.3.3
ts-node: ^10.9.1
- typescript: ^4.4.4
- typescript-eslint: ^8.2.0
+ typescript: ^4.9.4
wait-on: ^7.0.1
xml2js: ^0.6.0
zod: ^3.22.2
@@ -7034,7 +7008,7 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0":
+"@eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
@@ -7045,13 +7019,6 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0":
- version: 4.11.1
- resolution: "@eslint-community/regexpp@npm:4.11.1"
- checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70
- languageName: node
- linkType: hard
-
"@eslint-community/regexpp@npm:^4.6.1":
version: 4.10.0
resolution: "@eslint-community/regexpp@npm:4.10.0"
@@ -7059,24 +7026,6 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/config-array@npm:^0.18.0":
- version: 0.18.0
- resolution: "@eslint/config-array@npm:0.18.0"
- dependencies:
- "@eslint/object-schema": ^2.1.4
- debug: ^4.3.1
- minimatch: ^3.1.2
- checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc
- languageName: node
- linkType: hard
-
-"@eslint/core@npm:^0.6.0":
- version: 0.6.0
- resolution: "@eslint/core@npm:0.6.0"
- checksum: bf6a285d8cfb7f76524041991832fcc1573c7fc4bdfa091a14972bdb719d5a735330efb88ec453dd33930f49bcc9bb2737b40c43fb1220933781ebb712667265
- languageName: node
- linkType: hard
-
"@eslint/eslintrc@npm:^1.4.1":
version: 1.4.1
resolution: "@eslint/eslintrc@npm:1.4.1"
@@ -7111,23 +7060,6 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^3.1.0":
- version: 3.1.0
- resolution: "@eslint/eslintrc@npm:3.1.0"
- dependencies:
- ajv: ^6.12.4
- debug: ^4.3.2
- espree: ^10.0.1
- globals: ^14.0.0
- ignore: ^5.2.0
- import-fresh: ^3.2.1
- js-yaml: ^4.1.0
- minimatch: ^3.1.2
- strip-json-comments: ^3.1.1
- checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4
- languageName: node
- linkType: hard
-
"@eslint/js@npm:8.57.0":
version: 8.57.0
resolution: "@eslint/js@npm:8.57.0"
@@ -7135,29 +7067,6 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/js@npm:9.12.0, @eslint/js@npm:^9.9.0":
- version: 9.12.0
- resolution: "@eslint/js@npm:9.12.0"
- checksum: cad2ee0d3080a3e507e18f1846e343d4dac00cb83b0c56355fa165b05fa0780ad746e0b93540666036e50b4cf4a4ee496a730417e500dc217c201902edd7ab5b
- languageName: node
- linkType: hard
-
-"@eslint/object-schema@npm:^2.1.4":
- version: 2.1.4
- resolution: "@eslint/object-schema@npm:2.1.4"
- checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271
- languageName: node
- linkType: hard
-
-"@eslint/plugin-kit@npm:^0.2.0":
- version: 0.2.0
- resolution: "@eslint/plugin-kit@npm:0.2.0"
- dependencies:
- levn: ^0.4.1
- checksum: 2c358c816575b8338e017cff59bf8b7a186510bc0e6c1b234e889156bfea9e00ce588ce424a0aa5d322e316f1ad08e8fdc7450a7fd966c64cbb911e64eaffbb9
- languageName: node
- linkType: hard
-
"@ewsjs/ntlm-client@npm:^3.0.1":
version: 3.0.1
resolution: "@ewsjs/ntlm-client@npm:3.0.1"
@@ -8161,23 +8070,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanfs/core@npm:^0.19.0":
- version: 0.19.0
- resolution: "@humanfs/core@npm:0.19.0"
- checksum: d73c153e9a41efce401cdf8eaa831e5b01630b45a46678eded3803347251a24446f1500b0074750fcab0a88d947609b164a0d5bba57f58ec18167bea01c69ac5
- languageName: node
- linkType: hard
-
-"@humanfs/node@npm:^0.16.5":
- version: 0.16.5
- resolution: "@humanfs/node@npm:0.16.5"
- dependencies:
- "@humanfs/core": ^0.19.0
- "@humanwhocodes/retry": ^0.3.0
- checksum: ae4799c6bf436450e1b1836f23fdb4ce0eb862df8e02fd498ee7d8ebe552d85fe36ccac81fcfbe39bf43cb49b302ae438d94699a451d1cfc78f64198d4b45674
- languageName: node
- linkType: hard
-
"@humanwhocodes/config-array@npm:^0.11.14":
version: 0.11.14
resolution: "@humanwhocodes/config-array@npm:0.11.14"
@@ -8221,13 +8113,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/retry@npm:^0.3.0, @humanwhocodes/retry@npm:^0.3.1":
- version: 0.3.1
- resolution: "@humanwhocodes/retry@npm:0.3.1"
- checksum: 7e5517bb51dbea3e02ab6cacef59a8f4b0ca023fc4b0b8cbc40de0ad29f46edd50b897c6e7fba79366a0217e3f48e2da8975056f6c35cfe19d9cc48f1d03c1dd
- languageName: node
- linkType: hard
-
"@iarna/toml@npm:2.2.5":
version: 2.2.5
resolution: "@iarna/toml@npm:2.2.5"
@@ -9622,60 +9507,6 @@ __metadata:
languageName: node
linkType: hard
-"@mux/mux-player-react@npm:*":
- version: 3.0.0
- resolution: "@mux/mux-player-react@npm:3.0.0"
- dependencies:
- "@mux/mux-player": 3.0.0
- "@mux/playback-core": 0.26.0
- prop-types: ^15.7.2
- peerDependencies:
- "@types/react": ^17.0.0 || ^18 || ^19
- react: ^17.0.2 || ^18 || ^19
- react-dom: ^17.0.2 || ^18 || ^19
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: ab399677b9f044e74f1c56b02bf75e02154886b2b4a778073d8179440c6ac2fee51692f4ad75ba25d6fe7c35a5a1b2ebe2ae807b7a36e3669bea65392b373b10
- languageName: node
- linkType: hard
-
-"@mux/mux-player@npm:3.0.0":
- version: 3.0.0
- resolution: "@mux/mux-player@npm:3.0.0"
- dependencies:
- "@mux/mux-video": 0.21.0
- "@mux/playback-core": 0.26.0
- media-chrome: ~4.1.1
- player.style: ^0.0.8
- checksum: f2110d03eb49e2468b964cda2f70ea201cefafc35b738f6247637711d97f93f2a0828d51e0da04439a131ee6cdb530fc6ebaec228d268013cc6d30e68a6fda2f
- languageName: node
- linkType: hard
-
-"@mux/mux-video@npm:0.21.0":
- version: 0.21.0
- resolution: "@mux/mux-video@npm:0.21.0"
- dependencies:
- "@mux/playback-core": 0.26.0
- castable-video: ~1.1.0
- custom-media-element: ~1.3.1
- media-tracks: ~0.3.2
- checksum: 33b9083c84ea3ad0f7c59e545790b605f4cdc47714f488fa6ab269dd8531060deac6c4a1237d132722d706f68c786561b712b83b5581398ffaa7f0a3fc642c31
- languageName: node
- linkType: hard
-
-"@mux/playback-core@npm:0.26.0":
- version: 0.26.0
- resolution: "@mux/playback-core@npm:0.26.0"
- dependencies:
- hls.js: ~1.5.11
- mux-embed: ^5.3.0
- checksum: 648300310eee8038654c6f2aa5be2ab0bf6ad281a6bb01ea5ffe84e501230959655917a4800d96841aa5342e1e06cc97c32228b0eeb462f57264e5dd524f1b95
- languageName: node
- linkType: hard
-
"@ndelangen/get-tarball@npm:^3.0.7":
version: 3.0.9
resolution: "@ndelangen/get-tarball@npm:3.0.9"
@@ -10280,6 +10111,19 @@ __metadata:
languageName: node
linkType: hard
+"@npmcli/agent@npm:^2.0.0":
+ version: 2.2.2
+ resolution: "@npmcli/agent@npm:2.2.2"
+ dependencies:
+ agent-base: ^7.1.0
+ http-proxy-agent: ^7.0.0
+ https-proxy-agent: ^7.0.1
+ lru-cache: ^10.0.1
+ socks-proxy-agent: ^8.0.3
+ checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874
+ languageName: node
+ linkType: hard
+
"@npmcli/fs@npm:^2.1.0":
version: 2.1.2
resolution: "@npmcli/fs@npm:2.1.2"
@@ -10290,6 +10134,15 @@ __metadata:
languageName: node
linkType: hard
+"@npmcli/fs@npm:^3.1.0":
+ version: 3.1.1
+ resolution: "@npmcli/fs@npm:3.1.1"
+ dependencies:
+ semver: ^7.3.5
+ checksum: d960cab4b93adcb31ce223bfb75c5714edbd55747342efb67dcc2f25e023d930a7af6ece3e75f2f459b6f38fc14d031c766f116cd124fdc937fd33112579e820
+ languageName: node
+ linkType: hard
+
"@npmcli/move-file@npm:^2.0.0":
version: 2.0.1
resolution: "@npmcli/move-file@npm:2.0.1"
@@ -11871,13 +11724,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/number@npm:1.1.0":
- version: 1.1.0
- resolution: "@radix-ui/number@npm:1.1.0"
- checksum: e4fc7483c19141c25dbaf3d140b75e2b7fed0bfa3ad969f4441f0266ed34b35413f57a35df7b025e2a977152bbe6131849d3444fc6f15a73345dfc2bfdc105fa
- languageName: node
- linkType: hard
-
"@radix-ui/primitive@npm:0.1.0":
version: 0.1.0
resolution: "@radix-ui/primitive@npm:0.1.0"
@@ -11959,25 +11805,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-arrow@npm:1.1.0":
- version: 1.1.0
- resolution: "@radix-ui/react-arrow@npm:1.1.0"
- dependencies:
- "@radix-ui/react-primitive": 2.0.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: 8522e0a8095ecc32d3a719f9c3bc0514c677a9c9d5ac26985d5416576dbc487c2a49ba2484397d9de502b54657856cb41ca3ea0b2165563eeeae45a83750885b
- languageName: node
- linkType: hard
-
"@radix-ui/react-avatar@npm:^1.0.4":
version: 1.0.4
resolution: "@radix-ui/react-avatar@npm:1.0.4"
@@ -12241,19 +12068,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-context@npm:1.1.1":
- version: 1.1.1
- resolution: "@radix-ui/react-context@npm:1.1.1"
- peerDependencies:
- "@types/react": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f
- languageName: node
- linkType: hard
-
"@radix-ui/react-dialog@npm:1.0.0":
version: 1.0.0
resolution: "@radix-ui/react-dialog@npm:1.0.0"
@@ -12446,29 +12260,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-dismissable-layer@npm:1.1.1":
- version: 1.1.1
- resolution: "@radix-ui/react-dismissable-layer@npm:1.1.1"
- dependencies:
- "@radix-ui/primitive": 1.1.0
- "@radix-ui/react-compose-refs": 1.1.0
- "@radix-ui/react-primitive": 2.0.0
- "@radix-ui/react-use-callback-ref": 1.1.0
- "@radix-ui/react-use-escape-keydown": 1.1.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: 18450111de16435a6e98661c8530bf87d8dfe51aa8649fea4f420db389642800792bc454669cab010c35cd402e9ae945c882e78e4cf2ce209d9c701f7a9b940f
- languageName: node
- linkType: hard
-
"@radix-ui/react-dropdown-menu@npm:^2.0.5":
version: 2.0.5
resolution: "@radix-ui/react-dropdown-menu@npm:2.0.5"
@@ -12521,19 +12312,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-focus-guards@npm:1.1.1":
- version: 1.1.1
- resolution: "@radix-ui/react-focus-guards@npm:1.1.1"
- peerDependencies:
- "@types/react": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- checksum: ac8dd31f48fa0500bafd9368f2f06c5a06918dccefa89fa5dc77ca218dc931a094a81ca57f6b181138029822f7acdd5280dceccf5ba4d9263c754fb8f7961879
- languageName: node
- linkType: hard
-
"@radix-ui/react-focus-scope@npm:0.1.4":
version: 0.1.4
resolution: "@radix-ui/react-focus-scope@npm:0.1.4"
@@ -12585,27 +12363,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-focus-scope@npm:1.1.0":
- version: 1.1.0
- resolution: "@radix-ui/react-focus-scope@npm:1.1.0"
- dependencies:
- "@radix-ui/react-compose-refs": 1.1.0
- "@radix-ui/react-primitive": 2.0.0
- "@radix-ui/react-use-callback-ref": 1.1.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: bea6c993752780c46c69f0c21a0fd96f11b9ed7edac23deb0953fbd8524d90938bf4c8060ccac7cad14caba3eb493f2642be7f8933910f4b6fa184666b7fcb40
- languageName: node
- linkType: hard
-
"@radix-ui/react-hover-card@npm:^1.0.7":
version: 1.0.7
resolution: "@radix-ui/react-hover-card@npm:1.0.7"
@@ -12865,34 +12622,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-popper@npm:1.2.0":
- version: 1.2.0
- resolution: "@radix-ui/react-popper@npm:1.2.0"
- dependencies:
- "@floating-ui/react-dom": ^2.0.0
- "@radix-ui/react-arrow": 1.1.0
- "@radix-ui/react-compose-refs": 1.1.0
- "@radix-ui/react-context": 1.1.0
- "@radix-ui/react-primitive": 2.0.0
- "@radix-ui/react-use-callback-ref": 1.1.0
- "@radix-ui/react-use-layout-effect": 1.1.0
- "@radix-ui/react-use-rect": 1.1.0
- "@radix-ui/react-use-size": 1.1.0
- "@radix-ui/rect": 1.1.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: 95b2390181abe3296274b3e3836d295dc7b1624462ca88cc283b70c4efa25b1a640ff56cfe2cc8606bfe493f81b57a86345f962d86a027ad673aed58390545c6
- languageName: node
- linkType: hard
-
"@radix-ui/react-portal@npm:0.1.4":
version: 0.1.4
resolution: "@radix-ui/react-portal@npm:0.1.4"
@@ -12960,26 +12689,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-portal@npm:1.1.2":
- version: 1.1.2
- resolution: "@radix-ui/react-portal@npm:1.1.2"
- dependencies:
- "@radix-ui/react-primitive": 2.0.0
- "@radix-ui/react-use-layout-effect": 1.1.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: 2f737dc0445f02f512f814ba140227e1a049b3d215d79e22ead412c9befe830292c48a559a8ad1514a474ae8f0c4c43954dfbe294b93a0279d8747d08f7b7924
- languageName: node
- linkType: hard
-
"@radix-ui/react-presence@npm:1.0.0":
version: 1.0.0
resolution: "@radix-ui/react-presence@npm:1.0.0"
@@ -13253,45 +12962,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-select@npm:^2.1.1":
- version: 2.1.2
- resolution: "@radix-ui/react-select@npm:2.1.2"
- dependencies:
- "@radix-ui/number": 1.1.0
- "@radix-ui/primitive": 1.1.0
- "@radix-ui/react-collection": 1.1.0
- "@radix-ui/react-compose-refs": 1.1.0
- "@radix-ui/react-context": 1.1.1
- "@radix-ui/react-direction": 1.1.0
- "@radix-ui/react-dismissable-layer": 1.1.1
- "@radix-ui/react-focus-guards": 1.1.1
- "@radix-ui/react-focus-scope": 1.1.0
- "@radix-ui/react-id": 1.1.0
- "@radix-ui/react-popper": 1.2.0
- "@radix-ui/react-portal": 1.1.2
- "@radix-ui/react-primitive": 2.0.0
- "@radix-ui/react-slot": 1.1.0
- "@radix-ui/react-use-callback-ref": 1.1.0
- "@radix-ui/react-use-controllable-state": 1.1.0
- "@radix-ui/react-use-layout-effect": 1.1.0
- "@radix-ui/react-use-previous": 1.1.0
- "@radix-ui/react-visually-hidden": 1.1.0
- aria-hidden: ^1.1.1
- react-remove-scroll: 2.6.0
- peerDependencies:
- "@types/react": "*"
- "@types/react-dom": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- "@types/react-dom":
- optional: true
- checksum: cd662a5f0b1cc77dd81df51997ddc1dd47cc0025551e4ffa0c2675c056b3609257096d4f4e27189ddac98771a0191d68323c97d61fa0991d6fae78e708650959
- languageName: node
- linkType: hard
-
"@radix-ui/react-separator@npm:1.0.3":
version: 1.0.3
resolution: "@radix-ui/react-separator@npm:1.0.3"
@@ -13887,21 +13557,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/react-use-rect@npm:1.1.0":
- version: 1.1.0
- resolution: "@radix-ui/react-use-rect@npm:1.1.0"
- dependencies:
- "@radix-ui/rect": 1.1.0
- peerDependencies:
- "@types/react": "*"
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- "@types/react":
- optional: true
- checksum: facc9528af43df3b01952dbb915ff751b5924db2c31d41f053ddea19a7cc5cac5b096c4d7a2059e8f564a3f0d4a95bcd909df8faed52fa01709af27337628e2c
- languageName: node
- linkType: hard
-
"@radix-ui/react-use-size@npm:1.0.1":
version: 1.0.1
resolution: "@radix-ui/react-use-size@npm:1.0.1"
@@ -13993,13 +13648,6 @@ __metadata:
languageName: node
linkType: hard
-"@radix-ui/rect@npm:1.1.0":
- version: 1.1.0
- resolution: "@radix-ui/rect@npm:1.1.0"
- checksum: 1ad93efbc9fc3b878bae5e8bb26ffa1005235d8b5b9fca8339eb5dbcf7bf53abc9ccd2a8ce128557820168c8600521e48e0ea4dda96aa5f116381f66f46aeda3
- languageName: node
- linkType: hard
-
"@reach/observe-rect@npm:^1.1.0":
version: 1.2.0
resolution: "@reach/observe-rect@npm:1.2.0"
@@ -17807,13 +17455,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/estree@npm:^1.0.6":
- version: 1.0.6
- resolution: "@types/estree@npm:1.0.6"
- checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9
- languageName: node
- linkType: hard
-
"@types/express-jwt@npm:0.0.42":
version: 0.0.42
resolution: "@types/express-jwt@npm:0.0.42"
@@ -18094,13 +17735,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/json-schema@npm:^7.0.15":
- version: 7.0.15
- resolution: "@types/json-schema@npm:7.0.15"
- checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98
- languageName: node
- linkType: hard
-
"@types/json5@npm:^0.0.29":
version: 0.0.29
resolution: "@types/json5@npm:0.0.29"
@@ -18922,29 +18556,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/eslint-plugin@npm:8.8.1"
- dependencies:
- "@eslint-community/regexpp": ^4.10.0
- "@typescript-eslint/scope-manager": 8.8.1
- "@typescript-eslint/type-utils": 8.8.1
- "@typescript-eslint/utils": 8.8.1
- "@typescript-eslint/visitor-keys": 8.8.1
- graphemer: ^1.4.0
- ignore: ^5.3.1
- natural-compare: ^1.4.0
- ts-api-utils: ^1.3.0
- peerDependencies:
- "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: 1f68a48a98ccf9a97674a4f58ed43624b9eb57b8d99440ecd35f1dfeeb4905d18bc044bd0857f7dbea354d49562ee66f8639133dc273edfc65d3b34ddd58036d
- languageName: node
- linkType: hard
-
"@typescript-eslint/eslint-plugin@npm:^5.52.0":
version: 5.52.0
resolution: "@typescript-eslint/eslint-plugin@npm:5.52.0"
@@ -18969,24 +18580,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/parser@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/parser@npm:8.8.1"
- dependencies:
- "@typescript-eslint/scope-manager": 8.8.1
- "@typescript-eslint/types": 8.8.1
- "@typescript-eslint/typescript-estree": 8.8.1
- "@typescript-eslint/visitor-keys": 8.8.1
- debug: ^4.3.4
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: d3b6d5549533a09826a1b13be281c9af2d222bd41087d9bdafffe6db0cd65c74dba2a799486cb4d42b39c114eee734f989b13966a1d84a42c453701ed4da5095
- languageName: node
- linkType: hard
-
"@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0":
version: 6.21.0
resolution: "@typescript-eslint/parser@npm:6.21.0"
@@ -19069,16 +18662,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/scope-manager@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/scope-manager@npm:8.8.1"
- dependencies:
- "@typescript-eslint/types": 8.8.1
- "@typescript-eslint/visitor-keys": 8.8.1
- checksum: 08527c75ac99192d86e4c93bf3c0628f0ec63f2337a4f7e7f9fab17a6a37b396dc1a3589ea291fcdd0f2c7c0874b4d18e16ace977e16234b4bcc27926796ea4d
- languageName: node
- linkType: hard
-
"@typescript-eslint/type-utils@npm:5.52.0":
version: 5.52.0
resolution: "@typescript-eslint/type-utils@npm:5.52.0"
@@ -19096,21 +18679,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/type-utils@npm:8.8.1"
- dependencies:
- "@typescript-eslint/typescript-estree": 8.8.1
- "@typescript-eslint/utils": 8.8.1
- debug: ^4.3.4
- ts-api-utils: ^1.3.0
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: 2674288fcf99bda0439ec60b42da8fbc9cc2f827c41bbef7f4687beeb3d24a09fbc50897d7f090743830a00cf4e018a3cec7847842bf58d83b70a42203898278
- languageName: node
- linkType: hard
-
"@typescript-eslint/types@npm:5.48.0":
version: 5.48.0
resolution: "@typescript-eslint/types@npm:5.48.0"
@@ -19139,13 +18707,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/types@npm:8.8.1"
- checksum: 271d0dc55743d63e038c1476b47aee28db96029138bd1ace5cd16a12e1c32819b3fa0e53a9a26fd548e463ed6cdb3caf4dfd643cb7c7fc2004a624efd6e9d17e
- languageName: node
- linkType: hard
-
"@typescript-eslint/typescript-estree@npm:5.48.0":
version: 5.48.0
resolution: "@typescript-eslint/typescript-estree@npm:5.48.0"
@@ -19219,25 +18780,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/typescript-estree@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/typescript-estree@npm:8.8.1"
- dependencies:
- "@typescript-eslint/types": 8.8.1
- "@typescript-eslint/visitor-keys": 8.8.1
- debug: ^4.3.4
- fast-glob: ^3.3.2
- is-glob: ^4.0.3
- minimatch: ^9.0.4
- semver: ^7.6.0
- ts-api-utils: ^1.3.0
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: 893795fd562da8babcf6eca36e1ea1a39920200dbd15e826120a3482458be6648f0d138c71c4c840aded0feb7528272c0b9033d57fba978756a6d2730cec5ca6
- languageName: node
- linkType: hard
-
"@typescript-eslint/utils@npm:5.52.0, @typescript-eslint/utils@npm:^5.52.0":
version: 5.52.0
resolution: "@typescript-eslint/utils@npm:5.52.0"
@@ -19256,20 +18798,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/utils@npm:8.8.1"
- dependencies:
- "@eslint-community/eslint-utils": ^4.4.0
- "@typescript-eslint/scope-manager": 8.8.1
- "@typescript-eslint/types": 8.8.1
- "@typescript-eslint/typescript-estree": 8.8.1
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- checksum: cf31d18edb646f6c864239f591fcff322ae315c27337d2f07f71f1a859e58102467923810ef165acc6fb147be857b319087fb82622d93c9ca49042872f576f80
- languageName: node
- linkType: hard
-
"@typescript-eslint/visitor-keys@npm:5.48.0":
version: 5.48.0
resolution: "@typescript-eslint/visitor-keys@npm:5.48.0"
@@ -19310,16 +18838,6 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@npm:8.8.1":
- version: 8.8.1
- resolution: "@typescript-eslint/visitor-keys@npm:8.8.1"
- dependencies:
- "@typescript-eslint/types": 8.8.1
- eslint-visitor-keys: ^3.4.3
- checksum: c5861ae79fb3f190e7882dcdf7735799249c73804f0e52e2ac5a5000bc33cbc44c4e3a0800db7aa8d5ee5c43393495eec7a7c7c963ceafc122e8472b479b32f5
- languageName: node
- linkType: hard
-
"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0":
version: 1.2.0
resolution: "@ungap/structured-clone@npm:1.2.0"
@@ -20012,6 +19530,13 @@ __metadata:
languageName: node
linkType: hard
+"abbrev@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "abbrev@npm:2.0.0"
+ checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36
+ languageName: node
+ linkType: hard
+
"abort-controller@npm:^3.0.0":
version: 3.0.0
resolution: "abort-controller@npm:3.0.0"
@@ -20124,15 +19649,6 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^8.12.0":
- version: 8.12.1
- resolution: "acorn@npm:8.12.1"
- bin:
- acorn: bin/acorn
- checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07
- languageName: node
- linkType: hard
-
"acorn@npm:^8.5.0":
version: 8.7.1
resolution: "acorn@npm:8.7.1"
@@ -20211,6 +19727,15 @@ __metadata:
languageName: node
linkType: hard
+"agent-base@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "agent-base@npm:7.1.1"
+ dependencies:
+ debug: ^4.3.4
+ checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037
+ languageName: node
+ linkType: hard
+
"agentkeepalive@npm:^4.2.1":
version: 4.3.0
resolution: "agentkeepalive@npm:4.3.0"
@@ -20728,20 +20253,6 @@ __metadata:
languageName: node
linkType: hard
-"array-includes@npm:^3.1.8":
- version: 3.1.8
- resolution: "array-includes@npm:3.1.8"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.2
- es-object-atoms: ^1.0.0
- get-intrinsic: ^1.2.4
- is-string: ^1.0.7
- checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91
- languageName: node
- linkType: hard
-
"array-timsort@npm:^1.0.3":
version: 1.0.3
resolution: "array-timsort@npm:1.0.3"
@@ -20782,20 +20293,6 @@ __metadata:
languageName: node
linkType: hard
-"array.prototype.findlast@npm:^1.2.5":
- version: 1.2.5
- resolution: "array.prototype.findlast@npm:1.2.5"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.2
- es-errors: ^1.3.0
- es-object-atoms: ^1.0.0
- es-shim-unscopables: ^1.0.2
- checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446
- languageName: node
- linkType: hard
-
"array.prototype.findlastindex@npm:^1.2.3":
version: 1.2.4
resolution: "array.prototype.findlastindex@npm:1.2.4"
@@ -20932,19 +20429,6 @@ __metadata:
languageName: node
linkType: hard
-"array.prototype.tosorted@npm:^1.1.4":
- version: 1.1.4
- resolution: "array.prototype.tosorted@npm:1.1.4"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.3
- es-errors: ^1.3.0
- es-shim-unscopables: ^1.0.2
- checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a
- languageName: node
- linkType: hard
-
"arraybuffer.prototype.slice@npm:^1.0.2":
version: 1.0.2
resolution: "arraybuffer.prototype.slice@npm:1.0.2"
@@ -22373,6 +21857,26 @@ __metadata:
languageName: node
linkType: hard
+"cacache@npm:^18.0.0":
+ version: 18.0.4
+ resolution: "cacache@npm:18.0.4"
+ dependencies:
+ "@npmcli/fs": ^3.1.0
+ fs-minipass: ^3.0.0
+ glob: ^10.2.2
+ lru-cache: ^10.0.1
+ minipass: ^7.0.3
+ minipass-collect: ^2.0.1
+ minipass-flush: ^1.0.5
+ minipass-pipeline: ^1.2.4
+ p-map: ^4.0.0
+ ssri: ^10.0.0
+ tar: ^6.1.11
+ unique-filename: ^3.0.0
+ checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2
+ languageName: node
+ linkType: hard
+
"cacheable-lookup@npm:^5.0.3":
version: 5.0.4
resolution: "cacheable-lookup@npm:5.0.4"
@@ -22446,6 +21950,7 @@ __metadata:
lint-staged: ^12.5.0
mailhog: ^4.16.0
next-router-mock: ^0.9.12
+ node-gyp: ^10.2.0
node-ical: ^0.16.1
prettier: ^2.8.6
prismock: ^1.21.1
@@ -22676,15 +22181,6 @@ __metadata:
languageName: node
linkType: hard
-"castable-video@npm:~1.1.0":
- version: 1.1.0
- resolution: "castable-video@npm:1.1.0"
- dependencies:
- custom-media-element: ~1.3.2
- checksum: 0b7280140e2e855f66ad824c8352d8422695f3a0195757341e8c0b5828df9c0279af70154d7ef514e9d7849814b74625c4df7a652853bd624ecb205a232c295e
- languageName: node
- linkType: hard
-
"ccount@npm:^2.0.0":
version: 2.0.1
resolution: "ccount@npm:2.0.1"
@@ -23145,15 +22641,6 @@ __metadata:
languageName: node
linkType: hard
-"class-variance-authority@npm:^0.7.0":
- version: 0.7.0
- resolution: "class-variance-authority@npm:0.7.0"
- dependencies:
- clsx: 2.0.0
- checksum: e7fd1fab433ef06f52a1b7b241b70b4a185864deef199d3b0a2c3412f1cc179517288264c383f3b971a00d76811625fc8f7ffe709e6170219e88cd7368f08a20
- languageName: node
- linkType: hard
-
"classnames@npm:^2.2.5, classnames@npm:^2.2.6":
version: 2.3.2
resolution: "classnames@npm:2.3.2"
@@ -23426,13 +22913,6 @@ __metadata:
languageName: node
linkType: hard
-"clsx@npm:2.0.0":
- version: 2.0.0
- resolution: "clsx@npm:2.0.0"
- checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e
- languageName: node
- linkType: hard
-
"clsx@npm:^1.1.1":
version: 1.1.1
resolution: "clsx@npm:1.1.1"
@@ -24750,13 +24230,6 @@ __metadata:
languageName: node
linkType: hard
-"custom-media-element@npm:~1.3.1, custom-media-element@npm:~1.3.2":
- version: 1.3.2
- resolution: "custom-media-element@npm:1.3.2"
- checksum: 9ec2ff88c3c5ba7d20b9484c0359b4cfe08ad6804f3116934ffbae2f2e0e04d2a832beb6f0bec56027a969ab366727d217406f750890613c988de6de5330cb4f
- languageName: node
- linkType: hard
-
"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.1.6":
version: 3.2.3
resolution: "d3-array@npm:3.2.3"
@@ -26048,34 +25521,6 @@ __metadata:
languageName: node
linkType: hard
-"embla-carousel-react@npm:^8.1.8":
- version: 8.3.0
- resolution: "embla-carousel-react@npm:8.3.0"
- dependencies:
- embla-carousel: 8.3.0
- embla-carousel-reactive-utils: 8.3.0
- peerDependencies:
- react: ^16.8.0 || ^17.0.1 || ^18.0.0
- checksum: 414bf10ea5b983fdf2f64aeb7806ebaf69b2790617c8ff13b13e7bb6cc4671f243544a786fc6be33dde18965513402e4c4d78474ca928f4031af7db9e276be26
- languageName: node
- linkType: hard
-
-"embla-carousel-reactive-utils@npm:8.3.0":
- version: 8.3.0
- resolution: "embla-carousel-reactive-utils@npm:8.3.0"
- peerDependencies:
- embla-carousel: 8.3.0
- checksum: 687eb69c5db4bf1c9fc09090ea4441e60ab94dd04de7b8e69139eff26fed3d9ba62e6804cc1c44616838c14924fe1b07e31864222a6106365c7129fd95d7d741
- languageName: node
- linkType: hard
-
-"embla-carousel@npm:8.3.0":
- version: 8.3.0
- resolution: "embla-carousel@npm:8.3.0"
- checksum: c2d3c89c93e105133e6931dfdba5899f44f01b32ea0fa331999030150819a2a51c4699df49b69540bc935b63def219f7484f6ca363becaacaf7609e863e39b72
- languageName: node
- linkType: hard
-
"emittery@npm:^0.13.1":
version: 0.13.1
resolution: "emittery@npm:0.13.1"
@@ -26335,60 +25780,6 @@ __metadata:
languageName: node
linkType: hard
-"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.3":
- version: 1.23.3
- resolution: "es-abstract@npm:1.23.3"
- dependencies:
- array-buffer-byte-length: ^1.0.1
- arraybuffer.prototype.slice: ^1.0.3
- available-typed-arrays: ^1.0.7
- call-bind: ^1.0.7
- data-view-buffer: ^1.0.1
- data-view-byte-length: ^1.0.1
- data-view-byte-offset: ^1.0.0
- es-define-property: ^1.0.0
- es-errors: ^1.3.0
- es-object-atoms: ^1.0.0
- es-set-tostringtag: ^2.0.3
- es-to-primitive: ^1.2.1
- function.prototype.name: ^1.1.6
- get-intrinsic: ^1.2.4
- get-symbol-description: ^1.0.2
- globalthis: ^1.0.3
- gopd: ^1.0.1
- has-property-descriptors: ^1.0.2
- has-proto: ^1.0.3
- has-symbols: ^1.0.3
- hasown: ^2.0.2
- internal-slot: ^1.0.7
- is-array-buffer: ^3.0.4
- is-callable: ^1.2.7
- is-data-view: ^1.0.1
- is-negative-zero: ^2.0.3
- is-regex: ^1.1.4
- is-shared-array-buffer: ^1.0.3
- is-string: ^1.0.7
- is-typed-array: ^1.1.13
- is-weakref: ^1.0.2
- object-inspect: ^1.13.1
- object-keys: ^1.1.1
- object.assign: ^4.1.5
- regexp.prototype.flags: ^1.5.2
- safe-array-concat: ^1.1.2
- safe-regex-test: ^1.0.3
- string.prototype.trim: ^1.2.9
- string.prototype.trimend: ^1.0.8
- string.prototype.trimstart: ^1.0.8
- typed-array-buffer: ^1.0.2
- typed-array-byte-length: ^1.0.1
- typed-array-byte-offset: ^1.0.2
- typed-array-length: ^1.0.6
- unbox-primitive: ^1.0.2
- which-typed-array: ^1.1.15
- checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae
- languageName: node
- linkType: hard
-
"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1":
version: 1.19.2
resolution: "es-abstract@npm:1.19.2"
@@ -26713,28 +26104,6 @@ __metadata:
languageName: node
linkType: hard
-"es-iterator-helpers@npm:^1.0.19":
- version: 1.1.0
- resolution: "es-iterator-helpers@npm:1.1.0"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.3
- es-errors: ^1.3.0
- es-set-tostringtag: ^2.0.3
- function-bind: ^1.1.2
- get-intrinsic: ^1.2.4
- globalthis: ^1.0.4
- has-property-descriptors: ^1.0.2
- has-proto: ^1.0.3
- has-symbols: ^1.0.3
- internal-slot: ^1.0.7
- iterator.prototype: ^1.1.3
- safe-array-concat: ^1.1.2
- checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016
- languageName: node
- linkType: hard
-
"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.4.1":
version: 1.4.1
resolution: "es-module-lexer@npm:1.4.1"
@@ -27494,34 +26863,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-react@npm:^7.35.0":
- version: 7.37.1
- resolution: "eslint-plugin-react@npm:7.37.1"
- dependencies:
- array-includes: ^3.1.8
- array.prototype.findlast: ^1.2.5
- array.prototype.flatmap: ^1.3.2
- array.prototype.tosorted: ^1.1.4
- doctrine: ^2.1.0
- es-iterator-helpers: ^1.0.19
- estraverse: ^5.3.0
- hasown: ^2.0.2
- jsx-ast-utils: ^2.4.1 || ^3.0.0
- minimatch: ^3.1.2
- object.entries: ^1.1.8
- object.fromentries: ^2.0.8
- object.values: ^1.2.0
- prop-types: ^15.8.1
- resolve: ^2.0.0-next.5
- semver: ^6.3.1
- string.prototype.matchall: ^4.0.11
- string.prototype.repeat: ^1.0.0
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
- checksum: 22d1bdf0dd4cdbf8c57ce563c58d43c5f5e1da0b08d27d0a69d7126d9e8afcb74a5befae97dab4019b4c6029ae617b6a0af1709cb9e0439d5757b01b392d2ca7
- languageName: node
- linkType: hard
-
"eslint-plugin-turbo@npm:0.0.7":
version: 0.0.7
resolution: "eslint-plugin-turbo@npm:0.0.7"
@@ -27592,16 +26933,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^8.1.0":
- version: 8.1.0
- resolution: "eslint-scope@npm:8.1.0"
- dependencies:
- esrecurse: ^4.3.0
- estraverse: ^5.2.0
- checksum: 3ce9392ec74f35f84eddad7755941cb5f7e3a1bc53cf902e95e541384ef78b604bec1489933f37c663e4686b36c31533d06cf0842be9a729a680c489efce7acb
- languageName: node
- linkType: hard
-
"eslint-utils@npm:^3.0.0":
version: 3.0.0
resolution: "eslint-utils@npm:3.0.0"
@@ -27634,13 +26965,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^4.1.0":
- version: 4.1.0
- resolution: "eslint-visitor-keys@npm:4.1.0"
- checksum: b5d53725df14a6a225fd74d5e687f5f0547b0aaa3e1963ab6f4acb8dc80f99ad0bec11148e14b4a67de024dde7b4449e7e4c0b1524de605955dee7eefcdd7824
- languageName: node
- linkType: hard
-
"eslint@npm:^8":
version: 8.57.0
resolution: "eslint@npm:8.57.0"
@@ -27738,56 +27062,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint@npm:^9.9.0":
- version: 9.12.0
- resolution: "eslint@npm:9.12.0"
- dependencies:
- "@eslint-community/eslint-utils": ^4.2.0
- "@eslint-community/regexpp": ^4.11.0
- "@eslint/config-array": ^0.18.0
- "@eslint/core": ^0.6.0
- "@eslint/eslintrc": ^3.1.0
- "@eslint/js": 9.12.0
- "@eslint/plugin-kit": ^0.2.0
- "@humanfs/node": ^0.16.5
- "@humanwhocodes/module-importer": ^1.0.1
- "@humanwhocodes/retry": ^0.3.1
- "@types/estree": ^1.0.6
- "@types/json-schema": ^7.0.15
- ajv: ^6.12.4
- chalk: ^4.0.0
- cross-spawn: ^7.0.2
- debug: ^4.3.2
- escape-string-regexp: ^4.0.0
- eslint-scope: ^8.1.0
- eslint-visitor-keys: ^4.1.0
- espree: ^10.2.0
- esquery: ^1.5.0
- esutils: ^2.0.2
- fast-deep-equal: ^3.1.3
- file-entry-cache: ^8.0.0
- find-up: ^5.0.0
- glob-parent: ^6.0.2
- ignore: ^5.2.0
- imurmurhash: ^0.1.4
- is-glob: ^4.0.0
- json-stable-stringify-without-jsonify: ^1.0.1
- lodash.merge: ^4.6.2
- minimatch: ^3.1.2
- natural-compare: ^1.4.0
- optionator: ^0.9.3
- text-table: ^0.2.0
- peerDependencies:
- jiti: "*"
- peerDependenciesMeta:
- jiti:
- optional: true
- bin:
- eslint: bin/eslint.js
- checksum: cf0dbe242268ede8cc13c04566973077c4feea21cf94a2eacba7ad43f566b2dee0d8f1af32ccb46d30dbcd78a7274828199b8aa9a7b1c708d7a71085b686385c
- languageName: node
- linkType: hard
-
"esm@npm:^3.2.25":
version: 3.2.25
resolution: "esm@npm:3.2.25"
@@ -27795,17 +27069,6 @@ __metadata:
languageName: node
linkType: hard
-"espree@npm:^10.0.1, espree@npm:^10.2.0":
- version: 10.2.0
- resolution: "espree@npm:10.2.0"
- dependencies:
- acorn: ^8.12.0
- acorn-jsx: ^5.3.2
- eslint-visitor-keys: ^4.1.0
- checksum: 16ee75c2f6029622a70a675ad8989fffc6f7199265d07af516a11e4adc9eb2d03866fceff33f1a081c42621df79871e508f8fc8fe5855eac2de925b58196711b
- languageName: node
- linkType: hard
-
"espree@npm:^9.4.0":
version: 9.4.1
resolution: "espree@npm:9.4.1"
@@ -27856,15 +27119,6 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.5.0":
- version: 1.6.0
- resolution: "esquery@npm:1.6.0"
- dependencies:
- estraverse: ^5.1.0
- checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2
- languageName: node
- linkType: hard
-
"esrecurse@npm:^4.3.0":
version: 4.3.0
resolution: "esrecurse@npm:4.3.0"
@@ -28108,6 +27362,13 @@ __metadata:
languageName: node
linkType: hard
+"exponential-backoff@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "exponential-backoff@npm:3.1.1"
+ checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48
+ languageName: node
+ linkType: hard
+
"express@npm:4.18.2, express@npm:^4.17.3":
version: 4.18.2
resolution: "express@npm:4.18.2"
@@ -28626,15 +27887,6 @@ __metadata:
languageName: node
linkType: hard
-"file-entry-cache@npm:^8.0.0":
- version: 8.0.0
- resolution: "file-entry-cache@npm:8.0.0"
- dependencies:
- flat-cache: ^4.0.0
- checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f
- languageName: node
- linkType: hard
-
"file-system-cache@npm:2.3.0":
version: 2.3.0
resolution: "file-system-cache@npm:2.3.0"
@@ -28831,16 +28083,6 @@ __metadata:
languageName: node
linkType: hard
-"flat-cache@npm:^4.0.0":
- version: 4.0.1
- resolution: "flat-cache@npm:4.0.1"
- dependencies:
- flatted: ^3.2.9
- keyv: ^4.5.4
- checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6
- languageName: node
- linkType: hard
-
"flatted@npm:^3.1.0":
version: 3.2.5
resolution: "flatted@npm:3.2.5"
@@ -28848,7 +28090,7 @@ __metadata:
languageName: node
linkType: hard
-"flatted@npm:^3.2.9, flatted@npm:^3.3.1":
+"flatted@npm:^3.3.1":
version: 3.3.1
resolution: "flatted@npm:3.3.1"
checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94
@@ -29199,26 +28441,6 @@ __metadata:
languageName: node
linkType: hard
-"framer-motion@npm:^11.0.25":
- version: 11.11.7
- resolution: "framer-motion@npm:11.11.7"
- dependencies:
- tslib: ^2.4.0
- peerDependencies:
- "@emotion/is-prop-valid": "*"
- react: ^18.0.0
- react-dom: ^18.0.0
- peerDependenciesMeta:
- "@emotion/is-prop-valid":
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- checksum: dc8d97a75c15a785238d78e5c2e6a405c7d9c6b88aee04f94e944cfaee34f247241ff3ad9eb05ceca16add095c618665a6e7a2b4820c8c34c51ad3bcb6c6955b
- languageName: node
- linkType: hard
-
"fresh@npm:0.5.2, fresh@npm:^0.5.2":
version: 0.5.2
resolution: "fresh@npm:0.5.2"
@@ -29325,6 +28547,15 @@ __metadata:
languageName: node
linkType: hard
+"fs-minipass@npm:^3.0.0":
+ version: 3.0.3
+ resolution: "fs-minipass@npm:3.0.3"
+ dependencies:
+ minipass: ^7.0.3
+ checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802
+ languageName: node
+ linkType: hard
+
"fs-monkey@npm:^1.0.4":
version: 1.0.5
resolution: "fs-monkey@npm:1.0.5"
@@ -29899,6 +29130,22 @@ __metadata:
languageName: node
linkType: hard
+"glob@npm:^10.2.2":
+ version: 10.4.5
+ resolution: "glob@npm:10.4.5"
+ dependencies:
+ foreground-child: ^3.1.0
+ jackspeak: ^3.1.2
+ minimatch: ^9.0.4
+ minipass: ^7.1.2
+ package-json-from-dist: ^1.0.0
+ path-scurry: ^1.11.1
+ bin:
+ glob: dist/esm/bin.mjs
+ checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a
+ languageName: node
+ linkType: hard
+
"glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.2.3":
version: 7.2.3
resolution: "glob@npm:7.2.3"
@@ -29987,20 +29234,6 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^14.0.0":
- version: 14.0.0
- resolution: "globals@npm:14.0.0"
- checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac
- languageName: node
- linkType: hard
-
-"globals@npm:^15.9.0":
- version: 15.11.0
- resolution: "globals@npm:15.11.0"
- checksum: ef32d5ef987f3d4b47fc2e389a0b235f6a46f605160c4e405722fd7b576106ca407cb867e66fd1e0fc43b631800e2e2e71847f37691026d813f96f40339da702
- languageName: node
- linkType: hard
-
"globalthis@npm:^1.0.3":
version: 1.0.3
resolution: "globalthis@npm:1.0.3"
@@ -30010,16 +29243,6 @@ __metadata:
languageName: node
linkType: hard
-"globalthis@npm:^1.0.4":
- version: 1.0.4
- resolution: "globalthis@npm:1.0.4"
- dependencies:
- define-properties: ^1.2.1
- gopd: ^1.0.1
- checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a
- languageName: node
- linkType: hard
-
"globalyzer@npm:0.1.0":
version: 0.1.0
resolution: "globalyzer@npm:0.1.0"
@@ -30918,13 +30141,6 @@ __metadata:
languageName: node
linkType: hard
-"hls.js@npm:~1.5.11":
- version: 1.5.16
- resolution: "hls.js@npm:1.5.16"
- checksum: 0121feee70837006f75c6e7a42dbfff63fe83b85a932fb8c9b4f186098f1cd0d72868dd1e5cd168e797e4e92a4afc889f8efb141fd2de8b35c98f9fa29340a39
- languageName: node
- linkType: hard
-
"hmac-drbg@npm:^1.0.1":
version: 1.0.1
resolution: "hmac-drbg@npm:1.0.1"
@@ -31546,13 +30762,6 @@ __metadata:
languageName: node
linkType: hard
-"ignore@npm:^5.3.1":
- version: 5.3.2
- resolution: "ignore@npm:5.3.2"
- checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be
- languageName: node
- linkType: hard
-
"image-q@npm:^4.0.0":
version: 4.0.0
resolution: "image-q@npm:4.0.0"
@@ -33031,6 +32240,13 @@ __metadata:
languageName: node
linkType: hard
+"isexe@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "isexe@npm:3.1.1"
+ checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e
+ languageName: node
+ linkType: hard
+
"isobject@npm:^3.0.1":
version: 3.0.1
resolution: "isobject@npm:3.0.1"
@@ -33193,19 +32409,6 @@ __metadata:
languageName: node
linkType: hard
-"iterator.prototype@npm:^1.1.3":
- version: 1.1.3
- resolution: "iterator.prototype@npm:1.1.3"
- dependencies:
- define-properties: ^1.2.1
- get-intrinsic: ^1.2.1
- has-symbols: ^1.0.3
- reflect.getprototypeof: ^1.0.4
- set-function-name: ^2.0.1
- checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe
- languageName: node
- linkType: hard
-
"jackspeak@npm:^2.0.3, jackspeak@npm:^2.3.5":
version: 2.3.6
resolution: "jackspeak@npm:2.3.6"
@@ -33219,6 +32422,19 @@ __metadata:
languageName: node
linkType: hard
+"jackspeak@npm:^3.1.2":
+ version: 3.4.3
+ resolution: "jackspeak@npm:3.4.3"
+ dependencies:
+ "@isaacs/cliui": ^8.0.2
+ "@pkgjs/parseargs": ^0.11.0
+ dependenciesMeta:
+ "@pkgjs/parseargs":
+ optional: true
+ checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00
+ languageName: node
+ linkType: hard
+
"jake@npm:^10.8.5":
version: 10.8.7
resolution: "jake@npm:10.8.7"
@@ -34436,7 +33652,7 @@ __metadata:
languageName: node
linkType: hard
-"keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4":
+"keyv@npm:^4.0.0, keyv@npm:^4.5.3":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
@@ -35394,6 +34610,13 @@ __metadata:
languageName: node
linkType: hard
+"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
+ version: 10.4.3
+ resolution: "lru-cache@npm:10.4.3"
+ checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^4.0.1":
version: 4.1.5
resolution: "lru-cache@npm:4.1.5"
@@ -35484,12 +34707,12 @@ __metadata:
languageName: node
linkType: hard
-"lucide-react@npm:^0.364.0":
- version: 0.364.0
- resolution: "lucide-react@npm:0.364.0"
+"lucide-react@npm:^0.171.0":
+ version: 0.171.0
+ resolution: "lucide-react@npm:0.171.0"
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0
- checksum: 954f6274df46ffa172130d9e60eb630a377435c7dbf0ddb5ceebf284602dde3b99755dcd5c0757e697ee734a32c808a3cd2c25ad88fec1d8f627a2317f00e3e6
+ checksum: 768ffe368c52a518ee339203d86ff4479989ab4d79c0716f721900c4bb7392ef6ff7a14807f6a685abd74d27f4c1778170bff77a0ab4c3e06c17944b557d8300
languageName: node
linkType: hard
@@ -35685,6 +34908,26 @@ __metadata:
languageName: node
linkType: hard
+"make-fetch-happen@npm:^13.0.0":
+ version: 13.0.1
+ resolution: "make-fetch-happen@npm:13.0.1"
+ dependencies:
+ "@npmcli/agent": ^2.0.0
+ cacache: ^18.0.0
+ http-cache-semantics: ^4.1.1
+ is-lambda: ^1.0.1
+ minipass: ^7.0.2
+ minipass-fetch: ^3.0.0
+ minipass-flush: ^1.0.5
+ minipass-pipeline: ^1.2.4
+ negotiator: ^0.6.3
+ proc-log: ^4.2.0
+ promise-retry: ^2.0.1
+ ssri: ^10.0.0
+ checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd
+ languageName: node
+ linkType: hard
+
"makeerror@npm:1.0.12":
version: 1.0.12
resolution: "makeerror@npm:1.0.12"
@@ -36020,27 +35263,6 @@ __metadata:
languageName: node
linkType: hard
-"media-chrome@npm:^4.1.0":
- version: 4.2.0
- resolution: "media-chrome@npm:4.2.0"
- checksum: 16a60926adb5e29ba1da3114af72bf842d6187620239e6a4c0a249c15dc09413c85171a5658a28f80c44d19f0c534855931b4d9fba2477803f373e97e578a324
- languageName: node
- linkType: hard
-
-"media-chrome@npm:~4.1.1":
- version: 4.1.5
- resolution: "media-chrome@npm:4.1.5"
- checksum: 50ba8416f5e6f35dc22f2c30d102a2a8659f7b888919392d511be80e2cd0dd097b0e9eb339ec21d4f6f9ced6d2c81a91c130419977d42b1b928e7e93c9d2ceb1
- languageName: node
- linkType: hard
-
-"media-tracks@npm:~0.3.2":
- version: 0.3.3
- resolution: "media-tracks@npm:0.3.3"
- checksum: 4795af3f171d7ad3a68d1ac1c1e8166a735244fe57d3fc0ec53b1c7410799e524756fc0bfb389632aebb148436b03baade36ca34a3f5377776c3968f6d2cc580
- languageName: node
- linkType: hard
-
"media-typer@npm:0.3.0":
version: 0.3.0
resolution: "media-typer@npm:0.3.0"
@@ -36888,6 +36110,15 @@ __metadata:
languageName: node
linkType: hard
+"minipass-collect@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "minipass-collect@npm:2.0.1"
+ dependencies:
+ minipass: ^7.0.3
+ checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342
+ languageName: node
+ linkType: hard
+
"minipass-fetch@npm:^2.0.3":
version: 2.1.2
resolution: "minipass-fetch@npm:2.1.2"
@@ -36903,6 +36134,21 @@ __metadata:
languageName: node
linkType: hard
+"minipass-fetch@npm:^3.0.0":
+ version: 3.0.5
+ resolution: "minipass-fetch@npm:3.0.5"
+ dependencies:
+ encoding: ^0.1.13
+ minipass: ^7.0.3
+ minipass-sized: ^1.0.3
+ minizlib: ^2.1.2
+ dependenciesMeta:
+ encoding:
+ optional: true
+ checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83
+ languageName: node
+ linkType: hard
+
"minipass-flush@npm:^1.0.5":
version: 1.0.5
resolution: "minipass-flush@npm:1.0.5"
@@ -36983,6 +36229,13 @@ __metadata:
languageName: node
linkType: hard
+"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2":
+ version: 7.1.2
+ resolution: "minipass@npm:7.1.2"
+ checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3
+ languageName: node
+ linkType: hard
+
"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2":
version: 2.1.2
resolution: "minizlib@npm:2.1.2"
@@ -37382,13 +36635,6 @@ __metadata:
languageName: node
linkType: hard
-"mux-embed@npm:^5.3.0":
- version: 5.3.2
- resolution: "mux-embed@npm:5.3.2"
- checksum: e56dd70b22916c106425fa252fe3d0438fe69dc8e3c01628a53cdb0199f406be79be33c8102044d04c9f50e3d533b3ddc615f7f9ab498b291ef21d4f65922e33
- languageName: node
- linkType: hard
-
"mysql2@npm:3.9.1":
version: 3.9.1
resolution: "mysql2@npm:3.9.1"
@@ -37789,7 +37035,7 @@ __metadata:
languageName: node
linkType: hard
-"next@npm:^13.5.6":
+"next@npm:^13.5.4, next@npm:^13.5.6":
version: 13.5.7
resolution: "next@npm:13.5.7"
dependencies:
@@ -38084,6 +37330,26 @@ __metadata:
languageName: node
linkType: hard
+"node-gyp@npm:^10.2.0":
+ version: 10.2.0
+ resolution: "node-gyp@npm:10.2.0"
+ dependencies:
+ env-paths: ^2.2.0
+ exponential-backoff: ^3.1.1
+ glob: ^10.3.10
+ graceful-fs: ^4.2.6
+ make-fetch-happen: ^13.0.0
+ nopt: ^7.0.0
+ proc-log: ^4.1.0
+ semver: ^7.3.5
+ tar: ^6.2.1
+ which: ^4.0.0
+ bin:
+ node-gyp: bin/node-gyp.js
+ checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f
+ languageName: node
+ linkType: hard
+
"node-gyp@npm:latest":
version: 9.3.1
resolution: "node-gyp@npm:9.3.1"
@@ -38288,6 +37554,17 @@ __metadata:
languageName: node
linkType: hard
+"nopt@npm:^7.0.0":
+ version: 7.2.1
+ resolution: "nopt@npm:7.2.1"
+ dependencies:
+ abbrev: ^2.0.0
+ bin:
+ nopt: bin/nopt.js
+ checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9
+ languageName: node
+ linkType: hard
+
"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0":
version: 2.5.0
resolution: "normalize-package-data@npm:2.5.0"
@@ -38675,17 +37952,6 @@ __metadata:
languageName: node
linkType: hard
-"object.entries@npm:^1.1.8":
- version: 1.1.8
- resolution: "object.entries@npm:1.1.8"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-object-atoms: ^1.0.0
- checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907
- languageName: node
- linkType: hard
-
"object.fromentries@npm:^2.0.5":
version: 2.0.5
resolution: "object.fromentries@npm:2.0.5"
@@ -38719,18 +37985,6 @@ __metadata:
languageName: node
linkType: hard
-"object.fromentries@npm:^2.0.8":
- version: 2.0.8
- resolution: "object.fromentries@npm:2.0.8"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.2
- es-object-atoms: ^1.0.0
- checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1
- languageName: node
- linkType: hard
-
"object.groupby@npm:^1.0.1":
version: 1.0.2
resolution: "object.groupby@npm:1.0.2"
@@ -38807,17 +38061,6 @@ __metadata:
languageName: node
linkType: hard
-"object.values@npm:^1.2.0":
- version: 1.2.0
- resolution: "object.values@npm:1.2.0"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-object-atoms: ^1.0.0
- checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa
- languageName: node
- linkType: hard
-
"objectorarray@npm:^1.0.5":
version: 1.0.5
resolution: "objectorarray@npm:1.0.5"
@@ -39396,6 +38639,13 @@ __metadata:
languageName: node
linkType: hard
+"package-json-from-dist@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "package-json-from-dist@npm:1.0.1"
+ checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602
+ languageName: node
+ linkType: hard
+
"package-json@npm:^8.1.0":
version: 8.1.1
resolution: "package-json@npm:8.1.1"
@@ -39861,6 +39111,16 @@ __metadata:
languageName: node
linkType: hard
+"path-scurry@npm:^1.11.1":
+ version: 1.11.1
+ resolution: "path-scurry@npm:1.11.1"
+ dependencies:
+ lru-cache: ^10.2.0
+ minipass: ^5.0.0 || ^6.0.2 || ^7.0.0
+ checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023
+ languageName: node
+ linkType: hard
+
"path-to-regexp@npm:0.1.7":
version: 0.1.7
resolution: "path-to-regexp@npm:0.1.7"
@@ -40293,15 +39553,6 @@ __metadata:
languageName: node
linkType: hard
-"player.style@npm:^0.0.8":
- version: 0.0.8
- resolution: "player.style@npm:0.0.8"
- dependencies:
- media-chrome: ^4.1.0
- checksum: 009f59bc8e7f84e82adcacec4df3ea11094d7097413a5755bb6a586150c9aa6114f7d7840f215b8b98c20f3eabbf40b7eb1d20731384253fea3122bd62b9512e
- languageName: node
- linkType: hard
-
"playwright-core@npm:1.45.3":
version: 1.45.3
resolution: "playwright-core@npm:1.45.3"
@@ -40864,15 +40115,6 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:3.3.3":
- version: 3.3.3
- resolution: "prettier@npm:3.3.3"
- bin:
- prettier: bin/prettier.cjs
- checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e
- languageName: node
- linkType: hard
-
"prettier@npm:^2.7.1":
version: 2.8.7
resolution: "prettier@npm:2.8.7"
@@ -41087,6 +40329,13 @@ __metadata:
languageName: node
linkType: hard
+"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "proc-log@npm:4.2.0"
+ checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc
+ languageName: node
+ linkType: hard
+
"process-es6@npm:^0.11.2":
version: 0.11.6
resolution: "process-es6@npm:0.11.6"
@@ -41790,21 +41039,20 @@ __metadata:
languageName: node
linkType: hard
-"react-datocms@npm:^5.0.3":
- version: 5.0.3
- resolution: "react-datocms@npm:5.0.3"
+"react-datocms@npm:^3.1.0":
+ version: 3.1.4
+ resolution: "react-datocms@npm:3.1.4"
dependencies:
- "@mux/mux-player-react": "*"
datocms-listen: ^0.1.9
datocms-structured-text-generic-html-renderer: ^2.0.1
datocms-structured-text-utils: ^2.0.1
- react-intersection-observer: ^9.4.3
+ react-intersection-observer: ^8.33.1
react-string-replace: ^1.1.0
universal-base64: ^2.1.0
use-deep-compare-effect: ^1.6.1
peerDependencies:
react: ">= 16.12.0"
- checksum: 22c20152afb54424acfe967a2c8c525cd9f132a33374f2aba0231f16ea64dade389b096e2dac8de9ffded612bc32e9891d725609ee947639fe1cef907cb143f5
+ checksum: 54aba12aef4937175c2011548a8a576c96c8d8a596e84d191826910624c1d596e76a49782689dc236388a10803b02e700ac820cb7500cca7fd147a81f6c544c3
languageName: node
linkType: hard
@@ -42065,16 +41313,12 @@ __metadata:
languageName: node
linkType: hard
-"react-intersection-observer@npm:^9.4.3":
- version: 9.13.1
- resolution: "react-intersection-observer@npm:9.13.1"
+"react-intersection-observer@npm:^8.33.1":
+ version: 8.34.0
+ resolution: "react-intersection-observer@npm:8.34.0"
peerDependencies:
- react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- react-dom:
- optional: true
- checksum: 92b3e7d9293365635bf5ede89b912a670030c6244879dce36fa9437e6749c637151087fbcaa72cc160b2fa7045bd5ac861a8535e0a2b7b8f230f11f2e0391005
+ react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0
+ checksum: 7713fecfd1512c7f5a60f9f0bf15403b8f8bbd4110bcafaeaea6de36a0e0eb60368c3638f99e9c97b75ad8fc787ea48c241dcb5c694f821d7f2976f709082cc5
languageName: node
linkType: hard
@@ -42184,16 +41428,6 @@ __metadata:
languageName: node
linkType: hard
-"react-parallax-tilt@npm:^1.7.226":
- version: 1.7.245
- resolution: "react-parallax-tilt@npm:1.7.245"
- peerDependencies:
- react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
- react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
- checksum: 32b56fdb46e993c769f8458e3f9cdd9edd4711c6f95ecfaa4ac004775ea9653f0487232dd010179e45348fd34a61ccdf8026baaf439685ae2450914471de1fb9
- languageName: node
- linkType: hard
-
"react-phone-input-2@npm:^2.15.1":
version: 2.15.1
resolution: "react-phone-input-2@npm:2.15.1"
@@ -42316,22 +41550,6 @@ __metadata:
languageName: node
linkType: hard
-"react-remove-scroll-bar@npm:^2.3.6":
- version: 2.3.6
- resolution: "react-remove-scroll-bar@npm:2.3.6"
- dependencies:
- react-style-singleton: ^2.2.1
- tslib: ^2.0.0
- peerDependencies:
- "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- "@types/react":
- optional: true
- checksum: e793fe110e2ea60d5724d0b60f09de1f6cd1b080df00df9e68bb9a1b985895830e703194647059fdc22402a67a89b7673a5260773b89bcd98031fd99bc91aefa
- languageName: node
- linkType: hard
-
"react-remove-scroll@npm:2.5.4":
version: 2.5.4
resolution: "react-remove-scroll@npm:2.5.4"
@@ -42370,25 +41588,6 @@ __metadata:
languageName: node
linkType: hard
-"react-remove-scroll@npm:2.6.0":
- version: 2.6.0
- resolution: "react-remove-scroll@npm:2.6.0"
- dependencies:
- react-remove-scroll-bar: ^2.3.6
- react-style-singleton: ^2.2.1
- tslib: ^2.1.0
- use-callback-ref: ^1.3.0
- use-sidecar: ^1.1.2
- peerDependencies:
- "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- "@types/react":
- optional: true
- checksum: e7ad2383ce20d63cf28f3ed14e63f684e139301fc4a5c1573da330d4465b733e6084c33b2bfcaee448c9b1df0e37993a15d6cba8a1dd80fe631f803e48e9f798
- languageName: node
- linkType: hard
-
"react-remove-scroll@npm:^2.4.0":
version: 2.4.4
resolution: "react-remove-scroll@npm:2.4.4"
@@ -42645,18 +41844,6 @@ __metadata:
languageName: node
linkType: hard
-"react-twitter-embed@npm:^4.0.4":
- version: 4.0.4
- resolution: "react-twitter-embed@npm:4.0.4"
- dependencies:
- scriptjs: ^2.5.9
- peerDependencies:
- react: ^16.0.0 || ^17.0.0 || ^18.0.0
- react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0
- checksum: cdb3c5bd04c4da0efa767476be47c0a3865fb6335f2a1b9e242170167b51615c38164223278cef60c77143c4bac27ba582cbea054d0af3f138104fa5ec537c4c
- languageName: node
- linkType: hard
-
"react-universal-interface@npm:^0.6.2":
version: 0.6.2
resolution: "react-universal-interface@npm:0.6.2"
@@ -44537,13 +43724,6 @@ __metadata:
languageName: node
linkType: hard
-"scriptjs@npm:^2.5.9":
- version: 2.5.9
- resolution: "scriptjs@npm:2.5.9"
- checksum: fc84cb6b60b6fb9aa6f1b3bc59fc94b233bd5241ed3a04233579014382b5eb60640269c87d8657902acc09f9b785ee33230c218627cea00e653564bda8f5acb6
- languageName: node
- linkType: hard
-
"scuid@npm:^1.1.0":
version: 1.1.0
resolution: "scuid@npm:1.1.0"
@@ -44650,15 +43830,6 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.6.0":
- version: 7.6.3
- resolution: "semver@npm:7.6.3"
- bin:
- semver: bin/semver.js
- checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8
- languageName: node
- linkType: hard
-
"semver@npm:~2.3.1":
version: 2.3.2
resolution: "semver@npm:2.3.2"
@@ -44830,18 +44001,6 @@ __metadata:
languageName: node
linkType: hard
-"set-function-name@npm:^2.0.2":
- version: 2.0.2
- resolution: "set-function-name@npm:2.0.2"
- dependencies:
- define-data-property: ^1.1.4
- es-errors: ^1.3.0
- functions-have-names: ^1.2.3
- has-property-descriptors: ^1.0.2
- checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f
- languageName: node
- linkType: hard
-
"set-harmonic-interval@npm:^1.0.1":
version: 1.0.1
resolution: "set-harmonic-interval@npm:1.0.1"
@@ -45233,6 +44392,17 @@ __metadata:
languageName: node
linkType: hard
+"socks-proxy-agent@npm:^8.0.3":
+ version: 8.0.4
+ resolution: "socks-proxy-agent@npm:8.0.4"
+ dependencies:
+ agent-base: ^7.1.1
+ debug: ^4.3.4
+ socks: ^2.8.3
+ checksum: b2ec5051d85fe49072f9a250c427e0e9571fd09d5db133819192d078fd291276e1f0f50f6dbc04329b207738b1071314cee8bdbb4b12e27de42dbcf1d4233c67
+ languageName: node
+ linkType: hard
+
"socks@npm:^2.6.2":
version: 2.7.1
resolution: "socks@npm:2.7.1"
@@ -45253,6 +44423,16 @@ __metadata:
languageName: node
linkType: hard
+"socks@npm:^2.8.3":
+ version: 2.8.3
+ resolution: "socks@npm:2.8.3"
+ dependencies:
+ ip-address: ^9.0.5
+ smart-buffer: ^4.2.0
+ checksum: 7a6b7f6eedf7482b9e4597d9a20e09505824208006ea8f2c49b71657427f3c137ca2ae662089baa73e1971c62322d535d9d0cf1c9235cf6f55e315c18203eadd
+ languageName: node
+ linkType: hard
+
"sorted-array-functions@npm:^1.3.0":
version: 1.3.0
resolution: "sorted-array-functions@npm:1.3.0"
@@ -45514,6 +44694,15 @@ __metadata:
languageName: node
linkType: hard
+"ssri@npm:^10.0.0":
+ version: 10.0.6
+ resolution: "ssri@npm:10.0.6"
+ dependencies:
+ minipass: ^7.0.3
+ checksum: 4603d53a05bcd44188747d38f1cc43833b9951b5a1ee43ba50535bdfc5fe4a0897472dbe69837570a5417c3c073377ef4f8c1a272683b401857f72738ee57299
+ languageName: node
+ linkType: hard
+
"ssri@npm:^9.0.0":
version: 9.0.1
resolution: "ssri@npm:9.0.1"
@@ -45914,26 +45103,6 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.matchall@npm:^4.0.11":
- version: 4.0.11
- resolution: "string.prototype.matchall@npm:4.0.11"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-abstract: ^1.23.2
- es-errors: ^1.3.0
- es-object-atoms: ^1.0.0
- get-intrinsic: ^1.2.4
- gopd: ^1.0.1
- has-symbols: ^1.0.3
- internal-slot: ^1.0.7
- regexp.prototype.flags: ^1.5.2
- set-function-name: ^2.0.2
- side-channel: ^1.0.6
- checksum: 6ac6566ed065c0c8489c91156078ca077db8ff64d683fda97ae652d00c52dfa5f39aaab0a710d8243031a857fd2c7c511e38b45524796764d25472d10d7075ae
- languageName: node
- linkType: hard
-
"string.prototype.matchall@npm:^4.0.7":
version: 4.0.7
resolution: "string.prototype.matchall@npm:4.0.7"
@@ -45977,16 +45146,6 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.repeat@npm:^1.0.0":
- version: 1.0.0
- resolution: "string.prototype.repeat@npm:1.0.0"
- dependencies:
- define-properties: ^1.1.3
- es-abstract: ^1.17.5
- checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004
- languageName: node
- linkType: hard
-
"string.prototype.trim@npm:^1.2.8":
version: 1.2.8
resolution: "string.prototype.trim@npm:1.2.8"
@@ -46085,17 +45244,6 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.trimstart@npm:^1.0.8":
- version: 1.0.8
- resolution: "string.prototype.trimstart@npm:1.0.8"
- dependencies:
- call-bind: ^1.0.7
- define-properties: ^1.2.1
- es-object-atoms: ^1.0.0
- checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96
- languageName: node
- linkType: hard
-
"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0":
version: 1.3.0
resolution: "string_decoder@npm:1.3.0"
@@ -46899,6 +46047,20 @@ __metadata:
languageName: node
linkType: hard
+"tar@npm:^6.2.1":
+ version: 6.2.1
+ resolution: "tar@npm:6.2.1"
+ dependencies:
+ chownr: ^2.0.0
+ fs-minipass: ^2.0.0
+ minipass: ^5.0.0
+ minizlib: ^2.1.1
+ mkdirp: ^1.0.3
+ yallist: ^4.0.0
+ checksum: f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c
+ languageName: node
+ linkType: hard
+
"tarn@npm:^3.0.2":
version: 3.0.2
resolution: "tarn@npm:3.0.2"
@@ -47516,15 +46678,6 @@ __metadata:
languageName: node
linkType: hard
-"ts-api-utils@npm:^1.3.0":
- version: 1.3.0
- resolution: "ts-api-utils@npm:1.3.0"
- peerDependencies:
- typescript: ">=4.2.0"
- checksum: c746ddabfdffbf16cb0b0db32bb287236a19e583057f8649ee7c49995bb776e1d3ef384685181c11a1a480369e022ca97512cb08c517b2d2bd82c83754c97012
- languageName: node
- linkType: hard
-
"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0":
version: 2.2.0
resolution: "ts-dedent@npm:2.2.0"
@@ -48305,20 +47458,6 @@ __metadata:
languageName: node
linkType: hard
-"typed-array-length@npm:^1.0.6":
- version: 1.0.6
- resolution: "typed-array-length@npm:1.0.6"
- dependencies:
- call-bind: ^1.0.7
- for-each: ^0.3.3
- gopd: ^1.0.1
- has-proto: ^1.0.3
- is-typed-array: ^1.1.13
- possible-typed-array-names: ^1.0.0
- checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c
- languageName: node
- linkType: hard
-
"typedarray-to-buffer@npm:^3.1.5":
version: 3.1.5
resolution: "typedarray-to-buffer@npm:3.1.5"
@@ -48422,20 +47561,6 @@ __metadata:
languageName: node
linkType: hard
-"typescript-eslint@npm:^8.2.0":
- version: 8.8.1
- resolution: "typescript-eslint@npm:8.8.1"
- dependencies:
- "@typescript-eslint/eslint-plugin": 8.8.1
- "@typescript-eslint/parser": 8.8.1
- "@typescript-eslint/utils": 8.8.1
- peerDependenciesMeta:
- typescript:
- optional: true
- checksum: b55739c826b5b58d606ad3261e892c24ee1b33221e53f2e5279ae195deb9afb5962d9acc9db36f7ee2add2392bfcc6a1641ec8a1814d93458959e4991015d4d4
- languageName: node
- linkType: hard
-
"typescript@npm:5.3.3":
version: 5.3.3
resolution: "typescript@npm:5.3.3"
@@ -48446,7 +47571,7 @@ __metadata:
languageName: node
linkType: hard
-"typescript@npm:^4.4.4, typescript@npm:^4.9.4":
+"typescript@npm:^4.9.4":
version: 4.9.5
resolution: "typescript@npm:4.9.5"
bin:
@@ -48476,7 +47601,7 @@ __metadata:
languageName: node
linkType: hard
-"typescript@patch:typescript@^4.4.4#~builtin, typescript@patch:typescript@^4.9.4#~builtin":
+"typescript@patch:typescript@^4.9.4#~builtin":
version: 4.9.5
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76"
bin:
@@ -48664,6 +47789,15 @@ __metadata:
languageName: node
linkType: hard
+"unique-filename@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "unique-filename@npm:3.0.0"
+ dependencies:
+ unique-slug: ^4.0.0
+ checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df
+ languageName: node
+ linkType: hard
+
"unique-slug@npm:^3.0.0":
version: 3.0.0
resolution: "unique-slug@npm:3.0.0"
@@ -48673,6 +47807,15 @@ __metadata:
languageName: node
linkType: hard
+"unique-slug@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "unique-slug@npm:4.0.0"
+ dependencies:
+ imurmurhash: ^0.1.4
+ checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15
+ languageName: node
+ linkType: hard
+
"unique-string@npm:^2.0.0":
version: 2.0.0
resolution: "unique-string@npm:2.0.0"
@@ -50271,6 +49414,17 @@ __metadata:
languageName: node
linkType: hard
+"which@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "which@npm:4.0.0"
+ dependencies:
+ isexe: ^3.1.1
+ bin:
+ node-which: bin/which.js
+ checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651
+ languageName: node
+ linkType: hard
+
"why-is-node-running@npm:^2.3.0":
version: 2.3.0
resolution: "why-is-node-running@npm:2.3.0"