From 0b3227ec3440a147a5fd984ba29cecb62efa2c81 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Wed, 13 Nov 2024 22:58:12 +0300 Subject: [PATCH 01/25] EPMGCIP-171: Include ".idea" and ".vscode" folders into .gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index b77ccd4..2918986 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,9 @@ yarn-error.log* next-env.d.ts .vercel + +# JetBrains IDE +/.idea + +# VS Code +/.vscode From 61ab5990981155d3bff2de8cfc6b76862dbe475e Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Mon, 18 Nov 2024 23:21:23 +0300 Subject: [PATCH 02/25] EPMGCIP-171: Implement GraphQL query to fetch top latest exhibits --- src/__generated__/gql.ts | 14 +- src/__generated__/graphql.ts | 399 ++++++++++++------ .../pages/Home/TopLatestExhibits.gql | 26 ++ src/lib/exhibit.ts | 15 +- 4 files changed, 310 insertions(+), 144 deletions(-) create mode 100644 src/components/pages/Home/TopLatestExhibits.gql diff --git a/src/__generated__/gql.ts b/src/__generated__/gql.ts index 672124f..9ed2d24 100644 --- a/src/__generated__/gql.ts +++ b/src/__generated__/gql.ts @@ -13,8 +13,10 @@ import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - "query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}": + "query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}": types.GetExhibitDocument, + "query GetTopLatestExhibits($limit: Int) {\n exhibitCollection(\n limit: $limit\n order: sys_publishedAt_DESC\n where: {imagesCollection_exists: true}\n ) {\n items {\n sys {\n id\n }\n slug\n nameEn\n nameRu\n nameUz\n nameKa\n imagesCollection(limit: 1) {\n items {\n url\n sys {\n id\n }\n }\n }\n }\n }\n}": + types.GetTopLatestExhibitsDocument, }; /** @@ -35,8 +37,14 @@ export function graphql(source: string): unknown; * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql( - source: "query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}", -): (typeof documents)["query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}"]; + source: "query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}", +): (typeof documents)["query GetExhibit($slug: String!) {\n exhibitCollection(limit: 1, where: {slug: $slug}) {\n items {\n sys {\n id\n }\n nameEn\n nameRu\n nameUz\n nameKa\n authorEn\n authorRu\n authorUz\n authorKa\n yearOfCreation\n descriptionEn {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionRu {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionUz {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n descriptionKa {\n json\n links {\n entries {\n inline {\n sys {\n id\n }\n }\n }\n }\n }\n imagesCollection(limit: 5) {\n items {\n url\n sys {\n id\n }\n }\n }\n audioFileEn {\n url\n }\n audioFileRu {\n url\n }\n audioFileUz {\n url\n }\n audioFileKa {\n url\n }\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: "query GetTopLatestExhibits($limit: Int) {\n exhibitCollection(\n limit: $limit\n order: sys_publishedAt_DESC\n where: {imagesCollection_exists: true}\n ) {\n items {\n sys {\n id\n }\n slug\n nameEn\n nameRu\n nameUz\n nameKa\n imagesCollection(limit: 1) {\n items {\n url\n sys {\n id\n }\n }\n }\n }\n }\n}", +): (typeof documents)["query GetTopLatestExhibits($limit: Int) {\n exhibitCollection(\n limit: $limit\n order: sys_publishedAt_DESC\n where: {imagesCollection_exists: true}\n ) {\n items {\n sys {\n id\n }\n slug\n nameEn\n nameRu\n nameUz\n nameKa\n imagesCollection(limit: 1) {\n items {\n url\n sys {\n id\n }\n }\n }\n }\n }\n}"]; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/src/__generated__/graphql.ts b/src/__generated__/graphql.ts index 79720f9..3016b42 100644 --- a/src/__generated__/graphql.ts +++ b/src/__generated__/graphql.ts @@ -178,7 +178,6 @@ export type AssetLinkingCollections = { __typename?: "AssetLinkingCollections"; entryCollection?: Maybe; exhibitCollection?: Maybe; - linksCollection?: Maybe; }; export type AssetLinkingCollectionsEntryCollectionArgs = { @@ -195,13 +194,6 @@ export type AssetLinkingCollectionsExhibitCollectionArgs = { skip?: InputMaybe; }; -export type AssetLinkingCollectionsLinksCollectionArgs = { - limit?: InputMaybe; - locale?: InputMaybe; - preview?: InputMaybe; - skip?: InputMaybe; -}; - export enum AssetOrder { ContentTypeAsc = "contentType_ASC", ContentTypeDesc = "contentType_DESC", @@ -227,10 +219,26 @@ export enum AssetOrder { export type ContentfulMetadata = { __typename?: "ContentfulMetadata"; + concepts: Array>; tags: Array>; }; +export type ContentfulMetadataConceptsDescendantsFilter = { + id_contains_all?: InputMaybe>>; + id_contains_none?: InputMaybe>>; + id_contains_some?: InputMaybe>>; +}; + +export type ContentfulMetadataConceptsFilter = { + descendants?: InputMaybe; + id_contains_all?: InputMaybe>>; + id_contains_none?: InputMaybe>>; + id_contains_some?: InputMaybe>>; +}; + export type ContentfulMetadataFilter = { + concepts?: InputMaybe; + concepts_exists?: InputMaybe; tags?: InputMaybe; tags_exists?: InputMaybe; }; @@ -282,7 +290,7 @@ export enum EntryOrder { SysPublishedVersionDesc = "sys_publishedVersion_DESC", } -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type Exhibit = Entry & _Node & { __typename?: "Exhibit"; @@ -311,71 +319,71 @@ export type Exhibit = Entry & yearOfCreation?: Maybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAudioFileEnArgs = { locale?: InputMaybe; preview?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAudioFileKaArgs = { locale?: InputMaybe; preview?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAudioFileRuArgs = { locale?: InputMaybe; preview?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAudioFileUzArgs = { locale?: InputMaybe; preview?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAuthorEnArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAuthorKaArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAuthorRuArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitAuthorUzArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitDescriptionEnArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitDescriptionKaArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitDescriptionRuArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitDescriptionUzArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitImagesCollectionArgs = { limit?: InputMaybe; locale?: InputMaybe; @@ -383,37 +391,37 @@ export type ExhibitImagesCollectionArgs = { skip?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitLinkedFromArgs = { allowedLocales?: InputMaybe>>; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitNameEnArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitNameKaArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitNameRuArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitNameUzArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitSlugArgs = { locale?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/exhibit) */ +/** [See type definition](https://app.contentful.com/spaces/yr8vqo1e1y1l/content_types/exhibit) */ export type ExhibitYearOfCreationArgs = { locale?: InputMaybe; }; @@ -623,7 +631,7 @@ export type ExhibitFilter = { OR?: InputMaybe>>; audioFileEn_exists?: InputMaybe; audioFileKa_exists?: InputMaybe; - audioFileRU_exists?: InputMaybe; + audioFileRu_exists?: InputMaybe; audioFileUz_exists?: InputMaybe; authorEn?: InputMaybe; authorEn_contains?: InputMaybe; @@ -850,82 +858,6 @@ export type ImageTransformOptions = { width?: InputMaybe; }; -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/links) */ -export type Links = Entry & - _Node & { - __typename?: "Links"; - _id: Scalars["ID"]["output"]; - contentfulMetadata: ContentfulMetadata; - image?: Maybe; - linkedFrom?: Maybe; - sys: Sys; - text?: Maybe; - }; - -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/links) */ -export type LinksImageArgs = { - locale?: InputMaybe; - preview?: InputMaybe; -}; - -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/links) */ -export type LinksLinkedFromArgs = { - allowedLocales?: InputMaybe>>; -}; - -/** [See type definition](https://app.contentful.com/spaces/q42k89snlxs6/content_types/links) */ -export type LinksTextArgs = { - locale?: InputMaybe; -}; - -export type LinksCollection = { - __typename?: "LinksCollection"; - items: Array>; - limit: Scalars["Int"]["output"]; - skip: Scalars["Int"]["output"]; - total: Scalars["Int"]["output"]; -}; - -export type LinksFilter = { - AND?: InputMaybe>>; - OR?: InputMaybe>>; - contentfulMetadata?: InputMaybe; - image_exists?: InputMaybe; - sys?: InputMaybe; - text?: InputMaybe; - text_contains?: InputMaybe; - text_exists?: InputMaybe; - text_in?: InputMaybe>>; - text_not?: InputMaybe; - text_not_contains?: InputMaybe; - text_not_in?: InputMaybe>>; -}; - -export type LinksLinkingCollections = { - __typename?: "LinksLinkingCollections"; - entryCollection?: Maybe; -}; - -export type LinksLinkingCollectionsEntryCollectionArgs = { - limit?: InputMaybe; - locale?: InputMaybe; - preview?: InputMaybe; - skip?: InputMaybe; -}; - -export enum LinksOrder { - SysFirstPublishedAtAsc = "sys_firstPublishedAt_ASC", - SysFirstPublishedAtDesc = "sys_firstPublishedAt_DESC", - SysIdAsc = "sys_id_ASC", - SysIdDesc = "sys_id_DESC", - SysPublishedAtAsc = "sys_publishedAt_ASC", - SysPublishedAtDesc = "sys_publishedAt_DESC", - SysPublishedVersionAsc = "sys_publishedVersion_ASC", - SysPublishedVersionDesc = "sys_publishedVersion_DESC", - TextAsc = "text_ASC", - TextDesc = "text_DESC", -} - export type Query = { __typename?: "Query"; _node?: Maybe<_Node>; @@ -934,8 +866,6 @@ export type Query = { entryCollection?: Maybe; exhibit?: Maybe; exhibitCollection?: Maybe; - links?: Maybe; - linksCollection?: Maybe; }; export type Query_NodeArgs = { @@ -983,21 +913,6 @@ export type QueryExhibitCollectionArgs = { where?: InputMaybe; }; -export type QueryLinksArgs = { - id: Scalars["String"]["input"]; - locale?: InputMaybe; - preview?: InputMaybe; -}; - -export type QueryLinksCollectionArgs = { - limit?: InputMaybe; - locale?: InputMaybe; - order?: InputMaybe>>; - preview?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; - export type ResourceLink = { sys: ResourceSys; }; @@ -1057,6 +972,15 @@ export type SysFilter = { publishedVersion_not_in?: InputMaybe>>; }; +/** + * Represents a tag entity for finding and organizing content easily. + * Find out more here: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/content-concepts + */ +export type TaxonomyConcept = { + __typename?: "TaxonomyConcept"; + id?: Maybe; +}; + export type _Node = { _id: Scalars["ID"]["output"]; }; @@ -1081,7 +1005,20 @@ export type GetExhibitQuery = { authorKa?: string | null; yearOfCreation?: string | null; sys: { __typename?: "Sys"; id: string }; - descriptionEn?: { __typename?: "ExhibitDescriptionEn"; json: any } | null; + descriptionEn?: { + __typename?: "ExhibitDescriptionEn"; + json: any; + links: { + __typename?: "ExhibitDescriptionEnLinks"; + entries: { + __typename?: "ExhibitDescriptionEnEntries"; + inline: Array<{ + __typename?: "Exhibit"; + sys: { __typename?: "Sys"; id: string }; + } | null>; + }; + }; + } | null; descriptionRu?: { __typename?: "ExhibitDescriptionRu"; json: any; @@ -1089,11 +1026,10 @@ export type GetExhibitQuery = { __typename?: "ExhibitDescriptionRuLinks"; entries: { __typename?: "ExhibitDescriptionRuEntries"; - inline: Array< - | { __typename?: "Exhibit"; sys: { __typename?: "Sys"; id: string } } - | { __typename?: "Links"; sys: { __typename?: "Sys"; id: string } } - | null - >; + inline: Array<{ + __typename?: "Exhibit"; + sys: { __typename?: "Sys"; id: string }; + } | null>; }; }; } | null; @@ -1104,11 +1040,10 @@ export type GetExhibitQuery = { __typename?: "ExhibitDescriptionUzLinks"; entries: { __typename?: "ExhibitDescriptionUzEntries"; - inline: Array< - | { __typename?: "Exhibit"; sys: { __typename?: "Sys"; id: string } } - | { __typename?: "Links"; sys: { __typename?: "Sys"; id: string } } - | null - >; + inline: Array<{ + __typename?: "Exhibit"; + sys: { __typename?: "Sys"; id: string }; + } | null>; }; }; } | null; @@ -1119,11 +1054,10 @@ export type GetExhibitQuery = { __typename?: "ExhibitDescriptionKaLinks"; entries: { __typename?: "ExhibitDescriptionKaEntries"; - inline: Array< - | { __typename?: "Exhibit"; sys: { __typename?: "Sys"; id: string } } - | { __typename?: "Links"; sys: { __typename?: "Sys"; id: string } } - | null - >; + inline: Array<{ + __typename?: "Exhibit"; + sys: { __typename?: "Sys"; id: string }; + } | null>; }; }; } | null; @@ -1143,6 +1077,34 @@ export type GetExhibitQuery = { } | null; }; +export type GetTopLatestExhibitsQueryVariables = Exact<{ + limit?: InputMaybe; +}>; + +export type GetTopLatestExhibitsQuery = { + __typename?: "Query"; + exhibitCollection?: { + __typename?: "ExhibitCollection"; + items: Array<{ + __typename?: "Exhibit"; + slug?: string | null; + nameEn?: string | null; + nameRu?: string | null; + nameUz?: string | null; + nameKa?: string | null; + sys: { __typename?: "Sys"; id: string }; + imagesCollection?: { + __typename?: "AssetCollection"; + items: Array<{ + __typename?: "Asset"; + url?: string | null; + sys: { __typename?: "Sys"; id: string }; + } | null>; + } | null; + } | null>; + } | null; +}; + export const GetExhibitDocument = { kind: "Document", definitions: [ @@ -1218,7 +1180,49 @@ export const GetExhibitDocument = { name: { kind: "Name", value: "descriptionEn" }, selectionSet: { kind: "SelectionSet", - selections: [{ kind: "Field", name: { kind: "Name", value: "json" } }], + selections: [ + { kind: "Field", name: { kind: "Name", value: "json" } }, + { + kind: "Field", + name: { kind: "Name", value: "links" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "entries" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "inline" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "sys" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "id" }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], }, }, { @@ -1450,3 +1454,118 @@ export const GetExhibitDocument = { }, ], } as unknown as DocumentNode; +export const GetTopLatestExhibitsDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "query", + name: { kind: "Name", value: "GetTopLatestExhibits" }, + variableDefinitions: [ + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "limit" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "Int" } }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "exhibitCollection" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "limit" }, + value: { kind: "Variable", name: { kind: "Name", value: "limit" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "order" }, + value: { kind: "EnumValue", value: "sys_publishedAt_DESC" }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "where" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "imagesCollection_exists" }, + value: { kind: "BooleanValue", value: true }, + }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "items" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "sys" }, + selectionSet: { + kind: "SelectionSet", + selections: [{ kind: "Field", name: { kind: "Name", value: "id" } }], + }, + }, + { kind: "Field", name: { kind: "Name", value: "slug" } }, + { kind: "Field", name: { kind: "Name", value: "nameEn" } }, + { kind: "Field", name: { kind: "Name", value: "nameRu" } }, + { kind: "Field", name: { kind: "Name", value: "nameUz" } }, + { kind: "Field", name: { kind: "Name", value: "nameKa" } }, + { + kind: "Field", + name: { kind: "Name", value: "imagesCollection" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "limit" }, + value: { kind: "IntValue", value: "1" }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "items" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "url" } }, + { + kind: "Field", + name: { kind: "Name", value: "sys" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "id" } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; diff --git a/src/components/pages/Home/TopLatestExhibits.gql b/src/components/pages/Home/TopLatestExhibits.gql new file mode 100644 index 0000000..4fb07c3 --- /dev/null +++ b/src/components/pages/Home/TopLatestExhibits.gql @@ -0,0 +1,26 @@ +query GetTopLatestExhibits($limit: Int) { + exhibitCollection( + limit: $limit + order: sys_publishedAt_DESC + where: { imagesCollection_exists: true } + ) { + items { + sys { + id + } + slug + nameEn + nameRu + nameUz + nameKa + imagesCollection(limit: 1) { + items { + url + sys { + id + } + } + } + } + } +} diff --git a/src/lib/exhibit.ts b/src/lib/exhibit.ts index 628329a..3ee689a 100644 --- a/src/lib/exhibit.ts +++ b/src/lib/exhibit.ts @@ -1,4 +1,4 @@ -import { GetExhibitDocument } from "../__generated__/graphql"; +import { GetExhibitDocument, GetTopLatestExhibitsDocument } from "../__generated__/graphql"; import { getClient } from "./ApolloClient"; export async function getExhibit(slug: string) { @@ -13,3 +13,16 @@ export async function getExhibit(slug: string) { console.error("Failed to fetch exhibit"); } } + +export async function getTopLatestExhibits(limit: number) { + try { + const { data } = await getClient().query({ + query: GetTopLatestExhibitsDocument, + variables: { limit }, + }); + + return data.exhibitCollection?.items ?? []; + } catch (error) { + console.error("Failed to fetch exhibit: ", error); + } +} From 21194487f9316d69b5f9780d7514e7cd9f6342ec Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Tue, 19 Nov 2024 22:56:29 +0300 Subject: [PATCH 03/25] EPMGCIP-171: Implement Home page with image gallery, update usages --- messages/en.json | 3 +- messages/ka.json | 3 +- messages/ru.json | 4 +- messages/uz.json | 3 +- src/app/[locale]/page.module.scss | 0 src/app/[locale]/page.tsx | 14 ++++- .../organisms/ImageGallery/ImageGallery.tsx | 24 ++++---- src/components/pages/Exhibit/Exhibit.tsx | 2 +- src/components/pages/Home/Home.module.scss | 18 ++++++ src/components/pages/Home/Home.tsx | 59 +++++++++++++++++++ src/interfaces/IImageGalleryImage.ts | 4 ++ src/interfaces/ITopLatestExhibit.ts | 20 +++++++ 12 files changed, 136 insertions(+), 18 deletions(-) delete mode 100644 src/app/[locale]/page.module.scss create mode 100644 src/components/pages/Home/Home.module.scss create mode 100644 src/components/pages/Home/Home.tsx create mode 100644 src/interfaces/IImageGalleryImage.ts create mode 100644 src/interfaces/ITopLatestExhibit.ts diff --git a/messages/en.json b/messages/en.json index f6c873f..bcb433d 100644 --- a/messages/en.json +++ b/messages/en.json @@ -13,5 +13,6 @@ "pause": "Pause", "forward": "Forward", "rewind": "Rewind", - "logo": "Logo" + "logo": "Logo", + "homePageTitle": "Welcome to our official webpage" } diff --git a/messages/ka.json b/messages/ka.json index f6c873f..bcb433d 100644 --- a/messages/ka.json +++ b/messages/ka.json @@ -13,5 +13,6 @@ "pause": "Pause", "forward": "Forward", "rewind": "Rewind", - "logo": "Logo" + "logo": "Logo", + "homePageTitle": "Welcome to our official webpage" } diff --git a/messages/ru.json b/messages/ru.json index 673a15a..364fa4e 100644 --- a/messages/ru.json +++ b/messages/ru.json @@ -13,5 +13,7 @@ "pause": "Пауза", "forward": "Вперед", "rewind": "Назад", - "logo": "Лого" + "logo": "Лого", + "homeLink": "Главная", + "homePageTitle": "Добро пожаловать на нашу главную страницу!" } diff --git a/messages/uz.json b/messages/uz.json index a319242..98deeeb 100644 --- a/messages/uz.json +++ b/messages/uz.json @@ -13,5 +13,6 @@ "pause": "Pauza", "forward": "Oldinga", "rewind": "Orqaga", - "logo": "Logo" + "logo": "Logo", + "homePageTitle": "Welcome to our official webpage" } diff --git a/src/app/[locale]/page.module.scss b/src/app/[locale]/page.module.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index e53a500..ef25a5a 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,5 +1,13 @@ -import styles from "./page.module.scss"; +import HomePage from "../../components/pages/Home/Home"; +import { getTopLatestExhibits } from "@/lib/exhibit"; +import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; -export default function Home() { - return
Coming soon
; +const topLatestExhibitsLimit = 10; + +export default async function Home() { + const topLatestExhibits = (await getTopLatestExhibits( + topLatestExhibitsLimit, + )) as ITopLatestExhibit[]; + + return ; } diff --git a/src/components/organisms/ImageGallery/ImageGallery.tsx b/src/components/organisms/ImageGallery/ImageGallery.tsx index 8552749..3b89ac6 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.tsx @@ -11,15 +11,15 @@ import "slick-carousel/slick/slick-theme.css"; import styles from "./ImageGallery.module.scss"; import BREAKPOINT_TABLE from "../../../constants/breakpoints"; import useImageGalleryStore from "../../../stores/useImageGalleryStore"; +import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; interface Props { - images: { - url: string; - id: string; - }[]; + images: IImageGalleryImage[]; + isZoomEnabled: boolean; + onClickImage?: (id: string) => void; } -function ImageGallery({ images }: Props) { +function ImageGallery({ images, isZoomEnabled, onClickImage }: Props) { const zoomRef = useRef(null); const { id: galleryId, @@ -46,15 +46,19 @@ function ImageGallery({ images }: Props) { setZoom: state.setZoom, })), ); - const lighboxImages = images.map((i) => ({ src: i.url })); + const lightboxImages = images.map((i) => ({ src: i.url })); const ref = useRef(null); const galleryIndex = images.findIndex((i) => i.id === galleryId); const carouselPadding = 16; const handleOnImageClick = (index: string) => { - setIsOpeningWithZoom(true); - setGalleryId(index); - setIsOpen(true); + if (isZoomEnabled) { + setIsOpeningWithZoom(true); + setGalleryId(index); + setIsOpen(true); + } + + onClickImage?.(index); }; const handleOnCloseLightbox = () => { @@ -146,7 +150,7 @@ function ImageGallery({ images }: Props) { 0 && (
- +
)} diff --git a/src/components/pages/Home/Home.module.scss b/src/components/pages/Home/Home.module.scss new file mode 100644 index 0000000..1cc933b --- /dev/null +++ b/src/components/pages/Home/Home.module.scss @@ -0,0 +1,18 @@ +@import "../../../variables.scss"; + +.title { + margin: 50px 0 20px 0; + padding: 0 $indentMobilePageBorder; + text-align: center; + font-weight: bold; + font-size: $titleFontSize; + + @media (min-width: $breakpointTablet) { + padding: 0 $indentTabletPageBorder; + } +} + +.gallery { + padding-bottom: 40px; + overflow: hidden; +} diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx new file mode 100644 index 0000000..a28742a --- /dev/null +++ b/src/components/pages/Home/Home.tsx @@ -0,0 +1,59 @@ +"use client"; + +import React, { useMemo } from "react"; + +import { useRouter } from "next/navigation"; +import { useTranslations } from "next-intl"; + +import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; +import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; + +import ImageGallery from "@/components/organisms/ImageGallery/ImageGallery"; + +import styles from "./Home.module.scss"; + +interface Props { + exhibits: ITopLatestExhibit[]; +} + +export default function Home(props: Props): React.ReactElement { + const router = useRouter(); + const t = useTranslations(); + + const images: IImageGalleryImage[] = useMemo( + () => + props.exhibits.map((exhibit) => { + const firstImageItem = exhibit.imagesCollection.items[0]; + + return { + url: firstImageItem.url, + id: firstImageItem.sys.id, + }; + }), + [props.exhibits], + ); + + const onClickImage = (id: string): void => { + const exhibit = props.exhibits.find( + (topLatestExhibit) => topLatestExhibit.imagesCollection.items[0].sys.id === id, + ); + + if (!exhibit) { + return; + } + + router.push(`exhibit/${exhibit.slug}`); + }; + + return ( +
+

{t("homePageTitle")}

+ + {images.length > 0 && ( +
+ +
+ )} +
+ ); +} diff --git a/src/interfaces/IImageGalleryImage.ts b/src/interfaces/IImageGalleryImage.ts new file mode 100644 index 0000000..dfdd78c --- /dev/null +++ b/src/interfaces/IImageGalleryImage.ts @@ -0,0 +1,4 @@ +export interface IImageGalleryImage { + id: string; + url: string; +} diff --git a/src/interfaces/ITopLatestExhibit.ts b/src/interfaces/ITopLatestExhibit.ts new file mode 100644 index 0000000..bbc65c1 --- /dev/null +++ b/src/interfaces/ITopLatestExhibit.ts @@ -0,0 +1,20 @@ +export interface ITopLatestExhibit { + sys: { + id: string; + }; + slug: string; + nameEn?: string | null; + nameRu?: string | null; + nameUz?: string | null; + nameKa?: string | null; + imagesCollection: { + items: [ + { + url: string; + sys: { + id: string; + }; + }, + ]; + }; +} From 90e448ced5e0dd4693f50669308ee97a6b7034f0 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Tue, 19 Nov 2024 22:57:39 +0300 Subject: [PATCH 04/25] EPMGCIP-171: Fix legacy UT for "ImageGallery" test --- src/components/organisms/ImageGallery/ImageGallery.test.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/organisms/ImageGallery/ImageGallery.test.tsx b/src/components/organisms/ImageGallery/ImageGallery.test.tsx index 70c146e..68d5f50 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.test.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.test.tsx @@ -2,8 +2,6 @@ import { render } from "@testing-library/react"; import "@testing-library/jest-dom"; import ImageGallery from "./ImageGallery"; -type ZoomRef = {}; - jest.mock("yet-another-react-lightbox", () => jest.fn()); jest.mock("yet-another-react-lightbox/plugins/zoom", () => ({})); @@ -15,6 +13,6 @@ describe("ImageGallery", () => { ]; it("renders gallery", () => { - render(); + render(); }); }); From 6c0e9c82327d89e9a66cab3ee76d090a413f8665 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Tue, 19 Nov 2024 23:11:01 +0300 Subject: [PATCH 05/25] EPMGCIP-171: Add cursor pointer to image gallery item --- src/components/organisms/ImageGallery/ImageGallery.module.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/organisms/ImageGallery/ImageGallery.module.scss b/src/components/organisms/ImageGallery/ImageGallery.module.scss index cb85e2e..02aee9f 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.module.scss +++ b/src/components/organisms/ImageGallery/ImageGallery.module.scss @@ -17,6 +17,7 @@ padding: 0; border: none; background-color: transparent; + cursor: pointer; } .lightboxButton:focus { From baad64b75648a94e687c047c89ee871c64efe4b9 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Tue, 19 Nov 2024 23:11:59 +0300 Subject: [PATCH 06/25] EPMGCIP-171: Adjust "Header" component to make it logo clickable --- src/components/organisms/Header/Header.module.scss | 2 +- src/components/organisms/Header/Header.tsx | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/organisms/Header/Header.module.scss b/src/components/organisms/Header/Header.module.scss index 6b7c358..cb32b6b 100644 --- a/src/components/organisms/Header/Header.module.scss +++ b/src/components/organisms/Header/Header.module.scss @@ -16,5 +16,5 @@ .logo { width: 68px; - padding-top: 4px; + cursor: pointer; } diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 736dcb4..3350df1 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -1,15 +1,25 @@ -import { useTranslations } from "next-intl"; +"use client"; + +import { useLocale, useTranslations } from "next-intl"; import Image from "next/image"; import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; import logo from "@/assets/image/logo.png"; +import { useRouter } from "next/navigation"; export default function Header() { + const router = useRouter(); + const locale = useLocale(); const t = useTranslations(); + const onClickLogo = (): void => { + router.push(`/${locale}`); + }; + return (
- {t("logo")} + {t("logo")} +
); From 98ad954f6417dde74e04c3822f5f698c1f0e34be Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Tue, 19 Nov 2024 23:19:40 +0300 Subject: [PATCH 07/25] EPMGCIP-171: Update import of "useRouter" hook from navigation --- src/components/organisms/Header/Header.tsx | 4 ++-- src/components/pages/Home/Home.tsx | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 3350df1..6729c23 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -5,7 +5,7 @@ import Image from "next/image"; import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; import logo from "@/assets/image/logo.png"; -import { useRouter } from "next/navigation"; +import { useRouter } from "@/navigation"; export default function Header() { const router = useRouter(); @@ -13,7 +13,7 @@ export default function Header() { const t = useTranslations(); const onClickLogo = (): void => { - router.push(`/${locale}`); + router.push("/"); }; return ( diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index a28742a..4cf52d4 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -2,12 +2,13 @@ import React, { useMemo } from "react"; -import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; +import { useRouter } from "@/navigation"; + import ImageGallery from "@/components/organisms/ImageGallery/ImageGallery"; import styles from "./Home.module.scss"; From 61272dc9ed62742736dc3d97d0031c7969d8dc8f Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Wed, 20 Nov 2024 23:25:30 +0300 Subject: [PATCH 08/25] EPMGCIP-171: Implement custom "ImageGalleryArrow" component, update usage --- package-lock.json | 1535 +++++++++-------- package.json | 1 + .../ImageGallery/ImageGallery.module.scss | 23 + .../organisms/ImageGallery/ImageGallery.tsx | 7 +- .../ImageGallery/ImageGalleryArrow.tsx | 32 + src/components/pages/Exhibit/Exhibit.tsx | 2 +- src/components/pages/Home/Home.module.scss | 2 +- src/components/pages/Home/Home.tsx | 7 +- 8 files changed, 878 insertions(+), 731 deletions(-) create mode 100644 src/components/organisms/ImageGallery/ImageGalleryArrow.tsx diff --git a/package-lock.json b/package-lock.json index b7b2de4..7f242bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@apollo/experimental-nextjs-app-support": "^0.11.2", "@contentful/rich-text-react-renderer": "^15.22.9", "@next/third-parties": "^14.2.5", + "classnames": "^2.5.1", "clsx": "^2.1.1", "next": "^14.2.5", "next-intl": "^3.17.2", @@ -6112,7 +6113,8 @@ }, "node_modules/classnames": { "version": "2.5.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/clean-stack": { "version": "2.2.0", @@ -6380,9 +6382,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -11028,23 +11031,23 @@ } }, "node_modules/netlify-cli": { - "version": "17.36.2", - "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.36.2.tgz", - "integrity": "sha512-kDrsnNSYT3ZWwJNlcpqRPCAz28ahxwZ2Mo/pntNQqScN+MKcVEwia+Twy6FCPakotVJ9nQFquU85jU4mqaXgUw==", + "version": "17.37.2", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.37.2.tgz", + "integrity": "sha512-jA3wijrcr4Y8NF44sTQmR/4k6QPQwoK9Vf6vKimTJ1xyGASt+Mg+iWXyg1NsmKxWs5EUnS7yuWFZJ2eb/FWyMQ==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, "dependencies": { "@bugsnag/js": "7.25.0", "@fastify/static": "7.0.4", - "@netlify/blobs": "8.0.1", - "@netlify/build": "29.54.4", - "@netlify/build-info": "7.14.3", + "@netlify/blobs": "8.1.0", + "@netlify/build": "29.56.0", + "@netlify/build-info": "7.15.2", "@netlify/config": "20.19.0", "@netlify/edge-bundler": "12.2.3", "@netlify/edge-functions": "2.9.0", "@netlify/local-functions-proxy": "1.1.1", - "@netlify/zip-it-and-ship-it": "9.39.2", + "@netlify/zip-it-and-ship-it": "9.41.1", "@octokit/rest": "20.1.1", "@opentelemetry/api": "1.8.0", "ansi-escapes": "7.0.0", @@ -11063,17 +11066,17 @@ "concordance": "5.0.4", "configstore": "6.0.0", "content-type": "1.0.5", - "cookie": "0.6.0", + "cookie": "0.7.2", "cron-parser": "4.9.0", - "debug": "4.3.6", + "debug": "4.3.7", "decache": "4.6.2", "dot-prop": "9.0.0", "dotenv": "16.4.5", "env-paths": "3.0.0", - "envinfo": "7.13.0", + "envinfo": "7.14.0", "etag": "1.8.1", "execa": "5.1.1", - "express": "4.20.0", + "express": "4.21.1", "express-logging": "1.1.1", "extract-zip": "2.0.1", "fastest-levenshtein": "1.0.16", @@ -11090,7 +11093,7 @@ "hasbin": "1.2.3", "hasha": "5.2.2", "http-proxy": "1.18.1", - "http-proxy-middleware": "2.0.6", + "http-proxy-middleware": "2.0.7", "https-proxy-agent": "7.0.5", "inquirer": "6.5.2", "inquirer-autocomplete-prompt": "1.4.0", @@ -11103,11 +11106,11 @@ "jsonwebtoken": "9.0.2", "jwt-decode": "4.0.0", "lambda-local": "2.2.0", - "listr2": "8.2.4", + "listr2": "8.2.5", "locate-path": "7.2.0", "lodash": "4.17.21", "log-symbols": "6.0.0", - "log-update": "6.0.0", + "log-update": "6.1.0", "maxstache": "1.0.7", "maxstache-stream": "1.0.4", "multiparty": "4.2.3", @@ -11117,7 +11120,7 @@ "netlify-redirector": "0.5.0", "node-fetch": "3.3.2", "node-version-alias": "3.4.1", - "ora": "8.0.1", + "ora": "8.1.0", "p-filter": "4.1.0", "p-map": "7.0.2", "p-wait-for": "5.0.2", @@ -11126,7 +11129,7 @@ "parse-gitignore": "2.0.0", "path-key": "4.0.0", "prettyjson": "1.2.5", - "pump": "3.0.0", + "pump": "3.0.2", "raw-body": "2.5.2", "read-package-up": "11.0.0", "readdirp": "3.6.0", @@ -11142,11 +11145,11 @@ "tomlify-j0.4": "3.0.0", "ulid": "2.3.0", "unixify": "1.0.0", - "update-notifier": "7.0.0", + "update-notifier": "7.3.1", "uuid": "9.0.1", "wait-port": "1.1.0", "write-file-atomic": "5.0.1", - "ws": "8.17.1", + "ws": "8.18.0", "zod": "3.23.8" }, "bin": { @@ -12205,18 +12208,18 @@ "dev": true }, "node_modules/netlify-cli/node_modules/@netlify/blobs": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.0.1.tgz", - "integrity": "sha512-IrZHVqillU0x12eDbsap4Ba6poi+4IdVCYjZa+tA0eD95TaSbSqfw1zNkO27MiKw0pOjPB6+RXFK4pdfOs/qUQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.1.0.tgz", + "integrity": "sha512-9hIbusvAZjSGBJ42OyFC2AxsEph1LuKQahMWFcPGEIsOqIYHhMRkYA7wSUMhH7naydjNmllpcp3pJLOK4RhFaQ==", "dev": true, "engines": { "node": "^14.16.0 || >=16.0.0" } }, "node_modules/netlify-cli/node_modules/@netlify/build": { - "version": "29.54.4", - "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.54.4.tgz", - "integrity": "sha512-fblSp3ic7reMyIr11L9TKQhT550HihL11xMounQshQ/dnkv8t9Ch0kWNqEhwyxsc3r/jiEdX9Ywd1xi6wm4qJw==", + "version": "29.56.0", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.56.0.tgz", + "integrity": "sha512-x2DUxBt1MigjAX+2xpDmWKp4BlTvg4GofaR2SWSz80D+zkfWRJp01de1O5mKH9QK3saQBQUVJyi+mrK64YNf4w==", "dev": true, "dependencies": { "@bugsnag/js": "^7.0.0", @@ -12225,12 +12228,12 @@ "@netlify/config": "^20.19.0", "@netlify/edge-bundler": "12.2.3", "@netlify/framework-info": "^9.8.13", - "@netlify/functions-utils": "^5.2.83", + "@netlify/functions-utils": "^5.2.93", "@netlify/git-utils": "^5.1.1", "@netlify/opentelemetry-utils": "^1.2.1", "@netlify/plugins-list": "^6.80.0", "@netlify/run-utils": "^5.1.1", - "@netlify/zip-it-and-ship-it": "9.39.2", + "@netlify/zip-it-and-ship-it": "9.41.1", "@sindresorhus/slugify": "^2.0.0", "ansi-escapes": "^6.0.0", "chalk": "^5.0.0", @@ -12240,7 +12243,7 @@ "figures": "^5.0.0", "filter-obj": "^5.0.0", "got": "^12.0.0", - "hot-shots": "10.0.0", + "hot-shots": "10.1.1", "indent-string": "^5.0.0", "is-plain-obj": "^4.0.0", "js-yaml": "^4.0.0", @@ -12295,9 +12298,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build-info": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.14.3.tgz", - "integrity": "sha512-HUYHll4I/5aus/mmmiALOWuYwjvSGLD+KxHROBTNVO5D9i1HNXbIvYCtInBYX+xwoXCwqQuXWwHXTAfusXT3Sw==", + "version": "7.15.2", + "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.15.2.tgz", + "integrity": "sha512-z249vRTIyeO1Coaa2UaaZJpTN2D9mE0HPvuQfVknJ+WqHdLjPHlmaKu2HyekfnA5zE8mVSkPAJsP9dip3kySSg==", "dev": true, "dependencies": { "@bugsnag/js": "^7.20.0", @@ -12400,9 +12403,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -13613,18 +13616,6 @@ "node": ">=12.20.0" } }, - "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -13868,12 +13859,12 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/functions-utils": { - "version": "5.2.83", - "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.83.tgz", - "integrity": "sha512-ZWItQ4yaVN/15tXTOFv+mOjcS8aEygGS/GGNOUIT+FZsWc5IKFKslr7WsVlwwixoPCDCMSwZtaLuX+FbPVFo1w==", + "version": "5.2.93", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.93.tgz", + "integrity": "sha512-/b2JtJuB3KNN5AIfiH/tan/uM4i6nLj2QFGUL9oID58cMsd73iouRacKu4ct+gxUU78y+/6fiOeYRXbcthdltA==", "dev": true, "dependencies": { - "@netlify/zip-it-and-ship-it": "9.39.2", + "@netlify/zip-it-and-ship-it": "9.41.1", "cpy": "^9.0.0", "path-exists": "^5.0.0" }, @@ -14363,15 +14354,15 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.39.2.tgz", - "integrity": "sha512-vTEUxRIXsxnDDHnycw8wYmx5IhZp0J5s1d5ZZevnjOI9ozHoP4DKEU6EMnGyioQxyVwYRJOZjbY1fOL+ZEU7Rg==", + "version": "9.41.1", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.41.1.tgz", + "integrity": "sha512-EzXw1+4OJ4mCZUOqVPDQZNM8jf/563utFo1Ph6dYtSR21E1oYlgt6Oib1pyG/bFGufvdtrxw845/1MTCPvXzJA==", "dev": true, "dependencies": { "@babel/parser": "^7.22.5", "@babel/types": "7.25.6", "@netlify/binary-info": "^1.0.0", - "@netlify/serverless-functions-api": "^1.23.1", + "@netlify/serverless-functions-api": "^1.31.0", "@vercel/nft": "^0.27.1", "archiver": "^7.0.0", "common-path-prefix": "^3.0.0", @@ -14411,9 +14402,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/@netlify/serverless-functions-api": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.23.1.tgz", - "integrity": "sha512-o0WjLdMbPeE5DT9uazGOFI6pWDPF85BsCaO0iGAkXCti6tvxPM19NtsBfy9wVSYXUUIXip2jwZBT6sL8YpXMRQ==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.31.0.tgz", + "integrity": "sha512-/ux3fefmw0yGmzRMOqhGrzbAuALtW8HY08bjE4yCk+y8CzB9r9mPd1ApSJe3KlYD+sqDvbQGrEXdifQ/LzUIDQ==", "dev": true, "dependencies": { "@netlify/node-cookies": "^0.1.0", @@ -14512,18 +14503,6 @@ "node": ">=12.20.0" } }, - "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -15149,9 +15128,9 @@ } }, "node_modules/netlify-cli/node_modules/@pnpm/network.ca-file": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", - "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "dependencies": { "graceful-fs": "4.2.10" @@ -15161,9 +15140,9 @@ } }, "node_modules/netlify-cli/node_modules/@pnpm/npm-conf": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz", - "integrity": "sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, "dependencies": { "@pnpm/config.env-replace": "^1.1.0", @@ -16385,6 +16364,16 @@ "node": ">=8.0.0" } }, + "node_modules/netlify-cli/node_modules/atomically": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz", + "integrity": "sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==", + "dev": true, + "dependencies": { + "stubborn-fs": "^1.2.5", + "when-exit": "^2.1.1" + } + }, "node_modules/netlify-cli/node_modules/avvio": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz", @@ -16574,6 +16563,70 @@ "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", "dev": true }, + "node_modules/netlify-cli/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/netlify-cli/node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -17555,9 +17608,9 @@ } }, "node_modules/netlify-cli/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "engines": { "node": ">= 0.6" @@ -18002,12 +18055,12 @@ } }, "node_modules/netlify-cli/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -18018,12 +18071,6 @@ } } }, - "node_modules/netlify-cli/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/netlify-cli/node_modules/decache": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", @@ -18503,9 +18550,9 @@ "dev": true }, "node_modules/netlify-cli/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "engines": { "node": ">= 0.8" @@ -18545,9 +18592,9 @@ } }, "node_modules/netlify-cli/node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -18820,9 +18867,9 @@ } }, "node_modules/netlify-cli/node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -18830,14 +18877,14 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -18846,11 +18893,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -18873,43 +18920,13 @@ "node": ">= 0.10.26" } }, - "node_modules/netlify-cli/node_modules/express/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "node_modules/netlify-cli/node_modules/express/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, - "dependencies": { - "side-channel": "^1.0.6" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, "node_modules/netlify-cli/node_modules/express/node_modules/debug": { @@ -18921,12 +18938,6 @@ "ms": "2.0.0" } }, - "node_modules/netlify-cli/node_modules/express/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/netlify-cli/node_modules/express/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -18936,15 +18947,6 @@ "node": ">= 0.8" } }, - "node_modules/netlify-cli/node_modules/express/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/netlify-cli/node_modules/express/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -18961,19 +18963,10 @@ "node": ">= 0.8" } }, - "node_modules/netlify-cli/node_modules/express/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "node_modules/netlify-cli/node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/netlify-cli/node_modules/express/node_modules/safe-buffer": { @@ -18996,87 +18989,6 @@ } ] }, - "node_modules/netlify-cli/node_modules/express/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/serve-static/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/express/node_modules/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/netlify-cli/node_modules/ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -19343,150 +19255,16 @@ "integrity": "sha512-ovwFQG2qNy3jcCROiWpr94Hs0le+c7N/3t7m9aVwbFhkxcR/esp2xu25dP8e617HpQdmeDv+gFX4zagdUhDByw==", "dev": true }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/pino": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", - "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/pino-abstract-transport": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", - "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", - "dev": true, - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/pino-std-serializers": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", - "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", - "dev": true - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/process-warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", - "dev": true - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/sonic-boom": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", - "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/netlify-cli/node_modules/fastify/node_modules/thread-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", - "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", - "dev": true, - "dependencies": { - "real-require": "^0.2.0" - } - }, - "node_modules/netlify-cli/node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/netlify-cli/node_modules/fastify/node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -19673,13 +19451,13 @@ } }, "node_modules/netlify-cli/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -20193,6 +19971,30 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/netlify-cli/node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/global-directory/node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/netlify-cli/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -20440,9 +20242,9 @@ } }, "node_modules/netlify-cli/node_modules/hot-shots": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.0.0.tgz", - "integrity": "sha512-uy/uGpuJk7yuyiKRfZMBNkF1GAOX5O2ifO9rDCaX9jw8fu6eW9QeWC7WRPDI+O98frW1HQgV3+xwjWsZPECIzQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.1.1.tgz", + "integrity": "sha512-KTsH9hb+YZHH0IIRf22y0X8mPw8j521W5xRAUeaUlGNBDsf44ixE7ZeyXbUHd/nQ1n04UEhi2ja05/QVOS/CgQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -20497,9 +20299,9 @@ } }, "node_modules/netlify-cli/node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -20636,15 +20438,6 @@ "integrity": "sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==", "dev": true }, - "node_modules/netlify-cli/node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/netlify-cli/node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -21214,9 +21007,9 @@ } }, "node_modules/netlify-cli/node_modules/is-in-ci": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz", - "integrity": "sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz", + "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==", "dev": true, "bin": { "is-in-ci": "cli.js" @@ -21247,45 +21040,21 @@ } }, "node_modules/netlify-cli/node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/netlify-cli/node_modules/is-installed-globally/node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", "dev": true, "dependencies": { - "ini": "2.0.0" + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/netlify-cli/node_modules/is-installed-globally/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/netlify-cli/node_modules/is-interactive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", @@ -21329,12 +21098,15 @@ } }, "node_modules/netlify-cli/node_modules/is-path-inside": { - "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/netlify-cli/node_modules/is-plain-obj": { @@ -21732,6 +21504,18 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "dev": true }, + "node_modules/netlify-cli/node_modules/ky": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.2.tgz", + "integrity": "sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, "node_modules/netlify-cli/node_modules/lambda-local": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/lambda-local/-/lambda-local-2.2.0.tgz", @@ -21750,15 +21534,15 @@ } }, "node_modules/netlify-cli/node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", + "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", "dev": true, "dependencies": { - "package-json": "^8.1.0" + "package-json": "^10.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -21801,12 +21585,12 @@ } }, "node_modules/netlify-cli/node_modules/light-my-request": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.13.0.tgz", - "integrity": "sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz", + "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==", "dev": true, "dependencies": { - "cookie": "^0.6.0", + "cookie": "^0.7.0", "process-warning": "^3.0.0", "set-cookie-parser": "^2.4.1" } @@ -21854,9 +21638,9 @@ } }, "node_modules/netlify-cli/node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "dev": true, "dependencies": { "cli-truncate": "^4.0.0", @@ -21870,25 +21654,10 @@ "node": ">=18.0.0" } }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/netlify-cli/node_modules/listr2/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, "node_modules/netlify-cli/node_modules/listr2/node_modules/eventemitter3": { @@ -21897,13 +21666,15 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "node_modules/netlify-cli/node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { - "get-east-asian-width": "^1.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" @@ -21912,128 +21683,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "node_modules/netlify-cli/node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "node_modules/netlify-cli/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "mimic-function": "^5.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/netlify-cli/node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/netlify-cli/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -22252,14 +21928,14 @@ } }, "node_modules/netlify-cli/node_modules/log-update": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", - "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, "dependencies": { - "ansi-escapes": "^6.2.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^7.0.0", + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" }, @@ -22270,37 +21946,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/netlify-cli/node_modules/log-update/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/netlify-cli/node_modules/log-update/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/netlify-cli/node_modules/log-update/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, "node_modules/netlify-cli/node_modules/log-update/node_modules/is-fullwidth-code-point": { @@ -22318,22 +21982,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/netlify-cli/node_modules/log-update/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/netlify-cli/node_modules/log-update/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/netlify-cli/node_modules/log-update/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/netlify-cli/node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", @@ -22351,9 +22042,9 @@ } }, "node_modules/netlify-cli/node_modules/log-update/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -22567,6 +22258,15 @@ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "dev": true }, + "node_modules/netlify-cli/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/netlify-cli/node_modules/merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", @@ -23474,19 +23174,19 @@ } }, "node_modules/netlify-cli/node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", + "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", "dev": true, "dependencies": { "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", + "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0" }, "engines": { @@ -23497,30 +23197,30 @@ } }, "node_modules/netlify-cli/node_modules/ora/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/netlify-cli/node_modules/ora/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, "node_modules/netlify-cli/node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "engines": { "node": ">=18" @@ -23529,26 +23229,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/netlify-cli/node_modules/ora/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/netlify-cli/node_modules/ora/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/netlify-cli/node_modules/ora/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/netlify-cli/node_modules/ora/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -23736,18 +23463,18 @@ } }, "node_modules/netlify-cli/node_modules/package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", + "integrity": "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==", "dev": true, "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" + "ky": "^1.2.0", + "registry-auth-token": "^5.0.2", + "registry-url": "^6.0.1", + "semver": "^7.6.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -23891,56 +23618,193 @@ "node": "14 || >=16.14" } }, - "node_modules/netlify-cli/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/netlify-cli/node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/netlify-cli/node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/netlify-cli/node_modules/pino": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.4.0.tgz", + "integrity": "sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^4.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10.x" } }, - "node_modules/netlify-cli/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true - }, - "node_modules/netlify-cli/node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/netlify-cli/node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "node_modules/netlify-cli/node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", "dev": true }, - "node_modules/netlify-cli/node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "node_modules/netlify-cli/node_modules/pino/node_modules/process-warning": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", "dev": true }, - "node_modules/netlify-cli/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/netlify-cli/node_modules/pino/node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "atomic-sleep": "^1.0.0" } }, "node_modules/netlify-cli/node_modules/pkg-types": { @@ -24201,9 +24065,9 @@ } }, "node_modules/netlify-cli/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -24235,12 +24099,12 @@ } }, "node_modules/netlify-cli/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -24981,19 +24845,92 @@ "node": ">=10" } }, - "node_modules/netlify-cli/node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "node_modules/netlify-cli/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { - "semver": "^7.3.5" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=12" + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/netlify-cli/node_modules/set-blocking": { @@ -25552,6 +25489,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/netlify-cli/node_modules/stubborn-fs": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", + "integrity": "sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==", + "dev": true + }, "node_modules/netlify-cli/node_modules/supports-color": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", @@ -25800,6 +25743,15 @@ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "dev": true }, + "node_modules/netlify-cli/node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "dev": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/netlify-cli/node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -26272,22 +26224,20 @@ } }, "node_modules/netlify-cli/node_modules/update-notifier": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.0.0.tgz", - "integrity": "sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.3.1.tgz", + "integrity": "sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==", "dev": true, "dependencies": { - "boxen": "^7.1.1", + "boxen": "^8.0.1", "chalk": "^5.3.0", - "configstore": "^6.0.0", - "import-lazy": "^4.0.0", - "is-in-ci": "^0.1.0", - "is-installed-globally": "^0.4.0", + "configstore": "^7.0.0", + "is-in-ci": "^1.0.0", + "is-installed-globally": "^1.0.0", "is-npm": "^6.0.0", - "latest-version": "^7.0.0", + "latest-version": "^9.0.0", "pupa": "^3.1.0", - "semver": "^7.5.4", - "semver-diff": "^4.0.0", + "semver": "^7.6.3", "xdg-basedir": "^5.1.0" }, "engines": { @@ -26297,6 +26247,131 @@ "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/configstore": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.0.0.tgz", + "integrity": "sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==", + "dev": true, + "dependencies": { + "atomically": "^2.0.3", + "dot-prop": "^9.0.0", + "graceful-fs": "^4.2.11", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "dev": true, + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/update-notifier/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/netlify-cli/node_modules/uqr": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", @@ -26504,6 +26579,12 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, + "node_modules/netlify-cli/node_modules/when-exit": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.3.tgz", + "integrity": "sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==", + "dev": true + }, "node_modules/netlify-cli/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -26801,9 +26882,9 @@ } }, "node_modules/netlify-cli/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index d14735e..740cbe2 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@apollo/experimental-nextjs-app-support": "^0.11.2", "@contentful/rich-text-react-renderer": "^15.22.9", "@next/third-parties": "^14.2.5", + "classnames": "^2.5.1", "clsx": "^2.1.1", "next": "^14.2.5", "next-intl": "^3.17.2", diff --git a/src/components/organisms/ImageGallery/ImageGallery.module.scss b/src/components/organisms/ImageGallery/ImageGallery.module.scss index 02aee9f..bb370ab 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.module.scss +++ b/src/components/organisms/ImageGallery/ImageGallery.module.scss @@ -1,3 +1,5 @@ +@import "../../../variables.scss"; + .image { object-fit: cover; object-position: center; @@ -23,3 +25,24 @@ .lightboxButton:focus { outline: none; } + +.slickCustomArrow { + display: block; + z-index: 1; + width: auto; + height: auto; + + &:before { + color: $colorDarkGray; + opacity: 0.8 !important; + font-size: 30px; + } +} + +.slickCustomArrowPrevious { + left: 15px; +} + +.slickCustomArrowNext { + right: 15px; +} diff --git a/src/components/organisms/ImageGallery/ImageGallery.tsx b/src/components/organisms/ImageGallery/ImageGallery.tsx index 3b89ac6..78ed86f 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.tsx @@ -12,14 +12,16 @@ import styles from "./ImageGallery.module.scss"; import BREAKPOINT_TABLE from "../../../constants/breakpoints"; import useImageGalleryStore from "../../../stores/useImageGalleryStore"; import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; +import ImageGalleryArrow, { ArrowDirection } from "./ImageGalleryArrow"; interface Props { + displayArrows: boolean; images: IImageGalleryImage[]; isZoomEnabled: boolean; onClickImage?: (id: string) => void; } -function ImageGallery({ images, isZoomEnabled, onClickImage }: Props) { +function ImageGallery({ images, isZoomEnabled, displayArrows, onClickImage }: Props) { const zoomRef = useRef(null); const { id: galleryId, @@ -134,6 +136,9 @@ function ImageGallery({ images, isZoomEnabled, onClickImage }: Props) { infinite={false} centerPadding="28px" slidesToShow={3} + arrows={displayArrows} + prevArrow={} + nextArrow={} responsive={[ { breakpoint: BREAKPOINT_TABLE, diff --git a/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx new file mode 100644 index 0000000..eb7cd1a --- /dev/null +++ b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx @@ -0,0 +1,32 @@ +import React from "react"; + +import classnames from "classnames"; +import { CustomArrowProps } from "react-slick"; + +import styles from "./ImageGallery.module.scss"; + +export enum ArrowDirection { + Previous = "previous", + Next = "next", +} + +interface Props extends CustomArrowProps { + direction: ArrowDirection; +} + +function ImageGalleryArrow(props: Props): React.ReactElement { + return ( +
+ ); +} + +export default ImageGalleryArrow; diff --git a/src/components/pages/Exhibit/Exhibit.tsx b/src/components/pages/Exhibit/Exhibit.tsx index 9af3473..d7fd5a3 100644 --- a/src/components/pages/Exhibit/Exhibit.tsx +++ b/src/components/pages/Exhibit/Exhibit.tsx @@ -113,7 +113,7 @@ export default function ExhibitPage({ exhibit, slug }: Props) { {images.length > 0 && (
- +
)} diff --git a/src/components/pages/Home/Home.module.scss b/src/components/pages/Home/Home.module.scss index 1cc933b..8f0dbca 100644 --- a/src/components/pages/Home/Home.module.scss +++ b/src/components/pages/Home/Home.module.scss @@ -1,7 +1,7 @@ @import "../../../variables.scss"; .title { - margin: 50px 0 20px 0; + margin: 50px 0 40px 0; padding: 0 $indentMobilePageBorder; text-align: center; font-weight: bold; diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index 4cf52d4..197f98a 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -52,7 +52,12 @@ export default function Home(props: Props): React.ReactElement { {images.length > 0 && (
- +
)}
From 9845327b57d790998ae3731a7a0172c7ade18d55 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Wed, 20 Nov 2024 23:38:24 +0300 Subject: [PATCH 09/25] EPMGCIP-171: Fix obsolete test for "ImageGallery" with require prop --- src/components/organisms/ImageGallery/ImageGallery.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/organisms/ImageGallery/ImageGallery.test.tsx b/src/components/organisms/ImageGallery/ImageGallery.test.tsx index 68d5f50..915a1cf 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.test.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.test.tsx @@ -13,6 +13,6 @@ describe("ImageGallery", () => { ]; it("renders gallery", () => { - render(); + render(); }); }); From 07871b41048e9e5b6c68176046c884decf972044 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Thu, 21 Nov 2024 22:23:22 +0300 Subject: [PATCH 10/25] EPMGCIP-171: Implement UTs for "Home.tsx" component --- .../organisms/ImageGallery/ImageGallery.tsx | 1 + src/components/pages/Home/Home.test.tsx | 56 +++++++++++++++++++ src/components/pages/Home/Home.tsx | 16 +++--- src/interfaces/ITopLatestExhibit.ts | 14 ++--- src/mocks/exhibit.ts | 25 ++++++++- 5 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 src/components/pages/Home/Home.test.tsx diff --git a/src/components/organisms/ImageGallery/ImageGallery.tsx b/src/components/organisms/ImageGallery/ImageGallery.tsx index 78ed86f..acef245 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.tsx @@ -136,6 +136,7 @@ function ImageGallery({ images, isZoomEnabled, displayArrows, onClickImage }: Pr infinite={false} centerPadding="28px" slidesToShow={3} + className="image-gallery" arrows={displayArrows} prevArrow={} nextArrow={} diff --git a/src/components/pages/Home/Home.test.tsx b/src/components/pages/Home/Home.test.tsx new file mode 100644 index 0000000..ef6bf51 --- /dev/null +++ b/src/components/pages/Home/Home.test.tsx @@ -0,0 +1,56 @@ +import "@testing-library/jest-dom"; +import { render } from "@testing-library/react"; + +import { NextIntlClientProvider } from "next-intl"; + +import messages from "../../../../messages/en.json"; + +import Home from "./Home"; + +import { topLatestExhibits } from "@/mocks/exhibit"; +import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; + +jest.mock("@/navigation", () => ({ + useRouter: jest.fn().mockReturnValue({ + replace: jest.fn(), + }), +})); + +jest.mock("yet-another-react-lightbox", () => jest.fn()); +jest.mock("yet-another-react-lightbox/plugins/zoom", () => ({})); + +describe("Home component", () => { + const renderComponent = (exhibits: ITopLatestExhibit[]) => + render( + + + , + ); + + it("should render component", () => { + const { getByText } = renderComponent(topLatestExhibits); + + expect(getByText("Welcome to our official webpage")); + }); + + it("should render component with image gallery", () => { + const { container } = renderComponent(topLatestExhibits); + + const imageGalleryElement = container.querySelector(".image-gallery"); + + expect(imageGalleryElement).toBeInTheDocument(); + }); + + it("should not render component with image gallery if no images are discovered", () => { + const exhibits = topLatestExhibits.map((exhibit) => ({ + ...exhibit, + imagesCollection: { items: [] }, + })); + + const { container } = renderComponent(exhibits); + + const imageGalleryElement = container.querySelector(".image-gallery"); + + expect(imageGalleryElement).toBeNull(); + }); +}); diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index 197f98a..f11ea7a 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -23,14 +23,16 @@ export default function Home(props: Props): React.ReactElement { const images: IImageGalleryImage[] = useMemo( () => - props.exhibits.map((exhibit) => { - const firstImageItem = exhibit.imagesCollection.items[0]; + props.exhibits + .filter((exhibit) => !!exhibit.imagesCollection.items.length) + .map((exhibit) => { + const firstImageItem = exhibit.imagesCollection.items[0]; - return { - url: firstImageItem.url, - id: firstImageItem.sys.id, - }; - }), + return { + url: firstImageItem.url, + id: firstImageItem.sys.id, + }; + }), [props.exhibits], ); diff --git a/src/interfaces/ITopLatestExhibit.ts b/src/interfaces/ITopLatestExhibit.ts index bbc65c1..e9a522a 100644 --- a/src/interfaces/ITopLatestExhibit.ts +++ b/src/interfaces/ITopLatestExhibit.ts @@ -8,13 +8,11 @@ export interface ITopLatestExhibit { nameUz?: string | null; nameKa?: string | null; imagesCollection: { - items: [ - { - url: string; - sys: { - id: string; - }; - }, - ]; + items: { + url: string; + sys: { + id: string; + }; + }[]; }; } diff --git a/src/mocks/exhibit.ts b/src/mocks/exhibit.ts index 14b1326..218ec45 100644 --- a/src/mocks/exhibit.ts +++ b/src/mocks/exhibit.ts @@ -1,4 +1,4 @@ -import { GetExhibitDocument } from "@/__generated__/graphql"; +import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; export const exhibitItem = { sys: { @@ -87,3 +87,26 @@ export const exhibitMockAnotherLanguage = { nameUz: "Test Exhibit", nameKa: "Test Exhibit", }; + +export const topLatestExhibits: ITopLatestExhibit[] = [ + { + sys: { + id: "12345", + }, + slug: "test-exhibit", + nameRu: "Test Exhibit", + nameUz: "Test Exhibit", + nameKa: "Test Exhibit", + nameEn: "Test Exhibit", + imagesCollection: { + items: [ + { + url: "http://example.com", + sys: { + id: "1", + }, + }, + ], + }, + }, +]; From 31eaf02e5ae5f5c97dc6201c35f0f1d4514a76e7 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Thu, 21 Nov 2024 22:39:28 +0300 Subject: [PATCH 11/25] EPMGCIP-171: Add NodeJS version restriction for "package.json" to be able to run app --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 740cbe2..f8ec041 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,8 @@ { "name": "epmgcip-chaperone.admin", + "engines": { + "node": ">= v18.17.0" + }, "version": "2.0.0", "private": true, "scripts": { From 6cb0da78cc5b11cb16f06bcddd4d706281d2fc10 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 23 Nov 2024 12:49:37 +0300 Subject: [PATCH 12/25] EPMGCIP-171: Remove extra "classnames" package due to duplication, replace usages with "clsx" --- package-lock.json | 4 +++- package.json | 1 - src/components/organisms/ImageGallery/ImageGalleryArrow.tsx | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f242bb..bcbc702 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@apollo/experimental-nextjs-app-support": "^0.11.2", "@contentful/rich-text-react-renderer": "^15.22.9", "@next/third-parties": "^14.2.5", - "classnames": "^2.5.1", "clsx": "^2.1.1", "next": "^14.2.5", "next-intl": "^3.17.2", @@ -52,6 +51,9 @@ "sass": "^1.77.8", "ts-node": "^10.9.2", "typescript": "^5" + }, + "engines": { + "node": ">= v18.17.0" } }, "node_modules/@adobe/css-tools": { diff --git a/package.json b/package.json index f8ec041..50c1e4f 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "@apollo/experimental-nextjs-app-support": "^0.11.2", "@contentful/rich-text-react-renderer": "^15.22.9", "@next/third-parties": "^14.2.5", - "classnames": "^2.5.1", "clsx": "^2.1.1", "next": "^14.2.5", "next-intl": "^3.17.2", diff --git a/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx index eb7cd1a..527ad0c 100644 --- a/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx +++ b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx @@ -1,6 +1,6 @@ import React from "react"; -import classnames from "classnames"; +import clsx from "clsx"; import { CustomArrowProps } from "react-slick"; import styles from "./ImageGallery.module.scss"; @@ -17,7 +17,7 @@ interface Props extends CustomArrowProps { function ImageGalleryArrow(props: Props): React.ReactElement { return (
Date: Sat, 23 Nov 2024 12:54:16 +0300 Subject: [PATCH 13/25] EPMGCIP-171: Add new constants file "routes.ts", declare basic constants, update usages --- src/components/organisms/Header/Header.tsx | 3 ++- src/components/pages/Home/Home.tsx | 3 ++- src/constants/routes.ts | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/constants/routes.ts diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 6729c23..0f99233 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -6,6 +6,7 @@ import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; import logo from "@/assets/image/logo.png"; import { useRouter } from "@/navigation"; +import { baseUrl } from "@/constants/routes"; export default function Header() { const router = useRouter(); @@ -13,7 +14,7 @@ export default function Header() { const t = useTranslations(); const onClickLogo = (): void => { - router.push("/"); + router.push(baseUrl); }; return ( diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index f11ea7a..dfd58ca 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -12,6 +12,7 @@ import { useRouter } from "@/navigation"; import ImageGallery from "@/components/organisms/ImageGallery/ImageGallery"; import styles from "./Home.module.scss"; +import { exhibitUrl } from "@/constants/routes"; interface Props { exhibits: ITopLatestExhibit[]; @@ -45,7 +46,7 @@ export default function Home(props: Props): React.ReactElement { return; } - router.push(`exhibit/${exhibit.slug}`); + router.push(`${exhibitUrl}/${exhibit.slug}`); }; return ( diff --git a/src/constants/routes.ts b/src/constants/routes.ts new file mode 100644 index 0000000..bfc78dc --- /dev/null +++ b/src/constants/routes.ts @@ -0,0 +1,3 @@ +export const baseUrl = "/"; + +export const exhibitUrl = `/exhibit`; From 8bd17954dcce8f2974588ac57927276ea7b73588 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 23 Nov 2024 12:54:59 +0300 Subject: [PATCH 14/25] EPMGCIP-171: Remove unused locale hook in "Header" component --- src/components/organisms/Header/Header.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 0f99233..4271d9f 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -1,6 +1,6 @@ "use client"; -import { useLocale, useTranslations } from "next-intl"; +import { useTranslations } from "next-intl"; import Image from "next/image"; import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; @@ -10,7 +10,6 @@ import { baseUrl } from "@/constants/routes"; export default function Header() { const router = useRouter(); - const locale = useLocale(); const t = useTranslations(); const onClickLogo = (): void => { From 0ef8057b7fd80a9fbef47d62c3f46450ab7b5799 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 23 Nov 2024 13:42:10 +0300 Subject: [PATCH 15/25] EPMGCIP-171: Update layout in "ImageGallery" to make links clickable with "Link" tag, update usages --- src/components/organisms/Header/Header.tsx | 4 +- .../ImageGallery/ImageGallery.module.scss | 5 ++ .../organisms/ImageGallery/ImageGallery.tsx | 67 ++++++++++--------- src/components/pages/Exhibit/Exhibit.tsx | 2 +- src/components/pages/Home/Home.tsx | 30 ++------- src/constants/routes.ts | 4 +- src/interfaces/IImageGalleryImage.ts | 1 + 7 files changed, 54 insertions(+), 59 deletions(-) diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 4271d9f..f2230d1 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -6,14 +6,14 @@ import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; import logo from "@/assets/image/logo.png"; import { useRouter } from "@/navigation"; -import { baseUrl } from "@/constants/routes"; +import { BASE_URL } from "@/constants/routes"; export default function Header() { const router = useRouter(); const t = useTranslations(); const onClickLogo = (): void => { - router.push(baseUrl); + router.push(BASE_URL); }; return ( diff --git a/src/components/organisms/ImageGallery/ImageGallery.module.scss b/src/components/organisms/ImageGallery/ImageGallery.module.scss index bb370ab..5e50585 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.module.scss +++ b/src/components/organisms/ImageGallery/ImageGallery.module.scss @@ -22,6 +22,11 @@ cursor: pointer; } +.lightboxImage { + @extend .lightboxButton; + display: block; +} + .lightboxButton:focus { outline: none; } diff --git a/src/components/organisms/ImageGallery/ImageGallery.tsx b/src/components/organisms/ImageGallery/ImageGallery.tsx index acef245..dbbf7d2 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.tsx @@ -13,15 +13,15 @@ import BREAKPOINT_TABLE from "../../../constants/breakpoints"; import useImageGalleryStore from "../../../stores/useImageGalleryStore"; import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; import ImageGalleryArrow, { ArrowDirection } from "./ImageGalleryArrow"; +import Link from "next/link"; interface Props { displayArrows: boolean; images: IImageGalleryImage[]; - isZoomEnabled: boolean; - onClickImage?: (id: string) => void; + isLinkImage: boolean; } -function ImageGallery({ images, isZoomEnabled, displayArrows, onClickImage }: Props) { +function ImageGallery({ images, displayArrows, isLinkImage }: Props) { const zoomRef = useRef(null); const { id: galleryId, @@ -53,40 +53,47 @@ function ImageGallery({ images, isZoomEnabled, displayArrows, onClickImage }: Pr const galleryIndex = images.findIndex((i) => i.id === galleryId); const carouselPadding = 16; - const handleOnImageClick = (index: string) => { - if (isZoomEnabled) { - setIsOpeningWithZoom(true); - setGalleryId(index); - setIsOpen(true); - } - - onClickImage?.(index); + const handleOnImageClick = (index: string) => (): void => { + setIsOpeningWithZoom(true); + setGalleryId(index); + setIsOpen(true); }; const handleOnCloseLightbox = () => { setIsOpen(false); }; - const imagesList = images.map((image, index) => ( -
-
- {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */} - + const imagesList = images.map((image, index) => { + const galleryImage = ( + picture + ); + + return ( +
+
+ {isLinkImage ? ( + + {galleryImage} + + ) : ( + + )} +
-
- )); + ); + }); const loadImage = (url: string) => { const image = new window.Image(); diff --git a/src/components/pages/Exhibit/Exhibit.tsx b/src/components/pages/Exhibit/Exhibit.tsx index d7fd5a3..c0c6242 100644 --- a/src/components/pages/Exhibit/Exhibit.tsx +++ b/src/components/pages/Exhibit/Exhibit.tsx @@ -113,7 +113,7 @@ export default function ExhibitPage({ exhibit, slug }: Props) { {images.length > 0 && (
- +
)} diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index dfd58ca..0ac7c66 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -2,25 +2,23 @@ import React, { useMemo } from "react"; -import { useTranslations } from "next-intl"; +import { useLocale, useTranslations } from "next-intl"; import { ITopLatestExhibit } from "@/interfaces/ITopLatestExhibit"; import { IImageGalleryImage } from "@/interfaces/IImageGalleryImage"; -import { useRouter } from "@/navigation"; - import ImageGallery from "@/components/organisms/ImageGallery/ImageGallery"; import styles from "./Home.module.scss"; -import { exhibitUrl } from "@/constants/routes"; +import { EXHIBIT_URL } from "@/constants/routes"; interface Props { exhibits: ITopLatestExhibit[]; } export default function Home(props: Props): React.ReactElement { - const router = useRouter(); const t = useTranslations(); + const locale = useLocale(); const images: IImageGalleryImage[] = useMemo( () => @@ -32,35 +30,19 @@ export default function Home(props: Props): React.ReactElement { return { url: firstImageItem.url, id: firstImageItem.sys.id, + clickUrl: `${locale}${EXHIBIT_URL}/${exhibit.slug}`, }; }), - [props.exhibits], + [props.exhibits, locale], ); - const onClickImage = (id: string): void => { - const exhibit = props.exhibits.find( - (topLatestExhibit) => topLatestExhibit.imagesCollection.items[0].sys.id === id, - ); - - if (!exhibit) { - return; - } - - router.push(`${exhibitUrl}/${exhibit.slug}`); - }; - return (

{t("homePageTitle")}

{images.length > 0 && (
- +
)}
diff --git a/src/constants/routes.ts b/src/constants/routes.ts index bfc78dc..bcc0982 100644 --- a/src/constants/routes.ts +++ b/src/constants/routes.ts @@ -1,3 +1,3 @@ -export const baseUrl = "/"; +export const BASE_URL = "/"; -export const exhibitUrl = `/exhibit`; +export const EXHIBIT_URL = `/exhibit`; diff --git a/src/interfaces/IImageGalleryImage.ts b/src/interfaces/IImageGalleryImage.ts index dfdd78c..6ca5319 100644 --- a/src/interfaces/IImageGalleryImage.ts +++ b/src/interfaces/IImageGalleryImage.ts @@ -1,4 +1,5 @@ export interface IImageGalleryImage { id: string; url: string; + clickUrl?: string; } From dd3150fa6df752f0dd84e5fe5f0c2137831ce9cc Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 23 Nov 2024 13:44:42 +0300 Subject: [PATCH 16/25] EPMGCIP-171: Update "Header" with "a" tag for logo title for better semantic rules --- src/components/organisms/Header/Header.tsx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index f2230d1..6d5f586 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -1,24 +1,21 @@ "use client"; -import { useTranslations } from "next-intl"; +import { useLocale, useTranslations } from "next-intl"; import Image from "next/image"; import styles from "./Header.module.scss"; import LanguageSwitcher from "@/components/molecules/LanguageSwitcher/LanguageSwitcher"; import logo from "@/assets/image/logo.png"; -import { useRouter } from "@/navigation"; -import { BASE_URL } from "@/constants/routes"; +import { Link } from "@/navigation"; export default function Header() { - const router = useRouter(); const t = useTranslations(); - - const onClickLogo = (): void => { - router.push(BASE_URL); - }; + const locale = useLocale(); return (
- {t("logo")} + + {t("logo")} +
From d9cfb70dc98c8a3fdf456a2729dbd3a0efaae83e Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 23 Nov 2024 14:11:35 +0300 Subject: [PATCH 17/25] EPMGCIP-171: Adjust UTs for recently modified components --- src/components/organisms/Header/Header.test.tsx | 1 + .../organisms/ImageGallery/ImageGallery.test.tsx | 9 ++++++++- src/components/pages/Home/Home.test.tsx | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/organisms/Header/Header.test.tsx b/src/components/organisms/Header/Header.test.tsx index 76d60e1..e2ee007 100644 --- a/src/components/organisms/Header/Header.test.tsx +++ b/src/components/organisms/Header/Header.test.tsx @@ -9,6 +9,7 @@ jest.mock("@/navigation", () => ({ replace: jest.fn(), }), usePathname: jest.fn().mockReturnValue("/test"), + Link: jest.fn().mockReturnValue({"test"}), })); describe("Header", () => { diff --git a/src/components/organisms/ImageGallery/ImageGallery.test.tsx b/src/components/organisms/ImageGallery/ImageGallery.test.tsx index 915a1cf..30febb1 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.test.tsx +++ b/src/components/organisms/ImageGallery/ImageGallery.test.tsx @@ -5,6 +5,13 @@ import ImageGallery from "./ImageGallery"; jest.mock("yet-another-react-lightbox", () => jest.fn()); jest.mock("yet-another-react-lightbox/plugins/zoom", () => ({})); +jest.mock("@/navigation", () => ({ + useRouter: jest.fn().mockReturnValue({ + replace: jest.fn(), + }), + Link: jest.fn().mockReturnValue({"test"}), +})); + describe("ImageGallery", () => { const images = [ { url: "https://example.com/image1.jpg", id: "1" }, @@ -13,6 +20,6 @@ describe("ImageGallery", () => { ]; it("renders gallery", () => { - render(); + render(); }); }); diff --git a/src/components/pages/Home/Home.test.tsx b/src/components/pages/Home/Home.test.tsx index ef6bf51..ac8db66 100644 --- a/src/components/pages/Home/Home.test.tsx +++ b/src/components/pages/Home/Home.test.tsx @@ -14,6 +14,7 @@ jest.mock("@/navigation", () => ({ useRouter: jest.fn().mockReturnValue({ replace: jest.fn(), }), + Link: jest.fn().mockReturnValue({"test"}), })); jest.mock("yet-another-react-lightbox", () => jest.fn()); From b7427bf604e9cdd1c1fbb81862028ead4f447987 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Wed, 4 Dec 2024 23:27:33 +0300 Subject: [PATCH 18/25] EPMGCIP-171: Replace "div" with "button" tag for better semantic rules consideration --- src/components/organisms/ImageGallery/ImageGalleryArrow.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx index 29e9e2d..55b555e 100644 --- a/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx +++ b/src/components/organisms/ImageGallery/ImageGalleryArrow.tsx @@ -16,7 +16,7 @@ interface Props extends CustomArrowProps { function ImageGalleryArrow(props: Props): React.ReactElement { return ( -
Date: Wed, 4 Dec 2024 23:29:05 +0300 Subject: [PATCH 19/25] EPMGCIP-171: Rename "ITopLatestExhibit" to "IPreviewExhibit", update usages --- src/app/[locale]/page.tsx | 4 ++-- src/components/pages/Home/Home.test.tsx | 4 ++-- src/components/pages/Home/Home.tsx | 4 ++-- src/interfaces/{ITopLatestExhibit.ts => IPreviewExhibit.ts} | 2 +- src/mocks/exhibit.ts | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) rename src/interfaces/{ITopLatestExhibit.ts => IPreviewExhibit.ts} (87%) diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index b044cd4..5f0f78f 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,4 +1,4 @@ -import { ITopLatestExhibit } from '@/interfaces/ITopLatestExhibit'; +import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; import { getTopLatestExhibits } from '@/lib/exhibit'; import HomePage from '../../components/pages/Home/Home'; @@ -8,7 +8,7 @@ const topLatestExhibitsLimit = 10; export default async function Home() { const topLatestExhibits = (await getTopLatestExhibits( topLatestExhibitsLimit, - )) as ITopLatestExhibit[]; + )) as IPreviewExhibit[]; return ; } diff --git a/src/components/pages/Home/Home.test.tsx b/src/components/pages/Home/Home.test.tsx index dc01359..fa0de48 100644 --- a/src/components/pages/Home/Home.test.tsx +++ b/src/components/pages/Home/Home.test.tsx @@ -2,7 +2,7 @@ import '@testing-library/jest-dom'; import { render } from '@testing-library/react'; import { NextIntlClientProvider } from 'next-intl'; -import { ITopLatestExhibit } from '@/interfaces/ITopLatestExhibit'; +import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; import { topLatestExhibits } from '@/mocks/exhibit'; import Home from './Home'; @@ -19,7 +19,7 @@ jest.mock('yet-another-react-lightbox', () => jest.fn()); jest.mock('yet-another-react-lightbox/plugins/zoom', () => ({})); describe('Home component', () => { - const renderComponent = (exhibits: ITopLatestExhibit[]) => + const renderComponent = (exhibits: IPreviewExhibit[]) => render( diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index e6ecb95..c79ba0c 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -7,12 +7,12 @@ import { useLocale, useTranslations } from 'next-intl'; import ImageGallery from '@/components/organisms/ImageGallery/ImageGallery'; import { EXHIBIT_URL } from '@/constants/routes'; import { IImageGalleryImage } from '@/interfaces/IImageGalleryImage'; -import { ITopLatestExhibit } from '@/interfaces/ITopLatestExhibit'; +import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; import styles from './Home.module.scss'; interface Props { - exhibits: ITopLatestExhibit[]; + exhibits: IPreviewExhibit[]; } export default function Home(props: Props): React.ReactElement { diff --git a/src/interfaces/ITopLatestExhibit.ts b/src/interfaces/IPreviewExhibit.ts similarity index 87% rename from src/interfaces/ITopLatestExhibit.ts rename to src/interfaces/IPreviewExhibit.ts index 225e47b..7f1279c 100644 --- a/src/interfaces/ITopLatestExhibit.ts +++ b/src/interfaces/IPreviewExhibit.ts @@ -1,4 +1,4 @@ -export interface ITopLatestExhibit { +export interface IPreviewExhibit { sys: { id: string; }; diff --git a/src/mocks/exhibit.ts b/src/mocks/exhibit.ts index 8d61214..050d71c 100644 --- a/src/mocks/exhibit.ts +++ b/src/mocks/exhibit.ts @@ -1,4 +1,4 @@ -import { ITopLatestExhibit } from '@/interfaces/ITopLatestExhibit'; +import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; export const exhibitItem = { audioFileEn: { @@ -88,7 +88,7 @@ export const exhibitMockAnotherLanguage = { }, }; -export const topLatestExhibits: ITopLatestExhibit[] = [ +export const topLatestExhibits: IPreviewExhibit[] = [ { imagesCollection: { items: [ From f32b60c2ec9fc51f0643990827677cf0dc1e9302 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Wed, 4 Dec 2024 23:40:45 +0300 Subject: [PATCH 20/25] EPMGCIP-171: Improve type specification for "getTopLatestExhibits" function --- src/app/[locale]/page.tsx | 5 +---- src/lib/exhibit.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index 5f0f78f..e9b666e 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,4 +1,3 @@ -import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; import { getTopLatestExhibits } from '@/lib/exhibit'; import HomePage from '../../components/pages/Home/Home'; @@ -6,9 +5,7 @@ import HomePage from '../../components/pages/Home/Home'; const topLatestExhibitsLimit = 10; export default async function Home() { - const topLatestExhibits = (await getTopLatestExhibits( - topLatestExhibitsLimit, - )) as IPreviewExhibit[]; + const topLatestExhibits = await getTopLatestExhibits(topLatestExhibitsLimit); return ; } diff --git a/src/lib/exhibit.ts b/src/lib/exhibit.ts index 1762b72..c0b86b7 100644 --- a/src/lib/exhibit.ts +++ b/src/lib/exhibit.ts @@ -1,3 +1,5 @@ +import { IPreviewExhibit } from '@/interfaces/IPreviewExhibit'; + import { getClient } from './ApolloClient'; import { GetExhibitDocument, GetTopLatestExhibitsDocument } from '../__generated__/graphql'; @@ -14,15 +16,17 @@ export async function getExhibit(slug: string) { } } -export async function getTopLatestExhibits(limit: number) { +export async function getTopLatestExhibits(limit: number): Promise { try { const { data } = await getClient().query({ query: GetTopLatestExhibitsDocument, variables: { limit }, }); - return data.exhibitCollection?.items ?? []; + return (data.exhibitCollection?.items as IPreviewExhibit[]) ?? []; } catch (error) { - console.error('Failed to fetch exhibit: ', error); + console.error('Failed to fetch top latest exhibits: ', error); } + + return []; } From 198bcfe7938a688186049ea9edf7f6a358486ad9 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 7 Dec 2024 13:05:50 +0300 Subject: [PATCH 21/25] EPMGCIP-171: Improve logic with navigating to selected exhibit in home page, improve header navigation --- src/components/organisms/Header/Header.tsx | 5 ++--- src/components/pages/Home/Home.module.scss | 6 +----- src/components/pages/Home/Home.tsx | 5 ++--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/components/organisms/Header/Header.tsx b/src/components/organisms/Header/Header.tsx index 73c4f52..badef6b 100644 --- a/src/components/organisms/Header/Header.tsx +++ b/src/components/organisms/Header/Header.tsx @@ -1,7 +1,7 @@ 'use client'; import Image from 'next/image'; -import { useLocale, useTranslations } from 'next-intl'; +import { useTranslations } from 'next-intl'; import logo from '@/assets/image/logo.png'; import LanguageSwitcher from '@/components/molecules/LanguageSwitcher/LanguageSwitcher'; @@ -11,11 +11,10 @@ import styles from './Header.module.scss'; export default function Header() { const t = useTranslations(); - const locale = useLocale(); return (
- + {t('logo')} diff --git a/src/components/pages/Home/Home.module.scss b/src/components/pages/Home/Home.module.scss index 8f0dbca..5a59937 100644 --- a/src/components/pages/Home/Home.module.scss +++ b/src/components/pages/Home/Home.module.scss @@ -1,4 +1,4 @@ -@import "../../../variables.scss"; +@import '../../../variables.scss'; .title { margin: 50px 0 40px 0; @@ -6,10 +6,6 @@ text-align: center; font-weight: bold; font-size: $titleFontSize; - - @media (min-width: $breakpointTablet) { - padding: 0 $indentTabletPageBorder; - } } .gallery { diff --git a/src/components/pages/Home/Home.tsx b/src/components/pages/Home/Home.tsx index c79ba0c..d803a64 100644 --- a/src/components/pages/Home/Home.tsx +++ b/src/components/pages/Home/Home.tsx @@ -2,7 +2,7 @@ import React, { useMemo } from 'react'; -import { useLocale, useTranslations } from 'next-intl'; +import { useTranslations } from 'next-intl'; import ImageGallery from '@/components/organisms/ImageGallery/ImageGallery'; import { EXHIBIT_URL } from '@/constants/routes'; @@ -17,7 +17,6 @@ interface Props { export default function Home(props: Props): React.ReactElement { const t = useTranslations(); - const locale = useLocale(); const images: IImageGalleryImage[] = useMemo( () => @@ -27,7 +26,7 @@ export default function Home(props: Props): React.ReactElement { const firstImageItem = exhibit.imagesCollection.items[0]; return { - clickUrl: `${locale}${EXHIBIT_URL}/${exhibit.slug}`, + clickUrl: `${EXHIBIT_URL}/${exhibit.slug}`, id: firstImageItem.sys.id, url: firstImageItem.url, }; From 32471553e32ab568f57117865e5a3dcc7ffb2b06 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 7 Dec 2024 13:10:02 +0300 Subject: [PATCH 22/25] EPMGCIP-171: Improve layout for arrow icons on navigation --- .../organisms/ImageGallery/ImageGallery.module.scss | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/organisms/ImageGallery/ImageGallery.module.scss b/src/components/organisms/ImageGallery/ImageGallery.module.scss index 5e50585..0f87e2f 100644 --- a/src/components/organisms/ImageGallery/ImageGallery.module.scss +++ b/src/components/organisms/ImageGallery/ImageGallery.module.scss @@ -1,4 +1,4 @@ -@import "../../../variables.scss"; +@import '../../../variables.scss'; .image { object-fit: cover; @@ -38,10 +38,15 @@ height: auto; &:before { - color: $colorDarkGray; - opacity: 0.8 !important; + color: $colorLightGray; + opacity: 0.4 !important; font-size: 30px; } + + &:hover:before { + color: $colorLightGray; + opacity: 1 !important; + } } .slickCustomArrowPrevious { From d9467526f92b47e0d3265397834cf315761b1bbd Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 7 Dec 2024 13:15:48 +0300 Subject: [PATCH 23/25] EPMGCIP-171: Bump "netlify-cli" dependency to higher version to resolve CI/CD issues --- package-lock.json | 141 ++++++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 86 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d32a12..d1c5f7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.9", - "netlify-cli": "^17.36.2", + "netlify-cli": "^17.38.0", "postcss": "^8.4.47", "postcss-preset-mantine": "^1.17.0", "postcss-simple-vars": "^7.0.1", @@ -12232,9 +12232,9 @@ } }, "node_modules/netlify-cli": { - "version": "17.37.2", - "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.37.2.tgz", - "integrity": "sha512-jA3wijrcr4Y8NF44sTQmR/4k6QPQwoK9Vf6vKimTJ1xyGASt+Mg+iWXyg1NsmKxWs5EUnS7yuWFZJ2eb/FWyMQ==", + "version": "17.38.0", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.38.0.tgz", + "integrity": "sha512-y34vEexev5P4piJgbO8O/cBfLJkyce37Ks4yrOYx2YJk+j94G4ROAUQ7bE9GiZN/wZ/YRi+QNPsm6KbwF/yOcA==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -12242,11 +12242,11 @@ "@bugsnag/js": "7.25.0", "@fastify/static": "7.0.4", "@netlify/blobs": "8.1.0", - "@netlify/build": "29.56.0", + "@netlify/build": "29.56.1", "@netlify/build-info": "7.15.2", - "@netlify/config": "20.19.0", + "@netlify/config": "20.19.1", "@netlify/edge-bundler": "12.2.3", - "@netlify/edge-functions": "2.9.0", + "@netlify/edge-functions": "2.11.1", "@netlify/local-functions-proxy": "1.1.1", "@netlify/zip-it-and-ship-it": "9.41.1", "@octokit/rest": "20.1.1", @@ -12260,7 +12260,7 @@ "boxen": "7.1.1", "chalk": "5.3.0", "chokidar": "3.6.0", - "ci-info": "4.0.0", + "ci-info": "4.1.0", "clean-deep": "3.4.0", "commander": "10.0.1", "comment-json": "4.2.5", @@ -12321,7 +12321,7 @@ "netlify-redirector": "0.5.0", "node-fetch": "3.3.2", "node-version-alias": "3.4.1", - "ora": "8.1.0", + "ora": "8.1.1", "p-filter": "4.1.0", "p-map": "7.0.2", "p-wait-for": "5.0.2", @@ -12362,12 +12362,13 @@ } }, "node_modules/netlify-cli/node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -12375,18 +12376,18 @@ } }, "node_modules/netlify-cli/node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/netlify-cli/node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -12464,10 +12465,13 @@ } }, "node_modules/netlify-cli/node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", "dev": true, + "dependencies": { + "@babel/types": "^7.26.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -12475,6 +12479,19 @@ "node": ">=6.0.0" } }, + "node_modules/netlify-cli/node_modules/@babel/parser/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/netlify-cli/node_modules/@babel/types": { "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", @@ -13418,15 +13435,15 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build": { - "version": "29.56.0", - "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.56.0.tgz", - "integrity": "sha512-x2DUxBt1MigjAX+2xpDmWKp4BlTvg4GofaR2SWSz80D+zkfWRJp01de1O5mKH9QK3saQBQUVJyi+mrK64YNf4w==", + "version": "29.56.1", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.56.1.tgz", + "integrity": "sha512-0/4GiVTL69AXeIly6ZXIi5g4qU2Oi9djCUcJO6xCZCDgft6TD90JXlsCQ5P/+oh0CFcNPpsy9DBvY8mm0fSFVw==", "dev": true, "dependencies": { "@bugsnag/js": "^7.0.0", "@netlify/blobs": "^7.4.0", "@netlify/cache-utils": "^5.1.6", - "@netlify/config": "^20.19.0", + "@netlify/config": "^20.19.1", "@netlify/edge-bundler": "12.2.3", "@netlify/framework-info": "^9.8.13", "@netlify/functions-utils": "^5.2.93", @@ -13444,7 +13461,7 @@ "figures": "^5.0.0", "filter-obj": "^5.0.0", "got": "^12.0.0", - "hot-shots": "10.1.1", + "hot-shots": "10.2.1", "indent-string": "^5.0.0", "is-plain-obj": "^4.0.0", "js-yaml": "^4.0.0", @@ -14017,9 +14034,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/config": { - "version": "20.19.0", - "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.19.0.tgz", - "integrity": "sha512-vkqTQ7jaudPSRME6ZzYml6qRWxIJXnUQ8csqOSx5Yv0ysj1zb2l+Ke3c5bc6Cttkg4ay2YLx4M0/7n6nT3KojQ==", + "version": "20.19.1", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.19.1.tgz", + "integrity": "sha512-GkN8IwHilIlusFuAW+DFjhtpghnaelNcHUoZwBDcJou8eyhIZYAj6B4STMyGUggIfMobYGM28kEY3gN4uUVq0g==", "dev": true, "dependencies": { "@iarna/toml": "^2.2.5", @@ -14914,9 +14931,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/edge-functions": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@netlify/edge-functions/-/edge-functions-2.9.0.tgz", - "integrity": "sha512-W1kdwLpvUlhfI2FTOe6SEcoobW7Fw+Vm9WN5Gwb5lTCG6QXBE3gpCZk+NVQ4p/XoOcXYwWAS5pfOTMKUoYNQnA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@netlify/edge-functions/-/edge-functions-2.11.1.tgz", + "integrity": "sha512-pyQOTZ8a+ge5lZlE+H/UAHyuqQqtL5gE0pXrHT9mOykr3YQqnkB2hZMtx12odatZ87gHg4EA+UPyMZUbLfnXvw==", "dev": true }, "node_modules/netlify-cli/node_modules/@netlify/framework-info": { @@ -16584,12 +16601,12 @@ "peer": true }, "node_modules/netlify-cli/node_modules/@types/node": { - "version": "20.14.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", - "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, "node_modules/netlify-cli/node_modules/@types/normalize-package-data": { @@ -18142,9 +18159,9 @@ } }, "node_modules/netlify-cli/node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true, "funding": [ { @@ -18223,6 +18240,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -19093,9 +19111,9 @@ } }, "node_modules/netlify-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -21443,9 +21461,9 @@ } }, "node_modules/netlify-cli/node_modules/hot-shots": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.1.1.tgz", - "integrity": "sha512-KTsH9hb+YZHH0IIRf22y0X8mPw8j521W5xRAUeaUlGNBDsf44ixE7ZeyXbUHd/nQ1n04UEhi2ja05/QVOS/CgQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.2.1.tgz", + "integrity": "sha512-tmjcyZkG/qADhcdC7UjAp8D7v7W2DOYFgaZ48fYMuayMQmVVUg8fntKmrjes/b40ef6yZ+qt1lB8kuEDfLC4zw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -21681,6 +21699,7 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -21812,6 +21831,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21865,6 +21885,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -21886,6 +21907,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21895,6 +21917,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -21908,6 +21931,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21917,6 +21941,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -23795,7 +23820,8 @@ "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/netlify-cli/node_modules/nan": { "version": "2.17.0", @@ -24375,9 +24401,9 @@ } }, "node_modules/netlify-cli/node_modules/ora": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", - "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.1.tgz", + "integrity": "sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==", "dev": true, "dependencies": { "chalk": "^5.3.0", @@ -24637,9 +24663,9 @@ } }, "node_modules/netlify-cli/node_modules/p-timeout": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", - "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz", + "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==", "dev": true, "engines": { "node": ">=14.16" @@ -25851,6 +25877,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -25864,6 +25891,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -25873,6 +25901,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -27290,9 +27319,9 @@ "dev": true }, "node_modules/netlify-cli/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, "node_modules/netlify-cli/node_modules/unenv": { diff --git a/package.json b/package.json index 319d9bf..72c9988 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.9", - "netlify-cli": "^17.36.2", + "netlify-cli": "^17.38.0", "postcss": "^8.4.47", "postcss-preset-mantine": "^1.17.0", "postcss-simple-vars": "^7.0.1", From 65faad64967089cbe754b275f9374dc94145a8fa Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 7 Dec 2024 13:24:36 +0300 Subject: [PATCH 24/25] EPMGCIP-171: Revert package.json to original values to make CI/CD pass --- package-lock.json | 144 ++++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 57 insertions(+), 89 deletions(-) diff --git a/package-lock.json b/package-lock.json index d1c5f7c..6fc2a8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.9", - "netlify-cli": "^17.38.0", + "netlify-cli": "^17.36.2", "postcss": "^8.4.47", "postcss-preset-mantine": "^1.17.0", "postcss-simple-vars": "^7.0.1", @@ -76,9 +76,6 @@ "sass": "^1.77.8", "ts-node": "^10.9.2", "typescript": "^5" - }, - "engines": { - "node": ">= v18.17.0" } }, "node_modules/@adobe/css-tools": { @@ -12232,9 +12229,9 @@ } }, "node_modules/netlify-cli": { - "version": "17.38.0", - "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.38.0.tgz", - "integrity": "sha512-y34vEexev5P4piJgbO8O/cBfLJkyce37Ks4yrOYx2YJk+j94G4ROAUQ7bE9GiZN/wZ/YRi+QNPsm6KbwF/yOcA==", + "version": "17.37.2", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.37.2.tgz", + "integrity": "sha512-jA3wijrcr4Y8NF44sTQmR/4k6QPQwoK9Vf6vKimTJ1xyGASt+Mg+iWXyg1NsmKxWs5EUnS7yuWFZJ2eb/FWyMQ==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -12242,11 +12239,11 @@ "@bugsnag/js": "7.25.0", "@fastify/static": "7.0.4", "@netlify/blobs": "8.1.0", - "@netlify/build": "29.56.1", + "@netlify/build": "29.56.0", "@netlify/build-info": "7.15.2", - "@netlify/config": "20.19.1", + "@netlify/config": "20.19.0", "@netlify/edge-bundler": "12.2.3", - "@netlify/edge-functions": "2.11.1", + "@netlify/edge-functions": "2.9.0", "@netlify/local-functions-proxy": "1.1.1", "@netlify/zip-it-and-ship-it": "9.41.1", "@octokit/rest": "20.1.1", @@ -12260,7 +12257,7 @@ "boxen": "7.1.1", "chalk": "5.3.0", "chokidar": "3.6.0", - "ci-info": "4.1.0", + "ci-info": "4.0.0", "clean-deep": "3.4.0", "commander": "10.0.1", "comment-json": "4.2.5", @@ -12321,7 +12318,7 @@ "netlify-redirector": "0.5.0", "node-fetch": "3.3.2", "node-version-alias": "3.4.1", - "ora": "8.1.1", + "ora": "8.1.0", "p-filter": "4.1.0", "p-map": "7.0.2", "p-wait-for": "5.0.2", @@ -12362,13 +12359,12 @@ } }, "node_modules/netlify-cli/node_modules/@babel/code-frame": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", - "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -12376,18 +12372,18 @@ } }, "node_modules/netlify-cli/node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/netlify-cli/node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -12465,13 +12461,10 @@ } }, "node_modules/netlify-cli/node_modules/@babel/parser": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", - "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, - "dependencies": { - "@babel/types": "^7.26.0" - }, "bin": { "parser": "bin/babel-parser.js" }, @@ -12479,19 +12472,6 @@ "node": ">=6.0.0" } }, - "node_modules/netlify-cli/node_modules/@babel/parser/node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/netlify-cli/node_modules/@babel/types": { "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", @@ -13435,15 +13415,15 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build": { - "version": "29.56.1", - "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.56.1.tgz", - "integrity": "sha512-0/4GiVTL69AXeIly6ZXIi5g4qU2Oi9djCUcJO6xCZCDgft6TD90JXlsCQ5P/+oh0CFcNPpsy9DBvY8mm0fSFVw==", + "version": "29.56.0", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.56.0.tgz", + "integrity": "sha512-x2DUxBt1MigjAX+2xpDmWKp4BlTvg4GofaR2SWSz80D+zkfWRJp01de1O5mKH9QK3saQBQUVJyi+mrK64YNf4w==", "dev": true, "dependencies": { "@bugsnag/js": "^7.0.0", "@netlify/blobs": "^7.4.0", "@netlify/cache-utils": "^5.1.6", - "@netlify/config": "^20.19.1", + "@netlify/config": "^20.19.0", "@netlify/edge-bundler": "12.2.3", "@netlify/framework-info": "^9.8.13", "@netlify/functions-utils": "^5.2.93", @@ -13461,7 +13441,7 @@ "figures": "^5.0.0", "filter-obj": "^5.0.0", "got": "^12.0.0", - "hot-shots": "10.2.1", + "hot-shots": "10.1.1", "indent-string": "^5.0.0", "is-plain-obj": "^4.0.0", "js-yaml": "^4.0.0", @@ -14034,9 +14014,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/config": { - "version": "20.19.1", - "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.19.1.tgz", - "integrity": "sha512-GkN8IwHilIlusFuAW+DFjhtpghnaelNcHUoZwBDcJou8eyhIZYAj6B4STMyGUggIfMobYGM28kEY3gN4uUVq0g==", + "version": "20.19.0", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.19.0.tgz", + "integrity": "sha512-vkqTQ7jaudPSRME6ZzYml6qRWxIJXnUQ8csqOSx5Yv0ysj1zb2l+Ke3c5bc6Cttkg4ay2YLx4M0/7n6nT3KojQ==", "dev": true, "dependencies": { "@iarna/toml": "^2.2.5", @@ -14931,9 +14911,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/edge-functions": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@netlify/edge-functions/-/edge-functions-2.11.1.tgz", - "integrity": "sha512-pyQOTZ8a+ge5lZlE+H/UAHyuqQqtL5gE0pXrHT9mOykr3YQqnkB2hZMtx12odatZ87gHg4EA+UPyMZUbLfnXvw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@netlify/edge-functions/-/edge-functions-2.9.0.tgz", + "integrity": "sha512-W1kdwLpvUlhfI2FTOe6SEcoobW7Fw+Vm9WN5Gwb5lTCG6QXBE3gpCZk+NVQ4p/XoOcXYwWAS5pfOTMKUoYNQnA==", "dev": true }, "node_modules/netlify-cli/node_modules/@netlify/framework-info": { @@ -16601,12 +16581,12 @@ "peer": true }, "node_modules/netlify-cli/node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", "dev": true, "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~5.26.4" } }, "node_modules/netlify-cli/node_modules/@types/normalize-package-data": { @@ -18159,9 +18139,9 @@ } }, "node_modules/netlify-cli/node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, "funding": [ { @@ -18240,7 +18220,6 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -19111,9 +19090,9 @@ } }, "node_modules/netlify-cli/node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -21461,9 +21440,9 @@ } }, "node_modules/netlify-cli/node_modules/hot-shots": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.2.1.tgz", - "integrity": "sha512-tmjcyZkG/qADhcdC7UjAp8D7v7W2DOYFgaZ48fYMuayMQmVVUg8fntKmrjes/b40ef6yZ+qt1lB8kuEDfLC4zw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.1.1.tgz", + "integrity": "sha512-KTsH9hb+YZHH0IIRf22y0X8mPw8j521W5xRAUeaUlGNBDsf44ixE7ZeyXbUHd/nQ1n04UEhi2ja05/QVOS/CgQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -21699,7 +21678,6 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -21831,7 +21809,6 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -21885,7 +21862,6 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -21907,7 +21883,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -21917,7 +21892,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, - "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -21931,7 +21905,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -21941,7 +21914,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -23820,8 +23792,7 @@ "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/netlify-cli/node_modules/nan": { "version": "2.17.0", @@ -24401,9 +24372,9 @@ } }, "node_modules/netlify-cli/node_modules/ora": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.1.tgz", - "integrity": "sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", + "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", "dev": true, "dependencies": { "chalk": "^5.3.0", @@ -24663,9 +24634,9 @@ } }, "node_modules/netlify-cli/node_modules/p-timeout": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz", - "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", "dev": true, "engines": { "node": ">=14.16" @@ -25877,7 +25848,6 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -25891,7 +25861,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -25901,7 +25870,6 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -27319,9 +27287,9 @@ "dev": true }, "node_modules/netlify-cli/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, "node_modules/netlify-cli/node_modules/unenv": { diff --git a/package.json b/package.json index 72c9988..319d9bf 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.9", - "netlify-cli": "^17.38.0", + "netlify-cli": "^17.36.2", "postcss": "^8.4.47", "postcss-preset-mantine": "^1.17.0", "postcss-simple-vars": "^7.0.1", From 210e6cdb0579223b819c06e5a4453cb193d9ce33 Mon Sep 17 00:00:00 2001 From: Dzmitry Yaniuk Date: Sat, 7 Dec 2024 13:26:48 +0300 Subject: [PATCH 25/25] EPMGCIP-171: Remove NodeJS restrictions in "package.json" --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 319d9bf..7694b1d 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,5 @@ { "name": "epmgcip-chaperone.admin", - "engines": { - "node": ">= v18.17.0" - }, "version": "2.0.0", "private": true, "scripts": {