From f7c5ba6eb161bbf4e37d1f77a1b7b591eef8aebe Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 12 Mar 2024 18:31:43 +0100 Subject: [PATCH 01/56] Initialize a basic App for `Calendar` Sets up a minimal application that initially only includes text translation (`withText`) as a starting point for development --- src/apps/calendar/calendar.dev.tsx | 13 +++++++++++++ src/apps/calendar/calendar.entry.tsx | 13 +++++++++++++ src/apps/calendar/calendar.mount.ts | 4 ++++ src/apps/calendar/calendar.tsx | 6 ++++++ src/core/utils/types/ids.ts | 3 ++- 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/apps/calendar/calendar.dev.tsx create mode 100644 src/apps/calendar/calendar.entry.tsx create mode 100644 src/apps/calendar/calendar.mount.ts create mode 100644 src/apps/calendar/calendar.tsx diff --git a/src/apps/calendar/calendar.dev.tsx b/src/apps/calendar/calendar.dev.tsx new file mode 100644 index 0000000000..09a02a7f4c --- /dev/null +++ b/src/apps/calendar/calendar.dev.tsx @@ -0,0 +1,13 @@ +import { ComponentMeta, ComponentStory } from "@storybook/react"; +import React from "react"; +import Calendar from "./calendar.entry"; + +export default { + title: "Apps / Calendar", + component: Calendar, + argTypes: {} +} as ComponentMeta; + +export const App: ComponentStory = (args) => ( + +); diff --git a/src/apps/calendar/calendar.entry.tsx b/src/apps/calendar/calendar.entry.tsx new file mode 100644 index 0000000000..b662bed635 --- /dev/null +++ b/src/apps/calendar/calendar.entry.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import GuardedApp from "../../components/guarded-app"; +import { withText } from "../../core/utils/text"; + +import Calendar from "./calendar"; + +const CalendarEntry: React.FC = () => ( + + + +); + +export default withText(CalendarEntry); diff --git a/src/apps/calendar/calendar.mount.ts b/src/apps/calendar/calendar.mount.ts new file mode 100644 index 0000000000..332b73cb05 --- /dev/null +++ b/src/apps/calendar/calendar.mount.ts @@ -0,0 +1,4 @@ +import addMount from "../../core/addMount"; +import Calendar from "./calendar.entry"; + +addMount({ appName: "calendar", app: Calendar }); diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx new file mode 100644 index 0000000000..53dedffda3 --- /dev/null +++ b/src/apps/calendar/calendar.tsx @@ -0,0 +1,6 @@ +import React from "react"; + +const Calendar: React.FC = () => { + return
App: Calendar
; +}; +export default Calendar; diff --git a/src/core/utils/types/ids.ts b/src/core/utils/types/ids.ts index 0570558287..921480acd0 100644 --- a/src/core/utils/types/ids.ts +++ b/src/core/utils/types/ids.ts @@ -14,6 +14,7 @@ export type GuardedAppId = | "recommended-material" | "recommendation" | "material-grid-automatic" - | "material-grid-manual"; + | "material-grid-manual" + | "calendar"; export type IssnId = DigitalArticleService["issn"]; export type LoanId = number; From a7146fb4781d8b5ae9af07ec698d2de6b825aa62 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 12 Mar 2024 19:33:48 +0100 Subject: [PATCH 02/56] Implement `FullCalendar` functionality - Configured to use Danish week format (week starts on Monday) - Added default event setup - Enabled drag-and-select for creating events ( temporarily stored in local states ) - Utilized the color property for event customization --- package.json | 4 +++ src/apps/calendar/calendar.tsx | 51 ++++++++++++++++++++++++++++++++-- yarn.lock | 34 +++++++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b44704fa69..8b47ecb56c 100644 --- a/package.json +++ b/package.json @@ -145,6 +145,10 @@ }, "dependencies": { "@danskernesdigitalebibliotek/dpl-design-system": "^0.0.0-b807dae9a38d9b7811b36f4b3f3063eec78f4f1f", + "@fullcalendar/core": "^6.1.11", + "@fullcalendar/interaction": "^6.1.11", + "@fullcalendar/react": "^6.1.11", + "@fullcalendar/timegrid": "^6.1.11", "@reach/alert": "^0.17.0", "@reach/dialog": "^0.18.0", "@reduxjs/toolkit": "^1.9.7", diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index 53dedffda3..d9420b284e 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -1,6 +1,53 @@ -import React from "react"; +import React, { useState } from "react"; +import FullCalendar from "@fullcalendar/react"; +import timeGridPlugin from "@fullcalendar/timegrid"; +import interactionPlugin from "@fullcalendar/interaction"; +import da from "@fullcalendar/core/locales/da"; +import { DateSelectArg, EventInput } from "@fullcalendar/core"; const Calendar: React.FC = () => { - return
App: Calendar
; + const [events, setEvents] = useState([ + { + title: "My Event", + start: "2024-03-14T10:00:00", + end: "2024-03-14T15:00:00", + color: "blue" + } + ]); + + const handleDateSelect = (selectInfo: DateSelectArg) => { + const title = prompt("Please enter a new title for your event"); + const calendarApi = selectInfo.view.calendar; + + if (title) { + setEvents([ + ...events, + { + title, + start: selectInfo.startStr, + end: selectInfo.endStr, + allDay: selectInfo.allDay, + color: "green" + } + ]); + } + + // clear date selection + calendarApi.unselect(); + }; + + return ( +
+ +
+ ); }; + export default Calendar; diff --git a/yarn.lock b/yarn.lock index da3a4b9d17..3087e6d3b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1743,6 +1743,35 @@ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== +"@fullcalendar/core@^6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-6.1.11.tgz#f9630e83ae977e774992507635b1e7af4c339d37" + integrity sha512-TjG7c8sUz+Vkui2FyCNJ+xqyu0nq653Ibe99A66LoW95oBo6tVhhKIaG1Wh0GVKymYiqAQN/OEdYTuj4ay27kA== + dependencies: + preact "~10.12.1" + +"@fullcalendar/daygrid@~6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@fullcalendar/daygrid/-/daygrid-6.1.11.tgz#83a5d4a94c314cf3a14b06bebba03b1b40e6d2ba" + integrity sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg== + +"@fullcalendar/interaction@^6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@fullcalendar/interaction/-/interaction-6.1.11.tgz#baa3beec8f5c489fb6904973b175a5f4797abdf3" + integrity sha512-ynOKjzuPwEAMgTQ6R/Z2zvzIIqG4p8/Qmnhi1q0vzPZZxSIYx3rlZuvpEK2WGBZZ1XEafDOP/LGfbWoNZe+qdg== + +"@fullcalendar/react@^6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@fullcalendar/react/-/react-6.1.11.tgz#93c81ace6c0559092112ef90d2e8ceb6d62a9a58" + integrity sha512-Og0Tv0OiglTFp+b++yRyEhAeWnAmKkMLQ3iS0eJE1KDEov6QqGkoO+dUG4x8zp2w55IJqzik/a9iHi0s3oQDbA== + +"@fullcalendar/timegrid@^6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@fullcalendar/timegrid/-/timegrid-6.1.11.tgz#76b2fc4446d1e97819a4395dab4f3a7e44c7a9eb" + integrity sha512-0seUHK/ferH89IeuCvV4Bib0zWjgK0nsptNdmAc9wDBxD/d9hm5Mdti0URJX6bDoRtsSfRDu5XsRcrzwoc+AUQ== + dependencies: + "@fullcalendar/daygrid" "~6.1.11" + "@graphql-codegen/add@^3.1.1": version "3.1.1" resolved "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.1.1.tgz" @@ -15900,6 +15929,11 @@ postcss@^8.2.15, postcss@^8.4.21, postcss@^8.4.28, postcss@^8.4.33, postcss@^8.4 picocolors "^1.0.0" source-map-js "^1.0.2" +preact@~10.12.1: + version "10.12.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.12.1.tgz#8f9cb5442f560e532729b7d23d42fd1161354a21" + integrity sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" From 46f03a172ff67e4e284fc8e96741f6f228e68e46 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 12 Mar 2024 20:05:38 +0100 Subject: [PATCH 03/56] Add `height="100vh"` + `stickyHeaderDates` The height will prevent the "overlay" (that shows the events) from adding an extra empty row that takes up unnecessary space, and stickyHeaderDates is just a nice add-on for the user that add events --- src/apps/calendar/calendar.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index d9420b284e..d04db386d3 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -37,16 +37,16 @@ const Calendar: React.FC = () => { }; return ( -
- -
+ ); }; From 4777b1e9b90847dc4c7d3a176fc37b5296a0eb93 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 12 Mar 2024 20:40:46 +0100 Subject: [PATCH 04/56] Add `allDay` property to default event This is a part of the events that are added by drag-and-select. --- src/apps/calendar/calendar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index d04db386d3..3febda2512 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -11,6 +11,7 @@ const Calendar: React.FC = () => { title: "My Event", start: "2024-03-14T10:00:00", end: "2024-03-14T15:00:00", + allDay: false, color: "blue" } ]); From d1d842ee5901ef79175f9717a957bc632bc88f10 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 12 Mar 2024 20:43:12 +0100 Subject: [PATCH 05/56] Add logic that prevents events from spanning over multiple days If the events are selected over multiple days, it will change the end date to end on the start day at time 00:00:00 I tried to use `selectConstraint` and `eventConstraint` instead, but with no luck --- src/apps/calendar/calendar.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index 3febda2512..d46de2f58e 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -21,12 +21,27 @@ const Calendar: React.FC = () => { const calendarApi = selectInfo.view.calendar; if (title) { + // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 + const startDay = new Date(selectInfo.startStr); + let endDay = new Date(selectInfo.endStr); + + if ( + endDay.getDate() !== startDay.getDate() || + endDay.getMonth() !== startDay.getMonth() || + endDay.getFullYear() !== startDay.getFullYear() + ) { + endDay = new Date(startDay); + // Adds one day to the end day and sets the time to 00:00:00รŸ + endDay.setDate(endDay.getDate() + 1); + endDay.setHours(0, 0, 0); + } + setEvents([ ...events, { title, - start: selectInfo.startStr, - end: selectInfo.endStr, + start: startDay.toISOString(), + end: endDay.toISOString(), allDay: selectInfo.allDay, color: "green" } From 4ce0ef64733ea253b8a1755d09e5976b5b78ded4 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 13:02:01 +0100 Subject: [PATCH 06/56] WIP: Implementing new Orval-generated hooks to retrieve CMS opening hours Temporarily set `target` in orval.config to an incorrect file, pending merge of PR: https://github.com/danskernesdigitalebibliotek/dpl-cms/pull/890 --- orval.config.ts | 2 +- src/core/dpl-cms/dpl-cms.ts | 176 +++++++++++++++++- .../model/dplOpeningHoursListGET200Item.ts | 18 ++ .../dplOpeningHoursListGET200ItemCategory.ts | 11 ++ .../model/dplOpeningHoursListGETFormat.ts | 15 ++ .../model/dplOpeningHoursListGETParams.ts | 12 ++ src/core/dpl-cms/model/eventPATCHBody.ts | 16 ++ .../model/eventPATCHBodyExternalData.ts | 17 ++ src/core/dpl-cms/model/eventPATCHBodyState.ts | 22 +++ src/core/dpl-cms/model/eventPATCHFormat.ts | 15 ++ src/core/dpl-cms/model/eventPATCHParams.ts | 10 + src/core/dpl-cms/model/eventsGET200Item.ts | 43 +++++ .../dpl-cms/model/eventsGET200ItemAddress.ts | 23 +++ .../dpl-cms/model/eventsGET200ItemDateTime.ts | 17 ++ .../model/eventsGET200ItemExternalData.ts | 17 ++ .../dpl-cms/model/eventsGET200ItemImage.ts | 15 ++ .../dpl-cms/model/eventsGET200ItemSeries.ts | 15 ++ .../dpl-cms/model/eventsGET200ItemState.ts | 22 +++ .../eventsGET200ItemTicketCategoriesItem.ts | 18 ++ ...entsGET200ItemTicketCategoriesItemCount.ts | 15 ++ ...entsGET200ItemTicketCategoriesItemPrice.ts | 17 ++ src/core/dpl-cms/model/eventsGETFormat.ts | 15 ++ src/core/dpl-cms/model/eventsGETParams.ts | 10 + src/core/dpl-cms/model/index.ts | 21 +++ 24 files changed, 559 insertions(+), 3 deletions(-) create mode 100644 src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts create mode 100644 src/core/dpl-cms/model/eventPATCHBody.ts create mode 100644 src/core/dpl-cms/model/eventPATCHBodyExternalData.ts create mode 100644 src/core/dpl-cms/model/eventPATCHBodyState.ts create mode 100644 src/core/dpl-cms/model/eventPATCHFormat.ts create mode 100644 src/core/dpl-cms/model/eventPATCHParams.ts create mode 100644 src/core/dpl-cms/model/eventsGET200Item.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemAddress.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemDateTime.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemExternalData.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemImage.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemSeries.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemState.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts create mode 100644 src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts create mode 100644 src/core/dpl-cms/model/eventsGETFormat.ts create mode 100644 src/core/dpl-cms/model/eventsGETParams.ts diff --git a/orval.config.ts b/orval.config.ts index 2907d3b445..aa388ee185 100644 --- a/orval.config.ts +++ b/orval.config.ts @@ -139,7 +139,7 @@ export default defineConfig({ }, input: { target: - "https://raw.githubusercontent.com/danskernesdigitalebibliotek/dpl-cms/develop/openapi.json", + "https://raw.githubusercontent.com/danskernesdigitalebibliotek/dpl-cms/e1edb7e35beacb93e78eef0541c8ccebad68d6f1/openapi.json", converterOptions: { indent: 2 } diff --git a/src/core/dpl-cms/dpl-cms.ts b/src/core/dpl-cms/dpl-cms.ts index d5bef31934..39834fe05e 100644 --- a/src/core/dpl-cms/dpl-cms.ts +++ b/src/core/dpl-cms/dpl-cms.ts @@ -19,6 +19,12 @@ import type { CampaignMatchPOST200, CampaignMatchPOSTBodyItem, CampaignMatchPOSTParams, + DplOpeningHoursListGET200Item, + DplOpeningHoursListGETParams, + EventPATCHBody, + EventPATCHParams, + EventsGET200Item, + EventsGETParams, ProxyUrlGET200, ProxyUrlGETParams } from "./model"; @@ -29,7 +35,7 @@ type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; /** - * @summary Get campaign matching search result facets + * @summary Hent kampagne som matcher facetter fra sรธgeresultatet */ export const campaignMatchPOST = ( campaignMatchPOSTBodyItem: CampaignMatchPOSTBodyItem[], @@ -92,7 +98,173 @@ export const useCampaignMatchPOST = < }; /** - * @summary Generate proxy url + * @summary List all opening hours + */ +export const dplOpeningHoursListGET = ( + params?: DplOpeningHoursListGETParams, + signal?: AbortSignal +) => { + return fetcher({ + url: `/dpl_opening_hours`, + method: "get", + signal, + params + }); +}; + +export const getDplOpeningHoursListGETQueryKey = ( + params?: DplOpeningHoursListGETParams +) => [`/dpl_opening_hours`, ...(params ? [params] : [])]; + +export type DplOpeningHoursListGETQueryResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursListGETQueryError = ErrorType; + +export const useDplOpeningHoursListGET = < + TData = Awaited>, + TError = ErrorType +>( + params?: DplOpeningHoursListGETParams, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getDplOpeningHoursListGETQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => dplOpeningHoursListGET(params, signal); + + const query = useQuery< + Awaited>, + TError, + TData + >(queryKey, queryFn, queryOptions); + + return { + queryKey, + ...query + }; +}; + +/** + * @summary Update single events + */ +export const eventPATCH = ( + uuid: string, + eventPATCHBody: BodyType, + params?: EventPATCHParams +) => { + return fetcher({ + url: `/dpl_event/${uuid}`, + method: "patch", + headers: { "Content-Type": "application/json" }, + data: eventPATCHBody, + params + }); +}; + +export type EventPATCHMutationResult = NonNullable< + Awaited> +>; +export type EventPATCHMutationBody = BodyType; +export type EventPATCHMutationError = ErrorType; + +export const useEventPATCH = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { uuid: string; data: BodyType; params?: EventPATCHParams }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { uuid: string; data: BodyType; params?: EventPATCHParams } + > = (props) => { + const { uuid, data, params } = props ?? {}; + + return eventPATCH(uuid, data, params); + }; + + return useMutation< + Awaited>, + TError, + { uuid: string; data: BodyType; params?: EventPATCHParams }, + TContext + >(mutationFn, mutationOptions); +}; + +/** + * @summary Retrieve all events + */ +export const eventsGET = (params?: EventsGETParams, signal?: AbortSignal) => { + return fetcher({ + url: `/dpl_event`, + method: "get", + signal, + params + }); +}; + +export const getEventsGETQueryKey = (params?: EventsGETParams) => [ + `/dpl_event`, + ...(params ? [params] : []) +]; + +export type EventsGETQueryResult = NonNullable< + Awaited> +>; +export type EventsGETQueryError = ErrorType; + +export const useEventsGET = < + TData = Awaited>, + TError = ErrorType +>( + params?: EventsGETParams, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getEventsGETQueryKey(params); + + const queryFn: QueryFunction>> = ({ + signal + }) => eventsGET(params, signal); + + const query = useQuery>, TError, TData>( + queryKey, + queryFn, + queryOptions + ); + + return { + queryKey, + ...query + }; +}; + +/** + * @summary Generate proxy URL / Generer proxy URL */ export const proxyUrlGET = ( params?: ProxyUrlGETParams, diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts new file mode 100644 index 0000000000..e39d9d6d00 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursListGET200ItemCategory } from "./dplOpeningHoursListGET200ItemCategory"; + +export type DplOpeningHoursListGET200Item = { + category: DplOpeningHoursListGET200ItemCategory; + /** When the event was created. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts new file mode 100644 index 0000000000..d46fd88dcb --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts @@ -0,0 +1,11 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursListGET200ItemCategory = { + title: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts new file mode 100644 index 0000000000..d294d873c0 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursListGETFormat = + typeof DplOpeningHoursListGETFormat[keyof typeof DplOpeningHoursListGETFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursListGETFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts new file mode 100644 index 0000000000..b74e09c225 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursListGETFormat } from "./dplOpeningHoursListGETFormat"; + +export type DplOpeningHoursListGETParams = { + _format?: DplOpeningHoursListGETFormat; +}; diff --git a/src/core/dpl-cms/model/eventPATCHBody.ts b/src/core/dpl-cms/model/eventPATCHBody.ts new file mode 100644 index 0000000000..e6008b04e8 --- /dev/null +++ b/src/core/dpl-cms/model/eventPATCHBody.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { EventPATCHBodyState } from "./eventPATCHBodyState"; +import type { EventPATCHBodyExternalData } from "./eventPATCHBodyExternalData"; + +export type EventPATCHBody = { + /** The state of the event. */ + state?: EventPATCHBodyState; + /** Data for the event provided by a third party. */ + external_data?: EventPATCHBodyExternalData; +}; diff --git a/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts b/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts new file mode 100644 index 0000000000..2a09817473 --- /dev/null +++ b/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * Data for the event provided by a third party. + */ +export type EventPATCHBodyExternalData = { + /** An absolute url provided by the third party where end users can access the event. */ + url?: string; + /** An absolute url provided by the third party where editorial users can administer the event. Accessing this url should require authentication. */ + admin_url?: string; +}; diff --git a/src/core/dpl-cms/model/eventPATCHBodyState.ts b/src/core/dpl-cms/model/eventPATCHBodyState.ts new file mode 100644 index 0000000000..4a9a27d384 --- /dev/null +++ b/src/core/dpl-cms/model/eventPATCHBodyState.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * The state of the event. + */ +export type EventPATCHBodyState = + typeof EventPATCHBodyState[keyof typeof EventPATCHBodyState]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const EventPATCHBodyState = { + TicketSaleNotOpen: "TicketSaleNotOpen", + Active: "Active", + SoldOut: "SoldOut", + Cancelled: "Cancelled", + Occurred: "Occurred" +} as const; diff --git a/src/core/dpl-cms/model/eventPATCHFormat.ts b/src/core/dpl-cms/model/eventPATCHFormat.ts new file mode 100644 index 0000000000..872f86e6ba --- /dev/null +++ b/src/core/dpl-cms/model/eventPATCHFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type EventPATCHFormat = + typeof EventPATCHFormat[keyof typeof EventPATCHFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const EventPATCHFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/eventPATCHParams.ts b/src/core/dpl-cms/model/eventPATCHParams.ts new file mode 100644 index 0000000000..9f2c8c35a1 --- /dev/null +++ b/src/core/dpl-cms/model/eventPATCHParams.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { EventPATCHFormat } from "./eventPATCHFormat"; + +export type EventPATCHParams = { _format?: EventPATCHFormat }; diff --git a/src/core/dpl-cms/model/eventsGET200Item.ts b/src/core/dpl-cms/model/eventsGET200Item.ts new file mode 100644 index 0000000000..8fa4d7f597 --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200Item.ts @@ -0,0 +1,43 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { EventsGET200ItemImage } from "./eventsGET200ItemImage"; +import type { EventsGET200ItemState } from "./eventsGET200ItemState"; +import type { EventsGET200ItemDateTime } from "./eventsGET200ItemDateTime"; +import type { EventsGET200ItemAddress } from "./eventsGET200ItemAddress"; +import type { EventsGET200ItemTicketCategoriesItem } from "./eventsGET200ItemTicketCategoriesItem"; +import type { EventsGET200ItemSeries } from "./eventsGET200ItemSeries"; +import type { EventsGET200ItemExternalData } from "./eventsGET200ItemExternalData"; + +export type EventsGET200Item = { + /** A unique identifer for the event. */ + uuid: string; + /** The event title. */ + title: string; + /** An absolute url end users should use to view the event at the website. */ + url: string; + /** When the event was created. In ISO 8601 format. */ + created_at: string; + /** When the event was last updated. In ISO 8601 format. */ + updated_at: string; + /** The main image for the event. */ + image?: EventsGET200ItemImage; + /** The state of the event. */ + state: EventsGET200ItemState; + /** When the event occurs. */ + date_time: EventsGET200ItemDateTime; + /** Where the event occurs. */ + address?: EventsGET200ItemAddress; + /** Ticket categories used for the event. Not present for events without ticketing. */ + ticket_categories?: EventsGET200ItemTicketCategoriesItem[]; + /** An event may be part of a series. One example of this is recurring events. */ + series?: EventsGET200ItemSeries; + /** An editorial description of the event. */ + description?: string; + /** Data for the event provided by a third party. */ + external_data?: EventsGET200ItemExternalData; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemAddress.ts b/src/core/dpl-cms/model/eventsGET200ItemAddress.ts new file mode 100644 index 0000000000..bbe4bdfe5a --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemAddress.ts @@ -0,0 +1,23 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * Where the event occurs. + */ +export type EventsGET200ItemAddress = { + /** Name of the location where the event occurs. This could be the name of a library branch. */ + location?: string; + /** Street name and number. */ + street: string; + /** Zip code. */ + zip_code: number; + /** City. */ + city: string; + /** Country code in ISO 3166-1 alpha-2 format. E.g. DK for Denmark. */ + country: string; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts b/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts new file mode 100644 index 0000000000..3412127cc0 --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * When the event occurs. + */ +export type EventsGET200ItemDateTime = { + /** Start time in ISO 8601 format. */ + start: string; + /** End time in ISO 8601 format. */ + end: string; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts b/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts new file mode 100644 index 0000000000..0c875ee0fd --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * Data for the event provided by a third party. + */ +export type EventsGET200ItemExternalData = { + /** An absolute url provided by the third party where end users can access the event. */ + url?: string; + /** An absolute url provided by the third party where editorial users can administer the event. Accessing this url should require authentication. */ + admin_url?: string; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemImage.ts b/src/core/dpl-cms/model/eventsGET200ItemImage.ts new file mode 100644 index 0000000000..23de28af3c --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemImage.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * The main image for the event. + */ +export type EventsGET200ItemImage = { + /** An absolute url for the image. */ + url: string; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemSeries.ts b/src/core/dpl-cms/model/eventsGET200ItemSeries.ts new file mode 100644 index 0000000000..2143d5184f --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemSeries.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * An event may be part of a series. One example of this is recurring events. + */ +export type EventsGET200ItemSeries = { + /** The unique identifier for the series. All events belonging to the same series will have the same value. */ + uuid: string; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemState.ts b/src/core/dpl-cms/model/eventsGET200ItemState.ts new file mode 100644 index 0000000000..d19f1acb63 --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemState.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * The state of the event. + */ +export type EventsGET200ItemState = + typeof EventsGET200ItemState[keyof typeof EventsGET200ItemState]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const EventsGET200ItemState = { + TicketSaleNotOpen: "TicketSaleNotOpen", + Active: "Active", + SoldOut: "SoldOut", + Cancelled: "Cancelled", + Occurred: "Occurred" +} as const; diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts new file mode 100644 index 0000000000..d48e65b32d --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { EventsGET200ItemTicketCategoriesItemCount } from "./eventsGET200ItemTicketCategoriesItemCount"; +import type { EventsGET200ItemTicketCategoriesItemPrice } from "./eventsGET200ItemTicketCategoriesItemPrice"; + +export type EventsGET200ItemTicketCategoriesItem = { + /** The name of the ticket category. */ + title: string; + /** Number of tickets for the event. */ + count?: EventsGET200ItemTicketCategoriesItemCount; + /** The price of a ticket in the category */ + price: EventsGET200ItemTicketCategoriesItemPrice; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts new file mode 100644 index 0000000000..66173c408e --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * Number of tickets for the event. + */ +export type EventsGET200ItemTicketCategoriesItemCount = { + /** Total number of tickets for the event. */ + total?: number; +}; diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts new file mode 100644 index 0000000000..ebd9b01166 --- /dev/null +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +/** + * The price of a ticket in the category + */ +export type EventsGET200ItemTicketCategoriesItemPrice = { + /** The currency of the price in ISO 4217 format. E.g. DKK for Danish krone. */ + currency: string; + /** The price of a ticket in the minor unit of the currency. E.g. 750 for 7,50 EUR. Use 0 for free tickets. */ + value: number; +}; diff --git a/src/core/dpl-cms/model/eventsGETFormat.ts b/src/core/dpl-cms/model/eventsGETFormat.ts new file mode 100644 index 0000000000..444b4f3e53 --- /dev/null +++ b/src/core/dpl-cms/model/eventsGETFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type EventsGETFormat = + typeof EventsGETFormat[keyof typeof EventsGETFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const EventsGETFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/eventsGETParams.ts b/src/core/dpl-cms/model/eventsGETParams.ts new file mode 100644 index 0000000000..0d134eba3d --- /dev/null +++ b/src/core/dpl-cms/model/eventsGETParams.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { EventsGETFormat } from "./eventsGETFormat"; + +export type EventsGETParams = { _format?: EventsGETFormat }; diff --git a/src/core/dpl-cms/model/index.ts b/src/core/dpl-cms/model/index.ts index a2f3db36fc..89a7d5f04b 100644 --- a/src/core/dpl-cms/model/index.ts +++ b/src/core/dpl-cms/model/index.ts @@ -12,3 +12,24 @@ export * from "./campaignMatchPOSTBodyItemValuesItem"; export * from "./dplDasDigitalArticleOrderPOSTFormat"; export * from "./dplDasDigitalArticleOrderPOSTParams"; export * from "./dplDasDigitalArticleOrderPOSTBody"; +export * from "./dplOpeningHoursListGETParams"; +export * from "./eventPATCHFormat"; +export * from "./dplOpeningHoursListGET200Item"; +export * from "./eventPATCHBodyExternalData"; +export * from "./eventsGET200ItemDateTime"; +export * from "./dplOpeningHoursListGETFormat"; +export * from "./eventsGET200ItemAddress"; +export * from "./eventPATCHBody"; +export * from "./eventsGET200ItemState"; +export * from "./eventsGET200ItemTicketCategoriesItemPrice"; +export * from "./eventsGET200ItemExternalData"; +export * from "./eventsGET200ItemSeries"; +export * from "./eventsGET200ItemTicketCategoriesItem"; +export * from "./eventsGET200ItemTicketCategoriesItemCount"; +export * from "./eventsGETParams"; +export * from "./eventsGET200Item"; +export * from "./eventsGET200ItemImage"; +export * from "./dplOpeningHoursListGET200ItemCategory"; +export * from "./eventsGETFormat"; +export * from "./eventPATCHParams"; +export * from "./eventPATCHBodyState"; From 8233f9511c7628a56700e4828cd61e4f32821523 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 13:28:22 +0100 Subject: [PATCH 07/56] Add WireMock for `https://dpl-cms.docker` and add opening hours endpoint to `/dpl_opening_hours` Enables testing of the Orval-generated `formatCmsEventsToFullCalendar` hook in `Calendar` app. --- ...-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json | 18 +++++++++++++++++ .docker/wiremock/services.json | 5 +++++ .env.example | 1 + docker-compose.yml | 20 ++++++++++++++++++- src/apps/calendar/calendar.dev.tsx | 5 ++++- src/apps/calendar/calendar.entry.tsx | 3 ++- src/core/storybook/serviceUrlArgs.ts | 2 +- 7 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 .docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json diff --git a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json new file mode 100644 index 0000000000..d9e03a635c --- /dev/null +++ b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json @@ -0,0 +1,18 @@ +{ + "id" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", + "name" : "Opening hours", + "request" : { + "url" : "/dpl_opening_hours", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "[\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n },\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n }\n]", + "headers" : { } + }, + "uuid" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", + "persistent" : true, + "priority" : 5, + "insertionIndex" : 0, + "postServeActions" : [ ] +} \ No newline at end of file diff --git a/.docker/wiremock/services.json b/.docker/wiremock/services.json index 95f8b8e09a..ec36e42a95 100644 --- a/.docker/wiremock/services.json +++ b/.docker/wiremock/services.json @@ -9,5 +9,10 @@ "name" : "publizon", "port" : 8110, "rootDir" : "publizon" + }, { + "id" : "9d646", + "name" : "cms", + "port" : 8120, + "rootDir" : "cms" } ] } \ No newline at end of file diff --git a/.env.example b/.env.example index 4cb8391745..e979982268 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,4 @@ STORYBOOK_CLIENT_ID=bdc1d425-9117-4867-acb9-c7307ddc2e0f STORYBOOK_LIBRARY_TOKEN=e26e4ca8934475e6a9aytefb028b2e9fa846b5b8 PUBLIZON_BASEURL=http://publizon-mock.docker FBS_BASEURL=http://fbs-mock.docker +CMS_BASEURL=http://cms-mock.docker diff --git a/docker-compose.yml b/docker-compose.yml index 35b976b00f..7b3842b4af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: wiremock: @@ -9,6 +9,8 @@ services: - "8100" # Publizon - "8110" + # CMS + - "8120" volumes: - wiremock_data:/home/wiremock environment: @@ -37,6 +39,17 @@ services: VIRTUAL_HOST: publizon-mock.docker VIRTUAL_PORT: 8080 + wiremock-cms: + image: wiremock/wiremock:2.32.0 + command: "--enable-stub-cors --global-response-templating" # Enable automatic sending of cross-origin (CORS) response headers. + ports: + - "8080" + volumes: + - wiremock_cms_data:/home/wiremock + environment: + VIRTUAL_HOST: cms-mock.docker + VIRTUAL_PORT: 8080 + volumes: root: driver_opts: @@ -58,3 +71,8 @@ volumes: type: none device: $PWD/.docker/wiremock/publizon o: bind + wiremock_cms_data: + driver_opts: + type: none + device: $PWD/.docker/wiremock/cms + o: bind diff --git a/src/apps/calendar/calendar.dev.tsx b/src/apps/calendar/calendar.dev.tsx index 09a02a7f4c..eb6d27cf03 100644 --- a/src/apps/calendar/calendar.dev.tsx +++ b/src/apps/calendar/calendar.dev.tsx @@ -1,11 +1,14 @@ import { ComponentMeta, ComponentStory } from "@storybook/react"; import React from "react"; +import serviceUrlArgs from "../../core/storybook/serviceUrlArgs"; import Calendar from "./calendar.entry"; export default { title: "Apps / Calendar", component: Calendar, - argTypes: {} + argTypes: { + ...serviceUrlArgs + } } as ComponentMeta; export const App: ComponentStory = (args) => ( diff --git a/src/apps/calendar/calendar.entry.tsx b/src/apps/calendar/calendar.entry.tsx index b662bed635..de120e20d1 100644 --- a/src/apps/calendar/calendar.entry.tsx +++ b/src/apps/calendar/calendar.entry.tsx @@ -3,6 +3,7 @@ import GuardedApp from "../../components/guarded-app"; import { withText } from "../../core/utils/text"; import Calendar from "./calendar"; +import { withUrls } from "../../core/utils/url"; const CalendarEntry: React.FC = () => ( @@ -10,4 +11,4 @@ const CalendarEntry: React.FC = () => ( ); -export default withText(CalendarEntry); +export default withUrls(withText(CalendarEntry)); diff --git a/src/core/storybook/serviceUrlArgs.ts b/src/core/storybook/serviceUrlArgs.ts index 9ca45f8f2e..36599fc118 100644 --- a/src/core/storybook/serviceUrlArgs.ts +++ b/src/core/storybook/serviceUrlArgs.ts @@ -14,7 +14,7 @@ export default { }, [serviceUrlKeys.dplCms]: { name: "Base url for the DPL CMS API", - defaultValue: "https://dpl-cms.docker", + defaultValue: process.env.CMS_BASEURL ?? "https://dpl-cms.docker", control: { type: "text" } }, [serviceUrlKeys.cover]: { From bd0a53ec1dda378c1ea5b317435fffe1875b072d Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 13:57:29 +0100 Subject: [PATCH 08/56] Use data from `useDplOpeningHoursListGET` in `Calendar` app Now, we fetch the opening hours data from WireMock to demonstrate functionality with fetched data. Implemented is a helper file that currently exports a single function, `formatCmsEventsToFullCalendar`. We continue to manage new events in our local state. --- src/apps/calendar/calendar.tsx | 20 +++++++++++--------- src/apps/calendar/helper.tsx | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 src/apps/calendar/helper.tsx diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index d46de2f58e..163bb51555 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -1,20 +1,22 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import FullCalendar from "@fullcalendar/react"; import timeGridPlugin from "@fullcalendar/timegrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import { DateSelectArg, EventInput } from "@fullcalendar/core"; +import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; +import formatCmsEventsToFullCalendar from "./helper"; const Calendar: React.FC = () => { - const [events, setEvents] = useState([ - { - title: "My Event", - start: "2024-03-14T10:00:00", - end: "2024-03-14T15:00:00", - allDay: false, - color: "blue" + const { data: openingHoursData } = useDplOpeningHoursListGET(); + const [events, setEvents] = useState([]); + + useEffect(() => { + if (openingHoursData) { + const formattedEvents = formatCmsEventsToFullCalendar(openingHoursData); + setEvents(formattedEvents); } - ]); + }, [openingHoursData]); const handleDateSelect = (selectInfo: DateSelectArg) => { const title = prompt("Please enter a new title for your event"); diff --git a/src/apps/calendar/helper.tsx b/src/apps/calendar/helper.tsx new file mode 100644 index 0000000000..8e8e95368c --- /dev/null +++ b/src/apps/calendar/helper.tsx @@ -0,0 +1,15 @@ +import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; + +const formatCmsEventsToFullCalendar = ( + data: DplOpeningHoursListGET200Item[] +) => { + return data.map(({ category, date, start_time, end_time }) => ({ + title: category.title, + start: `${date}T${start_time}:00`, + end: `${date}T${end_time}:00`, + allDay: false, + color: "blue" + })); +}; + +export default formatCmsEventsToFullCalendar; From 7349ded0a2c93559a3eddb7981a1174fac743e1c Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 14:10:40 +0100 Subject: [PATCH 09/56] Add monthly view to FullCalendar Currently, only full-day events can be added from this view. --- package.json | 1 + src/apps/calendar/calendar.tsx | 8 +++++++- yarn.lock | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8b47ecb56c..d631f0ee82 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "dependencies": { "@danskernesdigitalebibliotek/dpl-design-system": "^0.0.0-b807dae9a38d9b7811b36f4b3f3063eec78f4f1f", "@fullcalendar/core": "^6.1.11", + "@fullcalendar/daygrid": "^6.1.11", "@fullcalendar/interaction": "^6.1.11", "@fullcalendar/react": "^6.1.11", "@fullcalendar/timegrid": "^6.1.11", diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index 163bb51555..8a49245274 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from "react"; import FullCalendar from "@fullcalendar/react"; import timeGridPlugin from "@fullcalendar/timegrid"; +import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import { DateSelectArg, EventInput } from "@fullcalendar/core"; @@ -56,7 +57,12 @@ const Calendar: React.FC = () => { return ( Date: Wed, 13 Mar 2024 14:20:17 +0100 Subject: [PATCH 10/56] Remove `height="100vh"` This did not resolve the issues mentioned in the commit "Add `height="100vh"` + `stickyHeaderDates`" (Commit ID: 46f03a172ff67e4e284fc8e96741f6f228e68e46) --- src/apps/calendar/calendar.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/apps/calendar/calendar.tsx b/src/apps/calendar/calendar.tsx index 8a49245274..1c64d16fb0 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/calendar/calendar.tsx @@ -68,7 +68,6 @@ const Calendar: React.FC = () => { selectable select={handleDateSelect} events={events} - height="100vh" stickyHeaderDates /> ); From 5b5872a8d516690b4a05490ef67a50e8d133e122 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 14:47:54 +0100 Subject: [PATCH 11/56] Change app name to `OpeningHoursEditor` --- src/apps/calendar/calendar.dev.tsx | 16 ---------------- src/apps/calendar/calendar.mount.ts | 4 ---- .../OpeningHoursEditor.dev.tsx | 16 ++++++++++++++++ .../OpeningHoursEditor.entry.tsx} | 7 +++---- .../OpeningHoursEditor.mount.ts | 4 ++++ .../OpeningHoursEditor.tsx} | 4 ++-- .../helper.tsx | 0 src/core/utils/types/ids.ts | 2 +- 8 files changed, 26 insertions(+), 27 deletions(-) delete mode 100644 src/apps/calendar/calendar.dev.tsx delete mode 100644 src/apps/calendar/calendar.mount.ts create mode 100644 src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx rename src/apps/{calendar/calendar.entry.tsx => opening-hours-editor/OpeningHoursEditor.entry.tsx} (70%) create mode 100644 src/apps/opening-hours-editor/OpeningHoursEditor.mount.ts rename src/apps/{calendar/calendar.tsx => opening-hours-editor/OpeningHoursEditor.tsx} (96%) rename src/apps/{calendar => opening-hours-editor}/helper.tsx (100%) diff --git a/src/apps/calendar/calendar.dev.tsx b/src/apps/calendar/calendar.dev.tsx deleted file mode 100644 index eb6d27cf03..0000000000 --- a/src/apps/calendar/calendar.dev.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { ComponentMeta, ComponentStory } from "@storybook/react"; -import React from "react"; -import serviceUrlArgs from "../../core/storybook/serviceUrlArgs"; -import Calendar from "./calendar.entry"; - -export default { - title: "Apps / Calendar", - component: Calendar, - argTypes: { - ...serviceUrlArgs - } -} as ComponentMeta; - -export const App: ComponentStory = (args) => ( - -); diff --git a/src/apps/calendar/calendar.mount.ts b/src/apps/calendar/calendar.mount.ts deleted file mode 100644 index 332b73cb05..0000000000 --- a/src/apps/calendar/calendar.mount.ts +++ /dev/null @@ -1,4 +0,0 @@ -import addMount from "../../core/addMount"; -import Calendar from "./calendar.entry"; - -addMount({ appName: "calendar", app: Calendar }); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx new file mode 100644 index 0000000000..fc0ad98155 --- /dev/null +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx @@ -0,0 +1,16 @@ +import { ComponentMeta, ComponentStory } from "@storybook/react"; +import React from "react"; +import serviceUrlArgs from "../../core/storybook/serviceUrlArgs"; +import OpeningHoursEditor from "./OpeningHoursEditor.entry"; + +export default { + title: "Apps / OpeningHoursEditor", + component: OpeningHoursEditor, + argTypes: { + ...serviceUrlArgs + } +} as ComponentMeta; + +export const App: ComponentStory = (args) => ( + +); diff --git a/src/apps/calendar/calendar.entry.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx similarity index 70% rename from src/apps/calendar/calendar.entry.tsx rename to src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx index de120e20d1..9889c5a92b 100644 --- a/src/apps/calendar/calendar.entry.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx @@ -1,13 +1,12 @@ import React from "react"; import GuardedApp from "../../components/guarded-app"; import { withText } from "../../core/utils/text"; - -import Calendar from "./calendar"; import { withUrls } from "../../core/utils/url"; +import OpeningHoursEditor from "./OpeningHoursEditor"; const CalendarEntry: React.FC = () => ( - - + + ); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.mount.ts b/src/apps/opening-hours-editor/OpeningHoursEditor.mount.ts new file mode 100644 index 0000000000..16b2654b0d --- /dev/null +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.mount.ts @@ -0,0 +1,4 @@ +import addMount from "../../core/addMount"; +import OpeningHoursEditor from "./OpeningHoursEditor.entry"; + +addMount({ appName: "opening-hours-editor", app: OpeningHoursEditor }); diff --git a/src/apps/calendar/calendar.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx similarity index 96% rename from src/apps/calendar/calendar.tsx rename to src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 1c64d16fb0..f8f800f95a 100644 --- a/src/apps/calendar/calendar.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -8,7 +8,7 @@ import { DateSelectArg, EventInput } from "@fullcalendar/core"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; import formatCmsEventsToFullCalendar from "./helper"; -const Calendar: React.FC = () => { +const OpeningHoursEditor: React.FC = () => { const { data: openingHoursData } = useDplOpeningHoursListGET(); const [events, setEvents] = useState([]); @@ -73,4 +73,4 @@ const Calendar: React.FC = () => { ); }; -export default Calendar; +export default OpeningHoursEditor; diff --git a/src/apps/calendar/helper.tsx b/src/apps/opening-hours-editor/helper.tsx similarity index 100% rename from src/apps/calendar/helper.tsx rename to src/apps/opening-hours-editor/helper.tsx diff --git a/src/core/utils/types/ids.ts b/src/core/utils/types/ids.ts index 921480acd0..7c56cbe0d3 100644 --- a/src/core/utils/types/ids.ts +++ b/src/core/utils/types/ids.ts @@ -15,6 +15,6 @@ export type GuardedAppId = | "recommendation" | "material-grid-automatic" | "material-grid-manual" - | "calendar"; + | "opening-hours-editor"; export type IssnId = DigitalArticleService["issn"]; export type LoanId = number; From f6ed8a828d386bf718113bbba1479489a880de9b Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 15:10:41 +0100 Subject: [PATCH 12/56] Add `eslint-disable-next-line no-alert` Added a todo for replacing prompt with a modal in the future --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index f8f800f95a..1499803ed7 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -20,6 +20,8 @@ const OpeningHoursEditor: React.FC = () => { }, [openingHoursData]); const handleDateSelect = (selectInfo: DateSelectArg) => { + // Todo: Replace prompt with a modal + // eslint-disable-next-line no-alert const title = prompt("Please enter a new title for your event"); const calendarApi = selectInfo.view.calendar; From 3a0cf00f42ed0514c59d89337344d6983502b0c8 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 21:56:54 +0100 Subject: [PATCH 13/56] Add `height="auto"`to `FullCalendar` This seems to fix the problem with the extra row at the bottom --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 1499803ed7..bd60c88152 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -71,6 +71,7 @@ const OpeningHoursEditor: React.FC = () => { select={handleDateSelect} events={events} stickyHeaderDates + height="auto" /> ); }; From 79d6de0a548be5fd1ed938d3afefecaa2ec81ca5 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 22:31:56 +0100 Subject: [PATCH 14/56] Convert helper to TypeScript (.ts) file The file contains no JSX, thus the .tsx extension is unnecessary --- src/apps/opening-hours-editor/{helper.tsx => helper.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/apps/opening-hours-editor/{helper.tsx => helper.ts} (100%) diff --git a/src/apps/opening-hours-editor/helper.tsx b/src/apps/opening-hours-editor/helper.ts similarity index 100% rename from src/apps/opening-hours-editor/helper.tsx rename to src/apps/opening-hours-editor/helper.ts From bd1aaff5a8107a530686b0c60816faec2d46bbd7 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 22:07:50 +0100 Subject: [PATCH 15/56] Add functionality to edit/remove events in `FullCalendar` Added ID to each event for editing/removing capabilities Added `eventContent` / `OpeningHoursEditorEventContent` to render custom markup inside the event Implemented `handleEventClick` to prompt title change for the event --- .../OpeningHoursEditor.tsx | 31 ++++++++++++++-- .../OpeningHoursEditorEventContent.tsx | 37 +++++++++++++++++++ src/apps/opening-hours-editor/helper.ts | 30 ++++++++++----- 3 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index bd60c88152..1fbfdf25aa 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -4,9 +4,10 @@ import timeGridPlugin from "@fullcalendar/timegrid"; import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; -import { DateSelectArg, EventInput } from "@fullcalendar/core"; +import { DateSelectArg, EventClickArg, EventInput } from "@fullcalendar/core"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; -import formatCmsEventsToFullCalendar from "./helper"; +import { createCmsEventId, formatCmsEventsToFullCalendar } from "./helper"; +import renderOpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; const OpeningHoursEditor: React.FC = () => { const { data: openingHoursData } = useDplOpeningHoursListGET(); @@ -48,7 +49,8 @@ const OpeningHoursEditor: React.FC = () => { start: startDay.toISOString(), end: endDay.toISOString(), allDay: selectInfo.allDay, - color: "green" + color: "green", + id: createCmsEventId(title, startDay) } ]); } @@ -57,6 +59,22 @@ const OpeningHoursEditor: React.FC = () => { calendarApi.unselect(); }; + const handleEventClick = (clickInfo: EventClickArg) => { + // eslint-disable-next-line no-alert + const newTitle = prompt( + "Enter a new title for this event", + clickInfo.event.title + ); + + if (newTitle) { + clickInfo.event.setProp("title", newTitle); + } + }; + + const handleEventRemove = (eventToRemove: EventInput) => { + setEvents(events.filter((event) => event.id !== eventToRemove.id)); + }; + return ( { locale={da} selectable select={handleDateSelect} + eventClick={handleEventClick} events={events} + eventContent={(eventInput) => + renderOpeningHoursEditorEventContent({ + eventInput, + handleEventRemove + }) + } stickyHeaderDates height="auto" /> diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx new file mode 100644 index 0000000000..81f67986d3 --- /dev/null +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { EventInput } from "@fullcalendar/core"; + +type OpeningHoursEditorEventContentProps = { + eventInput: EventInput; + handleEventRemove: (event: EventInput) => void; +}; + +export default function OpeningHoursEditorEventContent({ + eventInput, + handleEventRemove +}: OpeningHoursEditorEventContentProps): JSX.Element { + const { event } = eventInput; + return ( +
+ {event.title} + { + if (e.key === "Enter") handleEventRemove(event); + }} + onClick={() => handleEventRemove(event)} + > + โŒ + +
+ ); +} diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index 8e8e95368c..fa9af460ac 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,15 +1,25 @@ import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; -const formatCmsEventsToFullCalendar = ( +function formatDateTimeString(date: string, time: string) { + return `${date}T${time}:00`; +} + +export function createCmsEventId(title: string, startDay: Date) { + return `${title}-${startDay.toISOString()}`; +} + +export const formatCmsEventsToFullCalendar = ( data: DplOpeningHoursListGET200Item[] ) => { - return data.map(({ category, date, start_time, end_time }) => ({ - title: category.title, - start: `${date}T${start_time}:00`, - end: `${date}T${end_time}:00`, - allDay: false, - color: "blue" - })); + return data.map(({ category, date, start_time, end_time }) => { + const startDateTime = new Date(formatDateTimeString(date, start_time)); + return { + id: createCmsEventId(category.title, startDateTime), + title: category.title, + start: formatDateTimeString(date, start_time), + end: formatDateTimeString(date, end_time), + allDay: false, + color: "blue" + }; + }); }; - -export default formatCmsEventsToFullCalendar; From 4220af36066ab1e955f2323a2aa4b1d7a1f99815 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 13 Mar 2024 22:35:45 +0100 Subject: [PATCH 16/56] Refactor handler functions into `helper.ts` Improve code readability and cleanliness. --- .../OpeningHoursEditor.tsx | 75 ++++--------------- src/apps/opening-hours-editor/helper.ts | 72 ++++++++++++++++++ 2 files changed, 86 insertions(+), 61 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 1fbfdf25aa..7e1f097036 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -4,9 +4,14 @@ import timeGridPlugin from "@fullcalendar/timegrid"; import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; -import { DateSelectArg, EventClickArg, EventInput } from "@fullcalendar/core"; +import { EventInput } from "@fullcalendar/core"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; -import { createCmsEventId, formatCmsEventsToFullCalendar } from "./helper"; +import { + formatCmsEventsToFullCalendar, + handleDateSelect, + handleEventClick, + handleEventRemove +} from "./helper"; import renderOpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; const OpeningHoursEditor: React.FC = () => { @@ -20,61 +25,6 @@ const OpeningHoursEditor: React.FC = () => { } }, [openingHoursData]); - const handleDateSelect = (selectInfo: DateSelectArg) => { - // Todo: Replace prompt with a modal - // eslint-disable-next-line no-alert - const title = prompt("Please enter a new title for your event"); - const calendarApi = selectInfo.view.calendar; - - if (title) { - // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 - const startDay = new Date(selectInfo.startStr); - let endDay = new Date(selectInfo.endStr); - - if ( - endDay.getDate() !== startDay.getDate() || - endDay.getMonth() !== startDay.getMonth() || - endDay.getFullYear() !== startDay.getFullYear() - ) { - endDay = new Date(startDay); - // Adds one day to the end day and sets the time to 00:00:00รŸ - endDay.setDate(endDay.getDate() + 1); - endDay.setHours(0, 0, 0); - } - - setEvents([ - ...events, - { - title, - start: startDay.toISOString(), - end: endDay.toISOString(), - allDay: selectInfo.allDay, - color: "green", - id: createCmsEventId(title, startDay) - } - ]); - } - - // clear date selection - calendarApi.unselect(); - }; - - const handleEventClick = (clickInfo: EventClickArg) => { - // eslint-disable-next-line no-alert - const newTitle = prompt( - "Enter a new title for this event", - clickInfo.event.title - ); - - if (newTitle) { - clickInfo.event.setProp("title", newTitle); - } - }; - - const handleEventRemove = (eventToRemove: EventInput) => { - setEvents(events.filter((event) => event.id !== eventToRemove.id)); - }; - return ( { initialView="timeGridWeek" locale={da} selectable - select={handleDateSelect} - eventClick={handleEventClick} - events={events} + select={(selectInfo) => + handleDateSelect({ selectInfo, events, setEvents }) + } + eventClick={(clickInfo) => handleEventClick(clickInfo)} eventContent={(eventInput) => renderOpeningHoursEditorEventContent({ eventInput, - handleEventRemove + handleEventRemove: (eventToRemove) => + handleEventRemove(eventToRemove, events, setEvents) }) } + events={events} stickyHeaderDates height="auto" /> diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index fa9af460ac..4ab03a5869 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,3 +1,4 @@ +import { DateSelectArg, EventClickArg, EventInput } from "@fullcalendar/core"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; function formatDateTimeString(date: string, time: string) { @@ -23,3 +24,74 @@ export const formatCmsEventsToFullCalendar = ( }; }); }; + +// handler functions for the calendar + +interface HandleDateSelectParams { + selectInfo: DateSelectArg; + events: EventInput[]; + setEvents: React.Dispatch>; +} + +export const handleDateSelect = ({ + selectInfo, + events, + setEvents +}: HandleDateSelectParams) => { + // Todo: Replace prompt with a modal + // eslint-disable-next-line no-alert + const title = prompt("Please enter a new title for your event"); + const calendarApi = selectInfo.view.calendar; + + if (title) { + // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 + const startDay = new Date(selectInfo.startStr); + let endDay = new Date(selectInfo.endStr); + + if ( + endDay.getDate() !== startDay.getDate() || + endDay.getMonth() !== startDay.getMonth() || + endDay.getFullYear() !== startDay.getFullYear() + ) { + endDay = new Date(startDay); + // Adds one day to the end day and sets the time to 00:00:00รŸ + endDay.setDate(endDay.getDate() + 1); + endDay.setHours(0, 0, 0); + } + + setEvents([ + ...events, + { + title, + start: startDay.toISOString(), + end: endDay.toISOString(), + allDay: selectInfo.allDay, + color: "green", + id: createCmsEventId(title, startDay) + } + ]); + } + + // clear date selection + calendarApi.unselect(); +}; + +export const handleEventClick = (clickInfo: EventClickArg) => { + // eslint-disable-next-line no-alert + const newTitle = prompt( + "Enter a new title for this event", + clickInfo.event.title + ); + + if (newTitle) { + clickInfo.event.setProp("title", newTitle); + } +}; + +export const handleEventRemove = ( + eventToRemove: EventInput, + events: EventInput[], + setEvents: React.Dispatch> +) => { + setEvents(events.filter((event) => event.id !== eventToRemove.id)); +}; From f5b57f011b5a6494b2eea1d5b28299cf17ed527e Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 09:32:23 +0100 Subject: [PATCH 17/56] Refactor event start/end comparison into `isSameDay` function --- src/apps/opening-hours-editor/helper.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index 4ab03a5869..fd5e484f01 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -25,6 +25,10 @@ export const formatCmsEventsToFullCalendar = ( }); }; +const isSameDay = (startDay: Date, endDay: Date) => { + return startDay.toDateString() === endDay.toDateString(); +}; + // handler functions for the calendar interface HandleDateSelectParams { @@ -48,11 +52,7 @@ export const handleDateSelect = ({ const startDay = new Date(selectInfo.startStr); let endDay = new Date(selectInfo.endStr); - if ( - endDay.getDate() !== startDay.getDate() || - endDay.getMonth() !== startDay.getMonth() || - endDay.getFullYear() !== startDay.getFullYear() - ) { + if (!isSameDay(startDay, endDay)) { endDay = new Date(startDay); // Adds one day to the end day and sets the time to 00:00:00รŸ endDay.setDate(endDay.getDate() + 1); From 4668e00a404d9cf8d028cd11b9bce3c2fb838498 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 09:33:27 +0100 Subject: [PATCH 18/56] Refactor `helper.ts` to utilize arrow functions --- src/apps/opening-hours-editor/helper.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index fd5e484f01..fcb38aa54f 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,13 +1,13 @@ import { DateSelectArg, EventClickArg, EventInput } from "@fullcalendar/core"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; -function formatDateTimeString(date: string, time: string) { +const formatDateTimeString = (date: string, time: string): string => { return `${date}T${time}:00`; -} +}; -export function createCmsEventId(title: string, startDay: Date) { +export const createCmsEventId = (title: string, startDay: Date) => { return `${title}-${startDay.toISOString()}`; -} +}; export const formatCmsEventsToFullCalendar = ( data: DplOpeningHoursListGET200Item[] From a1e902d3ac9e953683e6396674739d3c561e62c2 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 09:38:10 +0100 Subject: [PATCH 19/56] Remove unnecessary 'inline function' from `eventClick` it's not needed when no extra parameters are added. --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 7e1f097036..967f2b6ebb 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -39,7 +39,7 @@ const OpeningHoursEditor: React.FC = () => { select={(selectInfo) => handleDateSelect({ selectInfo, events, setEvents }) } - eventClick={(clickInfo) => handleEventClick(clickInfo)} + eventClick={handleEventClick} eventContent={(eventInput) => renderOpeningHoursEditorEventContent({ eventInput, From 6616578084658549a8ca2ee534f58a58ef00a4c5 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 09:44:18 +0100 Subject: [PATCH 20/56] Refactored `handleEventRemove` to accept parameters as an object and corrected Types in `helper.ts` --- .../OpeningHoursEditor.tsx | 2 +- src/apps/opening-hours-editor/helper.ts | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 967f2b6ebb..e8312aba6c 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -44,7 +44,7 @@ const OpeningHoursEditor: React.FC = () => { renderOpeningHoursEditorEventContent({ eventInput, handleEventRemove: (eventToRemove) => - handleEventRemove(eventToRemove, events, setEvents) + handleEventRemove({ eventToRemove, events, setEvents }) }) } events={events} diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index fcb38aa54f..020ed3be5a 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -31,17 +31,17 @@ const isSameDay = (startDay: Date, endDay: Date) => { // handler functions for the calendar -interface HandleDateSelectParams { +type HandleDateSelectType = { selectInfo: DateSelectArg; events: EventInput[]; setEvents: React.Dispatch>; -} +}; export const handleDateSelect = ({ selectInfo, events, setEvents -}: HandleDateSelectParams) => { +}: HandleDateSelectType) => { // Todo: Replace prompt with a modal // eslint-disable-next-line no-alert const title = prompt("Please enter a new title for your event"); @@ -88,10 +88,16 @@ export const handleEventClick = (clickInfo: EventClickArg) => { } }; -export const handleEventRemove = ( - eventToRemove: EventInput, - events: EventInput[], - setEvents: React.Dispatch> -) => { +type HandleEventRemoveType = { + eventToRemove: EventInput; + events: EventInput[]; + setEvents: React.Dispatch>; +}; + +export const handleEventRemove = ({ + eventToRemove, + events, + setEvents +}: HandleEventRemoveType) => { setEvents(events.filter((event) => event.id !== eventToRemove.id)); }; From 1320070aa1682595a53b289367b12c79a2520526 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 11:45:23 +0100 Subject: [PATCH 21/56] Refactor `OpeningHoursEditorEventContent` into component structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I tried to do it like this but encountered an error: ``` eventContent={(eventInput) => handleEventRemove({ eventToRemove, events, setEvents }) } /> } ``` Error: Do not define components during render. React will see a new component type on every render and destroy the entire subtreeโ€™s DOM nodes and state (https://reactjs.org/docs/reconciliation.html#elements-of-different-types). Instead, move this component definition out of the parent component โ€œOpeningHoursEditorโ€ and pass data as props. If you want to allow component creation in props, set allowAsProps option to true --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 4 ++-- .../OpeningHoursEditorEventContent.tsx | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index e8312aba6c..27b64eea26 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -12,7 +12,7 @@ import { handleEventClick, handleEventRemove } from "./helper"; -import renderOpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; +import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; const OpeningHoursEditor: React.FC = () => { const { data: openingHoursData } = useDplOpeningHoursListGET(); @@ -41,7 +41,7 @@ const OpeningHoursEditor: React.FC = () => { } eventClick={handleEventClick} eventContent={(eventInput) => - renderOpeningHoursEditorEventContent({ + OpeningHoursEditorEventContent({ eventInput, handleEventRemove: (eventToRemove) => handleEventRemove({ eventToRemove, events, setEvents }) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx index 81f67986d3..d3356e53b0 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -6,10 +6,9 @@ type OpeningHoursEditorEventContentProps = { handleEventRemove: (event: EventInput) => void; }; -export default function OpeningHoursEditorEventContent({ - eventInput, - handleEventRemove -}: OpeningHoursEditorEventContentProps): JSX.Element { +const OpeningHoursEditorEventContent: React.FC< + OpeningHoursEditorEventContentProps +> = ({ eventInput, handleEventRemove }) => { const { event } = eventInput; return (
); -} +}; + +export default OpeningHoursEditorEventContent; From d22138831813c0658a62f241201f83ea2c679085 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 14 Mar 2024 19:52:59 +0100 Subject: [PATCH 22/56] Add `selectMirror` and Start/End Time to `OpeningHoursEditorEventContent` With these enhancements, users will now see the time displayed when selecting time slots by dragging in the calendar. Additionally, I have implemented some temporary inline CSS styles. It is important to note that these are provisional and should be replaced with CSS classes from the design system in a future update. --- .../OpeningHoursEditor.tsx | 1 + .../OpeningHoursEditorEventContent.tsx | 32 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 27b64eea26..e08948aa35 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -50,6 +50,7 @@ const OpeningHoursEditor: React.FC = () => { events={events} stickyHeaderDates height="auto" + selectMirror /> ); }; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx index d3356e53b0..841b9f1c6e 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -13,24 +13,34 @@ const OpeningHoursEditorEventContent: React.FC< return (
{event.title} - { - if (e.key === "Enter") handleEventRemove(event); +
handleEventRemove(event)} > - โŒ - + + {event.start?.toLocaleTimeString()} -{" "} + {event.end?.toLocaleTimeString()} + + + { + if (e.key === "Enter") handleEventRemove(event); + }} + onClick={() => handleEventRemove(event)} + > + โŒ + +
); }; From 77cbc69cd74e83cb914acec4faad0a9318e2feea Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 15 Mar 2024 08:43:01 +0100 Subject: [PATCH 23/56] Add `useOpeningHours` hook This hook will manage all the logic for handling events in `fullCalendar`. This will make the code much easier to read and understand because it keeps logic together, instead of having a large and messy helper.ts --- .../OpeningHoursEditor.tsx | 27 ++----- src/apps/opening-hours-editor/helper.ts | 76 +---------------- .../opening-hours-editor/useOpeningHours.tsx | 81 +++++++++++++++++++ 3 files changed, 88 insertions(+), 96 deletions(-) create mode 100644 src/apps/opening-hours-editor/useOpeningHours.tsx diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index e08948aa35..02b88f9fc4 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -1,29 +1,17 @@ -import React, { useEffect, useState } from "react"; +import React from "react"; import FullCalendar from "@fullcalendar/react"; import timeGridPlugin from "@fullcalendar/timegrid"; import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; -import { EventInput } from "@fullcalendar/core"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; -import { - formatCmsEventsToFullCalendar, - handleDateSelect, - handleEventClick, - handleEventRemove -} from "./helper"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; +import useOpeningHours from "./useOpeningHours"; const OpeningHoursEditor: React.FC = () => { const { data: openingHoursData } = useDplOpeningHoursListGET(); - const [events, setEvents] = useState([]); - - useEffect(() => { - if (openingHoursData) { - const formattedEvents = formatCmsEventsToFullCalendar(openingHoursData); - setEvents(formattedEvents); - } - }, [openingHoursData]); + const { events, handleEventSelect, handleEventClick, handleEventRemove } = + useOpeningHours(openingHoursData); return ( { initialView="timeGridWeek" locale={da} selectable - select={(selectInfo) => - handleDateSelect({ selectInfo, events, setEvents }) - } + select={handleEventSelect} eventClick={handleEventClick} eventContent={(eventInput) => OpeningHoursEditorEventContent({ eventInput, - handleEventRemove: (eventToRemove) => - handleEventRemove({ eventToRemove, events, setEvents }) + handleEventRemove }) } events={events} diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index 020ed3be5a..723c707a55 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,4 +1,3 @@ -import { DateSelectArg, EventClickArg, EventInput } from "@fullcalendar/core"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; const formatDateTimeString = (date: string, time: string): string => { @@ -25,79 +24,6 @@ export const formatCmsEventsToFullCalendar = ( }); }; -const isSameDay = (startDay: Date, endDay: Date) => { +export const isSameDay = (startDay: Date, endDay: Date) => { return startDay.toDateString() === endDay.toDateString(); }; - -// handler functions for the calendar - -type HandleDateSelectType = { - selectInfo: DateSelectArg; - events: EventInput[]; - setEvents: React.Dispatch>; -}; - -export const handleDateSelect = ({ - selectInfo, - events, - setEvents -}: HandleDateSelectType) => { - // Todo: Replace prompt with a modal - // eslint-disable-next-line no-alert - const title = prompt("Please enter a new title for your event"); - const calendarApi = selectInfo.view.calendar; - - if (title) { - // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 - const startDay = new Date(selectInfo.startStr); - let endDay = new Date(selectInfo.endStr); - - if (!isSameDay(startDay, endDay)) { - endDay = new Date(startDay); - // Adds one day to the end day and sets the time to 00:00:00รŸ - endDay.setDate(endDay.getDate() + 1); - endDay.setHours(0, 0, 0); - } - - setEvents([ - ...events, - { - title, - start: startDay.toISOString(), - end: endDay.toISOString(), - allDay: selectInfo.allDay, - color: "green", - id: createCmsEventId(title, startDay) - } - ]); - } - - // clear date selection - calendarApi.unselect(); -}; - -export const handleEventClick = (clickInfo: EventClickArg) => { - // eslint-disable-next-line no-alert - const newTitle = prompt( - "Enter a new title for this event", - clickInfo.event.title - ); - - if (newTitle) { - clickInfo.event.setProp("title", newTitle); - } -}; - -type HandleEventRemoveType = { - eventToRemove: EventInput; - events: EventInput[]; - setEvents: React.Dispatch>; -}; - -export const handleEventRemove = ({ - eventToRemove, - events, - setEvents -}: HandleEventRemoveType) => { - setEvents(events.filter((event) => event.id !== eventToRemove.id)); -}; diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx new file mode 100644 index 0000000000..4b0e917461 --- /dev/null +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -0,0 +1,81 @@ +import { useState, useEffect } from "react"; +import { EventInput, DateSelectArg, EventClickArg } from "@fullcalendar/core"; +import { + createCmsEventId, + formatCmsEventsToFullCalendar, + isSameDay +} from "./helper"; +import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; + +const useOpeningHours = ( + initialData: DplOpeningHoursListGET200Item[] | null | undefined +) => { + const [events, setEvents] = useState([]); + + useEffect(() => { + if (initialData) { + const formattedEvents = formatCmsEventsToFullCalendar(initialData); + setEvents(formattedEvents); + } + }, [initialData]); + + const handleEventSelect = (selectInfo: DateSelectArg) => { + // Todo: Replace prompt with a modal + // eslint-disable-next-line no-alert + const title = prompt("Please enter a new title for your event"); + const calendarApi = selectInfo.view.calendar; + + if (title) { + // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 + const startDay = new Date(selectInfo.startStr); + let endDay = new Date(selectInfo.endStr); + + if (!isSameDay(startDay, endDay)) { + endDay = new Date(startDay); + // Adds one day to the end day and sets the time to 00:00:00รŸ + endDay.setDate(endDay.getDate() + 1); + endDay.setHours(0, 0, 0); + } + + setEvents([ + ...events, + { + title, + start: startDay.toISOString(), + end: endDay.toISOString(), + allDay: selectInfo.allDay, + color: "green", + id: createCmsEventId(title, startDay) + } + ]); + } + + // clear date selection + calendarApi.unselect(); + }; + + const handleEventClick = (clickInfo: EventClickArg) => { + // eslint-disable-next-line no-alert + const newTitle = prompt( + "Enter a new title for this event", + clickInfo.event.title + ); + + if (newTitle) { + clickInfo.event.setProp("title", newTitle); + } + }; + + const handleEventRemove = (eventToRemove: EventInput) => { + setEvents(events.filter((event) => event.id !== eventToRemove.id)); + }; + + return { + events, + handleEventSelect, + handleEventClick, + handleEventRemove + }; +}; + +export default useOpeningHours; From 25676c2832cd54b601870b04a2b6b077d315c8ef Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 15 Mar 2024 11:40:02 +0100 Subject: [PATCH 24/56] Refactor `useOpeningHours` hook to fetch opening hours data internally For now, there is no need to have the fetch separate from the hook. --- .../opening-hours-editor/OpeningHoursEditor.tsx | 4 +--- src/apps/opening-hours-editor/useOpeningHours.tsx | 13 ++++++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 02b88f9fc4..7506c7cc0d 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -4,14 +4,12 @@ import timeGridPlugin from "@fullcalendar/timegrid"; import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; -import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; import useOpeningHours from "./useOpeningHours"; const OpeningHoursEditor: React.FC = () => { - const { data: openingHoursData } = useDplOpeningHoursListGET(); const { events, handleEventSelect, handleEventClick, handleEventRemove } = - useOpeningHours(openingHoursData); + useOpeningHours(); return ( { +const useOpeningHours = () => { + const { data: openingHoursData } = useDplOpeningHoursListGET(); const [events, setEvents] = useState([]); useEffect(() => { - if (initialData) { - const formattedEvents = formatCmsEventsToFullCalendar(initialData); + if (openingHoursData) { + const formattedEvents = formatCmsEventsToFullCalendar(openingHoursData); setEvents(formattedEvents); } - }, [initialData]); + }, [openingHoursData]); const handleEventSelect = (selectInfo: DateSelectArg) => { // Todo: Replace prompt with a modal From 04316ada919514b81ef2bc96933d78c525675414 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 22 Mar 2024 13:30:07 +0100 Subject: [PATCH 25/56] Refactor `isSameDay` to `adjustEndDateToStartDay` to improve readability --- src/apps/opening-hours-editor/helper.ts | 14 ++++++++++++-- src/apps/opening-hours-editor/useOpeningHours.tsx | 9 ++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index 723c707a55..dc183d3c69 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -24,6 +24,16 @@ export const formatCmsEventsToFullCalendar = ( }); }; -export const isSameDay = (startDay: Date, endDay: Date) => { - return startDay.toDateString() === endDay.toDateString(); +export const adjustEndDateToStartDay = (startDay: Date, endDay: Date) => { + // If startDay and endDay are the same, no adjustment needed + if (startDay.toDateString() === endDay.toDateString()) { + return endDay; + } + + // If startDay and endDay are different, create a new date as adjustedEndDay + // Set it to startDay, but with the day advanced by one and the time reset to midnight + const adjustedEndDay = new Date(startDay); + adjustedEndDay.setDate(adjustedEndDay.getDate() + 1); + adjustedEndDay.setHours(0, 0, 0); + return adjustedEndDay; }; diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index 81799ca1a5..e41a5ba4fe 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -3,7 +3,7 @@ import { EventInput, DateSelectArg, EventClickArg } from "@fullcalendar/core"; import { createCmsEventId, formatCmsEventsToFullCalendar, - isSameDay + adjustEndDateToStartDay } from "./helper"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; @@ -29,12 +29,7 @@ const useOpeningHours = () => { const startDay = new Date(selectInfo.startStr); let endDay = new Date(selectInfo.endStr); - if (!isSameDay(startDay, endDay)) { - endDay = new Date(startDay); - // Adds one day to the end day and sets the time to 00:00:00รŸ - endDay.setDate(endDay.getDate() + 1); - endDay.setHours(0, 0, 0); - } + endDay = adjustEndDateToStartDay(startDay, endDay); setEvents([ ...events, From d8ddd9973a23c16f2e3232251b605971890b9956 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 20 Mar 2024 14:38:31 +0100 Subject: [PATCH 26/56] Move event dates to week 12 in WireMock This is to be able to see the date on the current week for development. Run `docker compose up` in dpl-react to spin up wiremock --- .../mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json index d9e03a635c..7a9bd746a6 100644 --- a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json +++ b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "body" : "[\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n },\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n }\n]", + "body" : "[\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n },\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n }\n]", "headers" : { } }, "uuid" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", From 70e4c65a9917f2224725e97958ab82eba078c7e0 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 20 Mar 2024 14:47:26 +0100 Subject: [PATCH 27/56] POC: Add `Dialog` This is a proof of concept for utilizing the "new" native HTML `dialog` element with the `open` attribute. By default, it is accessible with focus and keyboard navigation. In this version, it triggers a dialog/modal upon clicking on an event. The dialog includes a close button (the dialog also closes when pressing the escape key or clicking on the backdrop) and a button that currently displays an alert with the event's title. `handleEventEditing` will later be an update request to the API. --- src/apps/opening-hours-editor/Dialog.tsx | 39 +++++++++++ .../opening-hours-editor/DialogFomular.tsx | 35 ++++++++++ .../OpeningHoursEditor.tsx | 67 ++++++++++++------- src/apps/opening-hours-editor/useDialog.tsx | 25 +++++++ .../opening-hours-editor/useOpeningHours.tsx | 9 ++- 5 files changed, 150 insertions(+), 25 deletions(-) create mode 100644 src/apps/opening-hours-editor/Dialog.tsx create mode 100644 src/apps/opening-hours-editor/DialogFomular.tsx create mode 100644 src/apps/opening-hours-editor/useDialog.tsx diff --git a/src/apps/opening-hours-editor/Dialog.tsx b/src/apps/opening-hours-editor/Dialog.tsx new file mode 100644 index 0000000000..f0623f5747 --- /dev/null +++ b/src/apps/opening-hours-editor/Dialog.tsx @@ -0,0 +1,39 @@ +// The dialog element allready has keyboard support +/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ +/* eslint-disable jsx-a11y/click-events-have-key-events */ +import React, { forwardRef } from "react"; + +type DialogType = { + children: React.ReactNode; + closeDialog: () => void; +}; + +const Dialog = forwardRef( + ({ children, closeDialog }, ref) => { + return ( + { + if (currentTarget === target) { + closeDialog(); + } + }} + > + + {children} + + ); + } +); +export default Dialog; diff --git a/src/apps/opening-hours-editor/DialogFomular.tsx b/src/apps/opening-hours-editor/DialogFomular.tsx new file mode 100644 index 0000000000..d86500d455 --- /dev/null +++ b/src/apps/opening-hours-editor/DialogFomular.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { EventImpl } from "@fullcalendar/core/internal"; + +type DialogFomularProps = { + evnetInfo: EventImpl; + handleEventEditing: (title: string) => void; +}; + +const DialogFomular: React.FC = ({ + evnetInfo, + handleEventEditing +}) => { + return ( + <> +

DialogFomular:

+
{JSON.stringify(evnetInfo, null, 2)}
+
+ {/* Should be type submit */} + +
+ + ); +}; + +export default DialogFomular; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 7506c7cc0d..0a0061deb3 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -6,35 +6,54 @@ import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; import useOpeningHours from "./useOpeningHours"; +import DialogFomular from "./DialogFomular"; +import Dialog from "./Dialog"; +import useDialog from "./useDialog"; const OpeningHoursEditor: React.FC = () => { - const { events, handleEventSelect, handleEventClick, handleEventRemove } = + const { events, handleEventSelect, handleEventEditing, handleEventRemove } = useOpeningHours(); + const { dialogContent, openDialogWithContent, closeDialog, dialogRef } = + useDialog(); + return ( - - OpeningHoursEditorEventContent({ - eventInput, - handleEventRemove - }) - } - events={events} - stickyHeaderDates - height="auto" - selectMirror - /> + <> + + {dialogContent} + + + + openDialogWithContent( + + ) + } + eventContent={(eventInput) => + OpeningHoursEditorEventContent({ + eventInput, + handleEventRemove + }) + } + events={events} + stickyHeaderDates + height="auto" + selectMirror + /> + ); }; diff --git a/src/apps/opening-hours-editor/useDialog.tsx b/src/apps/opening-hours-editor/useDialog.tsx new file mode 100644 index 0000000000..60d19bfd1c --- /dev/null +++ b/src/apps/opening-hours-editor/useDialog.tsx @@ -0,0 +1,25 @@ +import { useRef, useState } from "react"; + +const useDialog = () => { + const [dialogContent, setDialogContent] = useState(null); + + const dialogRef = useRef(null); + + const closeDialog = () => { + dialogRef.current?.close(); + }; + + const openDialogWithContent = (content: React.ReactNode) => { + setDialogContent(content); + dialogRef.current?.showModal(); + }; + + return { + dialogContent, + dialogRef, + openDialogWithContent, + closeDialog + }; +}; + +export default useDialog; diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index e41a5ba4fe..3d8f088c22 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -48,6 +48,7 @@ const useOpeningHours = () => { calendarApi.unselect(); }; + // This will probably be replaced with handleEventEditing const handleEventClick = (clickInfo: EventClickArg) => { // eslint-disable-next-line no-alert const newTitle = prompt( @@ -60,6 +61,11 @@ const useOpeningHours = () => { } }; + const handleEventEditing = (string: string) => { + // eslint-disable-next-line no-alert + alert(string); + }; + const handleEventRemove = (eventToRemove: EventInput) => { setEvents(events.filter((event) => event.id !== eventToRemove.id)); }; @@ -68,7 +74,8 @@ const useOpeningHours = () => { events, handleEventSelect, handleEventClick, - handleEventRemove + handleEventRemove, + handleEventEditing }; }; From 00e8bc5868ccad68753b0ffcc69a681ea62d47ae Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 20 Mar 2024 14:59:48 +0100 Subject: [PATCH 28/56] Get rid of TypeScript ESLint errors. Error: src/apps/opening-hours-editor/useDialog.tsx(10,23): error TS2339: Property 'close' does not exist on type 'HTMLDialogElement'. Error: src/apps/opening-hours-editor/useDialog.tsx(16,23): error TS2339: Property 'showModal' does not exist on type 'HTMLDialogElement'. This should probably be fixed by updating the TypeScript version. --- src/apps/opening-hours-editor/useDialog.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/apps/opening-hours-editor/useDialog.tsx b/src/apps/opening-hours-editor/useDialog.tsx index 60d19bfd1c..305a53dc3d 100644 --- a/src/apps/opening-hours-editor/useDialog.tsx +++ b/src/apps/opening-hours-editor/useDialog.tsx @@ -1,5 +1,12 @@ import { useRef, useState } from "react"; +declare global { + interface HTMLDialogElement { + showModal(): void; + close(): void; + } +} + const useDialog = () => { const [dialogContent, setDialogContent] = useState(null); From 84ba0fdc0240e5fbb7450b133376a46cdda6113a Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 21 Mar 2024 15:52:55 +0100 Subject: [PATCH 29/56] Add form elements for event editing in `Dialog` This will present the relevant values for the current event in input fields where the user can edit them. There is a small change to the placeholder function `handleEventEditing` that now alerts the complete event data that will later be sent to the API. I have removed `handleEventClick` as it is now unnecessary. --- .../opening-hours-editor/DialogFomular.tsx | 79 +++++++++++++------ .../OpeningHoursEditor.tsx | 2 +- src/apps/opening-hours-editor/helper.ts | 14 ++++ .../opening-hours-editor/useOpeningHours.tsx | 21 +---- 4 files changed, 76 insertions(+), 40 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomular.tsx b/src/apps/opening-hours-editor/DialogFomular.tsx index d86500d455..684fcbee3a 100644 --- a/src/apps/opening-hours-editor/DialogFomular.tsx +++ b/src/apps/opening-hours-editor/DialogFomular.tsx @@ -1,34 +1,69 @@ -import React from "react"; +// I dont know why eslint is complaining about label-has-associated-control +// as the label is associated with the input field. I will disable it for now. +/* eslint-disable jsx-a11y/label-has-associated-control */ +import React, { useState } from "react"; import { EventImpl } from "@fullcalendar/core/internal"; +import { extractTime, updateEventTime } from "./helper"; type DialogFomularProps = { - evnetInfo: EventImpl; - handleEventEditing: (title: string) => void; + eventInfo: EventImpl; + handleEventEditing: (eventInfo: EventImpl) => void; }; const DialogFomular: React.FC = ({ - evnetInfo, + eventInfo, handleEventEditing }) => { + const [title, setTitle] = useState(eventInfo.title); + const [startTime, setStartTime] = useState(extractTime(eventInfo.startStr)); + const [endTime, setEndTime] = useState(extractTime(eventInfo.endStr)); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + eventInfo.setProp("title", title); + const startDate = updateEventTime(eventInfo.startStr, startTime); + const endDate = updateEventTime(eventInfo.endStr, endTime); + eventInfo.setDates(startDate, endDate); + + handleEventEditing(eventInfo); + }; + return ( - <> -

DialogFomular:

-
{JSON.stringify(evnetInfo, null, 2)}
-
- {/* Should be type submit */} - -
- +
+ + setTitle(e.target.value)} + /> + + setStartTime(e.target.value)} + /> + + setEndTime(e.target.value)} + min={startTime} + max="00:00" + /> + +
); }; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 0a0061deb3..7d46d0d1b1 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -37,7 +37,7 @@ const OpeningHoursEditor: React.FC = () => { eventClick={(clickInfo) => openDialogWithContent( ) diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index dc183d3c69..ca34b0dc93 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -37,3 +37,17 @@ export const adjustEndDateToStartDay = (startDay: Date, endDay: Date) => { adjustedEndDay.setHours(0, 0, 0); return adjustedEndDay; }; + +export const extractTime = (dateStr: string) => { + const date = new Date(dateStr); + const hours = date.getHours().toString().padStart(2, "0"); + const minutes = date.getMinutes().toString().padStart(2, "0"); + return `${hours}:${minutes}`; +}; + +export const updateEventTime = (dateStr: string, timeStr: string) => { + const [hours, minutes] = timeStr.split(":").map(Number); + const date = new Date(dateStr); + date.setHours(hours, minutes); + return date; +}; diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index 3d8f088c22..c83b7f2ea3 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -1,5 +1,6 @@ import { useState, useEffect } from "react"; -import { EventInput, DateSelectArg, EventClickArg } from "@fullcalendar/core"; +import { EventInput, DateSelectArg } from "@fullcalendar/core"; +import { EventImpl } from "@fullcalendar/core/internal"; import { createCmsEventId, formatCmsEventsToFullCalendar, @@ -48,22 +49,9 @@ const useOpeningHours = () => { calendarApi.unselect(); }; - // This will probably be replaced with handleEventEditing - const handleEventClick = (clickInfo: EventClickArg) => { + const handleEventEditing = (eventInfo: EventImpl) => { // eslint-disable-next-line no-alert - const newTitle = prompt( - "Enter a new title for this event", - clickInfo.event.title - ); - - if (newTitle) { - clickInfo.event.setProp("title", newTitle); - } - }; - - const handleEventEditing = (string: string) => { - // eslint-disable-next-line no-alert - alert(string); + alert(JSON.stringify(eventInfo, null, 2)); }; const handleEventRemove = (eventToRemove: EventInput) => { @@ -73,7 +61,6 @@ const useOpeningHours = () => { return { events, handleEventSelect, - handleEventClick, handleEventRemove, handleEventEditing }; From 60a7f8673813176c7c3c1dcfe5969935330a391e Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Mon, 25 Mar 2024 13:44:38 +0100 Subject: [PATCH 30/56] Implemented `DialogFormularAdd` / `DialogFormularEdit` --- .../opening-hours-editor/DialogFomular.tsx | 70 ---------------- .../opening-hours-editor/DialogFomularAdd.tsx | 52 ++++++++++++ .../DialogFomularEdit.tsx | 38 +++++++++ src/apps/opening-hours-editor/EventForm.tsx | 82 +++++++++++++++++++ .../OpeningHoursEditor.tsx | 16 +++- .../opening-hours-editor/useOpeningHours.tsx | 51 +++++------- 6 files changed, 204 insertions(+), 105 deletions(-) delete mode 100644 src/apps/opening-hours-editor/DialogFomular.tsx create mode 100644 src/apps/opening-hours-editor/DialogFomularAdd.tsx create mode 100644 src/apps/opening-hours-editor/DialogFomularEdit.tsx create mode 100644 src/apps/opening-hours-editor/EventForm.tsx diff --git a/src/apps/opening-hours-editor/DialogFomular.tsx b/src/apps/opening-hours-editor/DialogFomular.tsx deleted file mode 100644 index 684fcbee3a..0000000000 --- a/src/apps/opening-hours-editor/DialogFomular.tsx +++ /dev/null @@ -1,70 +0,0 @@ -// I dont know why eslint is complaining about label-has-associated-control -// as the label is associated with the input field. I will disable it for now. -/* eslint-disable jsx-a11y/label-has-associated-control */ -import React, { useState } from "react"; -import { EventImpl } from "@fullcalendar/core/internal"; -import { extractTime, updateEventTime } from "./helper"; - -type DialogFomularProps = { - eventInfo: EventImpl; - handleEventEditing: (eventInfo: EventImpl) => void; -}; - -const DialogFomular: React.FC = ({ - eventInfo, - handleEventEditing -}) => { - const [title, setTitle] = useState(eventInfo.title); - const [startTime, setStartTime] = useState(extractTime(eventInfo.startStr)); - const [endTime, setEndTime] = useState(extractTime(eventInfo.endStr)); - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); - - eventInfo.setProp("title", title); - const startDate = updateEventTime(eventInfo.startStr, startTime); - const endDate = updateEventTime(eventInfo.endStr, endTime); - eventInfo.setDates(startDate, endDate); - - handleEventEditing(eventInfo); - }; - - return ( -
- - setTitle(e.target.value)} - /> - - setStartTime(e.target.value)} - /> - - setEndTime(e.target.value)} - min={startTime} - max="00:00" - /> - -
- ); -}; - -export default DialogFomular; diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFomularAdd.tsx new file mode 100644 index 0000000000..92ca87cbe7 --- /dev/null +++ b/src/apps/opening-hours-editor/DialogFomularAdd.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import { DateSelectArg } from "@fullcalendar/core"; +import { + adjustEndDateToStartDay, + extractTime, + updateEventTime +} from "./helper"; +import { ExtendedDateSelectArgType } from "./useOpeningHours"; +import EventForm, { EventFormOnSubmitType } from "./EventForm"; + +type DialogFomularAddProps = { + selectedEventInfo: DateSelectArg; + handleEventSelect: (selectedEventInfo: ExtendedDateSelectArgType) => void; + closeDialog: () => void; +}; + +const DialogFomularAdd: React.FC = ({ + selectedEventInfo, + handleEventSelect, + closeDialog +}) => { + const calendarApi = selectedEventInfo.view.calendar; + + const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { + const startDate = updateEventTime(selectedEventInfo.startStr, startTime); + let endDate = updateEventTime(selectedEventInfo.endStr, endTime); + + endDate = adjustEndDateToStartDay(startDate, endDate); + + const newEventInfo = { + ...selectedEventInfo, + startStr: startDate.toISOString(), + endStr: endDate.toISOString(), + title + }; + + handleEventSelect(newEventInfo); + calendarApi.unselect(); + closeDialog(); + }; + + return ( + + ); +}; + +export default DialogFomularAdd; diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx new file mode 100644 index 0000000000..452e0d7be9 --- /dev/null +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { EventImpl } from "@fullcalendar/core/internal"; +import { extractTime, updateEventTime } from "./helper"; +import EventForm, { EventFormOnSubmitType } from "./EventForm"; + +type DialogFomularEditProps = { + eventInfo: EventImpl; + handleEventEditing: (eventInfo: EventImpl) => void; + closeDialog: () => void; +}; + +const DialogFomularEdit: React.FC = ({ + eventInfo, + handleEventEditing, + closeDialog +}) => { + const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { + eventInfo.setProp("title", title); + const startDate = updateEventTime(eventInfo.startStr, startTime); + + const endDate = updateEventTime(eventInfo.endStr, endTime); + eventInfo.setDates(startDate, endDate); + + handleEventEditing(eventInfo); + closeDialog(); + }; + + return ( + + ); +}; + +export default DialogFomularEdit; diff --git a/src/apps/opening-hours-editor/EventForm.tsx b/src/apps/opening-hours-editor/EventForm.tsx new file mode 100644 index 0000000000..fc997eab32 --- /dev/null +++ b/src/apps/opening-hours-editor/EventForm.tsx @@ -0,0 +1,82 @@ +// I dont know why eslint is complaining about label-has-associated-control +// as the label is associated with the input field. I will disable it for now. +/* eslint-disable jsx-a11y/label-has-associated-control */ +import React, { useEffect, useState } from "react"; + +export type EventFormOnSubmitType = ( + title: string, + startTime: string, + endTime: string +) => void; + +type EventFormProps = { + initialTitle: string; + initialStartTime: string; + initialEndTime: string; + onSubmit: EventFormOnSubmitType; +}; + +const EventForm: React.FC = ({ + initialTitle, + initialStartTime, + initialEndTime, + onSubmit +}) => { + const [title, setTitle] = useState(initialTitle); + const [startTime, setStartTime] = useState(initialStartTime); + const [endTime, setEndTime] = useState(initialEndTime); + + // Reset the form when the initial values change + // This is necessary because EventForm are reused + useEffect(() => { + setTitle(initialTitle); + setStartTime(initialStartTime); + setEndTime(initialEndTime); + }, [initialTitle, initialStartTime, initialEndTime]); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (title !== "") { + onSubmit(title, startTime, endTime); + } + }; + + return ( +
+ + setTitle(e.target.value)} + /> + + setStartTime(e.target.value)} + /> + + setEndTime(e.target.value)} + min={startTime} + max="00:00" + /> + +
+ ); +}; + +export default EventForm; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 7d46d0d1b1..cbb3c78f10 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -6,9 +6,10 @@ import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; import useOpeningHours from "./useOpeningHours"; -import DialogFomular from "./DialogFomular"; +import DialogFomularEdit from "./DialogFomularEdit"; import Dialog from "./Dialog"; import useDialog from "./useDialog"; +import DialogFomularAdd from "./DialogFomularAdd"; const OpeningHoursEditor: React.FC = () => { const { events, handleEventSelect, handleEventEditing, handleEventRemove } = @@ -33,12 +34,21 @@ const OpeningHoursEditor: React.FC = () => { initialView="timeGridWeek" locale={da} selectable - select={handleEventSelect} + select={(selectedEventInfo) => + openDialogWithContent( + + ) + } eventClick={(clickInfo) => openDialogWithContent( - ) } diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index c83b7f2ea3..c66539c95a 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -1,13 +1,11 @@ import { useState, useEffect } from "react"; import { EventInput, DateSelectArg } from "@fullcalendar/core"; import { EventImpl } from "@fullcalendar/core/internal"; -import { - createCmsEventId, - formatCmsEventsToFullCalendar, - adjustEndDateToStartDay -} from "./helper"; +import { createCmsEventId, formatCmsEventsToFullCalendar } from "./helper"; import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; +export type ExtendedDateSelectArgType = DateSelectArg & { title: string }; + const useOpeningHours = () => { const { data: openingHoursData } = useDplOpeningHoursListGET(); const [events, setEvents] = useState([]); @@ -19,37 +17,26 @@ const useOpeningHours = () => { } }, [openingHoursData]); - const handleEventSelect = (selectInfo: DateSelectArg) => { - // Todo: Replace prompt with a modal - // eslint-disable-next-line no-alert - const title = prompt("Please enter a new title for your event"); - const calendarApi = selectInfo.view.calendar; - - if (title) { - // Checks if the selected end date is different from the start day; if so, sets the end date to be the same as the start day and the end time to 00:00:00 - const startDay = new Date(selectInfo.startStr); - let endDay = new Date(selectInfo.endStr); - - endDay = adjustEndDateToStartDay(startDay, endDay); + const handleEventSelect = (selectInfo: ExtendedDateSelectArgType) => { + // This is just for demonstration purposes + // and should be replaced with a call to the API + const newEvent = { + title: selectInfo.title, + start: selectInfo.startStr, + end: selectInfo.endStr, + allDay: selectInfo.allDay, + color: "green", + id: createCmsEventId(selectInfo.title, selectInfo.start) + }; + setEvents([...events, newEvent]); - setEvents([ - ...events, - { - title, - start: startDay.toISOString(), - end: endDay.toISOString(), - allDay: selectInfo.allDay, - color: "green", - id: createCmsEventId(title, startDay) - } - ]); - } - - // clear date selection - calendarApi.unselect(); + // eslint-disable-next-line no-alert + alert(JSON.stringify(newEvent, null, 2)); }; const handleEventEditing = (eventInfo: EventImpl) => { + // This is just for demonstration purposes + // and should be replaced with a call to the API // eslint-disable-next-line no-alert alert(JSON.stringify(eventInfo, null, 2)); }; From 7e0979934d0cd10cde7c4a086a603521d7ea3def Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Mon, 25 Mar 2024 15:02:39 +0100 Subject: [PATCH 31/56] Update to latest openAPI spec from DPL-CMS --- ...-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json | 2 +- orval.config.ts | 2 +- src/apps/opening-hours-editor/helper.ts | 11 +- src/core/dpl-cms/dpl-cms.ts | 287 +++++++++++++++++- .../dpl-cms/model/dplOpeningHoursDELETE200.ts | 22 ++ .../model/dplOpeningHoursDELETE200Category.ts | 13 + .../model/dplOpeningHoursDELETEFormat.ts | 15 + .../model/dplOpeningHoursDELETEParams.ts | 12 + .../dpl-cms/model/dplOpeningHoursGET200.ts | 22 ++ .../model/dplOpeningHoursGET200Category.ts | 13 + .../dpl-cms/model/dplOpeningHoursGETFormat.ts | 15 + ...OpeningHoursGETOpeningHoursInstanceBody.ts | 22 ++ ...oursGETOpeningHoursInstanceBodyCategory.ts | 13 + .../dpl-cms/model/dplOpeningHoursGETParams.ts | 10 + .../model/dplOpeningHoursListGET200Item.ts | 6 +- .../dplOpeningHoursListGET200ItemCategory.ts | 2 + .../model/dplOpeningHoursListGETParams.ts | 3 + .../dpl-cms/model/dplOpeningHoursPATCH200.ts | 22 ++ .../model/dplOpeningHoursPATCH200Category.ts | 13 + .../model/dplOpeningHoursPATCHFormat.ts | 15 + .../model/dplOpeningHoursPATCHParams.ts | 12 + .../dpl-cms/model/dplOpeningHoursPOST200.ts | 22 ++ .../model/dplOpeningHoursPOST200Category.ts | 13 + .../model/dplOpeningHoursPOSTFormat.ts | 15 + .../model/dplOpeningHoursPOSTParams.ts | 10 + src/core/dpl-cms/model/index.ts | 18 ++ 26 files changed, 599 insertions(+), 11 deletions(-) create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGET200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETParams.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOST200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts diff --git a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json index 7a9bd746a6..394c510b13 100644 --- a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json +++ b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json @@ -7,7 +7,7 @@ }, "response" : { "status" : 200, - "body" : "[\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n },\n {\n \"category\": {\n \"title\": \"Open\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\"\n }\n]", + "body" : "[\n {\n \"id\": 0,\n \"category\": {\n \"title\": \"Open\",\n \"color\": \"#ff0099\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 1\n}, {\n \"id\": 1,\n \"category\": {\n \"title\": \"Open\",\n \"color\": \"#ff0099\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 1\n}\n]", "headers" : { } }, "uuid" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", diff --git a/orval.config.ts b/orval.config.ts index aa388ee185..bfa00e4550 100644 --- a/orval.config.ts +++ b/orval.config.ts @@ -139,7 +139,7 @@ export default defineConfig({ }, input: { target: - "https://raw.githubusercontent.com/danskernesdigitalebibliotek/dpl-cms/e1edb7e35beacb93e78eef0541c8ccebad68d6f1/openapi.json", + "https://raw.githubusercontent.com/danskernesdigitalebibliotek/dpl-cms/opening-hours-api/openapi.json", converterOptions: { indent: 2 } diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index ca34b0dc93..abf940268f 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,3 +1,4 @@ +import { EventInput } from "@fullcalendar/core"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; const formatDateTimeString = (date: string, time: string): string => { @@ -10,16 +11,14 @@ export const createCmsEventId = (title: string, startDay: Date) => { export const formatCmsEventsToFullCalendar = ( data: DplOpeningHoursListGET200Item[] -) => { - return data.map(({ category, date, start_time, end_time }) => { - const startDateTime = new Date(formatDateTimeString(date, start_time)); +): EventInput[] => { + return data.map(({ category, date, start_time, end_time, id }) => { return { - id: createCmsEventId(category.title, startDateTime), + id: id.toString(), title: category.title, start: formatDateTimeString(date, start_time), end: formatDateTimeString(date, end_time), - allDay: false, - color: "blue" + color: category.color }; }); }; diff --git a/src/core/dpl-cms/dpl-cms.ts b/src/core/dpl-cms/dpl-cms.ts index 39834fe05e..8b60a54341 100644 --- a/src/core/dpl-cms/dpl-cms.ts +++ b/src/core/dpl-cms/dpl-cms.ts @@ -19,6 +19,15 @@ import type { CampaignMatchPOST200, CampaignMatchPOSTBodyItem, CampaignMatchPOSTParams, + DplOpeningHoursGET200, + DplOpeningHoursGETOpeningHoursInstanceBody, + DplOpeningHoursGETParams, + DplOpeningHoursDELETE200, + DplOpeningHoursDELETEParams, + DplOpeningHoursPATCH200, + DplOpeningHoursPATCHParams, + DplOpeningHoursPOST200, + DplOpeningHoursPOSTParams, DplOpeningHoursListGET200Item, DplOpeningHoursListGETParams, EventPATCHBody, @@ -35,7 +44,7 @@ type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; /** - * @summary Hent kampagne som matcher facetter fra sรธgeresultatet + * @summary Get campaign matching search result facets */ export const campaignMatchPOST = ( campaignMatchPOSTBodyItem: CampaignMatchPOSTBodyItem[], @@ -97,6 +106,280 @@ export const useCampaignMatchPOST = < >(mutationFn, mutationOptions); }; +/** + * @summary Manage individual opening hours + */ +export const dplOpeningHoursGET = ( + id: string, + dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, + params?: DplOpeningHoursGETParams, + signal?: AbortSignal +) => { + return fetcher({ + url: `/dpl_opening_hours/${id}`, + method: "get", + signal, + headers: { "Content-Type": "application/json" }, + params + }); +}; + +export const getDplOpeningHoursGETQueryKey = ( + id: string, + dplOpeningHoursGETOpeningHoursInstanceBody: DplOpeningHoursGETOpeningHoursInstanceBody, + params?: DplOpeningHoursGETParams +) => [ + `/dpl_opening_hours/${id}`, + ...(params ? [params] : []), + dplOpeningHoursGETOpeningHoursInstanceBody +]; + +export type DplOpeningHoursGETQueryResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursGETQueryError = ErrorType; + +export const useDplOpeningHoursGET = < + TData = Awaited>, + TError = ErrorType +>( + id: string, + dplOpeningHoursGETOpeningHoursInstanceBody: DplOpeningHoursGETOpeningHoursInstanceBody, + params?: DplOpeningHoursGETParams, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getDplOpeningHoursGETQueryKey( + id, + dplOpeningHoursGETOpeningHoursInstanceBody, + params + ); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => + dplOpeningHoursGET( + id, + dplOpeningHoursGETOpeningHoursInstanceBody, + params, + signal + ); + + const query = useQuery< + Awaited>, + TError, + TData + >(queryKey, queryFn, { enabled: !!id, ...queryOptions }); + + return { + queryKey, + ...query + }; +}; + +/** + * @summary Manage individual opening hours + */ +export const dplOpeningHoursDELETE = ( + id: string, + dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, + params?: DplOpeningHoursDELETEParams +) => { + return fetcher({ + url: `/dpl_opening_hours/${id}`, + method: "delete", + headers: { "Content-Type": "application/json" }, + data: dplOpeningHoursGETOpeningHoursInstanceBody, + params + }); +}; + +export type DplOpeningHoursDELETEMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursDELETEMutationBody = + BodyType; +export type DplOpeningHoursDELETEMutationError = ErrorType; + +export const useDplOpeningHoursDELETE = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { + id: string; + data: BodyType; + params?: DplOpeningHoursDELETEParams; + }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { + id: string; + data: BodyType; + params?: DplOpeningHoursDELETEParams; + } + > = (props) => { + const { id, data, params } = props ?? {}; + + return dplOpeningHoursDELETE(id, data, params); + }; + + return useMutation< + Awaited>, + TError, + { + id: string; + data: BodyType; + params?: DplOpeningHoursDELETEParams; + }, + TContext + >(mutationFn, mutationOptions); +}; + +/** + * @summary Manage individual opening hours + */ +export const dplOpeningHoursPATCH = ( + id: string, + dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, + params?: DplOpeningHoursPATCHParams +) => { + return fetcher({ + url: `/dpl_opening_hours/${id}`, + method: "patch", + headers: { "Content-Type": "application/json" }, + data: dplOpeningHoursGETOpeningHoursInstanceBody, + params + }); +}; + +export type DplOpeningHoursPATCHMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursPATCHMutationBody = + BodyType; +export type DplOpeningHoursPATCHMutationError = ErrorType; + +export const useDplOpeningHoursPATCH = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { + id: string; + data: BodyType; + params?: DplOpeningHoursPATCHParams; + }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { + id: string; + data: BodyType; + params?: DplOpeningHoursPATCHParams; + } + > = (props) => { + const { id, data, params } = props ?? {}; + + return dplOpeningHoursPATCH(id, data, params); + }; + + return useMutation< + Awaited>, + TError, + { + id: string; + data: BodyType; + params?: DplOpeningHoursPATCHParams; + }, + TContext + >(mutationFn, mutationOptions); +}; + +/** + * @summary Manage individual opening hours + */ +export const dplOpeningHoursPOST = ( + dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, + params?: DplOpeningHoursPOSTParams +) => { + return fetcher({ + url: `/dpl_opening_hours`, + method: "post", + headers: { "Content-Type": "application/json" }, + data: dplOpeningHoursGETOpeningHoursInstanceBody, + params + }); +}; + +export type DplOpeningHoursPOSTMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursPOSTMutationBody = + BodyType; +export type DplOpeningHoursPOSTMutationError = ErrorType; + +export const useDplOpeningHoursPOST = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { + data: BodyType; + params?: DplOpeningHoursPOSTParams; + }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { + data: BodyType; + params?: DplOpeningHoursPOSTParams; + } + > = (props) => { + const { data, params } = props ?? {}; + + return dplOpeningHoursPOST(data, params); + }; + + return useMutation< + Awaited>, + TError, + { + data: BodyType; + params?: DplOpeningHoursPOSTParams; + }, + TContext + >(mutationFn, mutationOptions); +}; + /** * @summary List all opening hours */ @@ -264,7 +547,7 @@ export const useEventsGET = < }; /** - * @summary Generate proxy URL / Generer proxy URL + * @summary Generate proxy url */ export const proxyUrlGET = ( params?: ProxyUrlGETParams, diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts new file mode 100644 index 0000000000..3c31efd2d8 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursDELETE200Category } from "./dplOpeningHoursDELETE200Category"; + +export type DplOpeningHoursDELETE200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursDELETE200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts new file mode 100644 index 0000000000..be93955947 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursDELETE200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts new file mode 100644 index 0000000000..f89951b735 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursDELETEFormat = + typeof DplOpeningHoursDELETEFormat[keyof typeof DplOpeningHoursDELETEFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursDELETEFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts new file mode 100644 index 0000000000..a90b53f72a --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursDELETEFormat } from "./dplOpeningHoursDELETEFormat"; + +export type DplOpeningHoursDELETEParams = { + _format?: DplOpeningHoursDELETEFormat; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGET200.ts b/src/core/dpl-cms/model/dplOpeningHoursGET200.ts new file mode 100644 index 0000000000..b22525e057 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGET200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursGET200Category } from "./dplOpeningHoursGET200Category"; + +export type DplOpeningHoursGET200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursGET200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts new file mode 100644 index 0000000000..0564b66965 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursGET200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts new file mode 100644 index 0000000000..3981fa5cb2 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursGETFormat = + typeof DplOpeningHoursGETFormat[keyof typeof DplOpeningHoursGETFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursGETFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts new file mode 100644 index 0000000000..387e6601f5 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursGETOpeningHoursInstanceBodyCategory } from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; + +export type DplOpeningHoursGETOpeningHoursInstanceBody = { + /** An serial unique id of the opening hours instance. */ + id?: number; + category: DplOpeningHoursGETOpeningHoursInstanceBodyCategory; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts new file mode 100644 index 0000000000..7af331c98c --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursGETOpeningHoursInstanceBodyCategory = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts b/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts new file mode 100644 index 0000000000..a8703b9127 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursGETFormat } from "./dplOpeningHoursGETFormat"; + +export type DplOpeningHoursGETParams = { _format?: DplOpeningHoursGETFormat }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts index e39d9d6d00..06f295e464 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts @@ -8,11 +8,15 @@ import type { DplOpeningHoursListGET200ItemCategory } from "./dplOpeningHoursListGET200ItemCategory"; export type DplOpeningHoursListGET200Item = { + /** An serial unique id of the opening hours instance. */ + id: number; category: DplOpeningHoursListGET200ItemCategory; - /** When the event was created. In ISO 8601 format. */ + /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; /** When the opening hours start. In format HH:MM */ start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts index d46fd88dcb..c4e673e31a 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts @@ -8,4 +8,6 @@ export type DplOpeningHoursListGET200ItemCategory = { title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts index b74e09c225..7dd497aed3 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts @@ -9,4 +9,7 @@ import type { DplOpeningHoursListGETFormat } from "./dplOpeningHoursListGETForma export type DplOpeningHoursListGETParams = { _format?: DplOpeningHoursListGETFormat; + branch_id?: number; + from_date?: string; + to_date?: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts new file mode 100644 index 0000000000..d8c6cadfa9 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursPATCH200Category } from "./dplOpeningHoursPATCH200Category"; + +export type DplOpeningHoursPATCH200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursPATCH200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts new file mode 100644 index 0000000000..02ac5b5ba1 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursPATCH200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts new file mode 100644 index 0000000000..51429f8658 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursPATCHFormat = + typeof DplOpeningHoursPATCHFormat[keyof typeof DplOpeningHoursPATCHFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursPATCHFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts new file mode 100644 index 0000000000..4b2cf0a915 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursPATCHFormat } from "./dplOpeningHoursPATCHFormat"; + +export type DplOpeningHoursPATCHParams = { + _format?: DplOpeningHoursPATCHFormat; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts b/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts new file mode 100644 index 0000000000..d329229550 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursPOST200Category } from "./dplOpeningHoursPOST200Category"; + +export type DplOpeningHoursPOST200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursPOST200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts new file mode 100644 index 0000000000..a750a58267 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursPOST200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts new file mode 100644 index 0000000000..d1cf28f8a2 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursPOSTFormat = + typeof DplOpeningHoursPOSTFormat[keyof typeof DplOpeningHoursPOSTFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursPOSTFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts b/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts new file mode 100644 index 0000000000..ed46730de5 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursPOSTFormat } from "./dplOpeningHoursPOSTFormat"; + +export type DplOpeningHoursPOSTParams = { _format?: DplOpeningHoursPOSTFormat }; diff --git a/src/core/dpl-cms/model/index.ts b/src/core/dpl-cms/model/index.ts index 89a7d5f04b..970d15bee5 100644 --- a/src/core/dpl-cms/model/index.ts +++ b/src/core/dpl-cms/model/index.ts @@ -33,3 +33,21 @@ export * from "./dplOpeningHoursListGET200ItemCategory"; export * from "./eventsGETFormat"; export * from "./eventPATCHParams"; export * from "./eventPATCHBodyState"; +export * from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; +export * from "./dplOpeningHoursDELETEFormat"; +export * from "./dplOpeningHoursDELETE200Category"; +export * from "./dplOpeningHoursDELETE200"; +export * from "./dplOpeningHoursPATCHParams"; +export * from "./dplOpeningHoursGETFormat"; +export * from "./dplOpeningHoursGET200"; +export * from "./dplOpeningHoursPOSTParams"; +export * from "./dplOpeningHoursPATCHFormat"; +export * from "./dplOpeningHoursPOSTFormat"; +export * from "./dplOpeningHoursDELETEParams"; +export * from "./dplOpeningHoursPOST200"; +export * from "./dplOpeningHoursGET200Category"; +export * from "./dplOpeningHoursPOST200Category"; +export * from "./dplOpeningHoursPATCH200"; +export * from "./dplOpeningHoursGETOpeningHoursInstanceBody"; +export * from "./dplOpeningHoursGETParams"; +export * from "./dplOpeningHoursPATCH200Category"; From 5e567489cb444fc041bc8358d0d71fc4346e6143 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 09:52:53 +0100 Subject: [PATCH 32/56] Use date objects in helper functions Converted date/time to object types for clear context and enhanced strict typing, replacing string representations. --- .../opening-hours-editor/DialogFomularAdd.tsx | 8 +++---- .../DialogFomularEdit.tsx | 22 ++++++++++++------- src/apps/opening-hours-editor/helper.ts | 6 ++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFomularAdd.tsx index 92ca87cbe7..cdace74d18 100644 --- a/src/apps/opening-hours-editor/DialogFomularAdd.tsx +++ b/src/apps/opening-hours-editor/DialogFomularAdd.tsx @@ -22,8 +22,8 @@ const DialogFomularAdd: React.FC = ({ const calendarApi = selectedEventInfo.view.calendar; const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { - const startDate = updateEventTime(selectedEventInfo.startStr, startTime); - let endDate = updateEventTime(selectedEventInfo.endStr, endTime); + const startDate = updateEventTime(selectedEventInfo.start, startTime); + let endDate = updateEventTime(selectedEventInfo.end, endTime); endDate = adjustEndDateToStartDay(startDate, endDate); @@ -42,8 +42,8 @@ const DialogFomularAdd: React.FC = ({ return ( ); diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx index 452e0d7be9..56e946f65e 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -15,21 +15,27 @@ const DialogFomularEdit: React.FC = ({ closeDialog }) => { const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { - eventInfo.setProp("title", title); - const startDate = updateEventTime(eventInfo.startStr, startTime); + if (eventInfo.start && eventInfo.end) { + eventInfo.setProp("title", title); + const startDate = updateEventTime(eventInfo.start, startTime); - const endDate = updateEventTime(eventInfo.endStr, endTime); - eventInfo.setDates(startDate, endDate); + const endDate = updateEventTime(eventInfo.end, endTime); + eventInfo.setDates(startDate, endDate); - handleEventEditing(eventInfo); - closeDialog(); + handleEventEditing(eventInfo); + closeDialog(); + } }; + if (!eventInfo.start || !eventInfo.end) { + return null; + } + return ( ); diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index abf940268f..2cccf5953e 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -37,16 +37,14 @@ export const adjustEndDateToStartDay = (startDay: Date, endDay: Date) => { return adjustedEndDay; }; -export const extractTime = (dateStr: string) => { - const date = new Date(dateStr); +export const extractTime = (date: Date) => { const hours = date.getHours().toString().padStart(2, "0"); const minutes = date.getMinutes().toString().padStart(2, "0"); return `${hours}:${minutes}`; }; -export const updateEventTime = (dateStr: string, timeStr: string) => { +export const updateEventTime = (date: Date, timeStr: string) => { const [hours, minutes] = timeStr.split(":").map(Number); - const date = new Date(dateStr); date.setHours(hours, minutes); return date; }; From fd6cc812920042b580aff7cf9ec2e21639e1147c Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 09:56:01 +0100 Subject: [PATCH 33/56] Fix comment casing in Dialog component --- src/apps/opening-hours-editor/Dialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/opening-hours-editor/Dialog.tsx b/src/apps/opening-hours-editor/Dialog.tsx index f0623f5747..cdc5444dfd 100644 --- a/src/apps/opening-hours-editor/Dialog.tsx +++ b/src/apps/opening-hours-editor/Dialog.tsx @@ -13,7 +13,7 @@ const Dialog = forwardRef( return ( { if (currentTarget === target) { closeDialog(); From 921442c907ce066860d40735b8b126783371beb7 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 11:01:36 +0100 Subject: [PATCH 34/56] Move `Dialog` to components folder for shared use - This component is highly generic and will be useful across all applications. - Additionally, I've added an icon for the close button and some CSS classes for future styling. --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 4 ++-- .../dialog}/Dialog.tsx | 10 ++++------ .../dialog}/useDialog.tsx | 0 3 files changed, 6 insertions(+), 8 deletions(-) rename src/{apps/opening-hours-editor => components/dialog}/Dialog.tsx (78%) rename src/{apps/opening-hours-editor => components/dialog}/useDialog.tsx (100%) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index cbb3c78f10..3412ec7e0a 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -7,8 +7,8 @@ import da from "@fullcalendar/core/locales/da"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; import useOpeningHours from "./useOpeningHours"; import DialogFomularEdit from "./DialogFomularEdit"; -import Dialog from "./Dialog"; -import useDialog from "./useDialog"; +import Dialog from "../../components/dialog/Dialog"; +import useDialog from "../../components/dialog/useDialog"; import DialogFomularAdd from "./DialogFomularAdd"; const OpeningHoursEditor: React.FC = () => { diff --git a/src/apps/opening-hours-editor/Dialog.tsx b/src/components/dialog/Dialog.tsx similarity index 78% rename from src/apps/opening-hours-editor/Dialog.tsx rename to src/components/dialog/Dialog.tsx index cdc5444dfd..dfe74e471e 100644 --- a/src/apps/opening-hours-editor/Dialog.tsx +++ b/src/components/dialog/Dialog.tsx @@ -2,6 +2,7 @@ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ /* eslint-disable jsx-a11y/click-events-have-key-events */ import React, { forwardRef } from "react"; +import iconCross from "@danskernesdigitalebibliotek/dpl-design-system/build/icons/basic/icon-cross.svg"; type DialogType = { children: React.ReactNode; @@ -12,6 +13,7 @@ const Dialog = forwardRef( ({ children, closeDialog }, ref) => { return ( { @@ -23,13 +25,9 @@ const Dialog = forwardRef( {children} diff --git a/src/apps/opening-hours-editor/useDialog.tsx b/src/components/dialog/useDialog.tsx similarity index 100% rename from src/apps/opening-hours-editor/useDialog.tsx rename to src/components/dialog/useDialog.tsx From bbfe79b9853aa06837ec35697a82687c5fc42fef Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 11:47:25 +0100 Subject: [PATCH 35/56] Move 'Remove event' button inside `DialogFormularEdit` This is a more proactive choice for deleting an event. It is meaningful to keep the editing and removal options in the same place. A translation string for the 'Remove' button has been added. --- .../DialogFomularEdit.tsx | 37 +++++++++++++++---- .../OpeningHoursEditor.dev.tsx | 7 +++- .../OpeningHoursEditor.entry.tsx | 10 ++++- .../OpeningHoursEditor.tsx | 4 +- .../OpeningHoursEditorEventContent.tsx | 14 +------ .../opening-hours-editor/useOpeningHours.tsx | 2 +- 6 files changed, 48 insertions(+), 26 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx index 56e946f65e..081db55b76 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -2,18 +2,22 @@ import React from "react"; import { EventImpl } from "@fullcalendar/core/internal"; import { extractTime, updateEventTime } from "./helper"; import EventForm, { EventFormOnSubmitType } from "./EventForm"; +import { useText } from "../../core/utils/text"; type DialogFomularEditProps = { eventInfo: EventImpl; handleEventEditing: (eventInfo: EventImpl) => void; closeDialog: () => void; + handleEventRemove: (eventToRemove: EventImpl) => void; }; const DialogFomularEdit: React.FC = ({ eventInfo, handleEventEditing, - closeDialog + closeDialog, + handleEventRemove }) => { + const t = useText(); const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { if (eventInfo.start && eventInfo.end) { eventInfo.setProp("title", title); @@ -32,12 +36,31 @@ const DialogFomularEdit: React.FC = ({ } return ( - + <> + + + ); }; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx index fc0ad98155..c92059d175 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx @@ -7,7 +7,12 @@ export default { title: "Apps / OpeningHoursEditor", component: OpeningHoursEditor, argTypes: { - ...serviceUrlArgs + ...serviceUrlArgs, + openingHoursRemoveEventButtonText: { + name: "Opening hours remove event button", + defaultValue: "Remove event", + control: { type: "text" } + } } } as ComponentMeta; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx index 9889c5a92b..010479f41b 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx @@ -4,10 +4,16 @@ import { withText } from "../../core/utils/text"; import { withUrls } from "../../core/utils/url"; import OpeningHoursEditor from "./OpeningHoursEditor"; -const CalendarEntry: React.FC = () => ( +interface OpeningHoursEditorEntryTextProps { + openingHoursRemoveEventButtonText: string; +} + +const OpeningHoursEditorEntry: React.FC< + OpeningHoursEditorEntryTextProps +> = () => ( ); -export default withUrls(withText(CalendarEntry)); +export default withUrls(withText(OpeningHoursEditorEntry)); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 3412ec7e0a..0f0857304f 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -49,13 +49,13 @@ const OpeningHoursEditor: React.FC = () => { eventInfo={clickInfo.event} handleEventEditing={handleEventEditing} closeDialog={closeDialog} + handleEventRemove={handleEventRemove} /> ) } eventContent={(eventInput) => OpeningHoursEditorEventContent({ - eventInput, - handleEventRemove + eventInput }) } events={events} diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx index 841b9f1c6e..9dc19e7445 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -3,12 +3,11 @@ import { EventInput } from "@fullcalendar/core"; type OpeningHoursEditorEventContentProps = { eventInput: EventInput; - handleEventRemove: (event: EventInput) => void; }; const OpeningHoursEditorEventContent: React.FC< OpeningHoursEditorEventContentProps -> = ({ eventInput, handleEventRemove }) => { +> = ({ eventInput }) => { const { event } = eventInput; return (
- - { - if (e.key === "Enter") handleEventRemove(event); - }} - onClick={() => handleEventRemove(event)} - > - โŒ -
); diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index c66539c95a..3d076fd36c 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -41,7 +41,7 @@ const useOpeningHours = () => { alert(JSON.stringify(eventInfo, null, 2)); }; - const handleEventRemove = (eventToRemove: EventInput) => { + const handleEventRemove = (eventToRemove: EventImpl) => { setEvents(events.filter((event) => event.id !== eventToRemove.id)); }; From 8a3105fac869a70d2feac63259b200eb49413bad Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 11:50:59 +0100 Subject: [PATCH 36/56] Set `allDay: false` for Event addition This update allows users to specify opening hours from the month view, similar to the functionality available in the week view. As our API does not process full-day values, this modification will not introduce any problems --- src/apps/opening-hours-editor/DialogFomularAdd.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFomularAdd.tsx index cdace74d18..40119b78d5 100644 --- a/src/apps/opening-hours-editor/DialogFomularAdd.tsx +++ b/src/apps/opening-hours-editor/DialogFomularAdd.tsx @@ -31,7 +31,8 @@ const DialogFomularAdd: React.FC = ({ ...selectedEventInfo, startStr: startDate.toISOString(), endStr: endDate.toISOString(), - title + title, + allDay: false }; handleEventSelect(newEventInfo); From 0c988ce9ec803265b1890380a71e0616d44e2315 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 19:05:26 +0100 Subject: [PATCH 37/56] Disable all-day slot in the `FullCalendar` --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 0f0857304f..3db7954ecc 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -62,6 +62,7 @@ const OpeningHoursEditor: React.FC = () => { stickyHeaderDates height="auto" selectMirror + allDaySlot={false} /> ); From ae3f0721f6b6699189e71c1609a643fb96a10f4c Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 13:41:22 +0100 Subject: [PATCH 38/56] Update to Latest OpenAPI Spec and Refactor `handleEventRemove` `handleEventRemove` now uses the mutate hook `useDplOpeningHoursDeleteDELETE` to delete an event. After the success is achieved, it will refetch the data from `useDplOpeningHoursListGET`. --- ...-f52a1b96-38d2-479a-aeaf-65367637d365.json | 18 + .../opening-hours-editor/useOpeningHours.tsx | 20 +- src/core/dpl-cms/dpl-cms.ts | 358 +++++++----------- .../model/dplOpeningHoursCreatePOST200.ts | 22 ++ .../dplOpeningHoursCreatePOST200Category.ts | 13 + .../model/dplOpeningHoursCreatePOSTBody.ts | 22 ++ .../dplOpeningHoursCreatePOSTBodyCategory.ts | 13 + .../model/dplOpeningHoursCreatePOSTFormat.ts | 15 + .../model/dplOpeningHoursCreatePOSTParams.ts | 12 + .../dplOpeningHoursDeleteDELETEFormat.ts | 15 + .../dplOpeningHoursDeleteDELETEParams.ts | 12 + .../model/dplOpeningHoursUpdatePATCH200.ts | 22 ++ .../dplOpeningHoursUpdatePATCH200Category.ts | 13 + .../model/dplOpeningHoursUpdatePATCHBody.ts | 22 ++ .../dplOpeningHoursUpdatePATCHBodyCategory.ts | 13 + .../model/dplOpeningHoursUpdatePATCHFormat.ts | 15 + .../model/dplOpeningHoursUpdatePATCHParams.ts | 12 + src/core/dpl-cms/model/index.ts | 14 + 18 files changed, 401 insertions(+), 230 deletions(-) create mode 100644 .docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts create mode 100644 src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts diff --git a/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json b/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json new file mode 100644 index 0000000000..6877ef90b9 --- /dev/null +++ b/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json @@ -0,0 +1,18 @@ +{ + "id": "f52a1b96-38d2-479a-aeaf-65367637d365", + "name": "Delete event", + "request": { + "urlPathPattern": "/dpl_opening_hours/[0-9]+", + "method": "DELETE" + }, + "response": { + "status": 200, + "body": "Event deletet", + "headers": {} + }, + "uuid": "f52a1b96-38d2-479a-aeaf-65367637d365", + "persistent": true, + "priority": 5, + "insertionIndex": 1, + "postServeActions": [] +} diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index 3d076fd36c..278a17a19e 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -1,13 +1,20 @@ import { useState, useEffect } from "react"; import { EventInput, DateSelectArg } from "@fullcalendar/core"; import { EventImpl } from "@fullcalendar/core/internal"; +import { useQueryClient } from "react-query"; import { createCmsEventId, formatCmsEventsToFullCalendar } from "./helper"; -import { useDplOpeningHoursListGET } from "../../core/dpl-cms/dpl-cms"; +import { + getDplOpeningHoursListGETQueryKey, + useDplOpeningHoursDeleteDELETE, + useDplOpeningHoursListGET +} from "../../core/dpl-cms/dpl-cms"; export type ExtendedDateSelectArgType = DateSelectArg & { title: string }; const useOpeningHours = () => { + const queryClient = useQueryClient(); const { data: openingHoursData } = useDplOpeningHoursListGET(); + const { mutate: removeOpeningHours } = useDplOpeningHoursDeleteDELETE(); const [events, setEvents] = useState([]); useEffect(() => { @@ -42,7 +49,16 @@ const useOpeningHours = () => { }; const handleEventRemove = (eventToRemove: EventImpl) => { - setEvents(events.filter((event) => event.id !== eventToRemove.id)); + if (eventToRemove.id) { + removeOpeningHours( + { id: eventToRemove.id }, + { + onSuccess: () => { + queryClient.invalidateQueries(getDplOpeningHoursListGETQueryKey()); + } + } + ); + } }; return { diff --git a/src/core/dpl-cms/dpl-cms.ts b/src/core/dpl-cms/dpl-cms.ts index 8b60a54341..5cade9eb6b 100644 --- a/src/core/dpl-cms/dpl-cms.ts +++ b/src/core/dpl-cms/dpl-cms.ts @@ -19,17 +19,15 @@ import type { CampaignMatchPOST200, CampaignMatchPOSTBodyItem, CampaignMatchPOSTParams, - DplOpeningHoursGET200, - DplOpeningHoursGETOpeningHoursInstanceBody, - DplOpeningHoursGETParams, - DplOpeningHoursDELETE200, - DplOpeningHoursDELETEParams, - DplOpeningHoursPATCH200, - DplOpeningHoursPATCHParams, - DplOpeningHoursPOST200, - DplOpeningHoursPOSTParams, + DplOpeningHoursCreatePOST200, + DplOpeningHoursCreatePOSTBody, + DplOpeningHoursCreatePOSTParams, DplOpeningHoursListGET200Item, DplOpeningHoursListGETParams, + DplOpeningHoursDeleteDELETEParams, + DplOpeningHoursUpdatePATCH200, + DplOpeningHoursUpdatePATCHBody, + DplOpeningHoursUpdatePATCHParams, EventPATCHBody, EventPATCHParams, EventsGET200Item, @@ -107,48 +105,99 @@ export const useCampaignMatchPOST = < }; /** - * @summary Manage individual opening hours + * @summary Create individual opening hours */ -export const dplOpeningHoursGET = ( - id: string, - dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, - params?: DplOpeningHoursGETParams, +export const dplOpeningHoursCreatePOST = ( + dplOpeningHoursCreatePOSTBody: BodyType, + params?: DplOpeningHoursCreatePOSTParams +) => { + return fetcher({ + url: `/dpl_opening_hours`, + method: "post", + headers: { "Content-Type": "application/json" }, + data: dplOpeningHoursCreatePOSTBody, + params + }); +}; + +export type DplOpeningHoursCreatePOSTMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursCreatePOSTMutationBody = + BodyType; +export type DplOpeningHoursCreatePOSTMutationError = ErrorType; + +export const useDplOpeningHoursCreatePOST = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { + data: BodyType; + params?: DplOpeningHoursCreatePOSTParams; + }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { + data: BodyType; + params?: DplOpeningHoursCreatePOSTParams; + } + > = (props) => { + const { data, params } = props ?? {}; + + return dplOpeningHoursCreatePOST(data, params); + }; + + return useMutation< + Awaited>, + TError, + { + data: BodyType; + params?: DplOpeningHoursCreatePOSTParams; + }, + TContext + >(mutationFn, mutationOptions); +}; + +/** + * @summary List all opening hours + */ +export const dplOpeningHoursListGET = ( + params?: DplOpeningHoursListGETParams, signal?: AbortSignal ) => { - return fetcher({ - url: `/dpl_opening_hours/${id}`, + return fetcher({ + url: `/dpl_opening_hours`, method: "get", signal, - headers: { "Content-Type": "application/json" }, params }); }; -export const getDplOpeningHoursGETQueryKey = ( - id: string, - dplOpeningHoursGETOpeningHoursInstanceBody: DplOpeningHoursGETOpeningHoursInstanceBody, - params?: DplOpeningHoursGETParams -) => [ - `/dpl_opening_hours/${id}`, - ...(params ? [params] : []), - dplOpeningHoursGETOpeningHoursInstanceBody -]; +export const getDplOpeningHoursListGETQueryKey = ( + params?: DplOpeningHoursListGETParams +) => [`/dpl_opening_hours`, ...(params ? [params] : [])]; -export type DplOpeningHoursGETQueryResult = NonNullable< - Awaited> +export type DplOpeningHoursListGETQueryResult = NonNullable< + Awaited> >; -export type DplOpeningHoursGETQueryError = ErrorType; +export type DplOpeningHoursListGETQueryError = ErrorType; -export const useDplOpeningHoursGET = < - TData = Awaited>, - TError = ErrorType +export const useDplOpeningHoursListGET = < + TData = Awaited>, + TError = ErrorType >( - id: string, - dplOpeningHoursGETOpeningHoursInstanceBody: DplOpeningHoursGETOpeningHoursInstanceBody, - params?: DplOpeningHoursGETParams, + params?: DplOpeningHoursListGETParams, options?: { query?: UseQueryOptions< - Awaited>, + Awaited>, TError, TData >; @@ -157,28 +206,17 @@ export const useDplOpeningHoursGET = < const { query: queryOptions } = options ?? {}; const queryKey = - queryOptions?.queryKey ?? - getDplOpeningHoursGETQueryKey( - id, - dplOpeningHoursGETOpeningHoursInstanceBody, - params - ); + queryOptions?.queryKey ?? getDplOpeningHoursListGETQueryKey(params); const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => - dplOpeningHoursGET( - id, - dplOpeningHoursGETOpeningHoursInstanceBody, - params, - signal - ); + Awaited> + > = ({ signal }) => dplOpeningHoursListGET(params, signal); const query = useQuery< - Awaited>, + Awaited>, TError, TData - >(queryKey, queryFn, { enabled: !!id, ...queryOptions }); + >(queryKey, queryFn, queryOptions); return { queryKey, @@ -187,106 +225,90 @@ export const useDplOpeningHoursGET = < }; /** - * @summary Manage individual opening hours + * @summary Delete individual opening hours */ -export const dplOpeningHoursDELETE = ( +export const dplOpeningHoursDeleteDELETE = ( id: string, - dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, - params?: DplOpeningHoursDELETEParams + params?: DplOpeningHoursDeleteDELETEParams ) => { - return fetcher({ + return fetcher({ url: `/dpl_opening_hours/${id}`, method: "delete", - headers: { "Content-Type": "application/json" }, - data: dplOpeningHoursGETOpeningHoursInstanceBody, params }); }; -export type DplOpeningHoursDELETEMutationResult = NonNullable< - Awaited> +export type DplOpeningHoursDeleteDELETEMutationResult = NonNullable< + Awaited> >; -export type DplOpeningHoursDELETEMutationBody = - BodyType; -export type DplOpeningHoursDELETEMutationError = ErrorType; -export const useDplOpeningHoursDELETE = < +export type DplOpeningHoursDeleteDELETEMutationError = ErrorType; + +export const useDplOpeningHoursDeleteDELETE = < TError = ErrorType, TContext = unknown >(options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, - { - id: string; - data: BodyType; - params?: DplOpeningHoursDELETEParams; - }, + { id: string; params?: DplOpeningHoursDeleteDELETEParams }, TContext >; }) => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< - Awaited>, - { - id: string; - data: BodyType; - params?: DplOpeningHoursDELETEParams; - } + Awaited>, + { id: string; params?: DplOpeningHoursDeleteDELETEParams } > = (props) => { - const { id, data, params } = props ?? {}; + const { id, params } = props ?? {}; - return dplOpeningHoursDELETE(id, data, params); + return dplOpeningHoursDeleteDELETE(id, params); }; return useMutation< - Awaited>, + Awaited>, TError, - { - id: string; - data: BodyType; - params?: DplOpeningHoursDELETEParams; - }, + { id: string; params?: DplOpeningHoursDeleteDELETEParams }, TContext >(mutationFn, mutationOptions); }; /** - * @summary Manage individual opening hours + * @summary Update individual opening hours */ -export const dplOpeningHoursPATCH = ( +export const dplOpeningHoursUpdatePATCH = ( id: string, - dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, - params?: DplOpeningHoursPATCHParams + dplOpeningHoursUpdatePATCHBody: BodyType, + params?: DplOpeningHoursUpdatePATCHParams ) => { - return fetcher({ + return fetcher({ url: `/dpl_opening_hours/${id}`, method: "patch", headers: { "Content-Type": "application/json" }, - data: dplOpeningHoursGETOpeningHoursInstanceBody, + data: dplOpeningHoursUpdatePATCHBody, params }); }; -export type DplOpeningHoursPATCHMutationResult = NonNullable< - Awaited> +export type DplOpeningHoursUpdatePATCHMutationResult = NonNullable< + Awaited> >; -export type DplOpeningHoursPATCHMutationBody = - BodyType; -export type DplOpeningHoursPATCHMutationError = ErrorType; +export type DplOpeningHoursUpdatePATCHMutationBody = + BodyType; +export type DplOpeningHoursUpdatePATCHMutationError = ErrorType; -export const useDplOpeningHoursPATCH = < - TError = ErrorType, +export const useDplOpeningHoursUpdatePATCH = < + TError = ErrorType, TContext = unknown >(options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, { id: string; - data: BodyType; - params?: DplOpeningHoursPATCHParams; + data: BodyType; + params?: DplOpeningHoursUpdatePATCHParams; }, TContext >; @@ -294,150 +316,30 @@ export const useDplOpeningHoursPATCH = < const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< - Awaited>, + Awaited>, { id: string; - data: BodyType; - params?: DplOpeningHoursPATCHParams; + data: BodyType; + params?: DplOpeningHoursUpdatePATCHParams; } > = (props) => { const { id, data, params } = props ?? {}; - return dplOpeningHoursPATCH(id, data, params); + return dplOpeningHoursUpdatePATCH(id, data, params); }; return useMutation< - Awaited>, + Awaited>, TError, { id: string; - data: BodyType; - params?: DplOpeningHoursPATCHParams; - }, - TContext - >(mutationFn, mutationOptions); -}; - -/** - * @summary Manage individual opening hours - */ -export const dplOpeningHoursPOST = ( - dplOpeningHoursGETOpeningHoursInstanceBody: BodyType, - params?: DplOpeningHoursPOSTParams -) => { - return fetcher({ - url: `/dpl_opening_hours`, - method: "post", - headers: { "Content-Type": "application/json" }, - data: dplOpeningHoursGETOpeningHoursInstanceBody, - params - }); -}; - -export type DplOpeningHoursPOSTMutationResult = NonNullable< - Awaited> ->; -export type DplOpeningHoursPOSTMutationBody = - BodyType; -export type DplOpeningHoursPOSTMutationError = ErrorType; - -export const useDplOpeningHoursPOST = < - TError = ErrorType, - TContext = unknown ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { - data: BodyType; - params?: DplOpeningHoursPOSTParams; - }, - TContext - >; -}) => { - const { mutation: mutationOptions } = options ?? {}; - - const mutationFn: MutationFunction< - Awaited>, - { - data: BodyType; - params?: DplOpeningHoursPOSTParams; - } - > = (props) => { - const { data, params } = props ?? {}; - - return dplOpeningHoursPOST(data, params); - }; - - return useMutation< - Awaited>, - TError, - { - data: BodyType; - params?: DplOpeningHoursPOSTParams; + data: BodyType; + params?: DplOpeningHoursUpdatePATCHParams; }, TContext >(mutationFn, mutationOptions); }; -/** - * @summary List all opening hours - */ -export const dplOpeningHoursListGET = ( - params?: DplOpeningHoursListGETParams, - signal?: AbortSignal -) => { - return fetcher({ - url: `/dpl_opening_hours`, - method: "get", - signal, - params - }); -}; - -export const getDplOpeningHoursListGETQueryKey = ( - params?: DplOpeningHoursListGETParams -) => [`/dpl_opening_hours`, ...(params ? [params] : [])]; - -export type DplOpeningHoursListGETQueryResult = NonNullable< - Awaited> ->; -export type DplOpeningHoursListGETQueryError = ErrorType; - -export const useDplOpeningHoursListGET = < - TData = Awaited>, - TError = ErrorType ->( - params?: DplOpeningHoursListGETParams, - options?: { - query?: UseQueryOptions< - Awaited>, - TError, - TData - >; - } -): UseQueryResult & { queryKey: QueryKey } => { - const { query: queryOptions } = options ?? {}; - - const queryKey = - queryOptions?.queryKey ?? getDplOpeningHoursListGETQueryKey(params); - - const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => dplOpeningHoursListGET(params, signal); - - const query = useQuery< - Awaited>, - TError, - TData - >(queryKey, queryFn, queryOptions); - - return { - queryKey, - ...query - }; -}; - /** * @summary Update single events */ diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts new file mode 100644 index 0000000000..8ae7d83627 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursCreatePOST200Category } from "./dplOpeningHoursCreatePOST200Category"; + +export type DplOpeningHoursCreatePOST200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursCreatePOST200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts new file mode 100644 index 0000000000..37ef7cdc2c --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursCreatePOST200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts new file mode 100644 index 0000000000..fb29e67cc0 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursCreatePOSTBodyCategory } from "./dplOpeningHoursCreatePOSTBodyCategory"; + +export type DplOpeningHoursCreatePOSTBody = { + /** An serial unique id of the opening hours instance. */ + id?: number; + category: DplOpeningHoursCreatePOSTBodyCategory; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts new file mode 100644 index 0000000000..1a398fd690 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursCreatePOSTBodyCategory = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts new file mode 100644 index 0000000000..35b1d321eb --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursCreatePOSTFormat = + typeof DplOpeningHoursCreatePOSTFormat[keyof typeof DplOpeningHoursCreatePOSTFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursCreatePOSTFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts new file mode 100644 index 0000000000..8cb2d34775 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursCreatePOSTFormat } from "./dplOpeningHoursCreatePOSTFormat"; + +export type DplOpeningHoursCreatePOSTParams = { + _format?: DplOpeningHoursCreatePOSTFormat; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts new file mode 100644 index 0000000000..bf21d515a9 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursDeleteDELETEFormat = + typeof DplOpeningHoursDeleteDELETEFormat[keyof typeof DplOpeningHoursDeleteDELETEFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursDeleteDELETEFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts new file mode 100644 index 0000000000..db37723cb5 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursDeleteDELETEFormat } from "./dplOpeningHoursDeleteDELETEFormat"; + +export type DplOpeningHoursDeleteDELETEParams = { + _format?: DplOpeningHoursDeleteDELETEFormat; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts new file mode 100644 index 0000000000..edc4a4fa7e --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursUpdatePATCH200Category } from "./dplOpeningHoursUpdatePATCH200Category"; + +export type DplOpeningHoursUpdatePATCH200 = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursUpdatePATCH200Category; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts new file mode 100644 index 0000000000..853f9c98ba --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursUpdatePATCH200Category = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts new file mode 100644 index 0000000000..6b84f621de --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursUpdatePATCHBodyCategory } from "./dplOpeningHoursUpdatePATCHBodyCategory"; + +export type DplOpeningHoursUpdatePATCHBody = { + /** An serial unique id of the opening hours instance. */ + id: number; + category: DplOpeningHoursUpdatePATCHBodyCategory; + /** The date which the opening hours applies to. In ISO 8601 format. */ + date: string; + /** When the opening hours start. In format HH:MM */ + start_time: string; + /** When the opening hours end. In format HH:MM */ + end_time: string; + /** The id for the branch the instance belongs to */ + branch_id: number; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts new file mode 100644 index 0000000000..58d6c18f2c --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursUpdatePATCHBodyCategory = { + title: string; + /** A CSS compatible color code which can be used to represent the category */ + color: string; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts new file mode 100644 index 0000000000..6651804d3f --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + +export type DplOpeningHoursUpdatePATCHFormat = + typeof DplOpeningHoursUpdatePATCHFormat[keyof typeof DplOpeningHoursUpdatePATCHFormat]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const DplOpeningHoursUpdatePATCHFormat = { + json: "json" +} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts new file mode 100644 index 0000000000..0e41f89ea9 --- /dev/null +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts @@ -0,0 +1,12 @@ +/** + * Generated by orval v6.8.1 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ +import type { DplOpeningHoursUpdatePATCHFormat } from "./dplOpeningHoursUpdatePATCHFormat"; + +export type DplOpeningHoursUpdatePATCHParams = { + _format?: DplOpeningHoursUpdatePATCHFormat; +}; diff --git a/src/core/dpl-cms/model/index.ts b/src/core/dpl-cms/model/index.ts index 970d15bee5..24ae29be07 100644 --- a/src/core/dpl-cms/model/index.ts +++ b/src/core/dpl-cms/model/index.ts @@ -51,3 +51,17 @@ export * from "./dplOpeningHoursPATCH200"; export * from "./dplOpeningHoursGETOpeningHoursInstanceBody"; export * from "./dplOpeningHoursGETParams"; export * from "./dplOpeningHoursPATCH200Category"; +export * from "./dplOpeningHoursCreatePOSTParams"; +export * from "./dplOpeningHoursCreatePOST200"; +export * from "./dplOpeningHoursCreatePOST200Category"; +export * from "./dplOpeningHoursDeleteDELETEParams"; +export * from "./dplOpeningHoursUpdatePATCHFormat"; +export * from "./dplOpeningHoursUpdatePATCHParams"; +export * from "./dplOpeningHoursUpdatePATCHBodyCategory"; +export * from "./dplOpeningHoursUpdatePATCHBody"; +export * from "./dplOpeningHoursCreatePOSTBody"; +export * from "./dplOpeningHoursCreatePOSTBodyCategory"; +export * from "./dplOpeningHoursCreatePOSTFormat"; +export * from "./dplOpeningHoursDeleteDELETEFormat"; +export * from "./dplOpeningHoursUpdatePATCH200Category"; +export * from "./dplOpeningHoursUpdatePATCH200"; From 963734c349870850e4732b713ecf0ece34c9a35d Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 13:42:30 +0100 Subject: [PATCH 39/56] Update wiremock for `useDplOpeningHoursListGET`` --- .../mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json index 394c510b13..6bcd5942d9 100644 --- a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json +++ b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json @@ -2,12 +2,12 @@ "id" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", "name" : "Opening hours", "request" : { - "url" : "/dpl_opening_hours", + "urlPath" : "/dpl_opening_hours", "method" : "GET" }, "response" : { "status" : 200, - "body" : "[\n {\n \"id\": 0,\n \"category\": {\n \"title\": \"Open\",\n \"color\": \"#ff0099\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 1\n}, {\n \"id\": 1,\n \"category\": {\n \"title\": \"Open\",\n \"color\": \"#ff0099\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"09:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 1\n}\n]", + "body" : "[\n {\n \"id\": 21,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 22,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 23,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 24,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 25,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 26,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 27,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 28,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 29,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 30,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 31,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 32,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 33,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 34,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 35,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 36,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 37,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 2\n },\n {\n \"id\": 38,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 39,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 40,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 41,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 0,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 1,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 2,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 3,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"08:00\",\n \"end_time\": \"10:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 4,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"11:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 5,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 6,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 7,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"13:00\",\n \"end_time\": \"15:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 8,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"16:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 9,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 10,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 11,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 12,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 13,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 14,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 15,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 16,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 17,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 18,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 19,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"14:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 20,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"19:00\",\n \"end_time\": \"21:00\",\n \"branch_id\": 3\n },\n\n {\n \"id\": 42,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 43,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 44,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 45,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 46,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 47,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 48,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 49,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 50,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 51,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 52,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 53,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 54,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 55,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 56,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 57,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 58,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 2\n },\n {\n \"id\": 59,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 60,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 61,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 62,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n }\n]\n", "headers" : { } }, "uuid" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", From df3be2fe091ce9b391aa90dbe20ad218c1507bf8 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 26 Mar 2024 19:14:35 +0100 Subject: [PATCH 40/56] WIP: Refactor `handleEventAdd` --- .../opening-hours-editor/DialogFomularAdd.tsx | 32 +++++--- .../DialogFomularEdit.tsx | 42 +++++++--- src/apps/opening-hours-editor/EventForm.tsx | 42 +++++++--- .../OpeningHoursEditor.dev.tsx | 39 +++++++++ .../OpeningHoursEditor.entry.tsx | 13 ++- .../OpeningHoursEditor.tsx | 19 ++++- src/apps/opening-hours-editor/helper.ts | 23 +++++- src/apps/opening-hours-editor/types.ts | 4 + .../opening-hours-editor/useOpeningHours.tsx | 79 +++++++++++-------- 9 files changed, 212 insertions(+), 81 deletions(-) create mode 100644 src/apps/opening-hours-editor/types.ts diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFomularAdd.tsx index 40119b78d5..8486ba8fec 100644 --- a/src/apps/opening-hours-editor/DialogFomularAdd.tsx +++ b/src/apps/opening-hours-editor/DialogFomularAdd.tsx @@ -3,46 +3,56 @@ import { DateSelectArg } from "@fullcalendar/core"; import { adjustEndDateToStartDay, extractTime, + formatFullCalendarEventToCmsEvent, updateEventTime } from "./helper"; -import { ExtendedDateSelectArgType } from "./useOpeningHours"; import EventForm, { EventFormOnSubmitType } from "./EventForm"; +import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; +import { OpeningHoursCategoriesType } from "./types"; type DialogFomularAddProps = { selectedEventInfo: DateSelectArg; - handleEventSelect: (selectedEventInfo: ExtendedDateSelectArgType) => void; + handleEventAdd: (selectedEventInfo: DplOpeningHoursListGET200Item) => void; closeDialog: () => void; + openingHoursCategories: OpeningHoursCategoriesType[]; }; const DialogFomularAdd: React.FC = ({ selectedEventInfo, - handleEventSelect, - closeDialog + handleEventAdd, + closeDialog, + openingHoursCategories }) => { const calendarApi = selectedEventInfo.view.calendar; - const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { + const handleSubmit: EventFormOnSubmitType = ( + category, + startTime, + endTime + ) => { const startDate = updateEventTime(selectedEventInfo.start, startTime); let endDate = updateEventTime(selectedEventInfo.end, endTime); - endDate = adjustEndDateToStartDay(startDate, endDate); const newEventInfo = { ...selectedEventInfo, - startStr: startDate.toISOString(), - endStr: endDate.toISOString(), - title, + start: startDate, + end: endDate, + title: category.title, + color: category.color, allDay: false }; - handleEventSelect(newEventInfo); + calendarApi.addEvent(newEventInfo); calendarApi.unselect(); + + handleEventAdd(formatFullCalendarEventToCmsEvent(newEventInfo)); closeDialog(); }; return ( void; closeDialog: () => void; - handleEventRemove: (eventToRemove: EventImpl) => void; + handleEventRemove: (eventId: string) => void; + openingHoursCategories: OpeningHoursCategoriesType[]; }; const DialogFomularEdit: React.FC = ({ eventInfo, handleEventEditing, closeDialog, - handleEventRemove + handleEventRemove, + openingHoursCategories }) => { const t = useText(); - const handleSubmit: EventFormOnSubmitType = (title, startTime, endTime) => { - if (eventInfo.start && eventInfo.end) { - eventInfo.setProp("title", title); - const startDate = updateEventTime(eventInfo.start, startTime); + const handleSubmit: EventFormOnSubmitType = ( + category, + startTime, + endTime + ) => { + if (!eventInfo.start || !eventInfo.end) { + // eslint-disable-next-line no-alert + alert("Invalid event"); + return; + } + const startDate = updateEventTime(eventInfo.start, startTime); + const endDate = updateEventTime(eventInfo.end, endTime); - const endDate = updateEventTime(eventInfo.end, endTime); - eventInfo.setDates(startDate, endDate); + eventInfo.setProp("title", category.title); + eventInfo.setProp("color", category.color); + eventInfo.setDates(startDate, endDate); - handleEventEditing(eventInfo); - closeDialog(); - } + handleEventEditing(eventInfo); + closeDialog(); }; if (!eventInfo.start || !eventInfo.end) { + // eslint-disable-next-line no-alert + alert("Invalid event"); return null; } @@ -42,6 +55,7 @@ const DialogFomularEdit: React.FC = ({ initialStartTime={extractTime(eventInfo.start)} initialEndTime={extractTime(eventInfo.end)} onSubmit={handleSubmit} + openingHoursCategories={openingHoursCategories} />
= ({ /> ) } + unselectAuto={false} eventClick={(clickInfo) => openDialogWithContent( ( ({ children, closeDialog }, ref) => { + useEscapeKey({ closeDialog }); return ( { +type UseDialogType = { + onClose?: () => void; +}; + +const useDialog = ({ onClose }: UseDialogType = {}) => { const [dialogContent, setDialogContent] = useState(null); const dialogRef = useRef(null); const closeDialog = () => { - dialogRef.current?.close(); + if (!dialogRef.current) { + return; + } + if (onClose) { + onClose(); + } + dialogRef.current.close(); }; const openDialogWithContent = (content: React.ReactNode) => { diff --git a/src/components/dialog/useEscapeKey.tsx b/src/components/dialog/useEscapeKey.tsx new file mode 100644 index 0000000000..0ffe2a214c --- /dev/null +++ b/src/components/dialog/useEscapeKey.tsx @@ -0,0 +1,19 @@ +import { useEffect } from "react"; + +const useEscapeKey = ({ closeDialog }: { closeDialog: () => void }) => { + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === "Escape") { + closeDialog(); + } + }; + + document.addEventListener("keydown", handleKeyDown); + + return () => { + document.removeEventListener("keydown", handleKeyDown); + }; + }, [closeDialog]); +}; + +export default useEscapeKey; From 2e52b7c1a4f42092965bf6817815b63f3a84259a Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 29 Mar 2024 00:10:08 +0100 Subject: [PATCH 42/56] Refactor `useOpeningHours` + Add logic for `handleEventEditing` Cleaned up code in `useOpeningHours` to streamline `onSuccess` and `onError` handling --- .../DialogFomularEdit.tsx | 11 +++- src/apps/opening-hours-editor/helper.ts | 10 +++- .../opening-hours-editor/useOpeningHours.tsx | 56 +++++++++++-------- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx index 95630e7307..3339d58474 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -1,13 +1,18 @@ import React from "react"; import { EventImpl } from "@fullcalendar/core/internal"; -import { extractTime, updateEventTime } from "./helper"; +import { + extractTime, + formatFullCalendarEventToCmsEvent, + updateEventTime +} from "./helper"; import EventForm, { EventFormOnSubmitType } from "./EventForm"; import { useText } from "../../core/utils/text"; import { OpeningHoursCategoriesType } from "./types"; +import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; type DialogFomularEditProps = { eventInfo: EventImpl; - handleEventEditing: (eventInfo: EventImpl) => void; + handleEventEditing: (event: DplOpeningHoursListGET200Item) => void; closeDialog: () => void; handleEventRemove: (eventId: string) => void; openingHoursCategories: OpeningHoursCategoriesType[]; @@ -38,7 +43,7 @@ const DialogFomularEdit: React.FC = ({ eventInfo.setProp("color", category.color); eventInfo.setDates(startDate, endDate); - handleEventEditing(eventInfo); + handleEventEditing(formatFullCalendarEventToCmsEvent(eventInfo)); closeDialog(); }; diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index eae801d1f8..0d3f599822 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,4 +1,5 @@ import { EventInput } from "@fullcalendar/core"; +import { EventImpl } from "@fullcalendar/core/internal"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; const formatDateTimeString = (date: string, time: string): string => { @@ -20,16 +21,19 @@ export const formatCmsEventsToFullCalendar = ( }; export const formatFullCalendarEventToCmsEvent = ( - event: EventInput + event: EventInput | EventImpl ): DplOpeningHoursListGET200Item => { - if (!event.title) { + const isEventInput = "color" in event; // Check if it's EventInput type + const color = isEventInput ? event.color : event.backgroundColor; + + if (!event.title || !color) { throw new Error("Invalid event format"); } return { id: Number(event.id), category: { title: event.title, - color: event.color || "" + color }, date: event.startStr.split("T")[0], start_time: event.startStr.split("T")[1].slice(0, 5), diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index 7bcd266fb7..f86474d94e 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -1,13 +1,13 @@ import { useState, useEffect } from "react"; import { EventInput } from "@fullcalendar/core"; -import { EventImpl } from "@fullcalendar/core/internal"; import { useQueryClient } from "react-query"; import { formatCmsEventsToFullCalendar } from "./helper"; import { getDplOpeningHoursListGETQueryKey, useDplOpeningHoursCreatePOST, useDplOpeningHoursDeleteDELETE, - useDplOpeningHoursListGET + useDplOpeningHoursListGET, + useDplOpeningHoursUpdatePATCH } from "../../core/dpl-cms/dpl-cms"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; @@ -18,6 +18,7 @@ const useOpeningHours = (openingHoursBranchId: number) => { }); const { mutate: removeOpeningHours } = useDplOpeningHoursDeleteDELETE(); const { mutate: createOpeningHours } = useDplOpeningHoursCreatePOST(); + const { mutate: updateOpeningHours } = useDplOpeningHoursUpdatePATCH(); const [events, setEvents] = useState([]); useEffect(() => { @@ -27,6 +28,17 @@ const useOpeningHours = (openingHoursBranchId: number) => { } }, [openingHoursData]); + const onSuccess = () => { + queryClient.invalidateQueries(getDplOpeningHoursListGETQueryKey()); + }; + + const onError = (message: string) => { + // eslint-disable-next-line no-alert + alert(message); + // reload page to get the latest data + window.location.reload(); + }; + const handleEventAdd = (event: DplOpeningHoursListGET200Item) => { createOpeningHours( { @@ -34,43 +46,41 @@ const useOpeningHours = (openingHoursBranchId: number) => { }, { onSuccess: () => { - queryClient.invalidateQueries(getDplOpeningHoursListGETQueryKey()); + onSuccess(); }, onError: () => { - // eslint-disable-next-line no-alert - alert("Failed to create opening hours"); - // reload page - window.location.reload(); + onError("Failed to create opening hours"); } } ); }; - const handleEventEditing = (eventInfo: EventImpl) => { - // This is just for demonstration purposes - // and should be replaced with a call to the API - // eslint-disable-next-line no-alert - alert(JSON.stringify(eventInfo, null, 2)); + const handleEventEditing = (event: DplOpeningHoursListGET200Item) => { + updateOpeningHours( + { + id: event.id.toString(), + data: event + }, + { + onSuccess: () => { + onSuccess(); + }, + onError: () => { + onError("Failed to update opening hours"); + } + } + ); }; const handleEventRemove = (eventId: string) => { - if (!eventId) { - // eslint-disable-next-line no-alert - alert("Invalid event id"); - return; - } - removeOpeningHours( { id: eventId }, { onSuccess: () => { - queryClient.invalidateQueries(getDplOpeningHoursListGETQueryKey()); + onSuccess(); }, onError: () => { - // eslint-disable-next-line no-alert - alert("Failed to remove opening hours"); - // reload page - window.location.reload(); + onError("Failed to remove opening hours"); } } ); From f19326bed004656738dbf0d8852000c8916aee37 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Sun, 31 Mar 2024 12:57:23 +0200 Subject: [PATCH 43/56] Refactor Add/edit event logic for functionality and code clarity The updated code works as expected. Events now behave in the same way in fullcalender regarding the data object that is sent to dpl-cms In addition, 'day.js' is now used for efficient handling of date objects. --- .../opening-hours-editor/DialogFomularAdd.tsx | 34 ++++++-- .../DialogFomularEdit.tsx | 10 ++- .../OpeningHoursEditorEventContent.tsx | 4 +- src/apps/opening-hours-editor/helper.ts | 79 ++++++++++++++----- 4 files changed, 96 insertions(+), 31 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFomularAdd.tsx index 8486ba8fec..165c1cf07c 100644 --- a/src/apps/opening-hours-editor/DialogFomularAdd.tsx +++ b/src/apps/opening-hours-editor/DialogFomularAdd.tsx @@ -1,10 +1,12 @@ import React from "react"; import { DateSelectArg } from "@fullcalendar/core"; import { - adjustEndDateToStartDay, + adjustEndDateToStartDayGridMonth, + adjustEndDateToStartDayTimeGridWeek, extractTime, + formatDateStr, formatFullCalendarEventToCmsEvent, - updateEventTime + updateDateTime } from "./helper"; import EventForm, { EventFormOnSubmitType } from "./EventForm"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; @@ -24,20 +26,37 @@ const DialogFomularAdd: React.FC = ({ openingHoursCategories }) => { const calendarApi = selectedEventInfo.view.calendar; + const isDayGridMonth = selectedEventInfo.view.type === "dayGridMonth"; + const isTimeGridWeek = selectedEventInfo.view.type === "timeGridWeek"; const handleSubmit: EventFormOnSubmitType = ( category, startTime, endTime ) => { - const startDate = updateEventTime(selectedEventInfo.start, startTime); - let endDate = updateEventTime(selectedEventInfo.end, endTime); - endDate = adjustEndDateToStartDay(startDate, endDate); + const start = updateDateTime(selectedEventInfo.start, startTime); + const startStr = formatDateStr(start); + let end = updateDateTime(selectedEventInfo.end, endTime); + let { endStr } = selectedEventInfo; + + if (isTimeGridWeek) { + const adjustedEnd = adjustEndDateToStartDayTimeGridWeek(start, end); + end = adjustedEnd.end; + endStr = adjustedEnd.endStr; + } + + if (isDayGridMonth) { + const adjustedEnd = adjustEndDateToStartDayGridMonth(start, end); + end = adjustedEnd.end; + endStr = adjustedEnd.endStr; + } const newEventInfo = { ...selectedEventInfo, - start: startDate, - end: endDate, + start, + startStr, + end, + endStr, title: category.title, color: category.color, allDay: false @@ -45,7 +64,6 @@ const DialogFomularAdd: React.FC = ({ calendarApi.addEvent(newEventInfo); calendarApi.unselect(); - handleEventAdd(formatFullCalendarEventToCmsEvent(newEventInfo)); closeDialog(); }; diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx index 3339d58474..d7ed4c2ffa 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -1,9 +1,10 @@ import React from "react"; import { EventImpl } from "@fullcalendar/core/internal"; import { + adjustEndDateBasedOnStartDate, extractTime, formatFullCalendarEventToCmsEvent, - updateEventTime + updateDateTime } from "./helper"; import EventForm, { EventFormOnSubmitType } from "./EventForm"; import { useText } from "../../core/utils/text"; @@ -26,6 +27,7 @@ const DialogFomularEdit: React.FC = ({ openingHoursCategories }) => { const t = useText(); + const handleSubmit: EventFormOnSubmitType = ( category, startTime, @@ -36,8 +38,10 @@ const DialogFomularEdit: React.FC = ({ alert("Invalid event"); return; } - const startDate = updateEventTime(eventInfo.start, startTime); - const endDate = updateEventTime(eventInfo.end, endTime); + const startDate = updateDateTime(eventInfo.start, startTime); + let endDate = updateDateTime(eventInfo.end, endTime); + + endDate = adjustEndDateBasedOnStartDate(startDate, endDate); eventInfo.setProp("title", category.title); eventInfo.setProp("color", category.color); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx index 9dc19e7445..944f08fa29 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -1,5 +1,6 @@ import React from "react"; import { EventInput } from "@fullcalendar/core"; +import { extractTime } from "./helper"; type OpeningHoursEditorEventContentProps = { eventInput: EventInput; @@ -25,8 +26,7 @@ const OpeningHoursEditorEventContent: React.FC< }} > - {event.start?.toLocaleTimeString()} -{" "} - {event.end?.toLocaleTimeString()} + {extractTime(event.start)} - {extractTime(event.end)} diff --git a/src/apps/opening-hours-editor/helper.ts b/src/apps/opening-hours-editor/helper.ts index 0d3f599822..d260035edf 100644 --- a/src/apps/opening-hours-editor/helper.ts +++ b/src/apps/opening-hours-editor/helper.ts @@ -1,3 +1,4 @@ +import dayjs from "dayjs"; import { EventInput } from "@fullcalendar/core"; import { EventImpl } from "@fullcalendar/core/internal"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; @@ -29,41 +30,83 @@ export const formatFullCalendarEventToCmsEvent = ( if (!event.title || !color) { throw new Error("Invalid event format"); } + + const startDate = dayjs(event.startStr); + const endDate = dayjs(event.endStr); + return { id: Number(event.id), category: { title: event.title, color }, - date: event.startStr.split("T")[0], - start_time: event.startStr.split("T")[1].slice(0, 5), - end_time: event.endStr.split("T")[1].slice(0, 5), + date: startDate.format("YYYY-MM-DD"), + start_time: startDate.format("HH:mm"), + end_time: endDate.format("HH:mm"), branch_id: 0 }; }; -export const adjustEndDateToStartDay = (startDay: Date, endDay: Date) => { - // If startDay and endDay are the same, no adjustment needed - if (startDay.toDateString() === endDay.toDateString()) { +export const formatDateStr = (date: Date) => { + return dayjs(date).format("YYYY-MM-DDTHH:mm:ssZ"); +}; + +export const adjustEndDateBasedOnStartDate = (startDay: Date, endDay: Date) => { + const start = dayjs(startDay); + const end = dayjs(endDay); + + // Check if the start and end dates are on the same day no adjustment is needed + if (start.isSame(end, "day")) { return endDay; } - // If startDay and endDay are different, create a new date as adjustedEndDay - // Set it to startDay, but with the day advanced by one and the time reset to midnight - const adjustedEndDay = new Date(startDay); - adjustedEndDay.setDate(adjustedEndDay.getDate() + 1); - adjustedEndDay.setHours(0, 0, 0); - return adjustedEndDay; + // Adjust the end day to the same day as the start day but with the same time + return start + .hour(end.hour()) + .minute(end.minute()) + .second(end.second()) + .toDate(); +}; + +export const adjustEndDateToStartDayTimeGridWeek = ( + startDay: Date, + endDay: Date +) => { + let adjustedEndDay; + const start = dayjs(startDay); + const end = dayjs(endDay); + + // If startDay and endDay are the same, no adjustment is needed + if (start.isSame(end, "day")) { + adjustedEndDay = end; + } else { + // If startDay and endDay are different, set adjustedEndDay to the next day at midnight + adjustedEndDay = start.add(1, "day").startOf("day"); + } + + return { + end: adjustedEndDay.toDate(), + endStr: formatDateStr(adjustedEndDay.toDate()) + }; +}; + +export const adjustEndDateToStartDayGridMonth = ( + startDay: Date, + endDay: Date +) => { + const adjustedEndDay = adjustEndDateBasedOnStartDate(startDay, endDay); + + return { + end: adjustedEndDay, + endStr: formatDateStr(adjustedEndDay) + }; }; export const extractTime = (date: Date) => { - const hours = date.getHours().toString().padStart(2, "0"); - const minutes = date.getMinutes().toString().padStart(2, "0"); - return `${hours}:${minutes}`; + return dayjs(date).format("HH:mm"); }; -export const updateEventTime = (date: Date, timeStr: string) => { +export const updateDateTime = (date: Date, timeStr: string) => { const [hours, minutes] = timeStr.split(":").map(Number); - date.setHours(hours, minutes); - return date; + return dayjs(date).hour(hours).minute(minutes).toDate(); }; From 9807ed399ecd795d11682549266f3250b468cb86 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 2 Apr 2024 16:28:30 +0200 Subject: [PATCH 44/56] Refactor `EventForm` to use CSS classes and `children` prop The `children` prop is utilized to manage additional elements such as the remove button, ensuring the form styles remain intact. --- .../DialogFomularEdit.tsx | 19 +++++---- src/apps/opening-hours-editor/EventForm.tsx | 39 +++++++++++++------ 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFomularEdit.tsx index d7ed4c2ffa..eca42f6cd1 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFomularEdit.tsx @@ -58,16 +58,15 @@ const DialogFomularEdit: React.FC = ({ } return ( - <> - + - + ); }; diff --git a/src/apps/opening-hours-editor/EventForm.tsx b/src/apps/opening-hours-editor/EventForm.tsx index 3276a6a897..b1dbab3b4d 100644 --- a/src/apps/opening-hours-editor/EventForm.tsx +++ b/src/apps/opening-hours-editor/EventForm.tsx @@ -16,6 +16,7 @@ type EventFormProps = { initialEndTime: string; onSubmit: EventFormOnSubmitType; openingHoursCategories: OpeningHoursCategoriesType[]; + children?: React.ReactNode; }; const EventForm: React.FC = ({ @@ -23,7 +24,8 @@ const EventForm: React.FC = ({ initialStartTime, initialEndTime, onSubmit, - openingHoursCategories + openingHoursCategories, + children }) => { const initialCategory = initialTitle ? openingHoursCategories.find((category) => category.title === initialTitle) @@ -49,12 +51,15 @@ const EventForm: React.FC = ({ }; return ( -
- + + - + setStartTime(e.target.value)} /> - + = ({ min={startTime} max="00:00" /> -
From bc52558909fee6e7815f3726d443159738b283c2 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Tue, 2 Apr 2024 16:41:47 +0200 Subject: [PATCH 45/56] Rearrange code for improved readability --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 76de1c05b5..9bae082895 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -21,12 +21,12 @@ const OpeningHoursEditor: React.FC = ({ openingHoursCategories, openingHoursBranchId }) => { - const { events, handleEventAdd, handleEventEditing, handleEventRemove } = - useOpeningHours(openingHoursBranchId); - const fullCalendarRef = React.useRef(null); const fullCalendarApi = fullCalendarRef.current?.getApi(); + const { events, handleEventAdd, handleEventEditing, handleEventRemove } = + useOpeningHours(openingHoursBranchId); + const { dialogContent, openDialogWithContent, closeDialog, dialogRef } = useDialog({ onClose: () => { @@ -56,8 +56,8 @@ const OpeningHoursEditor: React.FC = ({ ) } @@ -67,9 +67,9 @@ const OpeningHoursEditor: React.FC = ({ ) } From 11b039ebf15be49f0af2f22ae3040aa502ea16b8 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Wed, 3 Apr 2024 13:16:12 +0200 Subject: [PATCH 46/56] Add `withConfig` to handle props from dpl-cms We use useConfig to manage props in order to handle arrays and number props. This is not the optimal solution since useConfig is starting to get a bit messy as, for example, these props here have nothing to do with config. We must deal with this another time. I have removed GuardedApp since it is only related to login - Implement `useWireMockStartDate` Boolean This boolean aligns the full calendar start date with our wiremock data. Also renamed the mocked data --- ...-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json | 18 -------- ...-7dfc9127-ba40-4098-9dfb-ed65799e99f0.json | 18 ++++++++ .../OpeningHoursEditor.dev.tsx | 45 +++++-------------- .../OpeningHoursEditor.entry.tsx | 22 ++++----- .../OpeningHoursEditor.tsx | 17 ++++--- .../opening-hours-editor/useOpeningHours.tsx | 7 ++- src/core/utils/config.tsx | 12 ++++- 7 files changed, 70 insertions(+), 69 deletions(-) delete mode 100644 .docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json create mode 100644 .docker/wiremock/cms/mappings/full-calendar-opening-hours-7dfc9127-ba40-4098-9dfb-ed65799e99f0.json diff --git a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json b/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json deleted file mode 100644 index 6bcd5942d9..0000000000 --- a/.docker/wiremock/cms/mappings/dummy-479e26d6-5197-4d8f-a2dd-fefe64aabc14.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "id" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", - "name" : "Opening hours", - "request" : { - "urlPath" : "/dpl_opening_hours", - "method" : "GET" - }, - "response" : { - "status" : 200, - "body" : "[\n {\n \"id\": 21,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 22,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 23,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 24,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 25,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 26,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 27,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 28,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 29,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 30,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 31,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 32,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 33,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 34,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 35,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 36,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 37,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 2\n },\n {\n \"id\": 38,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 39,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 40,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 41,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 0,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 1,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 2,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 3,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"08:00\",\n \"end_time\": \"10:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 4,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"11:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 5,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 6,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 7,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"13:00\",\n \"end_time\": \"15:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 8,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"16:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 9,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 10,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 11,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 12,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 13,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 14,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 15,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 16,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 17,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 18,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 19,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"14:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 20,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"19:00\",\n \"end_time\": \"21:00\",\n \"branch_id\": 3\n },\n\n {\n \"id\": 42,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 43,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 44,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 45,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 46,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 47,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 48,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 49,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 50,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 51,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 52,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 53,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 54,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 55,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 56,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 57,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 58,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 2\n },\n {\n \"id\": 59,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 3\n },\n {\n \"id\": 60,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 1\n },\n {\n \"id\": 61,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 2\n },\n {\n \"id\": 62,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 3\n }\n]\n", - "headers" : { } - }, - "uuid" : "479e26d6-5197-4d8f-a2dd-fefe64aabc14", - "persistent" : true, - "priority" : 5, - "insertionIndex" : 0, - "postServeActions" : [ ] -} \ No newline at end of file diff --git a/.docker/wiremock/cms/mappings/full-calendar-opening-hours-7dfc9127-ba40-4098-9dfb-ed65799e99f0.json b/.docker/wiremock/cms/mappings/full-calendar-opening-hours-7dfc9127-ba40-4098-9dfb-ed65799e99f0.json new file mode 100644 index 0000000000..1312ef617f --- /dev/null +++ b/.docker/wiremock/cms/mappings/full-calendar-opening-hours-7dfc9127-ba40-4098-9dfb-ed65799e99f0.json @@ -0,0 +1,18 @@ +{ + "id" : "7dfc9127-ba40-4098-9dfb-ed65799e99f0", + "name" : "Full Calendar Opening hours", + "request" : { + "url" : "/dpl_opening_hours?branch_id=12", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "[\n {\n \"id\": 21,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 22,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 23,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-11\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 24,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 25,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 26,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-12\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 27,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 28,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 29,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-13\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 30,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 31,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 32,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-14\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 33,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 34,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 35,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-15\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 36,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 37,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 12\n },\n {\n \"id\": 38,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-16\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 39,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 40,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 41,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-17\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 0,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 1,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 2,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-18\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 3,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"08:00\",\n \"end_time\": \"10:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 4,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"11:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 5,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-19\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 6,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 7,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"13:00\",\n \"end_time\": \"15:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 8,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-20\",\n \"start_time\": \"16:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 9,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 10,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 11,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-21\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 12,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 13,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 14,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-22\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 15,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 16,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 17,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-23\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 18,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 19,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"14:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 20,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-24\",\n \"start_time\": \"19:00\",\n \"end_time\": \"21:00\",\n \"branch_id\": 12\n },\n\n {\n \"id\": 42,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 43,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"13:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 44,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-25\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 45,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"09:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 46,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"12:00\",\n \"end_time\": \"14:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 47,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-26\",\n \"start_time\": \"15:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 48,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"08:00\",\n \"end_time\": \"11:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 49,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"12:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 50,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-27\",\n \"start_time\": \"17:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 51,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"09:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 52,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 53,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-28\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 54,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"08:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 55,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"13:00\",\n \"end_time\": \"16:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 56,\n \"category\": {\n \"title\": \"ร…bent\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-29\",\n \"start_time\": \"17:00\",\n \"end_time\": \"19:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 57,\n \"category\": {\n \"title\": \"Selvbetjening\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"09:00\",\n \"end_time\": \"12:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 58,\n \"category\": {\n \"title\": \"Med betjening\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"12:30\",\n \"end_time\": \"15:30\",\n \"branch_id\": 12\n },\n {\n \"id\": 59,\n \"category\": {\n \"title\": \"Telefontid\",\n \"color\": \"#FF0000\"\n },\n \"date\": \"2024-03-30\",\n \"start_time\": \"16:00\",\n \"end_time\": \"18:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 60,\n \"category\": {\n \"title\": \"Borgerservice\",\n \"color\": \"#008000\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"10:00\",\n \"end_time\": \"13:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 61,\n \"category\": {\n \"title\": \"Bรธrneetagen\",\n \"color\": \"#FFFF00\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"14:00\",\n \"end_time\": \"17:00\",\n \"branch_id\": 12\n },\n {\n \"id\": 62,\n \"category\": {\n \"title\": \"Makerlab\",\n \"color\": \"#0000FF\"\n },\n \"date\": \"2024-03-31\",\n \"start_time\": \"18:00\",\n \"end_time\": \"20:00\",\n \"branch_id\": 12\n }\n]\n", + "headers" : { } + }, + "uuid" : "7dfc9127-ba40-4098-9dfb-ed65799e99f0", + "persistent" : true, + "priority" : 5, + "insertionIndex" : 1, + "postServeActions" : [ ] +} \ No newline at end of file diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx index c1f69d4312..b22946a362 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx @@ -13,44 +13,21 @@ export default { defaultValue: "Remove event", control: { type: "text" } }, - openingHoursCategories: { + openingHoursEditorCategoriesConfig: { name: "Opening hours categories", - defaultValue: [ - { - title: "ร…bent", - color: "blue" - }, - { - title: "Selvbetjening", - color: "yellow" - }, - { - title: "Med betjening", - color: "green" - }, - { - title: "Telefontid", - color: "grey" - }, - { - title: "Borgerservice", - color: "orange" - }, - { - title: "Bรธrneetagen", - color: "lightblue" - }, - { - title: "Makerlab", - color: "purple" - } - ], - control: { type: "object" } + defaultValue: + '[{"title":"\\u00c5bent","color":"#B3DC6C"},{"title":"Telefontid","color":"#FBE983"}]', + control: { type: "text" } }, - openingHoursBranchId: { + openingHoursBranchIdConfig: { name: "Opening hours branch id", - defaultValue: 1, + defaultValue: "12", control: { type: "text" } + }, + useWireMockStartDate: { + name: "Starting date for wiremock purposes", + defaultValue: true, + control: { type: "boolean" } } } } as ComponentMeta; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx index 33dacee23b..a3565301d6 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx @@ -1,24 +1,26 @@ import React from "react"; -import GuardedApp from "../../components/guarded-app"; import { withText } from "../../core/utils/text"; import { withUrls } from "../../core/utils/url"; import OpeningHoursEditor, { OpeningHoursEditorType } from "./OpeningHoursEditor"; +import { withConfig } from "../../core/utils/config"; interface OpeningHoursEditorEntryTextProps { openingHoursRemoveEventButtonText: string; } +interface OpeningHoursEditorEntryConfigProps { + openingHoursEditorCategoriesConfig: string; + openingHoursBranchIdConfig: string; +} + const OpeningHoursEditorEntry: React.FC< - OpeningHoursEditorEntryTextProps & OpeningHoursEditorType -> = ({ openingHoursCategories, openingHoursBranchId }) => ( - - - + OpeningHoursEditorEntryTextProps & + OpeningHoursEditorType & + OpeningHoursEditorEntryConfigProps +> = ({ useWireMockStartDate }) => ( + ); -export default withUrls(withText(OpeningHoursEditorEntry)); +export default withConfig(withUrls(withText(OpeningHoursEditorEntry))); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 9bae082895..2155c5b53c 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -11,21 +11,27 @@ import Dialog from "../../components/dialog/Dialog"; import useDialog from "../../components/dialog/useDialog"; import DialogFomularAdd from "./DialogFomularAdd"; import { OpeningHoursCategoriesType } from "./types"; +import { useConfig } from "../../core/utils/config"; export type OpeningHoursEditorType = { - openingHoursCategories: OpeningHoursCategoriesType[]; - openingHoursBranchId: number; + useWireMockStartDate?: boolean; }; const OpeningHoursEditor: React.FC = ({ - openingHoursCategories, - openingHoursBranchId + useWireMockStartDate }) => { + const config = useConfig(); + const openingHoursCategories = config( + "openingHoursEditorCategoriesConfig", + { + transformer: "jsonParse" + } + ); const fullCalendarRef = React.useRef(null); const fullCalendarApi = fullCalendarRef.current?.getApi(); const { events, handleEventAdd, handleEventEditing, handleEventRemove } = - useOpeningHours(openingHoursBranchId); + useOpeningHours(); const { dialogContent, openDialogWithContent, closeDialog, dialogRef } = useDialog({ @@ -41,6 +47,7 @@ const OpeningHoursEditor: React.FC = ({
{ +const useOpeningHours = () => { + const config = useConfig(); + const openingHoursBranchId = config("openingHoursBranchIdConfig", { + transformer: "stringToNumber" + }); const queryClient = useQueryClient(); const { data: openingHoursData } = useDplOpeningHoursListGET({ branch_id: openingHoursBranchId diff --git a/src/core/utils/config.tsx b/src/core/utils/config.tsx index ae08197b68..bf35c98321 100644 --- a/src/core/utils/config.tsx +++ b/src/core/utils/config.tsx @@ -18,6 +18,13 @@ function config( } ): string[]; +function config( + key: string, + options: { + transformer: "stringToNumber"; + } +): number; + function config(key: string): T; function config(): T | string | string[] { @@ -32,7 +39,7 @@ export const useConfig = (): UseConfigFunction => { return ( key: string, options?: { - transformer?: "jsonParse" | "stringToArray"; + transformer?: "jsonParse" | "stringToArray" | "stringToNumber"; } ) => { if (typeof data[key] !== "string") { @@ -44,6 +51,9 @@ export const useConfig = (): UseConfigFunction => { if (options?.transformer === "stringToArray") { return data[key].split(","); } + if (options?.transformer === "stringToNumber") { + return Number(data[key]); + } return data?.[key]; }; }; From 309420ead9ba3b24c9e23584135204e582286ee3 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 4 Apr 2024 19:21:08 +0200 Subject: [PATCH 47/56] Add `isSameTime` to disable button in `EventForm` --- src/apps/opening-hours-editor/EventForm.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/apps/opening-hours-editor/EventForm.tsx b/src/apps/opening-hours-editor/EventForm.tsx index b1dbab3b4d..5c314a44b3 100644 --- a/src/apps/opening-hours-editor/EventForm.tsx +++ b/src/apps/opening-hours-editor/EventForm.tsx @@ -34,6 +34,7 @@ const EventForm: React.FC = ({ const [startTime, setStartTime] = useState(initialStartTime); const [endTime, setEndTime] = useState(initialEndTime); const [category, setCategory] = useState(initialCategory); + const isSameTime = startTime === endTime; // Reset the form when the initial values change // This is necessary because EventForm are reused @@ -103,7 +104,11 @@ const EventForm: React.FC = ({ max="00:00" /> {children} - From 7a3f07c9ffc9c3f09b77d90a87418124d7c0ae29 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 4 Apr 2024 19:21:56 +0200 Subject: [PATCH 48/56] Add CSS class and simplify`OpeningHoursEditorEventContent` --- .../OpeningHoursEditorEventContent.tsx | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx index 944f08fa29..3722c676d5 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditorEventContent.tsx @@ -11,23 +11,10 @@ const OpeningHoursEditorEventContent: React.FC< > = ({ eventInput }) => { const { event } = eventInput; return ( -
+
{event.title} -
- - {extractTime(event.start)} - {extractTime(event.end)} - +
+ {extractTime(event.start)} - {extractTime(event.end)}
); From baccd3f8aea1c8268a4d5f83f91c5b3467f968fb Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 4 Apr 2024 19:27:28 +0200 Subject: [PATCH 49/56] Upgrade `orval` and Execute `yarn codegen:client:dpl-cms` This upgrade was necessary because `orval` did not correctly capitalize (uppercase) the HTTP request methods. Additionally, I plan to run the codegen for the other `orval` clients in separate commits following this one. These will include: - "codegen:client:fbs" - "codegen:client:cover" - "codegen:client:publizon" --- docs/campaigns.md | 5 +- package.json | 2 +- .../opening-hours-editor/useOpeningHours.tsx | 27 +- src/apps/search-result/search-result.tsx | 5 +- src/core/dpl-cms/dpl-cms.ts | 526 ++++-- .../dpl-cms/model/campaignMatchPOST200.ts | 2 +- .../dpl-cms/model/campaignMatchPOST200Data.ts | 10 +- .../model/campaignMatchPOST200DataImage.ts | 6 +- .../model/campaignMatchPOSTBodyItem.ts | 2 +- .../campaignMatchPOSTBodyItemValuesItem.ts | 4 +- .../dpl-cms/model/campaignMatchPOSTFormat.ts | 8 +- .../dpl-cms/model/campaignMatchPOSTParams.ts | 11 +- .../model/dplOpeningHoursCreatePOST200.ts | 14 +- .../dplOpeningHoursCreatePOST200Category.ts | 4 +- .../model/dplOpeningHoursCreatePOSTBody.ts | 14 +- .../dplOpeningHoursCreatePOSTBodyCategory.ts | 4 +- .../model/dplOpeningHoursCreatePOSTFormat.ts | 8 +- .../model/dplOpeningHoursCreatePOSTParams.ts | 9 +- .../dplOpeningHoursDeleteDELETEFormat.ts | 8 +- .../dplOpeningHoursDeleteDELETEParams.ts | 9 +- .../model/dplOpeningHoursListGET200Item.ts | 14 +- .../dplOpeningHoursListGET200ItemCategory.ts | 4 +- .../model/dplOpeningHoursListGETFormat.ts | 8 +- .../model/dplOpeningHoursListGETParams.ts | 18 +- .../model/dplOpeningHoursUpdatePATCH200.ts | 14 +- .../dplOpeningHoursUpdatePATCH200Category.ts | 4 +- .../model/dplOpeningHoursUpdatePATCHBody.ts | 14 +- .../dplOpeningHoursUpdatePATCHBodyCategory.ts | 4 +- .../model/dplOpeningHoursUpdatePATCHFormat.ts | 8 +- .../model/dplOpeningHoursUpdatePATCHParams.ts | 9 +- src/core/dpl-cms/model/eventPATCHBody.ts | 8 +- .../model/eventPATCHBodyExternalData.ts | 6 +- src/core/dpl-cms/model/eventPATCHBodyState.ts | 2 +- src/core/dpl-cms/model/eventPATCHFormat.ts | 8 +- src/core/dpl-cms/model/eventPATCHParams.ts | 11 +- src/core/dpl-cms/model/eventsGET200Item.ts | 46 +- .../dpl-cms/model/eventsGET200ItemAddress.ts | 10 +- .../dpl-cms/model/eventsGET200ItemDateTime.ts | 6 +- .../model/eventsGET200ItemExternalData.ts | 6 +- .../dpl-cms/model/eventsGET200ItemImage.ts | 2 +- .../dpl-cms/model/eventsGET200ItemSeries.ts | 2 +- .../dpl-cms/model/eventsGET200ItemState.ts | 2 +- .../eventsGET200ItemTicketCategoriesItem.ts | 6 +- ...entsGET200ItemTicketCategoriesItemCount.ts | 2 +- ...entsGET200ItemTicketCategoriesItemPrice.ts | 2 +- src/core/dpl-cms/model/eventsGETFormat.ts | 8 +- src/core/dpl-cms/model/eventsGETParams.ts | 11 +- src/core/dpl-cms/model/index.ts | 114 +- src/core/dpl-cms/model/proxyUrlGET200.ts | 2 +- src/core/dpl-cms/model/proxyUrlGET200Data.ts | 2 +- src/core/dpl-cms/model/proxyUrlGETFormat.ts | 8 +- src/core/dpl-cms/model/proxyUrlGETParams.ts | 15 +- src/core/dpl-cms/mutator/fetcher.ts | 2 +- yarn.lock | 1452 ++++++----------- 54 files changed, 1127 insertions(+), 1381 deletions(-) diff --git a/docs/campaigns.md b/docs/campaigns.md index 1d378fd211..579c74afdd 100644 --- a/docs/campaigns.md +++ b/docs/campaigns.md @@ -53,7 +53,10 @@ look something like this: if (campaignFacets) { mutate( { - data: campaignFacets as CampaignMatchPOSTBodyItem[] + data: campaignFacets as CampaignMatchPOSTBodyItem[], + params: { + _format: "json" + } }, { onSuccess: (campaign) => { diff --git a/package.json b/package.json index d631f0ee82..8c230147a8 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "graphql": "^16.8.1", "graphql-tag": "^2.12.6", "lodash": "^4.17.21", - "orval": "^6.8.1", + "orval": "^6.26.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-device-detect": "^2.2.3", diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHours.tsx index 1c6cec91d8..e94fca1931 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHours.tsx @@ -34,7 +34,9 @@ const useOpeningHours = () => { }, [openingHoursData]); const onSuccess = () => { - queryClient.invalidateQueries(getDplOpeningHoursListGETQueryKey()); + queryClient.invalidateQueries( + getDplOpeningHoursListGETQueryKey({ branch_id: openingHoursBranchId }) + ); }; const onError = (message: string) => { @@ -47,7 +49,13 @@ const useOpeningHours = () => { const handleEventAdd = (event: DplOpeningHoursListGET200Item) => { createOpeningHours( { - data: event + data: { + ...event, + branch_id: openingHoursBranchId + }, + params: { + _format: "json" + } }, { onSuccess: () => { @@ -64,7 +72,13 @@ const useOpeningHours = () => { updateOpeningHours( { id: event.id.toString(), - data: event + data: { + ...event, + branch_id: openingHoursBranchId + }, + params: { + _format: "json" + } }, { onSuccess: () => { @@ -79,7 +93,12 @@ const useOpeningHours = () => { const handleEventRemove = (eventId: string) => { removeOpeningHours( - { id: eventId }, + { + id: eventId, + params: { + _format: "json" + } + }, { onSuccess: () => { onSuccess(); diff --git a/src/apps/search-result/search-result.tsx b/src/apps/search-result/search-result.tsx index 41ff0ba1c8..7ccbbff035 100644 --- a/src/apps/search-result/search-result.tsx +++ b/src/apps/search-result/search-result.tsx @@ -73,7 +73,10 @@ const SearchResult: React.FC = ({ q, pageSize }) => { if (campaignFacets) { mutate( { - data: campaignFacets as CampaignMatchPOSTBodyItem[] + data: campaignFacets as CampaignMatchPOSTBodyItem[], + params: { + _format: "json" + } }, { onSuccess: (campaign) => { diff --git a/src/core/dpl-cms/dpl-cms.ts b/src/core/dpl-cms/dpl-cms.ts index 5cade9eb6b..648981b0ab 100644 --- a/src/core/dpl-cms/dpl-cms.ts +++ b/src/core/dpl-cms/dpl-cms.ts @@ -1,19 +1,19 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import { - useQuery, - useMutation, - UseQueryOptions, - UseMutationOptions, - QueryFunction, +import { useMutation, useQuery } from "react-query"; +import type { MutationFunction, - UseQueryResult, - QueryKey + QueryFunction, + QueryKey, + UseMutationOptions, + UseMutationResult, + UseQueryOptions, + UseQueryResult } from "react-query"; import type { CampaignMatchPOST200, @@ -22,9 +22,9 @@ import type { DplOpeningHoursCreatePOST200, DplOpeningHoursCreatePOSTBody, DplOpeningHoursCreatePOSTParams, + DplOpeningHoursDeleteDELETEParams, DplOpeningHoursListGET200Item, DplOpeningHoursListGETParams, - DplOpeningHoursDeleteDELETEParams, DplOpeningHoursUpdatePATCH200, DplOpeningHoursUpdatePATCHBody, DplOpeningHoursUpdatePATCHParams, @@ -35,37 +35,26 @@ import type { ProxyUrlGET200, ProxyUrlGETParams } from "./model"; -import { fetcher, ErrorType, BodyType } from "./mutator/fetcher"; - -type AwaitedInput = PromiseLike | T; - -type Awaited = O extends AwaitedInput ? T : never; +import { fetcher } from "./mutator/fetcher"; +import type { ErrorType, BodyType } from "./mutator/fetcher"; /** * @summary Get campaign matching search result facets */ export const campaignMatchPOST = ( - campaignMatchPOSTBodyItem: CampaignMatchPOSTBodyItem[], - params?: CampaignMatchPOSTParams + campaignMatchPOSTBodyItem: BodyType, + params: CampaignMatchPOSTParams ) => { return fetcher({ url: `/dpl_campaign/match`, - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, data: campaignMatchPOSTBodyItem, params }); }; -export type CampaignMatchPOSTMutationResult = NonNullable< - Awaited> ->; -export type CampaignMatchPOSTMutationBody = BodyType< - CampaignMatchPOSTBodyItem[] ->; -export type CampaignMatchPOSTMutationError = ErrorType; - -export const useCampaignMatchPOST = < +export const getCampaignMatchPOSTMutationOptions = < TError = ErrorType, TContext = unknown >(options?: { @@ -74,18 +63,26 @@ export const useCampaignMatchPOST = < TError, { data: BodyType; - params?: CampaignMatchPOSTParams; + params: CampaignMatchPOSTParams; }, TContext >; -}) => { +}): UseMutationOptions< + Awaited>, + TError, + { + data: BodyType; + params: CampaignMatchPOSTParams; + }, + TContext +> => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< Awaited>, { data: BodyType; - params?: CampaignMatchPOSTParams; + params: CampaignMatchPOSTParams; } > = (props) => { const { data, params } = props ?? {}; @@ -93,15 +90,45 @@ export const useCampaignMatchPOST = < return campaignMatchPOST(data, params); }; - return useMutation< + return { mutationFn, ...mutationOptions }; +}; + +export type CampaignMatchPOSTMutationResult = NonNullable< + Awaited> +>; +export type CampaignMatchPOSTMutationBody = BodyType< + CampaignMatchPOSTBodyItem[] +>; +export type CampaignMatchPOSTMutationError = ErrorType; + +/** + * @summary Get campaign matching search result facets + */ +export const useCampaignMatchPOST = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType; - params?: CampaignMatchPOSTParams; + params: CampaignMatchPOSTParams; }, TContext - >(mutationFn, mutationOptions); + >; +}): UseMutationResult< + Awaited>, + TError, + { + data: BodyType; + params: CampaignMatchPOSTParams; + }, + TContext +> => { + const mutationOptions = getCampaignMatchPOSTMutationOptions(options); + + return useMutation(mutationOptions); }; /** @@ -109,25 +136,18 @@ export const useCampaignMatchPOST = < */ export const dplOpeningHoursCreatePOST = ( dplOpeningHoursCreatePOSTBody: BodyType, - params?: DplOpeningHoursCreatePOSTParams + params: DplOpeningHoursCreatePOSTParams ) => { return fetcher({ url: `/dpl_opening_hours`, - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, data: dplOpeningHoursCreatePOSTBody, params }); }; -export type DplOpeningHoursCreatePOSTMutationResult = NonNullable< - Awaited> ->; -export type DplOpeningHoursCreatePOSTMutationBody = - BodyType; -export type DplOpeningHoursCreatePOSTMutationError = ErrorType; - -export const useDplOpeningHoursCreatePOST = < +export const getDplOpeningHoursCreatePOSTMutationOptions = < TError = ErrorType, TContext = unknown >(options?: { @@ -136,18 +156,26 @@ export const useDplOpeningHoursCreatePOST = < TError, { data: BodyType; - params?: DplOpeningHoursCreatePOSTParams; + params: DplOpeningHoursCreatePOSTParams; }, TContext >; -}) => { +}): UseMutationOptions< + Awaited>, + TError, + { + data: BodyType; + params: DplOpeningHoursCreatePOSTParams; + }, + TContext +> => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< Awaited>, { data: BodyType; - params?: DplOpeningHoursCreatePOSTParams; + params: DplOpeningHoursCreatePOSTParams; } > = (props) => { const { data, params } = props ?? {}; @@ -155,46 +183,72 @@ export const useDplOpeningHoursCreatePOST = < return dplOpeningHoursCreatePOST(data, params); }; - return useMutation< + return { mutationFn, ...mutationOptions }; +}; + +export type DplOpeningHoursCreatePOSTMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursCreatePOSTMutationBody = + BodyType; +export type DplOpeningHoursCreatePOSTMutationError = ErrorType; + +/** + * @summary Create individual opening hours + */ +export const useDplOpeningHoursCreatePOST = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< Awaited>, TError, { data: BodyType; - params?: DplOpeningHoursCreatePOSTParams; + params: DplOpeningHoursCreatePOSTParams; }, TContext - >(mutationFn, mutationOptions); + >; +}): UseMutationResult< + Awaited>, + TError, + { + data: BodyType; + params: DplOpeningHoursCreatePOSTParams; + }, + TContext +> => { + const mutationOptions = getDplOpeningHoursCreatePOSTMutationOptions(options); + + return useMutation(mutationOptions); }; /** * @summary List all opening hours */ export const dplOpeningHoursListGET = ( - params?: DplOpeningHoursListGETParams, + params: DplOpeningHoursListGETParams, signal?: AbortSignal ) => { return fetcher({ url: `/dpl_opening_hours`, - method: "get", - signal, - params + method: "GET", + params, + signal }); }; export const getDplOpeningHoursListGETQueryKey = ( - params?: DplOpeningHoursListGETParams -) => [`/dpl_opening_hours`, ...(params ? [params] : [])]; - -export type DplOpeningHoursListGETQueryResult = NonNullable< - Awaited> ->; -export type DplOpeningHoursListGETQueryError = ErrorType; + params: DplOpeningHoursListGETParams +) => { + return [`/dpl_opening_hours`, ...(params ? [params] : [])] as const; +}; -export const useDplOpeningHoursListGET = < +export const getDplOpeningHoursListGETQueryOptions = < TData = Awaited>, TError = ErrorType >( - params?: DplOpeningHoursListGETParams, + params: DplOpeningHoursListGETParams, options?: { query?: UseQueryOptions< Awaited>, @@ -202,7 +256,7 @@ export const useDplOpeningHoursListGET = < TData >; } -): UseQueryResult & { queryKey: QueryKey } => { +) => { const { query: queryOptions } = options ?? {}; const queryKey = @@ -212,16 +266,43 @@ export const useDplOpeningHoursListGET = < Awaited> > = ({ signal }) => dplOpeningHoursListGET(params, signal); - const query = useQuery< + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< Awaited>, TError, TData - >(queryKey, queryFn, queryOptions); + > & { queryKey: QueryKey }; +}; + +export type DplOpeningHoursListGETQueryResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursListGETQueryError = ErrorType; - return { - queryKey, - ...query +/** + * @summary List all opening hours + */ +export const useDplOpeningHoursListGET = < + TData = Awaited>, + TError = ErrorType +>( + params: DplOpeningHoursListGETParams, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryResult & { queryKey: QueryKey } => { + const queryOptions = getDplOpeningHoursListGETQueryOptions(params, options); + + const query = useQuery(queryOptions) as UseQueryResult & { + queryKey: QueryKey; }; + + query.queryKey = queryOptions.queryKey; + + return query; }; /** @@ -229,49 +310,74 @@ export const useDplOpeningHoursListGET = < */ export const dplOpeningHoursDeleteDELETE = ( id: string, - params?: DplOpeningHoursDeleteDELETEParams + params: DplOpeningHoursDeleteDELETEParams ) => { return fetcher({ url: `/dpl_opening_hours/${id}`, - method: "delete", + method: "DELETE", params }); }; -export type DplOpeningHoursDeleteDELETEMutationResult = NonNullable< - Awaited> ->; - -export type DplOpeningHoursDeleteDELETEMutationError = ErrorType; - -export const useDplOpeningHoursDeleteDELETE = < - TError = ErrorType, +export const getDplOpeningHoursDeleteDELETEMutationOptions = < + TError = ErrorType, TContext = unknown >(options?: { mutation?: UseMutationOptions< Awaited>, TError, - { id: string; params?: DplOpeningHoursDeleteDELETEParams }, + { id: string; params: DplOpeningHoursDeleteDELETEParams }, TContext >; -}) => { +}): UseMutationOptions< + Awaited>, + TError, + { id: string; params: DplOpeningHoursDeleteDELETEParams }, + TContext +> => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< Awaited>, - { id: string; params?: DplOpeningHoursDeleteDELETEParams } + { id: string; params: DplOpeningHoursDeleteDELETEParams } > = (props) => { const { id, params } = props ?? {}; return dplOpeningHoursDeleteDELETE(id, params); }; - return useMutation< + return { mutationFn, ...mutationOptions }; +}; + +export type DplOpeningHoursDeleteDELETEMutationResult = NonNullable< + Awaited> +>; + +export type DplOpeningHoursDeleteDELETEMutationError = ErrorType; + +/** + * @summary Delete individual opening hours + */ +export const useDplOpeningHoursDeleteDELETE = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< Awaited>, TError, - { id: string; params?: DplOpeningHoursDeleteDELETEParams }, + { id: string; params: DplOpeningHoursDeleteDELETEParams }, TContext - >(mutationFn, mutationOptions); + >; +}): UseMutationResult< + Awaited>, + TError, + { id: string; params: DplOpeningHoursDeleteDELETEParams }, + TContext +> => { + const mutationOptions = + getDplOpeningHoursDeleteDELETEMutationOptions(options); + + return useMutation(mutationOptions); }; /** @@ -280,25 +386,18 @@ export const useDplOpeningHoursDeleteDELETE = < export const dplOpeningHoursUpdatePATCH = ( id: string, dplOpeningHoursUpdatePATCHBody: BodyType, - params?: DplOpeningHoursUpdatePATCHParams + params: DplOpeningHoursUpdatePATCHParams ) => { return fetcher({ url: `/dpl_opening_hours/${id}`, - method: "patch", + method: "PATCH", headers: { "Content-Type": "application/json" }, data: dplOpeningHoursUpdatePATCHBody, params }); }; -export type DplOpeningHoursUpdatePATCHMutationResult = NonNullable< - Awaited> ->; -export type DplOpeningHoursUpdatePATCHMutationBody = - BodyType; -export type DplOpeningHoursUpdatePATCHMutationError = ErrorType; - -export const useDplOpeningHoursUpdatePATCH = < +export const getDplOpeningHoursUpdatePATCHMutationOptions = < TError = ErrorType, TContext = unknown >(options?: { @@ -308,11 +407,20 @@ export const useDplOpeningHoursUpdatePATCH = < { id: string; data: BodyType; - params?: DplOpeningHoursUpdatePATCHParams; + params: DplOpeningHoursUpdatePATCHParams; }, TContext >; -}) => { +}): UseMutationOptions< + Awaited>, + TError, + { + id: string; + data: BodyType; + params: DplOpeningHoursUpdatePATCHParams; + }, + TContext +> => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< @@ -320,7 +428,7 @@ export const useDplOpeningHoursUpdatePATCH = < { id: string; data: BodyType; - params?: DplOpeningHoursUpdatePATCHParams; + params: DplOpeningHoursUpdatePATCHParams; } > = (props) => { const { id, data, params } = props ?? {}; @@ -328,16 +436,46 @@ export const useDplOpeningHoursUpdatePATCH = < return dplOpeningHoursUpdatePATCH(id, data, params); }; - return useMutation< + return { mutationFn, ...mutationOptions }; +}; + +export type DplOpeningHoursUpdatePATCHMutationResult = NonNullable< + Awaited> +>; +export type DplOpeningHoursUpdatePATCHMutationBody = + BodyType; +export type DplOpeningHoursUpdatePATCHMutationError = ErrorType; + +/** + * @summary Update individual opening hours + */ +export const useDplOpeningHoursUpdatePATCH = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< Awaited>, TError, { id: string; data: BodyType; - params?: DplOpeningHoursUpdatePATCHParams; + params: DplOpeningHoursUpdatePATCHParams; }, TContext - >(mutationFn, mutationOptions); + >; +}): UseMutationResult< + Awaited>, + TError, + { + id: string; + data: BodyType; + params: DplOpeningHoursUpdatePATCHParams; + }, + TContext +> => { + const mutationOptions = getDplOpeningHoursUpdatePATCHMutationOptions(options); + + return useMutation(mutationOptions); }; /** @@ -346,80 +484,98 @@ export const useDplOpeningHoursUpdatePATCH = < export const eventPATCH = ( uuid: string, eventPATCHBody: BodyType, - params?: EventPATCHParams + params: EventPATCHParams ) => { return fetcher({ url: `/dpl_event/${uuid}`, - method: "patch", + method: "PATCH", headers: { "Content-Type": "application/json" }, data: eventPATCHBody, params }); }; -export type EventPATCHMutationResult = NonNullable< - Awaited> ->; -export type EventPATCHMutationBody = BodyType; -export type EventPATCHMutationError = ErrorType; - -export const useEventPATCH = < - TError = ErrorType, +export const getEventPATCHMutationOptions = < + TError = ErrorType, TContext = unknown >(options?: { mutation?: UseMutationOptions< Awaited>, TError, - { uuid: string; data: BodyType; params?: EventPATCHParams }, + { uuid: string; data: BodyType; params: EventPATCHParams }, TContext >; -}) => { +}): UseMutationOptions< + Awaited>, + TError, + { uuid: string; data: BodyType; params: EventPATCHParams }, + TContext +> => { const { mutation: mutationOptions } = options ?? {}; const mutationFn: MutationFunction< Awaited>, - { uuid: string; data: BodyType; params?: EventPATCHParams } + { uuid: string; data: BodyType; params: EventPATCHParams } > = (props) => { const { uuid, data, params } = props ?? {}; return eventPATCH(uuid, data, params); }; - return useMutation< + return { mutationFn, ...mutationOptions }; +}; + +export type EventPATCHMutationResult = NonNullable< + Awaited> +>; +export type EventPATCHMutationBody = BodyType; +export type EventPATCHMutationError = ErrorType; + +/** + * @summary Update single events + */ +export const useEventPATCH = < + TError = ErrorType, + TContext = unknown +>(options?: { + mutation?: UseMutationOptions< Awaited>, TError, - { uuid: string; data: BodyType; params?: EventPATCHParams }, + { uuid: string; data: BodyType; params: EventPATCHParams }, TContext - >(mutationFn, mutationOptions); + >; +}): UseMutationResult< + Awaited>, + TError, + { uuid: string; data: BodyType; params: EventPATCHParams }, + TContext +> => { + const mutationOptions = getEventPATCHMutationOptions(options); + + return useMutation(mutationOptions); }; /** * @summary Retrieve all events */ -export const eventsGET = (params?: EventsGETParams, signal?: AbortSignal) => { +export const eventsGET = (params: EventsGETParams, signal?: AbortSignal) => { return fetcher({ url: `/dpl_event`, - method: "get", - signal, - params + method: "GET", + params, + signal }); }; -export const getEventsGETQueryKey = (params?: EventsGETParams) => [ - `/dpl_event`, - ...(params ? [params] : []) -]; - -export type EventsGETQueryResult = NonNullable< - Awaited> ->; -export type EventsGETQueryError = ErrorType; +export const getEventsGETQueryKey = (params: EventsGETParams) => { + return [`/dpl_event`, ...(params ? [params] : [])] as const; +}; -export const useEventsGET = < +export const getEventsGETQueryOptions = < TData = Awaited>, TError = ErrorType >( - params?: EventsGETParams, + params: EventsGETParams, options?: { query?: UseQueryOptions< Awaited>, @@ -427,7 +583,7 @@ export const useEventsGET = < TData >; } -): UseQueryResult & { queryKey: QueryKey } => { +) => { const { query: queryOptions } = options ?? {}; const queryKey = queryOptions?.queryKey ?? getEventsGETQueryKey(params); @@ -436,68 +592,114 @@ export const useEventsGET = < signal }) => eventsGET(params, signal); - const query = useQuery>, TError, TData>( - queryKey, - queryFn, - queryOptions - ); + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: QueryKey }; +}; + +export type EventsGETQueryResult = NonNullable< + Awaited> +>; +export type EventsGETQueryError = ErrorType; + +/** + * @summary Retrieve all events + */ +export const useEventsGET = < + TData = Awaited>, + TError = ErrorType +>( + params: EventsGETParams, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryResult & { queryKey: QueryKey } => { + const queryOptions = getEventsGETQueryOptions(params, options); - return { - queryKey, - ...query + const query = useQuery(queryOptions) as UseQueryResult & { + queryKey: QueryKey; }; + + query.queryKey = queryOptions.queryKey; + + return query; }; /** * @summary Generate proxy url */ export const proxyUrlGET = ( - params?: ProxyUrlGETParams, + params: ProxyUrlGETParams, signal?: AbortSignal ) => { return fetcher({ url: `/dpl-url-proxy`, - method: "get", - signal, - params + method: "GET", + params, + signal }); }; -export const getProxyUrlGETQueryKey = (params?: ProxyUrlGETParams) => [ - `/dpl-url-proxy`, - ...(params ? [params] : []) -]; - -export type ProxyUrlGETQueryResult = NonNullable< - Awaited> ->; -export type ProxyUrlGETQueryError = ErrorType; +export const getProxyUrlGETQueryKey = (params: ProxyUrlGETParams) => { + return [`/dpl-url-proxy`, ...(params ? [params] : [])] as const; +}; -export const useProxyUrlGET = < +export const getProxyUrlGETQueryOptions = < TData = Awaited>, TError = ErrorType >( - params?: ProxyUrlGETParams, + params: ProxyUrlGETParams, queryOptions?: UseQueryOptions< Awaited>, TError, TData > -): UseQueryResult & { queryKey: QueryKey } => { +) => { const queryKey = queryOptions?.queryKey ?? getProxyUrlGETQueryKey(params); const queryFn: QueryFunction>> = ({ signal - }) => proxyUrlGET(params); + }) => proxyUrlGET(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: QueryKey }; +}; + +export type ProxyUrlGETQueryResult = NonNullable< + Awaited> +>; +export type ProxyUrlGETQueryError = ErrorType; - const query = useQuery< +/** + * @summary Generate proxy url + */ +export const useProxyUrlGET = < + TData = Awaited>, + TError = ErrorType +>( + params: ProxyUrlGETParams, + queryOptions?: UseQueryOptions< Awaited>, TError, TData - >(queryKey, queryFn, queryOptions); + > +): UseQueryResult & { queryKey: QueryKey } => { + const options = getProxyUrlGETQueryOptions(params, queryOptions); - return { - queryKey, - ...query + const query = useQuery(options) as UseQueryResult & { + queryKey: QueryKey; }; + + query.queryKey = options.queryKey; + + return query; }; diff --git a/src/core/dpl-cms/model/campaignMatchPOST200.ts b/src/core/dpl-cms/model/campaignMatchPOST200.ts index e187ce43ca..dd9d325d59 100644 --- a/src/core/dpl-cms/model/campaignMatchPOST200.ts +++ b/src/core/dpl-cms/model/campaignMatchPOST200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/campaignMatchPOST200Data.ts b/src/core/dpl-cms/model/campaignMatchPOST200Data.ts index fc5240295b..2fa9f3054a 100644 --- a/src/core/dpl-cms/model/campaignMatchPOST200Data.ts +++ b/src/core/dpl-cms/model/campaignMatchPOST200Data.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -13,12 +13,12 @@ import type { CampaignMatchPOST200DataImage } from "./campaignMatchPOST200DataIm export type CampaignMatchPOST200Data = { /** The campaign id */ id?: string; - /** The title of the campaign */ - title?: string; - /** The text to be shown for the campaign */ - text?: string; /** The image to be shown for the campaign */ image?: CampaignMatchPOST200DataImage; + /** The text to be shown for the campaign */ + text?: string; + /** The title of the campaign */ + title?: string; /** The url the campaign should link to */ url?: string; }; diff --git a/src/core/dpl-cms/model/campaignMatchPOST200DataImage.ts b/src/core/dpl-cms/model/campaignMatchPOST200DataImage.ts index 3ddff54460..ea856479a1 100644 --- a/src/core/dpl-cms/model/campaignMatchPOST200DataImage.ts +++ b/src/core/dpl-cms/model/campaignMatchPOST200DataImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -10,8 +10,8 @@ * The image to be shown for the campaign */ export type CampaignMatchPOST200DataImage = { - /** The url to the image */ - url?: string; /** The alt text for the image */ alt?: string; + /** The url to the image */ + url?: string; }; diff --git a/src/core/dpl-cms/model/campaignMatchPOSTBodyItem.ts b/src/core/dpl-cms/model/campaignMatchPOSTBodyItem.ts index 5473159eac..e9ed351d35 100644 --- a/src/core/dpl-cms/model/campaignMatchPOSTBodyItem.ts +++ b/src/core/dpl-cms/model/campaignMatchPOSTBodyItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/campaignMatchPOSTBodyItemValuesItem.ts b/src/core/dpl-cms/model/campaignMatchPOSTBodyItemValuesItem.ts index 08da5096bd..7ede3b3ff9 100644 --- a/src/core/dpl-cms/model/campaignMatchPOSTBodyItemValuesItem.ts +++ b/src/core/dpl-cms/model/campaignMatchPOSTBodyItemValuesItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,6 +8,6 @@ export type CampaignMatchPOSTBodyItemValuesItem = { key?: string; - term?: string; score?: number; + term?: string; }; diff --git a/src/core/dpl-cms/model/campaignMatchPOSTFormat.ts b/src/core/dpl-cms/model/campaignMatchPOSTFormat.ts index c96e610c69..6759ad7d17 100644 --- a/src/core/dpl-cms/model/campaignMatchPOSTFormat.ts +++ b/src/core/dpl-cms/model/campaignMatchPOSTFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type CampaignMatchPOSTFormat = - typeof CampaignMatchPOSTFormat[keyof typeof CampaignMatchPOSTFormat]; +export type CampaignMatchPOST_Format = + typeof CampaignMatchPOST_Format[keyof typeof CampaignMatchPOST_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const CampaignMatchPOSTFormat = { +export const CampaignMatchPOST_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/campaignMatchPOSTParams.ts b/src/core/dpl-cms/model/campaignMatchPOSTParams.ts index 3891386a5c..91ab240b2f 100644 --- a/src/core/dpl-cms/model/campaignMatchPOSTParams.ts +++ b/src/core/dpl-cms/model/campaignMatchPOSTParams.ts @@ -1,10 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { CampaignMatchPOSTFormat } from "./campaignMatchPOSTFormat"; +import type { CampaignMatchPOST_Format } from "./campaignMatchPOSTFormat"; -export type CampaignMatchPOSTParams = { _format?: CampaignMatchPOSTFormat }; +export type CampaignMatchPOSTParams = { + /** + * Request format + */ + _format?: CampaignMatchPOST_Format; +}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts index 8ae7d83627..ba11ad3a80 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,15 +8,15 @@ import type { DplOpeningHoursCreatePOST200Category } from "./dplOpeningHoursCreatePOST200Category"; export type DplOpeningHoursCreatePOST200 = { - /** An serial unique id of the opening hours instance. */ - id: number; + /** The id for the branch the instance belongs to */ + branch_id: number; category: DplOpeningHoursCreatePOST200Category; /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; + /** An serial unique id of the opening hours instance. */ + id: number; + /** When the opening hours start. In format HH:MM */ + start_time: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts index 37ef7cdc2c..611f06bce0 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOST200Category.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -7,7 +7,7 @@ */ export type DplOpeningHoursCreatePOST200Category = { - title: string; /** A CSS compatible color code which can be used to represent the category */ color: string; + title: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts index fb29e67cc0..580c8c3fcc 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,15 +8,15 @@ import type { DplOpeningHoursCreatePOSTBodyCategory } from "./dplOpeningHoursCreatePOSTBodyCategory"; export type DplOpeningHoursCreatePOSTBody = { - /** An serial unique id of the opening hours instance. */ - id?: number; + /** The id for the branch the instance belongs to */ + branch_id: number; category: DplOpeningHoursCreatePOSTBodyCategory; /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; + /** An serial unique id of the opening hours instance. */ + id?: number; + /** When the opening hours start. In format HH:MM */ + start_time: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts index 1a398fd690..8195835610 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTBodyCategory.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -7,7 +7,7 @@ */ export type DplOpeningHoursCreatePOSTBodyCategory = { - title: string; /** A CSS compatible color code which can be used to represent the category */ color: string; + title: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts index 35b1d321eb..7d1a949971 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type DplOpeningHoursCreatePOSTFormat = - typeof DplOpeningHoursCreatePOSTFormat[keyof typeof DplOpeningHoursCreatePOSTFormat]; +export type DplOpeningHoursCreatePOST_Format = + typeof DplOpeningHoursCreatePOST_Format[keyof typeof DplOpeningHoursCreatePOST_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursCreatePOSTFormat = { +export const DplOpeningHoursCreatePOST_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts index 8cb2d34775..836093470d 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursCreatePOSTParams.ts @@ -1,12 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { DplOpeningHoursCreatePOSTFormat } from "./dplOpeningHoursCreatePOSTFormat"; +import type { DplOpeningHoursCreatePOST_Format } from "./dplOpeningHoursCreatePOSTFormat"; export type DplOpeningHoursCreatePOSTParams = { - _format?: DplOpeningHoursCreatePOSTFormat; + /** + * Request format + */ + _format?: DplOpeningHoursCreatePOST_Format; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts index bf21d515a9..f3810b4444 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type DplOpeningHoursDeleteDELETEFormat = - typeof DplOpeningHoursDeleteDELETEFormat[keyof typeof DplOpeningHoursDeleteDELETEFormat]; +export type DplOpeningHoursDeleteDELETE_Format = + typeof DplOpeningHoursDeleteDELETE_Format[keyof typeof DplOpeningHoursDeleteDELETE_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursDeleteDELETEFormat = { +export const DplOpeningHoursDeleteDELETE_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts index db37723cb5..703c616efc 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursDeleteDELETEParams.ts @@ -1,12 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { DplOpeningHoursDeleteDELETEFormat } from "./dplOpeningHoursDeleteDELETEFormat"; +import type { DplOpeningHoursDeleteDELETE_Format } from "./dplOpeningHoursDeleteDELETEFormat"; export type DplOpeningHoursDeleteDELETEParams = { - _format?: DplOpeningHoursDeleteDELETEFormat; + /** + * Request format + */ + _format?: DplOpeningHoursDeleteDELETE_Format; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts index 06f295e464..0d5b5fb743 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200Item.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,15 +8,15 @@ import type { DplOpeningHoursListGET200ItemCategory } from "./dplOpeningHoursListGET200ItemCategory"; export type DplOpeningHoursListGET200Item = { - /** An serial unique id of the opening hours instance. */ - id: number; + /** The id for the branch the instance belongs to */ + branch_id: number; category: DplOpeningHoursListGET200ItemCategory; /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; + /** An serial unique id of the opening hours instance. */ + id: number; + /** When the opening hours start. In format HH:MM */ + start_time: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts index c4e673e31a..e7c3a95ca5 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGET200ItemCategory.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -7,7 +7,7 @@ */ export type DplOpeningHoursListGET200ItemCategory = { - title: string; /** A CSS compatible color code which can be used to represent the category */ color: string; + title: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts index d294d873c0..734fc70671 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGETFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type DplOpeningHoursListGETFormat = - typeof DplOpeningHoursListGETFormat[keyof typeof DplOpeningHoursListGETFormat]; +export type DplOpeningHoursListGET_Format = + typeof DplOpeningHoursListGET_Format[keyof typeof DplOpeningHoursListGET_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursListGETFormat = { +export const DplOpeningHoursListGET_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts index 7dd497aed3..d7d9bfd877 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursListGETParams.ts @@ -1,15 +1,27 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { DplOpeningHoursListGETFormat } from "./dplOpeningHoursListGETFormat"; +import type { DplOpeningHoursListGET_Format } from "./dplOpeningHoursListGETFormat"; export type DplOpeningHoursListGETParams = { - _format?: DplOpeningHoursListGETFormat; + /** + * Request format + */ + _format?: DplOpeningHoursListGET_Format; + /** + * The id of the branch for which to retrieve opening hours. + */ branch_id?: number; + /** + * Retrieve opening hours which occur after and including the provided date. In ISO 8601 format. + */ from_date?: string; + /** + * Retrieve opening hours which occur before and including the provided date. In ISO 8601 format. + */ to_date?: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts index edc4a4fa7e..3a14536dcb 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,15 +8,15 @@ import type { DplOpeningHoursUpdatePATCH200Category } from "./dplOpeningHoursUpdatePATCH200Category"; export type DplOpeningHoursUpdatePATCH200 = { - /** An serial unique id of the opening hours instance. */ - id: number; + /** The id for the branch the instance belongs to */ + branch_id: number; category: DplOpeningHoursUpdatePATCH200Category; /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; + /** An serial unique id of the opening hours instance. */ + id: number; + /** When the opening hours start. In format HH:MM */ + start_time: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts index 853f9c98ba..9800c81bfa 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCH200Category.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -7,7 +7,7 @@ */ export type DplOpeningHoursUpdatePATCH200Category = { - title: string; /** A CSS compatible color code which can be used to represent the category */ color: string; + title: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts index 6b84f621de..340f793ea4 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -8,15 +8,15 @@ import type { DplOpeningHoursUpdatePATCHBodyCategory } from "./dplOpeningHoursUpdatePATCHBodyCategory"; export type DplOpeningHoursUpdatePATCHBody = { - /** An serial unique id of the opening hours instance. */ - id: number; + /** The id for the branch the instance belongs to */ + branch_id: number; category: DplOpeningHoursUpdatePATCHBodyCategory; /** The date which the opening hours applies to. In ISO 8601 format. */ date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; /** When the opening hours end. In format HH:MM */ end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; + /** An serial unique id of the opening hours instance. */ + id: number; + /** When the opening hours start. In format HH:MM */ + start_time: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts index 58d6c18f2c..98434b6438 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHBodyCategory.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -7,7 +7,7 @@ */ export type DplOpeningHoursUpdatePATCHBodyCategory = { - title: string; /** A CSS compatible color code which can be used to represent the category */ color: string; + title: string; }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts index 6651804d3f..fd0c9142d8 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type DplOpeningHoursUpdatePATCHFormat = - typeof DplOpeningHoursUpdatePATCHFormat[keyof typeof DplOpeningHoursUpdatePATCHFormat]; +export type DplOpeningHoursUpdatePATCH_Format = + typeof DplOpeningHoursUpdatePATCH_Format[keyof typeof DplOpeningHoursUpdatePATCH_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursUpdatePATCHFormat = { +export const DplOpeningHoursUpdatePATCH_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts index 0e41f89ea9..f630489f25 100644 --- a/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts +++ b/src/core/dpl-cms/model/dplOpeningHoursUpdatePATCHParams.ts @@ -1,12 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { DplOpeningHoursUpdatePATCHFormat } from "./dplOpeningHoursUpdatePATCHFormat"; +import type { DplOpeningHoursUpdatePATCH_Format } from "./dplOpeningHoursUpdatePATCHFormat"; export type DplOpeningHoursUpdatePATCHParams = { - _format?: DplOpeningHoursUpdatePATCHFormat; + /** + * Request format + */ + _format?: DplOpeningHoursUpdatePATCH_Format; }; diff --git a/src/core/dpl-cms/model/eventPATCHBody.ts b/src/core/dpl-cms/model/eventPATCHBody.ts index e6008b04e8..fe5ea905a0 100644 --- a/src/core/dpl-cms/model/eventPATCHBody.ts +++ b/src/core/dpl-cms/model/eventPATCHBody.ts @@ -1,16 +1,16 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { EventPATCHBodyState } from "./eventPATCHBodyState"; import type { EventPATCHBodyExternalData } from "./eventPATCHBodyExternalData"; +import type { EventPATCHBodyState } from "./eventPATCHBodyState"; export type EventPATCHBody = { - /** The state of the event. */ - state?: EventPATCHBodyState; /** Data for the event provided by a third party. */ external_data?: EventPATCHBodyExternalData; + /** The state of the event. */ + state?: EventPATCHBodyState; }; diff --git a/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts b/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts index 2a09817473..ff1a946cee 100644 --- a/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts +++ b/src/core/dpl-cms/model/eventPATCHBodyExternalData.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -10,8 +10,8 @@ * Data for the event provided by a third party. */ export type EventPATCHBodyExternalData = { - /** An absolute url provided by the third party where end users can access the event. */ - url?: string; /** An absolute url provided by the third party where editorial users can administer the event. Accessing this url should require authentication. */ admin_url?: string; + /** An absolute url provided by the third party where end users can access the event. */ + url?: string; }; diff --git a/src/core/dpl-cms/model/eventPATCHBodyState.ts b/src/core/dpl-cms/model/eventPATCHBodyState.ts index 4a9a27d384..6311f48d53 100644 --- a/src/core/dpl-cms/model/eventPATCHBodyState.ts +++ b/src/core/dpl-cms/model/eventPATCHBodyState.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventPATCHFormat.ts b/src/core/dpl-cms/model/eventPATCHFormat.ts index 872f86e6ba..e9c39b7c91 100644 --- a/src/core/dpl-cms/model/eventPATCHFormat.ts +++ b/src/core/dpl-cms/model/eventPATCHFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type EventPATCHFormat = - typeof EventPATCHFormat[keyof typeof EventPATCHFormat]; +export type EventPATCH_Format = + typeof EventPATCH_Format[keyof typeof EventPATCH_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const EventPATCHFormat = { +export const EventPATCH_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/eventPATCHParams.ts b/src/core/dpl-cms/model/eventPATCHParams.ts index 9f2c8c35a1..5c2c92bee5 100644 --- a/src/core/dpl-cms/model/eventPATCHParams.ts +++ b/src/core/dpl-cms/model/eventPATCHParams.ts @@ -1,10 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { EventPATCHFormat } from "./eventPATCHFormat"; +import type { EventPATCH_Format } from "./eventPATCHFormat"; -export type EventPATCHParams = { _format?: EventPATCHFormat }; +export type EventPATCHParams = { + /** + * Request format + */ + _format?: EventPATCH_Format; +}; diff --git a/src/core/dpl-cms/model/eventsGET200Item.ts b/src/core/dpl-cms/model/eventsGET200Item.ts index 8fa4d7f597..ad66a897b1 100644 --- a/src/core/dpl-cms/model/eventsGET200Item.ts +++ b/src/core/dpl-cms/model/eventsGET200Item.ts @@ -1,43 +1,43 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ +import type { EventsGET200ItemAddress } from "./eventsGET200ItemAddress"; +import type { EventsGET200ItemDateTime } from "./eventsGET200ItemDateTime"; +import type { EventsGET200ItemExternalData } from "./eventsGET200ItemExternalData"; import type { EventsGET200ItemImage } from "./eventsGET200ItemImage"; +import type { EventsGET200ItemSeries } from "./eventsGET200ItemSeries"; import type { EventsGET200ItemState } from "./eventsGET200ItemState"; -import type { EventsGET200ItemDateTime } from "./eventsGET200ItemDateTime"; -import type { EventsGET200ItemAddress } from "./eventsGET200ItemAddress"; import type { EventsGET200ItemTicketCategoriesItem } from "./eventsGET200ItemTicketCategoriesItem"; -import type { EventsGET200ItemSeries } from "./eventsGET200ItemSeries"; -import type { EventsGET200ItemExternalData } from "./eventsGET200ItemExternalData"; export type EventsGET200Item = { - /** A unique identifer for the event. */ - uuid: string; - /** The event title. */ - title: string; - /** An absolute url end users should use to view the event at the website. */ - url: string; + /** Where the event occurs. */ + address?: EventsGET200ItemAddress; /** When the event was created. In ISO 8601 format. */ created_at: string; - /** When the event was last updated. In ISO 8601 format. */ - updated_at: string; - /** The main image for the event. */ - image?: EventsGET200ItemImage; - /** The state of the event. */ - state: EventsGET200ItemState; /** When the event occurs. */ date_time: EventsGET200ItemDateTime; - /** Where the event occurs. */ - address?: EventsGET200ItemAddress; - /** Ticket categories used for the event. Not present for events without ticketing. */ - ticket_categories?: EventsGET200ItemTicketCategoriesItem[]; - /** An event may be part of a series. One example of this is recurring events. */ - series?: EventsGET200ItemSeries; /** An editorial description of the event. */ description?: string; /** Data for the event provided by a third party. */ external_data?: EventsGET200ItemExternalData; + /** The main image for the event. */ + image?: EventsGET200ItemImage; + /** An event may be part of a series. One example of this is recurring events. */ + series?: EventsGET200ItemSeries; + /** The state of the event. */ + state: EventsGET200ItemState; + /** Ticket categories used for the event. Not present for events without ticketing. */ + ticket_categories?: EventsGET200ItemTicketCategoriesItem[]; + /** The event title. */ + title: string; + /** When the event was last updated. In ISO 8601 format. */ + updated_at: string; + /** An absolute url end users should use to view the event at the website. */ + url: string; + /** A unique identifer for the event. */ + uuid: string; }; diff --git a/src/core/dpl-cms/model/eventsGET200ItemAddress.ts b/src/core/dpl-cms/model/eventsGET200ItemAddress.ts index bbe4bdfe5a..1bcff5ccfa 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemAddress.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemAddress.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -10,14 +10,14 @@ * Where the event occurs. */ export type EventsGET200ItemAddress = { + /** City. */ + city: string; + /** Country code in ISO 3166-1 alpha-2 format. E.g. DK for Denmark. */ + country: string; /** Name of the location where the event occurs. This could be the name of a library branch. */ location?: string; /** Street name and number. */ street: string; /** Zip code. */ zip_code: number; - /** City. */ - city: string; - /** Country code in ISO 3166-1 alpha-2 format. E.g. DK for Denmark. */ - country: string; }; diff --git a/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts b/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts index 3412127cc0..8ba713902b 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemDateTime.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -10,8 +10,8 @@ * When the event occurs. */ export type EventsGET200ItemDateTime = { - /** Start time in ISO 8601 format. */ - start: string; /** End time in ISO 8601 format. */ end: string; + /** Start time in ISO 8601 format. */ + start: string; }; diff --git a/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts b/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts index 0c875ee0fd..11049be284 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemExternalData.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -10,8 +10,8 @@ * Data for the event provided by a third party. */ export type EventsGET200ItemExternalData = { - /** An absolute url provided by the third party where end users can access the event. */ - url?: string; /** An absolute url provided by the third party where editorial users can administer the event. Accessing this url should require authentication. */ admin_url?: string; + /** An absolute url provided by the third party where end users can access the event. */ + url?: string; }; diff --git a/src/core/dpl-cms/model/eventsGET200ItemImage.ts b/src/core/dpl-cms/model/eventsGET200ItemImage.ts index 23de28af3c..30f7f1ab2e 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemImage.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventsGET200ItemSeries.ts b/src/core/dpl-cms/model/eventsGET200ItemSeries.ts index 2143d5184f..0913390eea 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemSeries.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemSeries.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventsGET200ItemState.ts b/src/core/dpl-cms/model/eventsGET200ItemState.ts index d19f1acb63..dcc7b0573d 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemState.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemState.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts index d48e65b32d..a96ff5559c 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. @@ -9,10 +9,10 @@ import type { EventsGET200ItemTicketCategoriesItemCount } from "./eventsGET200It import type { EventsGET200ItemTicketCategoriesItemPrice } from "./eventsGET200ItemTicketCategoriesItemPrice"; export type EventsGET200ItemTicketCategoriesItem = { - /** The name of the ticket category. */ - title: string; /** Number of tickets for the event. */ count?: EventsGET200ItemTicketCategoriesItemCount; /** The price of a ticket in the category */ price: EventsGET200ItemTicketCategoriesItemPrice; + /** The name of the ticket category. */ + title: string; }; diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts index 66173c408e..b4adfe3f3e 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemCount.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts index ebd9b01166..a145a77107 100644 --- a/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts +++ b/src/core/dpl-cms/model/eventsGET200ItemTicketCategoriesItemPrice.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/eventsGETFormat.ts b/src/core/dpl-cms/model/eventsGETFormat.ts index 444b4f3e53..71a0b96090 100644 --- a/src/core/dpl-cms/model/eventsGETFormat.ts +++ b/src/core/dpl-cms/model/eventsGETFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type EventsGETFormat = - typeof EventsGETFormat[keyof typeof EventsGETFormat]; +export type EventsGET_Format = + typeof EventsGET_Format[keyof typeof EventsGET_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const EventsGETFormat = { +export const EventsGET_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/eventsGETParams.ts b/src/core/dpl-cms/model/eventsGETParams.ts index 0d134eba3d..b15dc6bc22 100644 --- a/src/core/dpl-cms/model/eventsGETParams.ts +++ b/src/core/dpl-cms/model/eventsGETParams.ts @@ -1,10 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { EventsGETFormat } from "./eventsGETFormat"; +import type { EventsGET_Format } from "./eventsGETFormat"; -export type EventsGETParams = { _format?: EventsGETFormat }; +export type EventsGETParams = { + /** + * Request format + */ + _format?: EventsGET_Format; +}; diff --git a/src/core/dpl-cms/model/index.ts b/src/core/dpl-cms/model/index.ts index 24ae29be07..97be3744b9 100644 --- a/src/core/dpl-cms/model/index.ts +++ b/src/core/dpl-cms/model/index.ts @@ -1,67 +1,75 @@ -export * from "./proxyUrlGETParams"; -export * from "./proxyUrlGET200"; -export * from "./proxyUrlGET200Data"; -export * from "./proxyUrlGETFormat"; +/** + * Generated by orval v6.26.0 ๐Ÿบ + * Do not edit manually. + * DPL CMS - REST API + * The REST API provide by the core REST module. + * OpenAPI spec version: Versioning not supported + */ + export * from "./campaignMatchPOST200"; -export * from "./campaignMatchPOSTFormat"; export * from "./campaignMatchPOST200Data"; -export * from "./campaignMatchPOSTParams"; -export * from "./campaignMatchPOSTBodyItem"; export * from "./campaignMatchPOST200DataImage"; +export * from "./campaignMatchPOSTBodyItem"; export * from "./campaignMatchPOSTBodyItemValuesItem"; +export * from "./campaignMatchPOSTFormat"; +export * from "./campaignMatchPOSTParams"; +export * from "./dplDasDigitalArticleOrderPOSTBody"; export * from "./dplDasDigitalArticleOrderPOSTFormat"; export * from "./dplDasDigitalArticleOrderPOSTParams"; -export * from "./dplDasDigitalArticleOrderPOSTBody"; -export * from "./dplOpeningHoursListGETParams"; -export * from "./eventPATCHFormat"; -export * from "./dplOpeningHoursListGET200Item"; -export * from "./eventPATCHBodyExternalData"; -export * from "./eventsGET200ItemDateTime"; -export * from "./dplOpeningHoursListGETFormat"; -export * from "./eventsGET200ItemAddress"; -export * from "./eventPATCHBody"; -export * from "./eventsGET200ItemState"; -export * from "./eventsGET200ItemTicketCategoriesItemPrice"; -export * from "./eventsGET200ItemExternalData"; -export * from "./eventsGET200ItemSeries"; -export * from "./eventsGET200ItemTicketCategoriesItem"; -export * from "./eventsGET200ItemTicketCategoriesItemCount"; -export * from "./eventsGETParams"; -export * from "./eventsGET200Item"; -export * from "./eventsGET200ItemImage"; -export * from "./dplOpeningHoursListGET200ItemCategory"; -export * from "./eventsGETFormat"; -export * from "./eventPATCHParams"; -export * from "./eventPATCHBodyState"; -export * from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; -export * from "./dplOpeningHoursDELETEFormat"; -export * from "./dplOpeningHoursDELETE200Category"; +export * from "./dplOpeningHoursCreatePOST200"; +export * from "./dplOpeningHoursCreatePOST200Category"; +export * from "./dplOpeningHoursCreatePOSTBody"; +export * from "./dplOpeningHoursCreatePOSTBodyCategory"; +export * from "./dplOpeningHoursCreatePOSTFormat"; +export * from "./dplOpeningHoursCreatePOSTParams"; export * from "./dplOpeningHoursDELETE200"; -export * from "./dplOpeningHoursPATCHParams"; -export * from "./dplOpeningHoursGETFormat"; -export * from "./dplOpeningHoursGET200"; -export * from "./dplOpeningHoursPOSTParams"; -export * from "./dplOpeningHoursPATCHFormat"; -export * from "./dplOpeningHoursPOSTFormat"; +export * from "./dplOpeningHoursDELETE200Category"; +export * from "./dplOpeningHoursDELETEFormat"; export * from "./dplOpeningHoursDELETEParams"; -export * from "./dplOpeningHoursPOST200"; +export * from "./dplOpeningHoursDeleteDELETEFormat"; +export * from "./dplOpeningHoursDeleteDELETEParams"; +export * from "./dplOpeningHoursGET200"; export * from "./dplOpeningHoursGET200Category"; -export * from "./dplOpeningHoursPOST200Category"; -export * from "./dplOpeningHoursPATCH200"; +export * from "./dplOpeningHoursGETFormat"; export * from "./dplOpeningHoursGETOpeningHoursInstanceBody"; +export * from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; export * from "./dplOpeningHoursGETParams"; +export * from "./dplOpeningHoursListGET200Item"; +export * from "./dplOpeningHoursListGET200ItemCategory"; +export * from "./dplOpeningHoursListGETFormat"; +export * from "./dplOpeningHoursListGETParams"; +export * from "./dplOpeningHoursPATCH200"; export * from "./dplOpeningHoursPATCH200Category"; -export * from "./dplOpeningHoursCreatePOSTParams"; -export * from "./dplOpeningHoursCreatePOST200"; -export * from "./dplOpeningHoursCreatePOST200Category"; -export * from "./dplOpeningHoursDeleteDELETEParams"; +export * from "./dplOpeningHoursPATCHFormat"; +export * from "./dplOpeningHoursPATCHParams"; +export * from "./dplOpeningHoursPOST200"; +export * from "./dplOpeningHoursPOST200Category"; +export * from "./dplOpeningHoursPOSTFormat"; +export * from "./dplOpeningHoursPOSTParams"; +export * from "./dplOpeningHoursUpdatePATCH200"; +export * from "./dplOpeningHoursUpdatePATCH200Category"; +export * from "./dplOpeningHoursUpdatePATCHBody"; +export * from "./dplOpeningHoursUpdatePATCHBodyCategory"; export * from "./dplOpeningHoursUpdatePATCHFormat"; export * from "./dplOpeningHoursUpdatePATCHParams"; -export * from "./dplOpeningHoursUpdatePATCHBodyCategory"; -export * from "./dplOpeningHoursUpdatePATCHBody"; -export * from "./dplOpeningHoursCreatePOSTBody"; -export * from "./dplOpeningHoursCreatePOSTBodyCategory"; -export * from "./dplOpeningHoursCreatePOSTFormat"; -export * from "./dplOpeningHoursDeleteDELETEFormat"; -export * from "./dplOpeningHoursUpdatePATCH200Category"; -export * from "./dplOpeningHoursUpdatePATCH200"; +export * from "./eventPATCHBody"; +export * from "./eventPATCHBodyExternalData"; +export * from "./eventPATCHBodyState"; +export * from "./eventPATCHFormat"; +export * from "./eventPATCHParams"; +export * from "./eventsGET200Item"; +export * from "./eventsGET200ItemAddress"; +export * from "./eventsGET200ItemDateTime"; +export * from "./eventsGET200ItemExternalData"; +export * from "./eventsGET200ItemImage"; +export * from "./eventsGET200ItemSeries"; +export * from "./eventsGET200ItemState"; +export * from "./eventsGET200ItemTicketCategoriesItem"; +export * from "./eventsGET200ItemTicketCategoriesItemCount"; +export * from "./eventsGET200ItemTicketCategoriesItemPrice"; +export * from "./eventsGETFormat"; +export * from "./eventsGETParams"; +export * from "./proxyUrlGET200"; +export * from "./proxyUrlGET200Data"; +export * from "./proxyUrlGETFormat"; +export * from "./proxyUrlGETParams"; diff --git a/src/core/dpl-cms/model/proxyUrlGET200.ts b/src/core/dpl-cms/model/proxyUrlGET200.ts index 42171cba3a..82205680ec 100644 --- a/src/core/dpl-cms/model/proxyUrlGET200.ts +++ b/src/core/dpl-cms/model/proxyUrlGET200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/proxyUrlGET200Data.ts b/src/core/dpl-cms/model/proxyUrlGET200Data.ts index 9c64b1847d..48289a3213 100644 --- a/src/core/dpl-cms/model/proxyUrlGET200Data.ts +++ b/src/core/dpl-cms/model/proxyUrlGET200Data.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. diff --git a/src/core/dpl-cms/model/proxyUrlGETFormat.ts b/src/core/dpl-cms/model/proxyUrlGETFormat.ts index b0089790a4..0ae7a0693f 100644 --- a/src/core/dpl-cms/model/proxyUrlGETFormat.ts +++ b/src/core/dpl-cms/model/proxyUrlGETFormat.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -export type ProxyUrlGETFormat = - typeof ProxyUrlGETFormat[keyof typeof ProxyUrlGETFormat]; +export type ProxyUrlGET_Format = + typeof ProxyUrlGET_Format[keyof typeof ProxyUrlGET_Format]; // eslint-disable-next-line @typescript-eslint/no-redeclare -export const ProxyUrlGETFormat = { +export const ProxyUrlGET_Format = { json: "json" } as const; diff --git a/src/core/dpl-cms/model/proxyUrlGETParams.ts b/src/core/dpl-cms/model/proxyUrlGETParams.ts index 19685eb39e..05ff783973 100644 --- a/src/core/dpl-cms/model/proxyUrlGETParams.ts +++ b/src/core/dpl-cms/model/proxyUrlGETParams.ts @@ -1,10 +1,19 @@ /** - * Generated by orval v6.8.1 ๐Ÿบ + * Generated by orval v6.26.0 ๐Ÿบ * Do not edit manually. * DPL CMS - REST API * The REST API provide by the core REST module. * OpenAPI spec version: Versioning not supported */ -import type { ProxyUrlGETFormat } from "./proxyUrlGETFormat"; +import type { ProxyUrlGET_Format } from "./proxyUrlGETFormat"; -export type ProxyUrlGETParams = { _format?: ProxyUrlGETFormat; url: string }; +export type ProxyUrlGETParams = { + /** + * Request format + */ + _format?: ProxyUrlGET_Format; + /** + * A url to an online resource which may be accessible through a proxy which requires rewriting of the url + */ + url: string; +}; diff --git a/src/core/dpl-cms/mutator/fetcher.ts b/src/core/dpl-cms/mutator/fetcher.ts index 21c118ffcc..901b7b2aa6 100644 --- a/src/core/dpl-cms/mutator/fetcher.ts +++ b/src/core/dpl-cms/mutator/fetcher.ts @@ -15,7 +15,7 @@ export const fetcher = async ({ data }: { url: string; - method: "get" | "post" | "put" | "delete" | "patch" | "head"; + method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD"; headers?: object; params?: unknown; data?: BodyType; diff --git a/yarn.lock b/yarn.lock index 7fb9205d38..e80b1ba3a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,9 +34,9 @@ resolved "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz" integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== -"@apidevtools/swagger-parser@^10.0.3": +"@apidevtools/swagger-parser@^10.1.0": version "10.1.0" - resolved "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz#a987d71e5be61feb623203be0c96e5985b192ab6" integrity sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw== dependencies: "@apidevtools/json-schema-ref-parser" "9.0.6" @@ -47,10 +47,12 @@ ajv-draft-04 "^1.0.0" call-me-maybe "^1.0.1" -"@asyncapi/specs@^2.14.0": - version "2.14.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.14.0.tgz" - integrity sha512-hHsYF6XsYNIKb1P2rXaooF4H+uKKQ4b/Ljxrk3rZ3riEDiSxMshMEfb1fUlw9Yj4V4OmJhjXwkNvw8W59AXv1A== +"@asyncapi/specs@^4.1.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@asyncapi/specs/-/specs-4.3.1.tgz#835dbed92253654407a5c6416755fa69d5332bea" + integrity sha512-EfexhJu/lwF8OdQDm28NKLJHFkx0Gb6O+rcezhZYLPIoNYKXJMh2J1vFGpwmfAcTTh+ffK44Oc2Hs1Q4sLBp+A== + dependencies: + "@types/json-schema" "^7.0.11" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.23.5" @@ -1591,116 +1593,231 @@ ts-node "^9" tslib "^2" +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + "@esbuild/android-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + "@esbuild/android-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + "@esbuild/android-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + "@esbuild/darwin-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + "@esbuild/darwin-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + "@esbuild/freebsd-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + "@esbuild/freebsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + "@esbuild/linux-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + "@esbuild/linux-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + "@esbuild/linux-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + "@esbuild/linux-loong64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + "@esbuild/linux-mips64el@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + "@esbuild/linux-ppc64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + "@esbuild/linux-riscv64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + "@esbuild/linux-s390x@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + "@esbuild/linux-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + "@esbuild/netbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + "@esbuild/openbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + "@esbuild/sunos-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + "@esbuild/win32-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + "@esbuild/win32-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + "@esbuild/win32-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2168,14 +2285,26 @@ resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== -"@ibm-cloud/openapi-ruleset@0.6.2": - version "0.6.2" - resolved "https://registry.npmjs.org/@ibm-cloud/openapi-ruleset/-/openapi-ruleset-0.6.2.tgz" - integrity sha512-9fjTjYrXqejjNTyLC5znFeZ4UlxYNSZHroU3upUsmVLe2OgFsh4fAlwGkM2cqX79y7TxP5Tz5GvapyY0LIDYBQ== - dependencies: - "@stoplight/spectral-formats" "1.0.2" - "@stoplight/spectral-functions" "1.5.1" - "@stoplight/spectral-rulesets" "1.4.3" +"@ibm-cloud/openapi-ruleset-utilities@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@ibm-cloud/openapi-ruleset-utilities/-/openapi-ruleset-utilities-1.3.2.tgz#dfe4481f35f37d48b51c26ae1499ca032544b978" + integrity sha512-pDZ+YTawZBAMgxfGG0JeCizh7Brmz8h4WRQaJvfJaRfgfdFmp5xZ64oqvnpJQ16XjCdNMBkTB6NJCZjQzq1gpQ== + +"@ibm-cloud/openapi-ruleset@^1.14.2": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@ibm-cloud/openapi-ruleset/-/openapi-ruleset-1.15.7.tgz#dcb84e68c7a17ca326b962db886a1299d262ad00" + integrity sha512-i9j9WwHQ6ZxRrZ3ThB4csNRWwJYw4xdfA22bqlXPE3RmEyjbBFSITnE1m6JmMhm7Psnoh8vQ7/gOL93m+27D5A== + dependencies: + "@ibm-cloud/openapi-ruleset-utilities" "1.3.2" + "@stoplight/spectral-formats" "^1.6.0" + "@stoplight/spectral-functions" "^1.7.2" + "@stoplight/spectral-rulesets" "^1.18.1" + chalk "^4.1.2" + lodash "^4.17.21" + loglevel "^1.9.1" + loglevel-plugin-prefix "0.8.4" + minimatch "^6.2.0" + validator "^13.11.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -2426,6 +2555,88 @@ dependencies: mkdirp "^1.0.4" +"@orval/angular@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/angular/-/angular-6.26.0.tgz#1261e45d22d2b80c5a14180e21bd1b2e329d87ad" + integrity sha512-xxskcRUPDz5kKCzAa0q0wyQcyxGE1k5yUOPSg8VYJWGPZ4i7sDnW/6B//RSZU/obBjmA5JEaYbCaTrImT+BxzA== + dependencies: + "@orval/core" "6.26.0" + +"@orval/axios@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/axios/-/axios-6.26.0.tgz#6f49d3e8ea4b9926d7bc7e0a735e3dff57feddad" + integrity sha512-Pn6jOZyWYe/tjD1yhDy2hJUx1+sOrqLeLyTg4SjN+2KkKmiIyMDw4+TzeNqwqtctQr10pAshu14O4QlJ+Td69A== + dependencies: + "@orval/core" "6.26.0" + +"@orval/core@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/core/-/core-6.26.0.tgz#5c964de0b8518d7aec694428a8faba473b61adf7" + integrity sha512-k6NpRQIU83jsZDXW+CvmHGDjvvsi29QX87UXLZNiJd2oyHPML7BdYkxrLvWLJh9V7iGp/KGQ9uHtj6OtCjLhHg== + dependencies: + "@apidevtools/swagger-parser" "^10.1.0" + "@ibm-cloud/openapi-ruleset" "^1.14.2" + acorn "^8.11.2" + ajv "^8.12.0" + chalk "^4.1.2" + compare-versions "^6.1.0" + debug "^4.3.4" + esbuild "^0.19.11" + esutils "2.0.3" + fs-extra "^11.2.0" + globby "11.1.0" + lodash.get "^4.4.2" + lodash.isempty "^4.4.0" + lodash.omit "^4.5.0" + lodash.uniq "^4.5.0" + lodash.uniqby "^4.7.0" + lodash.uniqwith "^4.5.0" + micromatch "^4.0.5" + openapi3-ts "4.2.2" + swagger2openapi "^7.0.8" + +"@orval/hono@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/hono/-/hono-6.26.0.tgz#59b779c12d26641c0bdbd6bd023a0ccd47f0f47a" + integrity sha512-RB5yqd62bnTFT27uGbdWxxwKJCineCcRlVlq/IeeWz7X6FTZs2KWkeKEMUi5f8MM4pJP20aXqvrYNXLPYmNKkQ== + dependencies: + "@orval/core" "6.26.0" + "@orval/zod" "6.26.0" + lodash.uniq "^4.5.0" + +"@orval/mock@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/mock/-/mock-6.26.0.tgz#79cbb324e230125a7c7196c1b920a130b4a2e584" + integrity sha512-Fmrtgukp/ljUdEIlsHEdVce963iJiUT+9Le30fgrbctY+UUupXTCDNI82PSS7KUMQqx694YnGWUlv6ONiBCBpg== + dependencies: + "@orval/core" "6.26.0" + lodash.get "^4.4.2" + lodash.omit "^4.5.0" + openapi3-ts "^4.2.2" + +"@orval/query@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/query/-/query-6.26.0.tgz#b8e7c20cfca66e73929c9fd657689a1db69b9c94" + integrity sha512-A4lyv/4Rzs5C748IdXIOHM1ZhDDnHLNtfaAMEvT2m3Z/CSnv9KMz0EwimLuXm3Q5I4AL5R2ULDPnYlj9hah6Qw== + dependencies: + "@orval/core" "6.26.0" + lodash.omitby "^4.6.0" + +"@orval/swr@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/swr/-/swr-6.26.0.tgz#5a3c715187b42ceccf0bf450b0926fdd271e9b30" + integrity sha512-ZyQJhoUgEa4z+8+otEsZ/XENoGXz6U+SPjC2Y6yXm5Oc0GzaXIQlE6/WkAhsx4kAzYANGVX3pS3EtHRqKnIApQ== + dependencies: + "@orval/core" "6.26.0" + +"@orval/zod@6.26.0": + version "6.26.0" + resolved "https://registry.yarnpkg.com/@orval/zod/-/zod-6.26.0.tgz#203959abb670ff6114cae8e1b63a2600372b615f" + integrity sha512-+1WHsgGtA0l3xAC2gFhlfLYgwPeXqC7SO93Qu03UvisxSJSNM+osz+7bN2MrZQwbX5JXqlYi2+3B8xCRYdRhDw== + dependencies: + "@orval/core" "6.26.0" + lodash.uniq "^4.5.0" + "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.5" resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.5.tgz" @@ -2520,41 +2731,6 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@rollup/plugin-commonjs@^20.0.0": - version "20.0.0" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz" - integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-commonjs@^21.0.1": - version "21.1.0" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz" - integrity sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz" @@ -2585,6 +2761,14 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@stoplight/better-ajv-errors@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz#d74a5c4da5d786c17188d7f4edec505f089885fa" + integrity sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA== + dependencies: + jsonpointer "^5.0.0" + leven "^3.1.0" + "@stoplight/json-ref-readers@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz" @@ -2632,7 +2816,19 @@ lodash "^4.17.21" safe-stable-stringify "^1.1" -"@stoplight/json@~3.17.0", "@stoplight/json@~3.17.1": +"@stoplight/json@^3.17.1": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@stoplight/json/-/json-3.21.0.tgz#c0dff9c478f3365d7946cb6e34c17cc2fa84250b" + integrity sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g== + dependencies: + "@stoplight/ordered-object-literal" "^1.0.3" + "@stoplight/path" "^1.3.2" + "@stoplight/types" "^13.6.0" + jsonc-parser "~2.2.1" + lodash "^4.17.21" + safe-stable-stringify "^1.1" + +"@stoplight/json@~3.17.1": version "3.17.2" resolved "https://registry.npmjs.org/@stoplight/json/-/json-3.17.2.tgz" integrity sha512-NwIVzanXRUy291J5BMkncCZRMG1Lx+aq+VidGQgfkJjgo8vh1Y/PSAz7fSU8gVGSZBCcqmOkMI7R4zw7DlfTwA== @@ -2650,76 +2846,22 @@ dependencies: wolfy87-eventemitter "~5.2.8" -"@stoplight/ordered-object-literal@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.2.tgz" - integrity sha512-0ZMS/9sNU3kVo/6RF3eAv7MK9DY8WLjiVJB/tVyfF2lhr2R4kqh534jZ0PlrFB9CRXrdndzn1DbX6ihKZXft2w== - "@stoplight/ordered-object-literal@^1.0.1", "@stoplight/ordered-object-literal@^1.0.2": version "1.0.3" resolved "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.3.tgz" integrity sha512-cjJ7PPkhgTXNMTkevAlmyrx9xOOCaI3c6rEeYb6VitL1o1WcZtrz9KyFyISmTmUa7yYTiy2IS/ud9S8s2sn3+A== +"@stoplight/ordered-object-literal@^1.0.3": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz#06689095a4f1a53e9d9a5f0055f707c387af966a" + integrity sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg== + "@stoplight/path@1.3.2", "@stoplight/path@^1.3.2": version "1.3.2" resolved "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz" integrity sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ== -"@stoplight/spectral-cli@6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-cli/-/spectral-cli-6.2.1.tgz" - integrity sha512-Omi/vFk8u+UyM36HbFIuH33oPpOUhDF26xD1N0HoefJstMDUot+L0xVGJWslbVYubuJ7U+JLVLUFLKFU39NfcQ== - dependencies: - "@rollup/plugin-commonjs" "^20.0.0" - "@stoplight/json" "3.17.0" - "@stoplight/path" "1.3.2" - "@stoplight/spectral-core" "^1.5.1" - "@stoplight/spectral-parsers" "^1.0.1" - "@stoplight/spectral-ref-resolver" "1.0.1" - "@stoplight/spectral-ruleset-bundler" "^1.0.0" - "@stoplight/spectral-ruleset-migrator" "^1.5.0" - "@stoplight/spectral-rulesets" ">=1" - "@stoplight/spectral-runtime" "^1.1.0" - "@stoplight/types" "12.3.0" - chalk "4.1.2" - cliui "7.0.4" - eol "0.9.1" - fast-glob "3.2.7" - lodash "~4.17.21" - pony-cause "^1.0.0" - proxy-agent "5.0.0" - strip-ansi "6.0" - text-table "0.2" - tslib "^2.3.0" - yargs "17.3.1" - -"@stoplight/spectral-core@1.10.1": - version "1.10.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.10.1.tgz" - integrity sha512-eJ6KGWMzzvTfcunoDSEHddRB8is34u+h29wnPzs97V5gFzADkLV3eMPkjFnDmBaiD6kuaRvWV3ZLPbJtpuNg8w== - dependencies: - "@stoplight/better-ajv-errors" "1.0.1" - "@stoplight/json" "~3.17.1" - "@stoplight/lifecycle" "2.3.2" - "@stoplight/path" "1.3.2" - "@stoplight/spectral-parsers" "^1.0.0" - "@stoplight/spectral-ref-resolver" "^1.0.0" - "@stoplight/spectral-runtime" "^1.0.0" - "@stoplight/types" "12.3.0" - ajv "^8.6.0" - ajv-errors "~3.0.0" - ajv-formats "~2.1.0" - blueimp-md5 "2.18.0" - json-schema "0.4.0" - jsonpath-plus "6.0.1" - lodash "~4.17.21" - lodash.topath "^4.5.2" - minimatch "3.0.4" - nimma "0.1.7" - simple-eval "1.0.0" - tslib "^2.3.0" - -"@stoplight/spectral-core@>=1", "@stoplight/spectral-core@^1.5.1", "@stoplight/spectral-core@^1.7.0", "@stoplight/spectral-core@^1.8.0", "@stoplight/spectral-core@^1.8.1": +"@stoplight/spectral-core@^1.7.0", "@stoplight/spectral-core@^1.8.0", "@stoplight/spectral-core@^1.8.1": version "1.12.2" resolved "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.12.2.tgz" integrity sha512-g2Nfvqr3m+hl7goB1VzAd7700xkrhReiQY+mb45NMzORKxy4JJfWdb23d8egdb/djyVOZ5QsFxQToGsCLVHu/w== @@ -2746,30 +2888,30 @@ simple-eval "1.0.0" tslib "^2.3.0" -"@stoplight/spectral-formats@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.0.2.tgz" - integrity sha512-jMIlMTSCJzFKq3kXnHv+YC0TTnwli/DuZY4JxObyaBwdiG1LnSAJLL7R857PpJpQ1uoiZULov8clxudSMeKL+Q== +"@stoplight/spectral-formats@^1.0.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.2.0.tgz" + integrity sha512-idvn7r8fvQjY/KeJpKgXQ5eJhce6N6/KoKWMPSh5yyvYDpn+bkU4pxAD79jOJaDnIyKJd1jjTPEJWnxbS0jj6A== dependencies: "@stoplight/json" "^3.17.0" "@stoplight/spectral-core" "^1.8.0" "@types/json-schema" "^7.0.7" tslib "^2.3.1" -"@stoplight/spectral-formats@>=1", "@stoplight/spectral-formats@^1.0.0", "@stoplight/spectral-formats@^1.0.2", "@stoplight/spectral-formats@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.2.0.tgz" - integrity sha512-idvn7r8fvQjY/KeJpKgXQ5eJhce6N6/KoKWMPSh5yyvYDpn+bkU4pxAD79jOJaDnIyKJd1jjTPEJWnxbS0jj6A== +"@stoplight/spectral-formats@^1.5.0", "@stoplight/spectral-formats@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz#c4a7169ac85a2855a3d76cdcc7a59e8f2e8f2bb3" + integrity sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA== dependencies: "@stoplight/json" "^3.17.0" "@stoplight/spectral-core" "^1.8.0" "@types/json-schema" "^7.0.7" tslib "^2.3.1" -"@stoplight/spectral-functions@1.5.1": - version "1.5.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.5.1.tgz" - integrity sha512-KHMprX4OwjgVtzUulVPfqkZTNCAP4JbZqTQ5/UTCfrQ1nO4vcr+3CJgU74ggSP6rH3UuJIIFVZN+9wU7HP1bEA== +"@stoplight/spectral-functions@^1.5.1": + version "1.6.1" + resolved "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.6.1.tgz" + integrity sha512-f4cFtbI35bQtY0t4fYhKtS+/nMU3UsAeFlqm4tARGGG5WjOv4ieCFNFbgodKNiO3F4O+syMEjVQuXlBNPuY7jw== dependencies: "@stoplight/better-ajv-errors" "1.0.1" "@stoplight/json" "~3.17.1" @@ -2784,17 +2926,16 @@ lodash "~4.17.21" tslib "^2.3.0" -"@stoplight/spectral-functions@>=1", "@stoplight/spectral-functions@^1.0.0", "@stoplight/spectral-functions@^1.5.1": - version "1.6.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.6.1.tgz" - integrity sha512-f4cFtbI35bQtY0t4fYhKtS+/nMU3UsAeFlqm4tARGGG5WjOv4ieCFNFbgodKNiO3F4O+syMEjVQuXlBNPuY7jw== +"@stoplight/spectral-functions@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-functions/-/spectral-functions-1.7.2.tgz#96ddc5dc2b093fba41a902a0ef374300f861f58f" + integrity sha512-f+61/FtIkQeIo+a269CeaeqjpyRsgDyIk6DGr7iS4hyuk1PPk7Uf6MNRDs9FEIBh7CpdEJ+HSHbMLwgpymWTIw== dependencies: - "@stoplight/better-ajv-errors" "1.0.1" - "@stoplight/json" "~3.17.1" + "@stoplight/better-ajv-errors" "1.0.3" + "@stoplight/json" "^3.17.1" "@stoplight/spectral-core" "^1.7.0" "@stoplight/spectral-formats" "^1.0.0" "@stoplight/spectral-runtime" "^1.1.0" - "@stoplight/types" "12.3.0" ajv "^8.6.3" ajv-draft-04 "~1.0.0" ajv-errors "~3.0.0" @@ -2802,7 +2943,7 @@ lodash "~4.17.21" tslib "^2.3.0" -"@stoplight/spectral-parsers@1.0.1", "@stoplight/spectral-parsers@>=1", "@stoplight/spectral-parsers@^1.0.0", "@stoplight/spectral-parsers@^1.0.1": +"@stoplight/spectral-parsers@^1.0.0": version "1.0.1" resolved "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.1.tgz" integrity sha512-JGKlrTxhjUzIGo2FOCf8Qp0WKTWXedoRNPovqYPE8pAp08epqU8DzHwl/i46BGH5yfTmouKMZgBN/PV2+Cr5jw== @@ -2812,7 +2953,7 @@ "@stoplight/yaml" "4.2.2" tslib "^2.3.1" -"@stoplight/spectral-ref-resolver@1.0.1", "@stoplight/spectral-ref-resolver@>=1", "@stoplight/spectral-ref-resolver@^1.0.0": +"@stoplight/spectral-ref-resolver@^1.0.0": version "1.0.1" resolved "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.1.tgz" integrity sha512-0tY7nTOccvTsa3c4QbSWfJ8wGfPO1RXvmKnmBjuyLfoTMNuhkHPII9gKhCjygsshzsBLxs2IyRHZYhWYVnEbCA== @@ -2823,80 +2964,19 @@ dependency-graph "0.11.0" tslib "^2.3.1" -"@stoplight/spectral-ruleset-bundler@^1.0.0": - version "1.2.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-ruleset-bundler/-/spectral-ruleset-bundler-1.2.1.tgz" - integrity sha512-baQDeu6YychKWFXmed4Pw6pDJIJimtqfCRHZ5CzUpp4j6UHTwozAA+am1FiKdmwlVYpBKS4g5ORu0s/aVQe+8A== - dependencies: - "@rollup/plugin-commonjs" "^21.0.1" - "@stoplight/path" "1.3.2" - "@stoplight/spectral-core" ">=1" - "@stoplight/spectral-formats" ">=1" - "@stoplight/spectral-functions" ">=1" - "@stoplight/spectral-parsers" ">=1" - "@stoplight/spectral-ref-resolver" ">=1" - "@stoplight/spectral-ruleset-migrator" "^1.5.2" - "@stoplight/spectral-rulesets" ">=1" - "@stoplight/spectral-runtime" "^1.1.0" - "@stoplight/types" "^12.3.0" - "@types/node" "*" - pony-cause "1.1.1" - rollup "~2.67.0" - tslib "^2.3.1" - validate-npm-package-name "3.0.0" - -"@stoplight/spectral-ruleset-migrator@^1.5.0", "@stoplight/spectral-ruleset-migrator@^1.5.2": - version "1.7.3" - resolved "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.7.3.tgz" - integrity sha512-1TlJgNxIqlcafzrH6gsGpQQcVkFhndib5piMNXVg9xshJ42l2yC6A0AUAixUC+ODJ5098DR7SjIYBVKk+CTQSw== - dependencies: - "@stoplight/json" "~3.17.0" - "@stoplight/ordered-object-literal" "1.0.2" - "@stoplight/path" "1.3.2" - "@stoplight/spectral-functions" "^1.0.0" - "@stoplight/spectral-runtime" "^1.1.0" - "@stoplight/types" "^12.3.0" - "@stoplight/yaml" "4.2.2" - "@types/node" "*" - ajv "^8.6.0" - ast-types "0.14.2" - astring "^1.7.5" - reserved "0.1.2" - tslib "^2.3.1" - validate-npm-package-name "3.0.0" - -"@stoplight/spectral-rulesets@1.4.3": - version "1.4.3" - resolved "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.4.3.tgz" - integrity sha512-kiUKcPvvvgg0U9p1KtsaRglW4xKCqXwTu2lL6Ci6elwsqK7P7CQAxJbcbhl30tqJ+m2oXTLTWJhZFa/xGk01FA== - dependencies: - "@stoplight/better-ajv-errors" "1.0.1" - "@stoplight/json" "^3.17.0" - "@stoplight/spectral-core" "^1.8.1" - "@stoplight/spectral-formats" "^1.0.2" - "@stoplight/spectral-functions" "^1.5.1" - "@stoplight/spectral-runtime" "^1.1.1" - "@stoplight/types" "^12.3.0" - "@types/json-schema" "^7.0.7" - ajv "^8.8.2" - ajv-formats "~2.1.0" - json-schema-traverse "^1.0.0" - lodash "~4.17.21" - tslib "^2.3.0" - -"@stoplight/spectral-rulesets@>=1": - version "1.10.0" - resolved "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.10.0.tgz" - integrity sha512-ROdoAjVFD4PHoxjyUyT41a+/nc7XwNaKigaITQw2btc9t2f5ubeRcmxpFJeyj2O+LCjdeRr28F+YvHzcnKtT7Q== +"@stoplight/spectral-rulesets@^1.18.1": + version "1.18.1" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-rulesets/-/spectral-rulesets-1.18.1.tgz#7efe41fdc29a6504821c854e85d39aa0e730a252" + integrity sha512-buLzYi4rHjZOG2d5LC/s3YpySrCGrwR4irKDyrxLlbbqmB8BDOsrdO+7G9UGvRCJwAy/xs1VWcjokzGnG68K+Q== dependencies: - "@asyncapi/specs" "^2.14.0" - "@stoplight/better-ajv-errors" "1.0.1" + "@asyncapi/specs" "^4.1.0" + "@stoplight/better-ajv-errors" "1.0.3" "@stoplight/json" "^3.17.0" "@stoplight/spectral-core" "^1.8.1" - "@stoplight/spectral-formats" "^1.2.0" + "@stoplight/spectral-formats" "^1.5.0" "@stoplight/spectral-functions" "^1.5.1" "@stoplight/spectral-runtime" "^1.1.1" - "@stoplight/types" "^12.5.0" + "@stoplight/types" "^13.6.0" "@types/json-schema" "^7.0.7" ajv "^8.8.2" ajv-formats "~2.1.0" @@ -2933,7 +3013,7 @@ "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/types@^12.0.0", "@stoplight/types@^12.3.0", "@stoplight/types@^12.5.0": +"@stoplight/types@^12.0.0", "@stoplight/types@^12.3.0": version "12.5.0" resolved "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz" integrity sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg== @@ -2949,6 +3029,14 @@ "@types/json-schema" "^7.0.4" utility-types "^3.10.0" +"@stoplight/types@^13.6.0": + version "13.20.0" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.20.0.tgz#d42682f1e3a14a3c60bdf0df08bff4023518763d" + integrity sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA== + dependencies: + "@types/json-schema" "^7.0.4" + utility-types "^3.10.0" + "@stoplight/yaml-ast-parser@0.0.48": version "0.0.48" resolved "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz" @@ -4324,11 +4412,6 @@ "@testing-library/dom" "^9.0.0" "@types/react-dom" "^18.0.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" @@ -4452,11 +4535,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" @@ -4555,6 +4633,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.11": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.8": version "7.0.10" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz" @@ -5370,7 +5453,12 @@ acorn@^7.0.0, acorn@^7.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.11.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== @@ -5380,7 +5468,7 @@ address@^1.0.1: resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -5462,7 +5550,7 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.12.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.8.2, ajv@^8.9.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -5922,24 +6010,24 @@ ast-types-flow@^0.0.7: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -ast-types@0.14.2, ast-types@^0.14.2: +ast-types@^0.13.2: + version "0.13.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz" + integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== + +ast-types@^0.14.2: version "0.14.2" resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== dependencies: tslib "^2.0.1" -ast-types@^0.13.2: - version "0.13.2" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz" - integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -astring@^1.7.5, astring@^1.8.1: +astring@^1.8.1: version "1.8.3" resolved "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz" integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A== @@ -6281,11 +6369,6 @@ babelify@^10.0.0: resolved "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz" integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== -backslash@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/backslash/-/backslash-0.2.0.tgz" - integrity sha512-Avs+8FUZ1HF/VFP4YWwHQZSGzRPm37ukU1JQYQWijuHhtXdOuAzcZ8PcAzfIw898a8PyBzdn+RtnKA6MzW0X2A== - bail@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz" @@ -6425,20 +6508,6 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - boxen@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" @@ -6785,11 +6854,6 @@ builtin-status-codes@^3.0.0: resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - busboy@^1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" @@ -6807,11 +6871,6 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cac@^6.7.12: - version "6.7.12" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.12.tgz" - integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== - cac@^6.7.14: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" @@ -7273,7 +7332,7 @@ clean-stack@^2.0.0: resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^2.2.0, cli-boxes@^2.2.1: +cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== @@ -7344,15 +7403,6 @@ cli-width@^3.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@7.0.4, cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" @@ -7513,7 +7563,7 @@ commander@^10.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== -commander@^2.19.0, commander@^2.20.0, commander@^2.20.3: +commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -7558,10 +7608,10 @@ commondir@^1.0.1: resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-versions@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz" - integrity sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg== +compare-versions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" + integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== component-emitter@^1.2.1: version "1.3.0" @@ -7623,18 +7673,6 @@ concurrently@^8.2.2: tree-kill "^1.2.2" yargs "^17.7.2" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - confusing-browser-globals@^1.0.10: version "1.0.11" resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" @@ -7929,11 +7967,6 @@ crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - css-declaration-sorter@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz#9796bcc257b4647c39993bda8d431ce32b666f80" @@ -8142,11 +8175,6 @@ csstype@^3.0.2, csstype@^3.1.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -cuid@^2.1.8: - version "2.1.8" - resolved "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz" - integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" @@ -8224,11 +8252,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== - dataloader@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz" @@ -8268,7 +8291,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -8368,11 +8391,6 @@ deep-object-diff@^1.1.0: resolved "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.7.tgz" integrity sha512-QkgBca0mL08P6HiOjoqvmm6xOAl2W6CT2+34Ljhg0OeFan8cwlcdq8jrLKsBBuUFAZLsN5b6y491KdKEoSo9lg== -deepmerge@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" @@ -8472,16 +8490,6 @@ defined@^1.0.0: resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= -degenerator@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz" - integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== - dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.8" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -8492,11 +8500,6 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" @@ -8757,13 +8760,6 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" @@ -8954,6 +8950,14 @@ enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" +enquirer@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + entities@^1.1.1, entities@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz" @@ -8979,11 +8983,6 @@ envinfo@^7.7.3: resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -eol@0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz" - integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== - errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz" @@ -9262,132 +9261,6 @@ es6-shim@^0.35.5: resolved "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.5.tgz" integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== -esbuild-android-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.46.tgz#98d019853ca7b526d0d645bb4618fda425b74d35" - integrity sha512-ZyJqwAcjNbZprs0ZAxnUAOhEhdE5kTKwz+CZuLmZYNLAPyRgBtaC8pT2PCuPifNvV8Cl3yLlrQPaOCjovoyb5g== - -esbuild-android-arm64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.46.tgz#19835d5265b57120c14fba56a19fc317ca4bbda0" - integrity sha512-BKcnUksvCijO9ONv6b4SikZE/OZftwJvX91XROODZGQmuwGVg97jmLDVu3lxuHdFlMNNzxh8taJ2mbCWZzH/Iw== - -esbuild-darwin-64@0.14.46: - version "0.14.46" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.46.tgz" - integrity sha512-/ss2kO92sUJ9/1nHnMb3+oab8w6dyqKrMtPMvSYJ9KZIYGAZxz/WYxfFprY7Xk+ZxWnnlASSyZlG+If1nVmFYg== - -esbuild-darwin-arm64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.46.tgz#2d523fa628930bba38a4f75cede75d6341bc3b5b" - integrity sha512-WX0JOaEFf6t+rIjXO6THsf/0fhQAt2Zb0/PSYlvXnuQQAmOmFAfPsuRNocp5ME0NGaUqZd4FxqqmLEVK3RzPAg== - -esbuild-freebsd-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.46.tgz#dbfbbb1cb943149aaa83b9e767ded6f14ad42ba5" - integrity sha512-o+ozPFuHRCAGCVWU2bLurOUgVkT0jcPEu082VBUY2Q/yLf+B+/3nXzh4Fjp5O21tOvJRTn7hUVydG9j5+vYE6A== - -esbuild-freebsd-arm64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.46.tgz#fb066d6e7de2bd96138dd1c2fba5e8ce5233ed5a" - integrity sha512-9zicZ0X43WDKz3sjNfcqYO38xbfJpSWYXB+FxvYYkmBwGA52K0SAu4oKuTTLi8od8X2IIo1x5C5TUNvKDSVJww== - -esbuild-linux-32@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.46.tgz#ea2464b10fe188ee7c9be81a2757e2d69ffdb8c1" - integrity sha512-ZnTpZMVb0VGvL99R5eh4OrJwbUyvpM6M88VAMuHP4LvFjuvZrhgefjKqEGuWZZW7JRnAjKqjXLjWdhdSjwMFnQ== - -esbuild-linux-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.46.tgz#f4f2d181af6ea78137311712fca423f8fa954314" - integrity sha512-ECCRRZtX6l4ubeVhHhiVoK/uYAkvzNqfmR4gP4N/9H9RPu+b8YCcN4bQGp7xCuYIV6Xd41WpOMyO+xpcQvjtQQ== - -esbuild-linux-arm64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.46.tgz#113d17c523dfe80c9d4981d05c58f5ada3470e30" - integrity sha512-HX0TXCHyI0NEWG4jg8LlW1PbZQbnz+PUH56yjx996cgM5pC90u32drKs/tyJiyyQmNk9OXOogjKw7LEdp/Qc1w== - -esbuild-linux-arm@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.46.tgz#1b6ba77b0301572b2fed35fe922b1613b10b5c7e" - integrity sha512-RvTJEi4vj13c5FP9YPp+8Y6x6HK1E7uSqfy3y9UoeaNAzNZWA7fN1U3hQjTL/dy5zTJH5KE64mrt5k5+he+CQA== - -esbuild-linux-mips64le@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.46.tgz#8775e12510eaf988a9bc5e6787cf0c87c3eb40d6" - integrity sha512-jnb2NDwGqJUVmxn1v0f7seNdDm0nRNWHP9Z3MrWAGnBCdnnDlsjqRFDnbKoaQvWONEa+rOOr/giK+VL0hgQExA== - -esbuild-linux-ppc64le@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.46.tgz#da003df59859b02e160827e26bc1e107bec23d07" - integrity sha512-uu3JTQUrwwauKY9z8yq5MnDyOlT3f2DNOzBcYz4dB78HqwEqilCsifoBGd0WcbED5n57dc59X+LZMTZ8Ose44w== - -esbuild-linux-riscv64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.46.tgz#b6c4faf9f8482e2a898ec2becac4a6789ae3ff22" - integrity sha512-OB29r1EG44ZY34JnXCRERxo7k4pRKoQdaoRg2HIeCavatsXZwW4LCakpLnMQ72vXT1HtpBUABEjHkKkn5JyrUg== - -esbuild-linux-s390x@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.46.tgz#d30d0f7ee8466c4ec99ac2c689b70514320406b2" - integrity sha512-XQ/U9TueMSGYyPTKyZsJVraiuvxhwCDIMn/QwFXCRCJ6H/Cy/Rq33u9qhpeSziinHKfzJROGx5A8mQY6aYamdQ== - -esbuild-netbsd-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.46.tgz#fcf2b739b63731b5b264dc584240c0b61dbbf035" - integrity sha512-i15BwqHaAIFp1vBJkitAbHtwXcLk9TdHs/Ia1xGIAutQYXSJNPLM3Z4B4hyfHNEFl2yBqBIYpglMohv2ClNdOQ== - -esbuild-openbsd-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.46.tgz#fc7880751b78b325216e66470b9a3df7b1c21cbf" - integrity sha512-XwOIFCE140Y/PvjrwjFfa/QLWBuvhR1mPCOa35mKx02jt++wPNgf0qhn6HfdVC3vQe7R46RwTp4q2cp99fepEg== - -esbuild-sunos-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.46.tgz#ab73b91e79ae53dddb035da9bb69ba7dd44d36ee" - integrity sha512-+kV3JnmfdxBVpHyFvuGXWtu6tXxXApOLPkSrVkMJf6+ns/3PLtPndpzwCzHjD+qYUEk8ln4MA+ufQ2qmjW5mZg== - -esbuild-windows-32@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.46.tgz#88ad388c896325d273e92dbf28f146d1d34d4351" - integrity sha512-gzGC1Q11B/Bo5A2EX4N22oigWmhL7Z0eDyc8kbSoJjqSrGQuRE7B0uMpluO+q0O/gZ1S3zdw+M4PCWlqOIeXLA== - -esbuild-windows-64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.46.tgz#bfb21b68d54d0db86190f8073cbf66a86bd0de14" - integrity sha512-Do2daaskfOjmCB7o3ygz6fD3K6SPjZLERiZLktzHz2oUCwsebKu/gmop0+j/XdrVIXC32wFzHzDS+9CTu9OShw== - -esbuild-windows-arm64@0.14.46: - version "0.14.46" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.46.tgz#b8aa66a0c347342b9ae780b537d5574e9691c123" - integrity sha512-VEzMy6bM60/HT/URTDElyhfi2Pk0quCCrEhRlI4MRno/AIqYUGw0rZwkPl6PeoqVI6BgoBHGY576GWTiPmshCA== - -esbuild@^0.14.25: - version "0.14.46" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.46.tgz" - integrity sha512-vdm5G1JdZBktva8dwQci/s44VbeBUg8g907xoZx77mqFZ4gU5GlMULNsdGeID+qXCXocsfYSGtE0LvqH3eiNQg== - optionalDependencies: - esbuild-android-64 "0.14.46" - esbuild-android-arm64 "0.14.46" - esbuild-darwin-64 "0.14.46" - esbuild-darwin-arm64 "0.14.46" - esbuild-freebsd-64 "0.14.46" - esbuild-freebsd-arm64 "0.14.46" - esbuild-linux-32 "0.14.46" - esbuild-linux-64 "0.14.46" - esbuild-linux-arm "0.14.46" - esbuild-linux-arm64 "0.14.46" - esbuild-linux-mips64le "0.14.46" - esbuild-linux-ppc64le "0.14.46" - esbuild-linux-riscv64 "0.14.46" - esbuild-linux-s390x "0.14.46" - esbuild-netbsd-64 "0.14.46" - esbuild-openbsd-64 "0.14.46" - esbuild-sunos-64 "0.14.46" - esbuild-windows-32 "0.14.46" - esbuild-windows-64 "0.14.46" - esbuild-windows-arm64 "0.14.46" - esbuild@^0.16.14: version "0.16.17" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" @@ -9416,22 +9289,46 @@ esbuild@^0.16.14: "@esbuild/win32-ia32" "0.16.17" "@esbuild/win32-x64" "0.16.17" +esbuild@^0.19.11: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -9441,18 +9338,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.8.1: - version "1.14.3" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" @@ -9743,7 +9628,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -9753,16 +9638,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@2.0.3, esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" @@ -9989,17 +9864,6 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" @@ -10012,7 +9876,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.1: +fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -10193,11 +10057,6 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" @@ -10445,11 +10304,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -format-util@^1.0.3: - version "1.0.5" - resolved "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz" - integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== - format@^0.2.0: version "0.2.2" resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" @@ -10509,19 +10363,19 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^10.0.1: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-extra@^11.0.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -10591,14 +10445,6 @@ fsevents@^2.1.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" - integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -10786,18 +10632,6 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -get-uri@3: - version "3.0.2" - resolved "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== - dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" - fs-extra "^8.1.0" - ftp "^0.3.10" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" @@ -10887,13 +10721,6 @@ glob@^8.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - global-dirs@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" @@ -10953,18 +10780,6 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - globby@11.1.0, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" @@ -11251,11 +11066,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -11545,26 +11355,6 @@ http-errors@1.8.1: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" @@ -11593,7 +11383,7 @@ https-browserify@^1.0.0: resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@5, https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -11616,33 +11406,6 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -ibm-openapi-validator@^0.57.4: - version "0.57.4" - resolved "https://registry.npmjs.org/ibm-openapi-validator/-/ibm-openapi-validator-0.57.4.tgz" - integrity sha512-LMYdpg1BUIlGJ14W8d6Ltr3uyLtpXblqHKqAuufIE6vWVcd20d4I631DMUp/man6KwdUvFnQwE5cx+Q6AGQ9gQ== - dependencies: - "@ibm-cloud/openapi-ruleset" "0.6.2" - "@stoplight/spectral-cli" "6.2.1" - "@stoplight/spectral-core" "1.10.1" - "@stoplight/spectral-parsers" "1.0.1" - chalk "^4.1.1" - commander "^2.20.3" - deepmerge "^2.2.1" - find-up "^3.0.0" - globby "^11.0.4" - js-yaml "^3.14.1" - json-dup-key-validator "^1.0.3" - json-schema-ref-parser "^5.1.3" - jsonschema "^1.4.0" - lodash "^4.17.21" - matcher "^1.1.1" - pad "^2.3.0" - require-all "^3.0.0" - semver "^5.7.1" - update-notifier "^4.1.3" - validator "^13.7.0" - yaml-js "^0.2.3" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -11682,7 +11445,7 @@ ignore@^4.0.3: resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -11723,11 +11486,6 @@ import-from@4.0.0: resolved "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz" integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - import-lazy@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" @@ -11796,11 +11554,6 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.7: - version "1.3.7" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - ini@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" @@ -11831,7 +11584,7 @@ inline-style-prefixer@^7.0.0: css-in-js-utils "^3.1.0" fast-loops "^1.1.3" -inquirer@^8.0.0, inquirer@^8.2.0: +inquirer@^8.0.0: version "8.2.4" resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz" integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== @@ -12244,14 +11997,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz" integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA== -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" @@ -12287,11 +12032,6 @@ is-negative-zero@^2.0.3: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" @@ -12311,11 +12051,6 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" @@ -12328,7 +12063,7 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1, is-path-inside@^3.0.2, is-path-inside@^3.0.3: +is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -12360,13 +12095,6 @@ is-promise@^2.1.0: resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-regex@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz" @@ -12550,16 +12278,6 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" @@ -12830,7 +12548,7 @@ js-yaml@4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.12.0, js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -12868,13 +12586,6 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-dup-key-validator@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/json-dup-key-validator/-/json-dup-key-validator-1.0.3.tgz" - integrity sha512-JvJcV01JSiO7LRz7DY1Fpzn4wX2rJ3dfNTiAfnlvLNdhhnm0Pgdvhi2SGpENrZn7eSg26Ps3TPhOcuD/a4STXQ== - dependencies: - backslash "^0.2.0" - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" @@ -12885,16 +12596,6 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-ref-parser@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-5.1.3.tgz" - integrity sha512-CpDFlBwz/6la78hZxyB9FECVKGYjIIl3Ms3KLqFj99W7IIb7D00/RDgc++IGB4BBALl0QRhh5m4q5WNSopvLtQ== - dependencies: - call-me-maybe "^1.0.1" - debug "^3.1.0" - js-yaml "^3.12.0" - ono "^4.0.6" - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" @@ -13007,11 +12708,6 @@ jsonpointer@^5.0.0: resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz" integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== -jsonschema@^1.4.0: - version "1.4.1" - resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz" - integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== - jsonwebtoken@^8.5.1: version "8.5.1" resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" @@ -13153,7 +12849,7 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" -latest-version@5.1.0, latest-version@^5.0.0: +latest-version@5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== @@ -13375,6 +13071,11 @@ lodash.isboolean@^3.0.3: resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg== + lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" @@ -13504,6 +13205,16 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +loglevel-plugin-prefix@0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7" + integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -13584,13 +13295,6 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - magicast@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/magicast/-/magicast-0.3.3.tgz#a15760f982deec9dabc5f314e318d7c6bddcb27b" @@ -13727,13 +13431,6 @@ match-sorter@^6.0.2: "@babel/runtime" "^7.12.5" remove-accents "0.4.2" -matcher@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz" - integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== - dependencies: - escape-string-regexp "^1.0.4" - mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz" @@ -14065,6 +13762,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -14297,29 +14001,11 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== -netmask@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" - integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nimma@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/nimma/-/nimma-0.1.7.tgz" - integrity sha512-0FIra4ogMHhOjn4fd2UiBuuaxM1nHzwhCEPvaFmCbwsR6qzHyJUG3dLW3tAIQji42wIij8OA/HB0+Gldg3OX4A== - dependencies: - "@jsep-plugin/regex" "^1.0.1" - "@jsep-plugin/ternary" "^1.0.2" - astring "^1.8.1" - jsep "^1.2.0" - optionalDependencies: - jsonpath-plus "^6.0.1" - lodash.topath "^4.5.2" - nimma@0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/nimma/-/nimma-0.2.1.tgz" @@ -14818,13 +14504,6 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -ono@^4.0.6: - version "4.0.11" - resolved "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz" - integrity sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g== - dependencies: - format-util "^1.0.3" - open@^7.0.3: version "7.2.1" resolved "https://registry.npmjs.org/open/-/open-7.2.1.tgz" @@ -14842,12 +14521,19 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -openapi3-ts@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-2.0.2.tgz" - integrity sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw== +openapi3-ts@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-4.2.2.tgz#9460b6626c39f6334f876e43c8de08168d306fdb" + integrity sha512-+9g4actZKeb3czfi9gVQ4Br2Ju3KwhCAQJBNaKgye5KggqcBLIhFHH+nIkcm0BUX00TrAJl6dH4JWgM4G4JWrw== + dependencies: + yaml "^2.3.4" + +openapi3-ts@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-4.3.1.tgz#8f4b68e97e7885d531694938f59983e866c47dc1" + integrity sha512-ha/kTOLhMQL7MvS9Abu/cpCXx5qwHQ++88YkUzn1CGfmM8JvCOG/4ZE6tRsexgXRFaoJrcwLyf81H2Y/CXALtA== dependencies: - yaml "^1.10.2" + yaml "^2.4.1" optionator@^0.8.1: version "0.8.3" @@ -14888,40 +14574,32 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -orval@^6.8.1: - version "6.8.1" - resolved "https://registry.npmjs.org/orval/-/orval-6.8.1.tgz" - integrity sha512-E8ZsGB1BsulDqMxdYvni3lc63mUpkFsLZbqiZRKTWs3sBtNz7THSkUEkCYhRW6qyXR8TM+RHCYeYGUYHlWuCmw== - dependencies: - "@apidevtools/swagger-parser" "^10.0.3" - acorn "^8.7.0" - cac "^6.7.12" +orval@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/orval/-/orval-6.26.0.tgz#8e79690b7cf3eb305eaa40474288c8eea495f02b" + integrity sha512-pgUNgXYSjnLz6uF1LOoeoIlI39mwq//ktx1FDUoRJ+ZspouLTKM4GSNmoMjEdn6T/CvPmkKQffTGo5rIUYPcmA== + dependencies: + "@apidevtools/swagger-parser" "^10.1.0" + "@orval/angular" "6.26.0" + "@orval/axios" "6.26.0" + "@orval/core" "6.26.0" + "@orval/hono" "6.26.0" + "@orval/mock" "6.26.0" + "@orval/query" "6.26.0" + "@orval/swr" "6.26.0" + "@orval/zod" "6.26.0" + ajv "^8.12.0" + cac "^6.7.14" chalk "^4.1.2" chokidar "^3.5.3" - compare-versions "^4.1.3" - cuid "^2.1.8" - debug "^4.3.3" - esbuild "^0.14.25" - esutils "2.0.3" + enquirer "^2.4.1" execa "^5.1.1" find-up "5.0.0" - fs-extra "^10.0.1" - globby "11.0.4" - ibm-openapi-validator "^0.57.4" - inquirer "^8.2.0" - lodash.get "^4.4.2" - lodash.omit "^4.5.0" - lodash.omitby "^4.6.0" + fs-extra "^11.2.0" lodash.uniq "^4.5.0" - lodash.uniqby "^4.7.0" - lodash.uniqwith "^4.5.0" - micromatch "^4.0.4" - openapi3-ts "^2.0.2" - swagger2openapi "^7.0.8" - tsconfck "^1.2.0" - upath "^2.0.1" - url "^0.11.0" - validator "^13.7.0" + openapi3-ts "4.2.2" + string-argv "^0.3.2" + tsconfck "^2.0.1" os-browserify@^0.3.0, os-browserify@~0.3.0: version "0.3.0" @@ -15085,30 +14763,6 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" - -pac-resolver@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz" - integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== - dependencies: - degenerator "^3.0.2" - ip "^1.1.5" - netmask "^2.0.2" - package-hash@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz" @@ -15129,13 +14783,6 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pad@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pad/-/pad-2.3.0.tgz" - integrity sha512-lxrgnOG5AXmzMRT1O5urWtYFxHnFSE+QntgTHij1nvS4W+ubhQLmQRHmZXDeEvk9I00itAixLqU9Q6fE0gW3sw== - dependencies: - wcwidth "^1.0.1" - pako@~1.0.5: version "1.0.10" resolved "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz" @@ -15446,16 +15093,16 @@ picomatch@^2.2.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -picomatch@^2.2.2, picomatch@^2.3.0, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - picomatch@^2.2.3: version "2.3.0" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -15546,7 +15193,7 @@ polished@^4.0.5, polished@^4.2.2: dependencies: "@babel/runtime" "^7.17.8" -pony-cause@1.1.1, pony-cause@^1.0.0: +pony-cause@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz" integrity sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g== @@ -16097,30 +15744,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== - dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" - proxy-from-env@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz" integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - prr@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" @@ -16183,13 +15811,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - qs@6.9.7: version "6.9.7" resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz" @@ -16257,16 +15878,6 @@ raw-body@2.4.3: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@^2.2.0: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" @@ -16617,16 +16228,6 @@ read-pkg@^6.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@3, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" @@ -17045,11 +16646,6 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" -require-all@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz" - integrity sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" @@ -17075,11 +16671,6 @@ reselect@^4.1.8: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== -reserved@0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/reserved/-/reserved-0.1.2.tgz" - integrity sha512-/qO54MWj5L8WCBP9/UNe2iefJc+L9yETbH32xO/ft/EYPOTCR5k+azvDUgdCOKwZH8hXwPd0b8XBL78Nn2U69g== - resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" @@ -17192,13 +16783,6 @@ rollup@^3.10.0: optionalDependencies: fsevents "~2.3.2" -rollup@~2.67.0: - version "2.67.3" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.3.tgz" - integrity sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw== - optionalDependencies: - fsevents "~2.3.2" - rsvp@^4.8.4: version "4.8.5" resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" @@ -17404,14 +16988,7 @@ scuid@^1.1.0: resolved "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz" integrity sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg== -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -17764,11 +17341,6 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - snake-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" @@ -17807,23 +17379,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks@^2.3.3: - version "2.6.2" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" @@ -17885,11 +17440,6 @@ source-map@~0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz" @@ -18043,11 +17593,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" @@ -18141,6 +17686,11 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +string-argv@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz" @@ -18289,11 +17839,6 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" @@ -18301,13 +17846,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@6.0, strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -18329,6 +17867,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" @@ -18751,11 +18296,6 @@ telejson@^6.0.8: lodash "^4.17.21" memoizerific "^1.11.3" -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" @@ -18854,7 +18394,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@0.2, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -19117,10 +18657,10 @@ ts-pnp@^1.1.6: resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -tsconfck@^1.2.0: - version "1.2.2" - resolved "https://registry.npmjs.org/tsconfck/-/tsconfck-1.2.2.tgz" - integrity sha512-x5YpjOqjJnMs1EsJvQBQbrysrY32eGoZRRr5YvbN1hwlrXKc7jiphCOUrT7xbFdOWk8sh+EtMYbGPbTO8rDmcw== +tsconfck@^2.0.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-2.1.2.tgz#f667035874fa41d908c1fe4d765345fcb1df6e35" + integrity sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg== tsconfig-paths@^3.15.0: version "3.15.0" @@ -19478,13 +19018,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" @@ -19603,11 +19136,6 @@ upath@^1.1.1: resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upath@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -19616,25 +19144,6 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -update-notifier@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - upper-case-first@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz" @@ -19826,17 +19335,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -validator@^13.7.0: - version "13.7.0" - resolved "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" - integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== +validator@^13.11.0: + version "13.11.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" + integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== value-or-promise@1.0.11, value-or-promise@^1.0.11: version "1.0.11" @@ -19947,14 +19449,6 @@ vm-browserify@^1.0.1: resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz" integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== -vm2@^3.9.8: - version "3.9.9" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz" - integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - vue-template-compiler@^2.6.11: version "2.6.14" resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz" @@ -20476,16 +19970,6 @@ x-default-browser@^0.4.0: optionalDependencies: default-browser-id "^1.0.4" -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz" - integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" @@ -20516,12 +20000,7 @@ yaml-ast-parser@^0.0.43: resolved "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz" integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== -yaml-js@^0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/yaml-js/-/yaml-js-0.2.3.tgz" - integrity sha512-6xUQtVKl1qcd0EXtTEzUDVJy9Ji1fYa47LtkDtYKlIjhibPE9knNPmoRyf6SGREFHlOAUyDe9OdYqRP4DuSi5Q== - -yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2: +yaml@1.10.2, yaml@^1.10.0: version "1.10.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -20538,6 +20017,11 @@ yaml@^2.3.4: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz" @@ -20559,29 +20043,11 @@ yargs-parser@^20.2.9: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@17.3.1: - version "17.3.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz" - integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - yargs@^13.3.0: version "13.3.0" resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz" From 69d878fb1586f718596984157548b73ec46608c5 Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Thu, 4 Apr 2024 19:36:17 +0200 Subject: [PATCH 50/56] Rename `useOpeningHours` to `useOpeningHoursEditor` This hook is exclusively for the `OpeningHoursEditor`. Renaming it will prevent conflicts with the `useOpeningHours` hook that is used for presenting the opening hours in our React app. --- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 4 ++-- .../{useOpeningHours.tsx => useOpeningHoursEditor.tsx} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/apps/opening-hours-editor/{useOpeningHours.tsx => useOpeningHoursEditor.tsx} (97%) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index 2155c5b53c..abc5d2a10a 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -5,7 +5,7 @@ import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; -import useOpeningHours from "./useOpeningHours"; +import useOpeningHoursEditor from "./useOpeningHoursEditor"; import DialogFomularEdit from "./DialogFomularEdit"; import Dialog from "../../components/dialog/Dialog"; import useDialog from "../../components/dialog/useDialog"; @@ -31,7 +31,7 @@ const OpeningHoursEditor: React.FC = ({ const fullCalendarApi = fullCalendarRef.current?.getApi(); const { events, handleEventAdd, handleEventEditing, handleEventRemove } = - useOpeningHours(); + useOpeningHoursEditor(); const { dialogContent, openDialogWithContent, closeDialog, dialogRef } = useDialog({ diff --git a/src/apps/opening-hours-editor/useOpeningHours.tsx b/src/apps/opening-hours-editor/useOpeningHoursEditor.tsx similarity index 97% rename from src/apps/opening-hours-editor/useOpeningHours.tsx rename to src/apps/opening-hours-editor/useOpeningHoursEditor.tsx index e94fca1931..4830ca2882 100644 --- a/src/apps/opening-hours-editor/useOpeningHours.tsx +++ b/src/apps/opening-hours-editor/useOpeningHoursEditor.tsx @@ -12,7 +12,7 @@ import { import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; import { useConfig } from "../../core/utils/config"; -const useOpeningHours = () => { +const useOpeningHoursEditor = () => { const config = useConfig(); const openingHoursBranchId = config("openingHoursBranchIdConfig", { transformer: "stringToNumber" @@ -118,4 +118,4 @@ const useOpeningHours = () => { }; }; -export default useOpeningHours; +export default useOpeningHoursEditor; From 0220c48fcc1fb4e56904bf9d1b2487f57513168e Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 5 Apr 2024 14:46:07 +0200 Subject: [PATCH 51/56] Fix Comments in Pull Request This includes renaming, text translation, and code commenting. https://github.com/danskernesdigitalebibliotek/dpl-react/pull/1023 --- ...DialogFomularAdd.tsx => DialogFormAdd.tsx} | 6 ++-- ...alogFomularEdit.tsx => DialogFormEdit.tsx} | 8 ++--- src/apps/opening-hours-editor/EventForm.tsx | 10 ++++--- .../OpeningHoursEditor.dev.tsx | 30 +++++++++++++++++-- .../OpeningHoursEditor.entry.tsx | 5 ++++ .../OpeningHoursEditor.tsx | 12 ++++---- src/apps/opening-hours-editor/helper.ts | 2 ++ src/components/dialog/Dialog.tsx | 2 +- src/core/utils/types/ids.ts | 4 +-- 9 files changed, 57 insertions(+), 22 deletions(-) rename src/apps/opening-hours-editor/{DialogFomularAdd.tsx => DialogFormAdd.tsx} (94%) rename src/apps/opening-hours-editor/{DialogFomularEdit.tsx => DialogFormEdit.tsx} (93%) diff --git a/src/apps/opening-hours-editor/DialogFomularAdd.tsx b/src/apps/opening-hours-editor/DialogFormAdd.tsx similarity index 94% rename from src/apps/opening-hours-editor/DialogFomularAdd.tsx rename to src/apps/opening-hours-editor/DialogFormAdd.tsx index 165c1cf07c..0d783e71cc 100644 --- a/src/apps/opening-hours-editor/DialogFomularAdd.tsx +++ b/src/apps/opening-hours-editor/DialogFormAdd.tsx @@ -12,14 +12,14 @@ import EventForm, { EventFormOnSubmitType } from "./EventForm"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; import { OpeningHoursCategoriesType } from "./types"; -type DialogFomularAddProps = { +type DialogFormAddProps = { selectedEventInfo: DateSelectArg; handleEventAdd: (selectedEventInfo: DplOpeningHoursListGET200Item) => void; closeDialog: () => void; openingHoursCategories: OpeningHoursCategoriesType[]; }; -const DialogFomularAdd: React.FC = ({ +const DialogFormAdd: React.FC = ({ selectedEventInfo, handleEventAdd, closeDialog, @@ -78,4 +78,4 @@ const DialogFomularAdd: React.FC = ({ ); }; -export default DialogFomularAdd; +export default DialogFormAdd; diff --git a/src/apps/opening-hours-editor/DialogFomularEdit.tsx b/src/apps/opening-hours-editor/DialogFormEdit.tsx similarity index 93% rename from src/apps/opening-hours-editor/DialogFomularEdit.tsx rename to src/apps/opening-hours-editor/DialogFormEdit.tsx index eca42f6cd1..d20b212e6f 100644 --- a/src/apps/opening-hours-editor/DialogFomularEdit.tsx +++ b/src/apps/opening-hours-editor/DialogFormEdit.tsx @@ -11,7 +11,7 @@ import { useText } from "../../core/utils/text"; import { OpeningHoursCategoriesType } from "./types"; import { DplOpeningHoursListGET200Item } from "../../core/dpl-cms/model"; -type DialogFomularEditProps = { +type DialogFormEditProps = { eventInfo: EventImpl; handleEventEditing: (event: DplOpeningHoursListGET200Item) => void; closeDialog: () => void; @@ -19,7 +19,7 @@ type DialogFomularEditProps = { openingHoursCategories: OpeningHoursCategoriesType[]; }; -const DialogFomularEdit: React.FC = ({ +const DialogFormEdit: React.FC = ({ eventInfo, handleEventEditing, closeDialog, @@ -35,7 +35,7 @@ const DialogFomularEdit: React.FC = ({ ) => { if (!eventInfo.start || !eventInfo.end) { // eslint-disable-next-line no-alert - alert("Invalid event"); + alert(t("openingHoursInvalidEventText")); return; } const startDate = updateDateTime(eventInfo.start, startTime); @@ -88,4 +88,4 @@ const DialogFomularEdit: React.FC = ({ ); }; -export default DialogFomularEdit; +export default DialogFormEdit; diff --git a/src/apps/opening-hours-editor/EventForm.tsx b/src/apps/opening-hours-editor/EventForm.tsx index 5c314a44b3..02e0d29646 100644 --- a/src/apps/opening-hours-editor/EventForm.tsx +++ b/src/apps/opening-hours-editor/EventForm.tsx @@ -3,6 +3,7 @@ /* eslint-disable jsx-a11y/label-has-associated-control */ import React, { useEffect, useState } from "react"; import { OpeningHoursCategoriesType } from "./types"; +import { useText } from "../../core/utils/text"; export type EventFormOnSubmitType = ( category: OpeningHoursCategoriesType, @@ -27,6 +28,7 @@ const EventForm: React.FC = ({ openingHoursCategories, children }) => { + const t = useText(); const initialCategory = initialTitle ? openingHoursCategories.find((category) => category.title === initialTitle) : openingHoursCategories[0]; @@ -57,7 +59,7 @@ const EventForm: React.FC = ({ className="opening-hours-editor-form__label" htmlFor="event-form-title" > - Title: + {t("openingHoursEventFormTitleText")} = ({ className="opening-hours-editor-form__label" htmlFor="event-form-end-time" > - End Time: + {t("openingHoursEventFormEndTimeText")} = ({ className="opening-hours-editor-form__submit" disabled={isSameTime} > - Submit + {t("openingHoursEventFormSubmitText")} ); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx index b22946a362..975fd95073 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx @@ -13,6 +13,11 @@ export default { defaultValue: "Remove event", control: { type: "text" } }, + openingHoursInvalidEventText: { + name: "Opening hours invalid event text", + defaultValue: "Invalid event. No start or end time", + control: { type: "text" } + }, openingHoursEditorCategoriesConfig: { name: "Opening hours categories", defaultValue: @@ -24,10 +29,31 @@ export default { defaultValue: "12", control: { type: "text" } }, + // This date are aligned with the wiremock data useWireMockStartDate: { name: "Starting date for wiremock purposes", - defaultValue: true, - control: { type: "boolean" } + defaultValue: "2024-03-25", + control: { type: "text" } + }, + openingHoursEventFormTitleText: { + name: "Opening hours event form title", + defaultValue: "Title", + control: { type: "text" } + }, + openingHoursEventFormStartTimeText: { + name: "Opening hours event form start time", + defaultValue: "Start time", + control: { type: "text" } + }, + openingHoursEventFormEndTimeText: { + name: "Opening hours event form end time", + defaultValue: "End time", + control: { type: "text" } + }, + openingHoursEventFormSubmitText: { + name: "Opening hours event form submit", + defaultValue: "Submit", + control: { type: "text" } } } } as ComponentMeta; diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx index a3565301d6..8d6b9e9921 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx @@ -8,6 +8,11 @@ import { withConfig } from "../../core/utils/config"; interface OpeningHoursEditorEntryTextProps { openingHoursRemoveEventButtonText: string; + openingHoursInvalidEventText: string; + openingHoursEventFormTitleText: string; + openingHoursEventFormStartTimeText: string; + openingHoursEventFormEndTimeText: string; + openingHoursEventFormSubmitText: string; } interface OpeningHoursEditorEntryConfigProps { diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index abc5d2a10a..c70c833ba7 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -6,15 +6,15 @@ import interactionPlugin from "@fullcalendar/interaction"; import da from "@fullcalendar/core/locales/da"; import OpeningHoursEditorEventContent from "./OpeningHoursEditorEventContent"; import useOpeningHoursEditor from "./useOpeningHoursEditor"; -import DialogFomularEdit from "./DialogFomularEdit"; +import DialogFormEdit from "./DialogFormEdit"; import Dialog from "../../components/dialog/Dialog"; import useDialog from "../../components/dialog/useDialog"; -import DialogFomularAdd from "./DialogFomularAdd"; +import DialogFormAdd from "./DialogFormAdd"; import { OpeningHoursCategoriesType } from "./types"; import { useConfig } from "../../core/utils/config"; export type OpeningHoursEditorType = { - useWireMockStartDate?: boolean; + useWireMockStartDate?: string; }; const OpeningHoursEditor: React.FC = ({ @@ -47,7 +47,7 @@ const OpeningHoursEditor: React.FC = ({ = ({ selectable select={(selectedEventInfo) => openDialogWithContent( - = ({ unselectAuto={false} eventClick={(clickInfo) => openDialogWithContent( - ( onClick={closeDialog} className="dialog__close-button" > - close icon + {children} diff --git a/src/core/utils/types/ids.ts b/src/core/utils/types/ids.ts index 7c56cbe0d3..7412d30db5 100644 --- a/src/core/utils/types/ids.ts +++ b/src/core/utils/types/ids.ts @@ -14,7 +14,7 @@ export type GuardedAppId = | "recommended-material" | "recommendation" | "material-grid-automatic" - | "material-grid-manual" - | "opening-hours-editor"; + | "material-grid-manual"; + export type IssnId = DigitalArticleService["issn"]; export type LoanId = number; From 5fc436fba482d415dd36dafab6939dd62ca58d2b Mon Sep 17 00:00:00 2001 From: Kasper Birch Date: Fri, 5 Apr 2024 15:03:24 +0200 Subject: [PATCH 52/56] Remove 'orval' from dependencies This was not intended to be there. --- package.json | 3 +- yarn.lock | 953 +++++++++++++++++++++++++++------------------------ 2 files changed, 513 insertions(+), 443 deletions(-) diff --git a/package.json b/package.json index 75896f2d7d..bc6fbbca3e 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "markdownlint-cli2": "^0.4.0", "mutationobserver-shim": "^0.3.7", "nyc": "^15.1.0", - "orval": "^6.8.1", + "orval": "^6.26.0", "postcss": "^8.4.38", "postcss-cli": "^11.0.0", "postcss-loader": "^8.1.1", @@ -161,7 +161,6 @@ "graphql": "^16.8.1", "graphql-tag": "^2.12.6", "lodash": "^4.17.21", - "orval": "^6.26.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-device-detect": "^2.2.3", diff --git a/yarn.lock b/yarn.lock index 1ec5107b73..48851da319 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,7 +17,7 @@ "@apidevtools/json-schema-ref-parser@9.0.6": version "9.0.6" - resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== dependencies: "@jsdevtools/ono" "^7.1.3" @@ -26,12 +26,12 @@ "@apidevtools/openapi-schemas@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17" integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ== "@apidevtools/swagger-methods@^3.0.2": version "3.0.2" - resolved "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267" integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== "@apidevtools/swagger-parser@^10.1.0": @@ -1502,10 +1502,10 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@danskernesdigitalebibliotek/dpl-design-system@0.0.0-9af1a132615fdfb4295cbeca88275310a71b88da": - version "0.0.0-9af1a132615fdfb4295cbeca88275310a71b88da" - resolved "https://npm.pkg.github.com/download/@danskernesdigitalebibliotek/dpl-design-system/0.0.0-9af1a132615fdfb4295cbeca88275310a71b88da/54a2b2b313c0d04b46dd75128333cccd59772190#54a2b2b313c0d04b46dd75128333cccd59772190" - integrity sha512-f20gJ7IzNCcDs3nJ5CFo2yFJVbWzQNLKOPTMVAxCLHpnJodqE1Xl47uuLkSRm9ShIfRAMQrN3ejfhCOojuRPvg== +"@danskernesdigitalebibliotek/dpl-design-system@^0.0.0-b807dae9a38d9b7811b36f4b3f3063eec78f4f1f": + version "0.0.0-fff402ba1614ff85d3a187e176cb7810b6be190f" + resolved "https://npm.pkg.github.com/download/@danskernesdigitalebibliotek/dpl-design-system/0.0.0-fff402ba1614ff85d3a187e176cb7810b6be190f/0ffad3b0063964e34fb2b67fb1fa7efa34a6354a#0ffad3b0063964e34fb2b67fb1fa7efa34a6354a" + integrity sha512-oeSeqxsHYQQbgpz8zQWHAXijmk5flqpuPFjn7ZWhcqlFfypDhGmZa9suvfukwt/KzTfvNI3mzXP2xaLk7NOMlw== "@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": version "0.5.7" @@ -1882,9 +1882,9 @@ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@exodus/schemasafe@^1.0.0-rc.2": - version "1.0.0-rc.6" - resolved "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz" - integrity sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ== + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== "@fastify/busboy@^2.0.0": version "2.0.0" @@ -2501,18 +2501,18 @@ "@jsdevtools/ono@^7.1.3": version "7.1.3" - resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== "@jsep-plugin/regex@^1.0.1": - version "1.0.2" - resolved "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.2.tgz" - integrity sha512-Nn/Bcaww8zOebMDqNmGlhAWPWhIr/8S8lGIgaB/fSqev5xaO5uKy5i4qvTh63GpR+VzKqimgxDdcxdcRuCJXSw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@jsep-plugin/regex/-/regex-1.0.3.tgz#3aeaa2e5fa45d89de116aeafbfa41c95935b7f6d" + integrity sha512-XfZgry4DwEZvSFtS/6Y+R48D7qJYJK6R9/yJFyUFHCIUMEEHuJ4X95TDgJp5QkmzfLYvapMPzskV5HpIDrREug== "@jsep-plugin/ternary@^1.0.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.2.tgz" - integrity sha512-gXguJc09uCrqWt1MD7L1+ChO32g4UH4BYGpHPoQRLhyU7pAPPRA7cvKbyjoqhnUlLutiXvLzB5hVVawPKax8jw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@jsep-plugin/ternary/-/ternary-1.1.3.tgz#9ac0b752b9e99f55d23bfcb32cf08c5c2c03ce67" + integrity sha512-qtLGzCNzPVJ3kdH6/zoLWDPjauHIKiLSBAR71Wa0+PWvGA8wODUQvRgxtpUA5YqAYL3CQ8S4qXhd/9WuWTZirg== "@mdx-js/mdx@^1.6.22": version "1.6.22" @@ -2578,7 +2578,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2588,11 +2588,6 @@ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" @@ -2806,14 +2801,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90" integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw== -"@stoplight/better-ajv-errors@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.1.tgz" - integrity sha512-rgxT+ZMeZbYRiOLNk6Oy6e/Ig1iQKo0IL8v/Y9E/0FewzgtkGs/p5dMeUpIFZXWj3RZaEPmfL9yh0oUEmNXZjg== - dependencies: - jsonpointer "^5.0.0" - leven "^3.1.0" - "@stoplight/better-ajv-errors@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz#d74a5c4da5d786c17188d7f4edec505f089885fa" @@ -2824,52 +2811,29 @@ "@stoplight/json-ref-readers@1.2.2": version "1.2.2" - resolved "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz" + resolved "https://registry.yarnpkg.com/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz#e5992bae597f228f988f362a4c0304c03a92008b" integrity sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ== dependencies: node-fetch "^2.6.0" tslib "^1.14.1" -"@stoplight/json-ref-resolver@3.1.3": - version "3.1.3" - resolved "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.3.tgz" - integrity sha512-SgoKXwVnlpIZUyAFX4W79eeuTWvXmNlMfICZixL16GZXnkjcW+uZnfmAU0ZIjcnaTgaI4mjfxn8LAP2KR6Cr0A== +"@stoplight/json-ref-resolver@~3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz#dcf8724472b7d54e8e8952510f39b8ee901dcf56" + integrity sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A== dependencies: - "@stoplight/json" "^3.17.0" + "@stoplight/json" "^3.21.0" "@stoplight/path" "^1.3.2" - "@stoplight/types" "^12.3.0" - "@types/urijs" "^1.19.16" + "@stoplight/types" "^12.3.0 || ^13.0.0" + "@types/urijs" "^1.19.19" dependency-graph "~0.11.0" fast-memoize "^2.5.2" immer "^9.0.6" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - tslib "^2.3.1" - urijs "^1.19.6" - -"@stoplight/json@3.17.0": - version "3.17.0" - resolved "https://registry.npmjs.org/@stoplight/json/-/json-3.17.0.tgz" - integrity sha512-WW0z2bb0D4t8FTl+zNTCu46J8lEOsrUhBPgwEYQ3Ri2Y0MiRE4U1/9ZV8Ki+pIJznZgY9i42bbFwOBxyZn5/6w== - dependencies: - "@stoplight/ordered-object-literal" "^1.0.2" - "@stoplight/types" "^12.3.0" - jsonc-parser "~2.2.1" lodash "^4.17.21" - safe-stable-stringify "^1.1" - -"@stoplight/json@^3.17.0", "@stoplight/json@~3.18.1": - version "3.18.1" - resolved "https://registry.npmjs.org/@stoplight/json/-/json-3.18.1.tgz" - integrity sha512-QmELAqBS8DC+8YuG7+OvDVP6RaUVi8bzN0KKW2UEcZg+0a1sqeeZgfW079AmJIZg8HEN7udAt4iozIB8Dm0t1Q== - dependencies: - "@stoplight/ordered-object-literal" "^1.0.2" - "@stoplight/types" "^13.0.0" - jsonc-parser "~2.2.1" - lodash "^4.17.21" - safe-stable-stringify "^1.1" + tslib "^2.6.0" + urijs "^1.19.11" -"@stoplight/json@^3.17.1": +"@stoplight/json@^3.17.0", "@stoplight/json@^3.17.1", "@stoplight/json@^3.21.0", "@stoplight/json@~3.21.0": version "3.21.0" resolved "https://registry.yarnpkg.com/@stoplight/json/-/json-3.21.0.tgz#c0dff9c478f3365d7946cb6e34c17cc2fa84250b" integrity sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g== @@ -2881,77 +2845,44 @@ lodash "^4.17.21" safe-stable-stringify "^1.1" -"@stoplight/json@~3.17.1": - version "3.17.2" - resolved "https://registry.npmjs.org/@stoplight/json/-/json-3.17.2.tgz" - integrity sha512-NwIVzanXRUy291J5BMkncCZRMG1Lx+aq+VidGQgfkJjgo8vh1Y/PSAz7fSU8gVGSZBCcqmOkMI7R4zw7DlfTwA== - dependencies: - "@stoplight/ordered-object-literal" "^1.0.2" - "@stoplight/types" "^12.3.0" - jsonc-parser "~2.2.1" - lodash "^4.17.21" - safe-stable-stringify "^1.1" - -"@stoplight/lifecycle@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@stoplight/lifecycle/-/lifecycle-2.3.2.tgz" - integrity sha512-v0u8p27FA/eg04b4z6QXw4s0NeeFcRzyvseBW0+k/q4jtpg7EhVCqy42EbbbU43NTNDpIeQ81OcvkFz+6CYshw== - dependencies: - wolfy87-eventemitter "~5.2.8" - -"@stoplight/ordered-object-literal@^1.0.1", "@stoplight/ordered-object-literal@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.3.tgz" - integrity sha512-cjJ7PPkhgTXNMTkevAlmyrx9xOOCaI3c6rEeYb6VitL1o1WcZtrz9KyFyISmTmUa7yYTiy2IS/ud9S8s2sn3+A== - -"@stoplight/ordered-object-literal@^1.0.3": +"@stoplight/ordered-object-literal@^1.0.3", "@stoplight/ordered-object-literal@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz#06689095a4f1a53e9d9a5f0055f707c387af966a" integrity sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg== "@stoplight/path@1.3.2", "@stoplight/path@^1.3.2": version "1.3.2" - resolved "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/@stoplight/path/-/path-1.3.2.tgz#96e591496b72fde0f0cdae01a61d64f065bd9ede" integrity sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ== "@stoplight/spectral-core@^1.7.0", "@stoplight/spectral-core@^1.8.0", "@stoplight/spectral-core@^1.8.1": - version "1.12.2" - resolved "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.12.2.tgz" - integrity sha512-g2Nfvqr3m+hl7goB1VzAd7700xkrhReiQY+mb45NMzORKxy4JJfWdb23d8egdb/djyVOZ5QsFxQToGsCLVHu/w== + version "1.18.3" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-core/-/spectral-core-1.18.3.tgz#d6859182aa09681fe1e5af5a5f4c39082e554542" + integrity sha512-YY8x7X2SWJIhGTLPol+eFiQpWPz0D0mJdkK2i4A0QJG68KkNhypP6+JBC7/Kz3XWjqr0L/RqAd+N5cQLPOKZGQ== dependencies: - "@stoplight/better-ajv-errors" "1.0.1" - "@stoplight/json" "~3.18.1" - "@stoplight/lifecycle" "2.3.2" + "@stoplight/better-ajv-errors" "1.0.3" + "@stoplight/json" "~3.21.0" "@stoplight/path" "1.3.2" "@stoplight/spectral-parsers" "^1.0.0" "@stoplight/spectral-ref-resolver" "^1.0.0" "@stoplight/spectral-runtime" "^1.0.0" - "@stoplight/types" "13.1.0" - "@types/json-schema" "^7.0.7" + "@stoplight/types" "~13.6.0" + "@types/es-aggregate-error" "^1.0.2" + "@types/json-schema" "^7.0.11" ajv "^8.6.0" ajv-errors "~3.0.0" ajv-formats "~2.1.0" - blueimp-md5 "2.18.0" - jsonpath-plus "6.0.1" + es-aggregate-error "^1.0.7" + jsonpath-plus "7.1.0" lodash "~4.17.21" lodash.topath "^4.5.2" - minimatch "3.0.4" - nimma "0.2.1" + minimatch "3.1.2" + nimma "0.2.2" pony-cause "^1.0.0" simple-eval "1.0.0" tslib "^2.3.0" -"@stoplight/spectral-formats@^1.0.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.2.0.tgz" - integrity sha512-idvn7r8fvQjY/KeJpKgXQ5eJhce6N6/KoKWMPSh5yyvYDpn+bkU4pxAD79jOJaDnIyKJd1jjTPEJWnxbS0jj6A== - dependencies: - "@stoplight/json" "^3.17.0" - "@stoplight/spectral-core" "^1.8.0" - "@types/json-schema" "^7.0.7" - tslib "^2.3.1" - -"@stoplight/spectral-formats@^1.5.0", "@stoplight/spectral-formats@^1.6.0": +"@stoplight/spectral-formats@^1.0.0", "@stoplight/spectral-formats@^1.5.0", "@stoplight/spectral-formats@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz#c4a7169ac85a2855a3d76cdcc7a59e8f2e8f2bb3" integrity sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA== @@ -2961,25 +2892,7 @@ "@types/json-schema" "^7.0.7" tslib "^2.3.1" -"@stoplight/spectral-functions@^1.5.1": - version "1.6.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.6.1.tgz" - integrity sha512-f4cFtbI35bQtY0t4fYhKtS+/nMU3UsAeFlqm4tARGGG5WjOv4ieCFNFbgodKNiO3F4O+syMEjVQuXlBNPuY7jw== - dependencies: - "@stoplight/better-ajv-errors" "1.0.1" - "@stoplight/json" "~3.17.1" - "@stoplight/spectral-core" "^1.7.0" - "@stoplight/spectral-formats" "^1.0.0" - "@stoplight/spectral-runtime" "^1.1.0" - "@stoplight/types" "12.3.0" - ajv "^8.6.3" - ajv-draft-04 "~1.0.0" - ajv-errors "~3.0.0" - ajv-formats "~2.1.0" - lodash "~4.17.21" - tslib "^2.3.0" - -"@stoplight/spectral-functions@^1.7.2": +"@stoplight/spectral-functions@^1.5.1", "@stoplight/spectral-functions@^1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@stoplight/spectral-functions/-/spectral-functions-1.7.2.tgz#96ddc5dc2b093fba41a902a0ef374300f861f58f" integrity sha512-f+61/FtIkQeIo+a269CeaeqjpyRsgDyIk6DGr7iS4hyuk1PPk7Uf6MNRDs9FEIBh7CpdEJ+HSHbMLwgpymWTIw== @@ -2997,23 +2910,23 @@ tslib "^2.3.0" "@stoplight/spectral-parsers@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.1.tgz" - integrity sha512-JGKlrTxhjUzIGo2FOCf8Qp0WKTWXedoRNPovqYPE8pAp08epqU8DzHwl/i46BGH5yfTmouKMZgBN/PV2+Cr5jw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-parsers/-/spectral-parsers-1.0.4.tgz#78ce798264b9fd9a2c486b06cb9e3719da7482ae" + integrity sha512-nCTVvtX6q71M8o5Uvv9kxU31Gk1TRmgD6/k8HBhdCmKG6FWcwgjiZouA/R3xHLn/VwTI/9k8SdG5Mkdy0RBqbQ== dependencies: - "@stoplight/json" "3.17.0" - "@stoplight/types" "12.3.0" - "@stoplight/yaml" "4.2.2" + "@stoplight/json" "~3.21.0" + "@stoplight/types" "^14.1.1" + "@stoplight/yaml" "~4.3.0" tslib "^2.3.1" "@stoplight/spectral-ref-resolver@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.1.tgz" - integrity sha512-0tY7nTOccvTsa3c4QbSWfJ8wGfPO1RXvmKnmBjuyLfoTMNuhkHPII9gKhCjygsshzsBLxs2IyRHZYhWYVnEbCA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.4.tgz#cf0dc3d5f3fd36fb198a352657c20ef1c859bef5" + integrity sha512-5baQIYL0NJTSVy8v6RxOR4U51xOUYM8wJri1YvlAT6bPN8m0EIxMwfVYi0xUZEMVeHcWx869nIkoqyWmOutF2A== dependencies: "@stoplight/json-ref-readers" "1.2.2" - "@stoplight/json-ref-resolver" "3.1.3" - "@stoplight/spectral-runtime" "^1.0.0" + "@stoplight/json-ref-resolver" "~3.1.6" + "@stoplight/spectral-runtime" "^1.1.2" dependency-graph "0.11.0" tslib "^2.3.1" @@ -3037,9 +2950,9 @@ lodash "~4.17.21" tslib "^2.3.0" -"@stoplight/spectral-runtime@^1.0.0", "@stoplight/spectral-runtime@^1.1.0", "@stoplight/spectral-runtime@^1.1.1": +"@stoplight/spectral-runtime@^1.0.0", "@stoplight/spectral-runtime@^1.1.0", "@stoplight/spectral-runtime@^1.1.1", "@stoplight/spectral-runtime@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz#7315767a09a4a7e5226e997e245bd3eb39561a02" integrity sha512-fr5zRceXI+hrl82yAVoME+4GvJie8v3wmOe9tU+ZLRRNonizthy8qDi0Z/z4olE+vGreSDcuDOZ7JjRxFW5kTw== dependencies: "@stoplight/json" "^3.17.0" @@ -3050,59 +2963,51 @@ node-fetch "^2.6.7" tslib "^2.3.1" -"@stoplight/types@12.3.0": - version "12.3.0" - resolved "https://registry.npmjs.org/@stoplight/types/-/types-12.3.0.tgz" - integrity sha512-hgzUR1z5BlYvIzUeFK5pjs5JXSvEutA9Pww31+dVicBlunsG1iXopDx/cvfBY7rHOrgtZDuvyeK4seqkwAZ6Cg== - dependencies: - "@types/json-schema" "^7.0.4" - utility-types "^3.10.0" - -"@stoplight/types@13.1.0": - version "13.1.0" - resolved "https://registry.npmjs.org/@stoplight/types/-/types-13.1.0.tgz" - integrity sha512-ese47WaU0Jepai7ZzCs1uy5UqpoFZ9a9rDNPHQMBIGAq/dfMPWHK5rbpOiSzBGtysyley4tzx7hjjpYkfvB3HQ== +"@stoplight/types@^12.3.0": + version "12.5.0" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-12.5.0.tgz#ebbeeb8c874de30e4cd9a1a2a6c8d6062c155da0" + integrity sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg== dependencies: "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/types@^12.0.0", "@stoplight/types@^12.3.0": - version "12.5.0" - resolved "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz" - integrity sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg== +"@stoplight/types@^12.3.0 || ^13.0.0", "@stoplight/types@^13.6.0": + version "13.20.0" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.20.0.tgz#d42682f1e3a14a3c60bdf0df08bff4023518763d" + integrity sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA== dependencies: "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/types@^13.0.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@stoplight/types/-/types-13.3.0.tgz" - integrity sha512-1DuqsnlKXF6Cf4PAJyJKMSt73Y+54AR+x+mt1Z3XxfHaSl/m2z7dHhLqLlTRHNqB3GOOoLgYzfuzEwHuYKIXRw== +"@stoplight/types@^14.1.1": + version "14.1.1" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-14.1.1.tgz#0dd5761aac25673a951955e984c724c138368b7a" + integrity sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g== dependencies: "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/types@^13.6.0": - version "13.20.0" - resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.20.0.tgz#d42682f1e3a14a3c60bdf0df08bff4023518763d" - integrity sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA== +"@stoplight/types@~13.6.0": + version "13.6.0" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.6.0.tgz#96c6aaae05858b36f589821cd52c95aa9b205ce7" + integrity sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ== dependencies: "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/yaml-ast-parser@0.0.48": - version "0.0.48" - resolved "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz" - integrity sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg== +"@stoplight/yaml-ast-parser@0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz#ed625a1d9ae63eb61980446e058fa745386ab61e" + integrity sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ== -"@stoplight/yaml@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.2.2.tgz" - integrity sha512-N086FU8pmSpjc5TvMBjmlTniZVh3OXzmEh6SYljSLiuv6aMxgjyjf13YrAlUqgu0b4b6pQ5zmkjrfo9i0SiLsw== +"@stoplight/yaml@~4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@stoplight/yaml/-/yaml-4.3.0.tgz#ca403157472509812ccec6f277185e7e65d7bd7d" + integrity sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w== dependencies: - "@stoplight/ordered-object-literal" "^1.0.1" - "@stoplight/types" "^12.0.0" - "@stoplight/yaml-ast-parser" "0.0.48" + "@stoplight/ordered-object-literal" "^1.0.5" + "@stoplight/types" "^14.1.1" + "@stoplight/yaml-ast-parser" "0.0.50" tslib "^2.2.0" "@storybook/addon-actions@6.5.10": @@ -4562,11 +4467,18 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*", "@types/color-name@^1.1.1": +"@types/color-name@*": version "1.1.1" resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/es-aggregate-error@^1.0.2": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz#1472dfb0fb1cb4c3f2bd3b2a7b7e19f60a1d66c0" + integrity sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg== + dependencies: + "@types/node" "*" + "@types/eslint-scope@^3.7.3": version "3.7.3" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz" @@ -4681,26 +4593,26 @@ resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== -"@types/json-schema@*", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json-schema@^7.0.11": +"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.7": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.8": - version "7.0.10" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz" - integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== - "@types/json-schema@^7.0.5": version "7.0.6" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json-schema@^7.0.8": + version "7.0.10" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz" + integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== + "@types/json-stable-stringify@^1.0.32": version "1.0.34" resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz" @@ -4889,10 +4801,10 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/urijs@^1.19.16": - version "1.19.19" - resolved "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.19.tgz" - integrity sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg== +"@types/urijs@^1.19.19": + version "1.19.25" + resolved "https://registry.yarnpkg.com/@types/urijs/-/urijs-1.19.25.tgz#ac92b53e674c3b108decdbe88dc5f444a2f42f6a" + integrity sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg== "@types/use-sync-external-store@^0.0.3": version "0.0.3" @@ -5448,7 +5360,7 @@ JSONStream@^1.0.3: abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" @@ -5555,7 +5467,7 @@ airbnb-js-shims@^2.2.1: ajv-draft-04@^1.0.0, ajv-draft-04@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8" integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw== ajv-errors@^1.0.0: @@ -5565,7 +5477,7 @@ ajv-errors@^1.0.0: ajv-errors@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-3.0.0.tgz#e54f299f3a3d30fe144161e5f0d8d51196c527bc" integrity sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ== ajv-formats@^2.1.1, ajv-formats@~2.1.0: @@ -5620,9 +5532,9 @@ ansi-colors@^3.0.0: integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^3.0.0: version "3.2.0" @@ -5658,7 +5570,7 @@ ansi-regex@^4.1.0: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: @@ -5678,21 +5590,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - ansi-styles@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" @@ -5723,7 +5627,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.0, anymatch@^3.1.0, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.1.0: version "3.1.2" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -5739,6 +5643,14 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" @@ -5794,7 +5706,7 @@ arg@^4.1.0: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" @@ -5880,7 +5792,7 @@ array-union@^1.0.2: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-union@^3.0.1: @@ -6075,9 +5987,9 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== astring@^1.8.1: - version "1.8.3" - resolved "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz" - integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A== + version "1.8.6" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" + integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== async-each@^1.0.1: version "1.0.3" @@ -6423,7 +6335,7 @@ bail@^1.0.0: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== balanced-match@^2.0.0: @@ -6484,9 +6396,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bindings@^1.5.0: version "1.5.0" @@ -6519,11 +6431,6 @@ bluebird@^3.7.2: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -blueimp-md5@2.18.0: - version "2.18.0" - resolved "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz" - integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" @@ -6580,7 +6487,7 @@ bplist-parser@^0.1.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -6588,7 +6495,7 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" @@ -6611,7 +6518,7 @@ braces@^2.3.1, braces@^2.3.2: braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" @@ -7046,9 +6953,9 @@ call-bind@^1.0.6, call-bind@^1.0.7: set-function-length "^1.2.1" call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== callsites@^3.0.0: version "3.1.0" @@ -7283,7 +7190,7 @@ chokidar-cli@^3.0.0: lodash.throttle "^4.1.1" yargs "^13.3.0" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -7317,6 +7224,21 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1: version "1.1.3" resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz" @@ -7545,7 +7467,7 @@ color-convert@^1.9.0: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" @@ -7557,7 +7479,7 @@ color-name@1.1.3: color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-support@^1.1.2: @@ -7694,8 +7616,8 @@ compute-scroll-into-view@^1.0.17: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: version "1.6.2" @@ -8306,6 +8228,33 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dataloader@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz" @@ -8554,10 +8503,10 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== dependency-graph@0.11.0, dependency-graph@^0.11.0, dependency-graph@~0.11.0: version "0.11.0" @@ -8661,7 +8610,7 @@ dir-glob@^2.2.2: dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" @@ -8932,7 +8881,7 @@ emoji-regex@^7.0.1: emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: @@ -9192,6 +9141,72 @@ es-abstract@^1.22.3, es-abstract@^1.22.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.14" +es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + 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" + +es-aggregate-error@^1.0.7: + version "1.0.13" + resolved "https://registry.yarnpkg.com/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz#7f28b77c9d8d09bbcd3a466e4be9fe02fa985201" + integrity sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A== + dependencies: + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + set-function-name "^2.0.2" + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -9245,6 +9260,13 @@ es-module-lexer@^1.2.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" @@ -9307,7 +9329,7 @@ es6-error@^4.0.1: es6-promise@^3.2.1: version "3.3.1" - resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== es6-shim@^0.35.5: @@ -9373,9 +9395,9 @@ esbuild@^0.19.11: "@esbuild/win32-x64" "0.19.12" escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-html@~1.0.3: version "1.0.3" @@ -9658,7 +9680,7 @@ espree@^9.6.0, espree@^9.6.1: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: @@ -9704,7 +9726,7 @@ etag@~1.8.1: event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter2@^6.4.3: @@ -9765,7 +9787,7 @@ execa@^1.0.0: execa@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -9931,7 +9953,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.1: +fast-glob@^3.2.7, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -9942,7 +9964,7 @@ fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.3.2: +fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -9975,13 +9997,13 @@ fast-loops@^1.1.3: fast-memoize@^2.5.2: version "2.5.2" - resolved "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz" + resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== fast-safe-stringify@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-shallow-equal@^1.0.0: version "1.0.0" @@ -9999,9 +10021,9 @@ fastest-stable-stringify@^2.0.2: integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== fastq@^1.6.0: - version "1.9.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz" - integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -10124,7 +10146,7 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" @@ -10667,7 +10689,7 @@ get-stream@^5.1.0: get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: @@ -10723,7 +10745,7 @@ glob-parent@^3.1.0: glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -10837,7 +10859,7 @@ globalthis@^1.0.3: globby@11.1.0, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -11022,7 +11044,7 @@ has-flag@^3.0.0: has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-glob@^1.0.0: @@ -11159,7 +11181,7 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -hasown@^2.0.1: +hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -11399,15 +11421,15 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-proxy-agent@^5.0.0: @@ -11430,7 +11452,7 @@ http-signature@~1.3.6: http2-client@^1.2.5: version "1.3.5" - resolved "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== https-browserify@^1.0.0: @@ -11453,7 +11475,7 @@ human-signals@^1.1.1: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== hyphenate-style-name@^1.0.3: @@ -11500,11 +11522,16 @@ ignore@^4.0.3: resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + immer@^9.0.21, immer@^9.0.6: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -11844,7 +11871,7 @@ is-binary-path@^1.0.0: is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" @@ -11917,6 +11944,13 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz" @@ -11984,8 +12018,8 @@ is-extendable@^1.0.1: is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finalizationregistry@^1.0.2: version "1.0.2" @@ -12013,7 +12047,7 @@ is-fullwidth-code-point@^2.0.0: is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-fullwidth-code-point@^4.0.0: @@ -12035,7 +12069,7 @@ is-generator-function@^1.0.10, is-generator-function@^1.0.7: is-glob@4.0.3, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -12103,7 +12137,7 @@ is-number@^3.0.0: is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-object@^1.0.1: @@ -12198,7 +12232,7 @@ is-stream@^1.1.0: is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: @@ -12345,8 +12379,8 @@ isarray@^2.0.5: isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" @@ -12614,7 +12648,7 @@ js-yaml@4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -12626,9 +12660,9 @@ jsbn@~0.1.0: integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsep@^1.1.2, jsep@^1.2.0: - version "1.3.6" - resolved "https://registry.npmjs.org/jsep/-/jsep-1.3.6.tgz" - integrity sha512-o7fP1eZVROIChADx7HKiwGRVI0tUqgUUGhaok6DP7cMxpDeparuooREDBDeNk2G5KIB49MBSkRYsCOu4PmZ+1w== + version "1.3.8" + resolved "https://registry.yarnpkg.com/jsep/-/jsep-1.3.8.tgz#facb6eb908d085d71d950bd2b24b757c7b8a46d7" + integrity sha512-qofGylTGgYj9gZFsHuyWAN4jr35eJ66qJCK4eKDnldohuUoQFbU3iZn2zjvEbd9wOAhP9Wx5DsAAduTyE1PSWQ== jsesc@^2.5.1: version "2.5.2" @@ -12667,7 +12701,7 @@ json-schema-traverse@^0.4.1: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@0.4.0: @@ -12726,7 +12760,7 @@ jsonc-parser@^3.2.0: jsonc-parser@~2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.2.1.tgz#db73cd59d78cce28723199466b2a03d1be1df2bc" integrity sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w== jsonfile@^2.1.0: @@ -12744,11 +12778,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -12762,15 +12796,20 @@ jsonparse@^1.2.0: resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonpath-plus@6.0.1, jsonpath-plus@^6.0.1: +jsonpath-plus@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-7.1.0.tgz#9ac63c3d32a4d91ada68d57e056cb7983e73290a" + integrity sha512-gTaNRsPWO/K2KY6MrqaUFClF9kmuM6MFH5Dhg1VYDODgFbByw1yb7xu3hrViE/sz+dGOeMWgCzwUwQtAnCTE9g== + +jsonpath-plus@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== jsonpointer@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz" - integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== jsonwebtoken@^8.5.1: version "8.5.1" @@ -12938,7 +12977,7 @@ lazy-universal-dotenv@^3.0.1: leven@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: @@ -13093,7 +13132,7 @@ locate-path@^5.0.0: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" @@ -13177,12 +13216,12 @@ lodash.merge@^4.6.2: lodash.omit@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== lodash.omitby@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/lodash.omitby/-/lodash.omitby-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791" integrity sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ== lodash.once@^4.0.0, lodash.once@^4.1.1: @@ -13190,11 +13229,6 @@ lodash.once@^4.0.0, lodash.once@^4.1.1: resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz" - integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -13207,7 +13241,7 @@ lodash.throttle@^4.1.1: lodash.topath@^4.5.2: version "4.5.2" - resolved "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg== lodash.truncate@^4.4.2: @@ -13222,12 +13256,12 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: lodash.uniqby@^4.7.0: version "4.7.0" - resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== lodash.uniqwith@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz#7a0cbf65f43b5928625a9d4d0dc54b18cadc7ef3" integrity sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q== lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0, lodash@~4.17.21: @@ -13646,7 +13680,7 @@ merge-descriptors@1.0.1: merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.3: @@ -13656,7 +13690,7 @@ merge2@^1.2.3: merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== meros@^1.1.4: @@ -13703,7 +13737,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -13751,7 +13785,7 @@ mimic-fn@^1.0.0: mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^3.1.0: @@ -13791,10 +13825,10 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" @@ -13812,13 +13846,6 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimatch@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" @@ -14070,10 +14097,10 @@ nice-try@^1.0.4: resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nimma@0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/nimma/-/nimma-0.2.1.tgz" - integrity sha512-z3QgbdfhBRUBIJX6eRgNyu5z3KE7AEHYPBvIcsmEsS7hO7TdNaaXHiz21FNEVIVuhH6QsvFGw/4vGmRpDrz+HA== +nimma@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/nimma/-/nimma-0.2.2.tgz#48d00f837d17b4baa23beec22ac1380f152f15ef" + integrity sha512-V52MLl7BU+tH2Np9tDrIXK8bql3MVUadnMIl/0/oZSGC9keuro0O9UUv9QKp0aMvtN8HRew4G7byY7H4eWsxaQ== dependencies: "@jsep-plugin/regex" "^1.0.1" "@jsep-plugin/ternary" "^1.0.2" @@ -14113,18 +14140,25 @@ node-domexception@1.0.0: node-fetch-h2@^2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== dependencies: http2-client "^1.2.5" -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" @@ -14173,7 +14207,7 @@ node-preload@^0.2.1: node-readfiles@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== dependencies: es6-promise "^3.2.1" @@ -14212,7 +14246,7 @@ normalize-path@^2.1.1: normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: @@ -14241,7 +14275,7 @@ npm-run-path@^4.0.0: npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" @@ -14330,14 +14364,14 @@ nyc@15.1.0, nyc@^15.1.0: oas-kit-common@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== dependencies: fast-safe-stringify "^2.0.7" oas-linter@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== dependencies: "@exodus/schemasafe" "^1.0.0-rc.2" @@ -14346,7 +14380,7 @@ oas-linter@^3.2.2: oas-resolver@^2.5.6: version "2.5.6" - resolved "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== dependencies: node-fetch-h2 "^2.3.0" @@ -14357,12 +14391,12 @@ oas-resolver@^2.5.6: oas-schema-walker@^1.1.5: version "1.1.5" - resolved "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== oas-validator@^5.0.8: version "5.0.8" - resolved "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== dependencies: call-me-maybe "^1.0.1" @@ -14563,7 +14597,7 @@ onetime@^5.1.0: onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" @@ -14733,7 +14767,7 @@ p-finally@^1.0.0: resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@3.1.0: +p-limit@3.1.0, p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -14754,13 +14788,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - p-limit@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" @@ -14784,7 +14811,7 @@ p-locate@^4.1.0: p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" @@ -14824,7 +14851,7 @@ p-timeout@^3.1.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-hash@^4.0.0: @@ -15030,7 +15057,7 @@ path-exists@^3.0.0: path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-exists@^5.0.0: @@ -15050,7 +15077,7 @@ path-key@^2.0.0, path-key@^2.0.1: path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: @@ -15098,7 +15125,7 @@ path-type@^3.0.0: path-type@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== path-type@^5.0.0: @@ -15147,26 +15174,16 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4: - version "2.1.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz" - integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== - -picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== picomatch@^2.2.3: version "2.3.0" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -picomatch@^2.3.0, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -15259,7 +15276,7 @@ polished@^4.0.5, polished@^4.2.2: pony-cause@^1.0.0: version "1.1.1" - resolved "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-1.1.1.tgz#f795524f83bebbf1878bd3587b45f69143cbf3f9" integrity sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g== posix-character-classes@^0.1.0: @@ -15870,15 +15887,22 @@ punycode@^1.2.4, punycode@^1.3.2: resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +punycode@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.9.7: - version "6.9.7" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" qs@^6.10.0: version "6.10.3" @@ -15902,6 +15926,11 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -16343,7 +16372,7 @@ readdirp@^2.2.1: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -16411,7 +16440,7 @@ refractor@^3.1.0, refractor@^3.6.0: reftools@^1.1.9: version "1.1.9" - resolved "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== regenerate-unicode-properties@^10.1.0: @@ -16712,12 +16741,12 @@ request-progress@^3.0.0: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^2.0.0: @@ -16810,7 +16839,7 @@ ret@~0.1.10: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: @@ -16865,9 +16894,11 @@ run-async@^2.4.0: integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -16900,7 +16931,7 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-array-concat@^1.1.0: +safe-array-concat@^1.1.0, safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== @@ -16957,7 +16988,7 @@ safe-regex@^1.1.0: safe-stable-stringify@^1.1: version "1.1.1" - resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: @@ -17175,6 +17206,16 @@ set-function-name@^2.0.0, set-function-name@^2.0.1: functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" +set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + set-harmonic-interval@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" @@ -17239,7 +17280,7 @@ shebang-command@^1.2.0: shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" @@ -17251,7 +17292,7 @@ shebang-regex@^1.0.0: shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.4.2, shell-quote@^1.6.1, shell-quote@^1.8.1: @@ -17261,14 +17302,14 @@ shell-quote@^1.4.2, shell-quote@^1.6.1, shell-quote@^1.8.1: should-equal@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== dependencies: should-type "^1.4.0" should-format@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== dependencies: should-type "^1.3.0" @@ -17276,7 +17317,7 @@ should-format@^3.0.3: should-type-adaptors@^1.0.1: version "1.1.0" - resolved "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== dependencies: should-type "^1.3.0" @@ -17284,17 +17325,17 @@ should-type-adaptors@^1.0.1: should-type@^1.3.0, should-type@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== should-util@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== should@^13.2.1: version "13.2.3" - resolved "https://registry.npmjs.org/should/-/should-13.2.3.tgz" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== dependencies: should-equal "^2.0.0" @@ -17344,7 +17385,7 @@ simple-concat@^1.0.0: simple-eval@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/simple-eval/-/simple-eval-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/simple-eval/-/simple-eval-1.0.0.tgz#7ba8e6049840690b2d4e356ed01f13209e03aad1" integrity sha512-kpKJR+bqTscgC0xuAl2xHN6bB12lHjC2DCUfqjAx19bQyO3R2EVLOurm3H9AUltv/uFVcSCVNc6faegR+8NYLw== dependencies: jsep "^1.1.2" @@ -17361,7 +17402,7 @@ slash@^2.0.0: slash@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slash@^4.0.0: @@ -17568,8 +17609,8 @@ sponge-case@^1.0.1: sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.14.1: version "1.17.0" @@ -17657,10 +17698,10 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== std-env@^3.3.1: version "3.3.2" @@ -17779,7 +17820,7 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -17846,6 +17887,16 @@ string.prototype.trim@^1.2.8: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" @@ -17863,6 +17914,15 @@ string.prototype.trimend@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz" @@ -17896,6 +17956,15 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -17933,7 +18002,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" @@ -17969,7 +18038,7 @@ strip-eof@^1.0.0: strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^1.0.1: @@ -18187,7 +18256,7 @@ supports-color@^5.3.0: supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -18239,7 +18308,7 @@ svgo@^3.2.0: swagger2openapi@^7.0.8: version "7.0.8" - resolved "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== dependencies: call-me-maybe "^1.0.1" @@ -18590,7 +18659,7 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" @@ -18632,8 +18701,8 @@ tr46@^1.0.1: tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tree-kill@^1.2.2: version "1.2.2" @@ -18741,11 +18810,16 @@ tslib@^1.0.0, tslib@^1.10.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@~2.4.0: +tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@~2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@~2.3.0: version "2.3.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" @@ -18915,6 +18989,18 @@ typed-array-length@^1.0.5: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + 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" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" @@ -19145,15 +19231,10 @@ universalify@^0.1.0: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unixify@^1.0.0: version "1.0.0" @@ -19224,14 +19305,14 @@ upper-case@^2.0.2: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -urijs@^1.19.6: +urijs@^1.19.11: version "1.19.11" - resolved "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== urix@^0.1.0: @@ -19357,9 +19438,9 @@ utila@^0.4.0, utila@~0.4: integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== utils-merge@1.0.1: version "1.0.1" @@ -19598,8 +19679,8 @@ web-streams-polyfill@^3.2.0: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^4.0.2: version "4.0.2" @@ -19789,8 +19870,8 @@ whatwg-mimetype@^3.0.0: whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" @@ -19859,7 +19940,7 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -which-typed-array@^1.1.14: +which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -19891,7 +19972,7 @@ which@^1.2.9, which@^1.3.1: which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" @@ -19930,11 +20011,6 @@ wildcard@^2.0.0: resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -wolfy87-eventemitter@~5.2.8: - version "5.2.9" - resolved "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.9.tgz" - integrity sha512-P+6vtWyuDw+MB01X7UeF8TaHBvbCovf4HPEMF/SV7BdDc1SMTiBy13SRD71lQh4ExFTG1d/WNzDGDCyOKSMblw== - word-wrap@~1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -19987,7 +20063,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -20046,7 +20122,7 @@ y18n@^4.0.0: y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: @@ -20066,7 +20142,7 @@ yaml-ast-parser@^0.0.43: yaml@1.10.2, yaml@^1.10.0: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^1.7.2: @@ -20076,12 +20152,7 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" -yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - -yaml@^2.4.1: +yaml@^2.3.4, yaml@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== From 4d9609eab5baf59de10bb77d04b435a1094ce889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Garn=C3=A6s?= Date: Sun, 7 Apr 2024 12:33:57 +0200 Subject: [PATCH 53/56] Delete CMS model before generating a new one with Orval This allows us to remove any part of the model that is no longer relevant - either because the specification (or portentially Orval) has been updated. Orval has a clean configuration option that we could use for this https://orval.dev/reference/configuration/output#clean Unfortunately it does not seem to work properly. It also deletes our custom mutator code. It seems to be a known issue: https://github.com/anymaniax/orval/issues/333 For now we just delete the code by hand. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bc6fbbca3e..c2a14f523b 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "codegen:client:fbs": "orval --project fbsAdapter", "codegen:client:cover": "orval --project coverService", "codegen:client:publizon": "orval --project publizonAdapter", - "codegen:client:dpl-cms": "orval --project dplCms", + "codegen:client:dpl-cms": "rm -rf src/core/dpl-cms/model/*.* && orval --project dplCms", "post-process-generated-graphql": "ts-node ./scripts/post-process-generated-graphql.ts" }, "devDependencies": { From 640238ef1be5663e27f2098162feaf8052654113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Garn=C3=A6s?= Date: Sun, 7 Apr 2024 12:34:30 +0200 Subject: [PATCH 54/56] Update our generated CMS client code This should remove leftovers from previous versions generated using an older version of Orval. --- .../dplDasDigitalArticleOrderPOSTBody.ts | 12 ---------- .../dplDasDigitalArticleOrderPOSTFormat.ts | 15 ------------- .../dplDasDigitalArticleOrderPOSTParams.ts | 12 ---------- .../dpl-cms/model/dplOpeningHoursDELETE200.ts | 22 ------------------- .../model/dplOpeningHoursDELETE200Category.ts | 13 ----------- .../model/dplOpeningHoursDELETEFormat.ts | 15 ------------- .../model/dplOpeningHoursDELETEParams.ts | 12 ---------- .../dpl-cms/model/dplOpeningHoursGET200.ts | 22 ------------------- .../model/dplOpeningHoursGET200Category.ts | 13 ----------- .../dpl-cms/model/dplOpeningHoursGETFormat.ts | 15 ------------- ...OpeningHoursGETOpeningHoursInstanceBody.ts | 22 ------------------- ...oursGETOpeningHoursInstanceBodyCategory.ts | 13 ----------- .../dpl-cms/model/dplOpeningHoursGETParams.ts | 10 --------- .../dpl-cms/model/dplOpeningHoursPATCH200.ts | 22 ------------------- .../model/dplOpeningHoursPATCH200Category.ts | 13 ----------- .../model/dplOpeningHoursPATCHFormat.ts | 15 ------------- .../model/dplOpeningHoursPATCHParams.ts | 12 ---------- .../dpl-cms/model/dplOpeningHoursPOST200.ts | 22 ------------------- .../model/dplOpeningHoursPOST200Category.ts | 13 ----------- .../model/dplOpeningHoursPOSTFormat.ts | 15 ------------- .../model/dplOpeningHoursPOSTParams.ts | 10 --------- src/core/dpl-cms/model/index.ts | 21 ------------------ 22 files changed, 339 deletions(-) delete mode 100644 src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTBody.ts delete mode 100644 src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTFormat.ts delete mode 100644 src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTParams.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGET200.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursGETParams.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOST200.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts delete mode 100644 src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts diff --git a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTBody.ts b/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTBody.ts deleted file mode 100644 index c0be9b41cd..0000000000 --- a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTBody.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplDasDigitalArticleOrderPOSTBody = { - pid?: string; - email?: string; -}; diff --git a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTFormat.ts b/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTFormat.ts deleted file mode 100644 index 170c07af8a..0000000000 --- a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTFormat.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplDasDigitalArticleOrderPOSTFormat = - typeof DplDasDigitalArticleOrderPOSTFormat[keyof typeof DplDasDigitalArticleOrderPOSTFormat]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplDasDigitalArticleOrderPOSTFormat = { - json: "json" -} as const; diff --git a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTParams.ts b/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTParams.ts deleted file mode 100644 index abc8ef70eb..0000000000 --- a/src/core/dpl-cms/model/dplDasDigitalArticleOrderPOSTParams.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplDasDigitalArticleOrderPOSTFormat } from "./dplDasDigitalArticleOrderPOSTFormat"; - -export type DplDasDigitalArticleOrderPOSTParams = { - _format?: DplDasDigitalArticleOrderPOSTFormat; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts deleted file mode 100644 index 3c31efd2d8..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursDELETE200.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursDELETE200Category } from "./dplOpeningHoursDELETE200Category"; - -export type DplOpeningHoursDELETE200 = { - /** An serial unique id of the opening hours instance. */ - id: number; - category: DplOpeningHoursDELETE200Category; - /** The date which the opening hours applies to. In ISO 8601 format. */ - date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; - /** When the opening hours end. In format HH:MM */ - end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts deleted file mode 100644 index be93955947..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursDELETE200Category.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursDELETE200Category = { - title: string; - /** A CSS compatible color code which can be used to represent the category */ - color: string; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts deleted file mode 100644 index f89951b735..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursDELETEFormat.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursDELETEFormat = - typeof DplOpeningHoursDELETEFormat[keyof typeof DplOpeningHoursDELETEFormat]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursDELETEFormat = { - json: "json" -} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts b/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts deleted file mode 100644 index a90b53f72a..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursDELETEParams.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursDELETEFormat } from "./dplOpeningHoursDELETEFormat"; - -export type DplOpeningHoursDELETEParams = { - _format?: DplOpeningHoursDELETEFormat; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGET200.ts b/src/core/dpl-cms/model/dplOpeningHoursGET200.ts deleted file mode 100644 index b22525e057..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGET200.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursGET200Category } from "./dplOpeningHoursGET200Category"; - -export type DplOpeningHoursGET200 = { - /** An serial unique id of the opening hours instance. */ - id: number; - category: DplOpeningHoursGET200Category; - /** The date which the opening hours applies to. In ISO 8601 format. */ - date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; - /** When the opening hours end. In format HH:MM */ - end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts deleted file mode 100644 index 0564b66965..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGET200Category.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursGET200Category = { - title: string; - /** A CSS compatible color code which can be used to represent the category */ - color: string; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts deleted file mode 100644 index 3981fa5cb2..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGETFormat.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursGETFormat = - typeof DplOpeningHoursGETFormat[keyof typeof DplOpeningHoursGETFormat]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursGETFormat = { - json: "json" -} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts deleted file mode 100644 index 387e6601f5..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBody.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursGETOpeningHoursInstanceBodyCategory } from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; - -export type DplOpeningHoursGETOpeningHoursInstanceBody = { - /** An serial unique id of the opening hours instance. */ - id?: number; - category: DplOpeningHoursGETOpeningHoursInstanceBodyCategory; - /** The date which the opening hours applies to. In ISO 8601 format. */ - date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; - /** When the opening hours end. In format HH:MM */ - end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts b/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts deleted file mode 100644 index 7af331c98c..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGETOpeningHoursInstanceBodyCategory.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursGETOpeningHoursInstanceBodyCategory = { - title: string; - /** A CSS compatible color code which can be used to represent the category */ - color: string; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts b/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts deleted file mode 100644 index a8703b9127..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursGETParams.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursGETFormat } from "./dplOpeningHoursGETFormat"; - -export type DplOpeningHoursGETParams = { _format?: DplOpeningHoursGETFormat }; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts deleted file mode 100644 index d8c6cadfa9..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPATCH200.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursPATCH200Category } from "./dplOpeningHoursPATCH200Category"; - -export type DplOpeningHoursPATCH200 = { - /** An serial unique id of the opening hours instance. */ - id: number; - category: DplOpeningHoursPATCH200Category; - /** The date which the opening hours applies to. In ISO 8601 format. */ - date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; - /** When the opening hours end. In format HH:MM */ - end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts deleted file mode 100644 index 02ac5b5ba1..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPATCH200Category.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursPATCH200Category = { - title: string; - /** A CSS compatible color code which can be used to represent the category */ - color: string; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts deleted file mode 100644 index 51429f8658..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPATCHFormat.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursPATCHFormat = - typeof DplOpeningHoursPATCHFormat[keyof typeof DplOpeningHoursPATCHFormat]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursPATCHFormat = { - json: "json" -} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts b/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts deleted file mode 100644 index 4b2cf0a915..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPATCHParams.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursPATCHFormat } from "./dplOpeningHoursPATCHFormat"; - -export type DplOpeningHoursPATCHParams = { - _format?: DplOpeningHoursPATCHFormat; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts b/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts deleted file mode 100644 index d329229550..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPOST200.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursPOST200Category } from "./dplOpeningHoursPOST200Category"; - -export type DplOpeningHoursPOST200 = { - /** An serial unique id of the opening hours instance. */ - id: number; - category: DplOpeningHoursPOST200Category; - /** The date which the opening hours applies to. In ISO 8601 format. */ - date: string; - /** When the opening hours start. In format HH:MM */ - start_time: string; - /** When the opening hours end. In format HH:MM */ - end_time: string; - /** The id for the branch the instance belongs to */ - branch_id: number; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts b/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts deleted file mode 100644 index a750a58267..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPOST200Category.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursPOST200Category = { - title: string; - /** A CSS compatible color code which can be used to represent the category */ - color: string; -}; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts b/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts deleted file mode 100644 index d1cf28f8a2..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPOSTFormat.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ - -export type DplOpeningHoursPOSTFormat = - typeof DplOpeningHoursPOSTFormat[keyof typeof DplOpeningHoursPOSTFormat]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DplOpeningHoursPOSTFormat = { - json: "json" -} as const; diff --git a/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts b/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts deleted file mode 100644 index ed46730de5..0000000000 --- a/src/core/dpl-cms/model/dplOpeningHoursPOSTParams.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v6.8.1 ๐Ÿบ - * Do not edit manually. - * DPL CMS - REST API - * The REST API provide by the core REST module. - * OpenAPI spec version: Versioning not supported - */ -import type { DplOpeningHoursPOSTFormat } from "./dplOpeningHoursPOSTFormat"; - -export type DplOpeningHoursPOSTParams = { _format?: DplOpeningHoursPOSTFormat }; diff --git a/src/core/dpl-cms/model/index.ts b/src/core/dpl-cms/model/index.ts index 97be3744b9..9058f7e694 100644 --- a/src/core/dpl-cms/model/index.ts +++ b/src/core/dpl-cms/model/index.ts @@ -13,39 +13,18 @@ export * from "./campaignMatchPOSTBodyItem"; export * from "./campaignMatchPOSTBodyItemValuesItem"; export * from "./campaignMatchPOSTFormat"; export * from "./campaignMatchPOSTParams"; -export * from "./dplDasDigitalArticleOrderPOSTBody"; -export * from "./dplDasDigitalArticleOrderPOSTFormat"; -export * from "./dplDasDigitalArticleOrderPOSTParams"; export * from "./dplOpeningHoursCreatePOST200"; export * from "./dplOpeningHoursCreatePOST200Category"; export * from "./dplOpeningHoursCreatePOSTBody"; export * from "./dplOpeningHoursCreatePOSTBodyCategory"; export * from "./dplOpeningHoursCreatePOSTFormat"; export * from "./dplOpeningHoursCreatePOSTParams"; -export * from "./dplOpeningHoursDELETE200"; -export * from "./dplOpeningHoursDELETE200Category"; -export * from "./dplOpeningHoursDELETEFormat"; -export * from "./dplOpeningHoursDELETEParams"; export * from "./dplOpeningHoursDeleteDELETEFormat"; export * from "./dplOpeningHoursDeleteDELETEParams"; -export * from "./dplOpeningHoursGET200"; -export * from "./dplOpeningHoursGET200Category"; -export * from "./dplOpeningHoursGETFormat"; -export * from "./dplOpeningHoursGETOpeningHoursInstanceBody"; -export * from "./dplOpeningHoursGETOpeningHoursInstanceBodyCategory"; -export * from "./dplOpeningHoursGETParams"; export * from "./dplOpeningHoursListGET200Item"; export * from "./dplOpeningHoursListGET200ItemCategory"; export * from "./dplOpeningHoursListGETFormat"; export * from "./dplOpeningHoursListGETParams"; -export * from "./dplOpeningHoursPATCH200"; -export * from "./dplOpeningHoursPATCH200Category"; -export * from "./dplOpeningHoursPATCHFormat"; -export * from "./dplOpeningHoursPATCHParams"; -export * from "./dplOpeningHoursPOST200"; -export * from "./dplOpeningHoursPOST200Category"; -export * from "./dplOpeningHoursPOSTFormat"; -export * from "./dplOpeningHoursPOSTParams"; export * from "./dplOpeningHoursUpdatePATCH200"; export * from "./dplOpeningHoursUpdatePATCH200Category"; export * from "./dplOpeningHoursUpdatePATCHBody"; From 97638669f87968ec754c38c61dfa04d3c43b200f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Garn=C3=A6s?= Date: Sun, 7 Apr 2024 21:47:52 +0200 Subject: [PATCH 55/56] Set initial date through a prop in opening hours editor This way we can remove reference to wiremock in non-development code. --- .../opening-hours-editor/OpeningHoursEditor.dev.tsx | 10 +++++----- .../opening-hours-editor/OpeningHoursEditor.entry.tsx | 6 +++--- src/apps/opening-hours-editor/OpeningHoursEditor.tsx | 7 ++++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx index 975fd95073..1040a22b0e 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.dev.tsx @@ -29,11 +29,11 @@ export default { defaultValue: "12", control: { type: "text" } }, - // This date are aligned with the wiremock data - useWireMockStartDate: { - name: "Starting date for wiremock purposes", - defaultValue: "2024-03-25", - control: { type: "text" } + initialDate: { + name: "Initial date to show", + // This date is aligned with the wiremock data + defaultValue: new Date("2024-03-25"), + control: { type: "date" } }, openingHoursEventFormTitleText: { name: "Opening hours event form title", diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx index 8d6b9e9921..6a82e4a08a 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.entry.tsx @@ -24,8 +24,8 @@ const OpeningHoursEditorEntry: React.FC< OpeningHoursEditorEntryTextProps & OpeningHoursEditorType & OpeningHoursEditorEntryConfigProps -> = ({ useWireMockStartDate }) => ( - -); +> = ({ initialDate = new Date() }) => { + return ; +}; export default withConfig(withUrls(withText(OpeningHoursEditorEntry))); diff --git a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx index c70c833ba7..5c4c19a05a 100644 --- a/src/apps/opening-hours-editor/OpeningHoursEditor.tsx +++ b/src/apps/opening-hours-editor/OpeningHoursEditor.tsx @@ -14,11 +14,11 @@ import { OpeningHoursCategoriesType } from "./types"; import { useConfig } from "../../core/utils/config"; export type OpeningHoursEditorType = { - useWireMockStartDate?: string; + initialDate?: Date; }; const OpeningHoursEditor: React.FC = ({ - useWireMockStartDate + initialDate }) => { const config = useConfig(); const openingHoursCategories = config( @@ -27,6 +27,7 @@ const OpeningHoursEditor: React.FC = ({ transformer: "jsonParse" } ); + const fullCalendarRef = React.useRef(null); const fullCalendarApi = fullCalendarRef.current?.getApi(); @@ -47,7 +48,7 @@ const OpeningHoursEditor: React.FC = ({ Date: Sun, 7 Apr 2024 22:17:37 +0200 Subject: [PATCH 56/56] Update opening hours deleted stub to match spec Return response code 204 and remove content. --- .../delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json b/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json index 6877ef90b9..6a67dab95b 100644 --- a/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json +++ b/.docker/wiremock/cms/mappings/delete-event-f52a1b96-38d2-479a-aeaf-65367637d365.json @@ -6,8 +6,8 @@ "method": "DELETE" }, "response": { - "status": 200, - "body": "Event deletet", + "status": 204, + "body": "", "headers": {} }, "uuid": "f52a1b96-38d2-479a-aeaf-65367637d365",