diff --git a/.env b/.env index 923411a..2fc88aa 100644 --- a/.env +++ b/.env @@ -4,3 +4,4 @@ NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/ NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/ NEXT_PUBLIC_GRAPHQL_ENDPOINT='https://api.jsconf.dev/graphql' NEXT_PUBLIC_TOKEN_STORAGE_KEY='HS:token_storage_key' +NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY='pk_test_ZnVua3ktZ3JpZmZvbi04NC5jbGVyay5hY2NvdW50cy5kZXYk' diff --git a/.gitignore b/.gitignore index 8f322f0..0d57ee3 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,7 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# # GQL / code-generation +# src/api/gql/**/* +# src/**/*.generated.* diff --git a/.prettierignore b/.prettierignore index 0fe97b3..2bb4e93 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ -src/api/types.ts +src/api/gql/**/* +src/**/*.generated.* diff --git a/src/app/(transition)/(root)/layout.tsx b/app/(transition)/(root)/layout.tsx similarity index 69% rename from src/app/(transition)/(root)/layout.tsx rename to app/(transition)/(root)/layout.tsx index 06bec15..adf60e3 100644 --- a/src/app/(transition)/(root)/layout.tsx +++ b/app/(transition)/(root)/layout.tsx @@ -1,15 +1,13 @@ import PageTransition from "@/components/PageTransition"; -import { currentUser } from "@clerk/nextjs"; import { Nav } from "@/components/nav"; export default async function Template({ children, }: { children: React.ReactNode; }) { - const user = await currentUser(); return ( <> - + {children} > ); diff --git a/app/(transition)/(root)/page.tsx b/app/(transition)/(root)/page.tsx new file mode 100644 index 0000000..b2bf886 --- /dev/null +++ b/app/(transition)/(root)/page.tsx @@ -0,0 +1,32 @@ +import { getApolloClient } from "../../../src/api/ApolloClient"; +import { LandingPageEvents } from "../../../src/components/features/LandingPageEvents"; +import { + FetchExampleEventsDocument, + FetchExampleEventsQuery, +} from "../../../src/components/features/LandingPageEvents/graphql/FetchExampleEvents.generated"; + +export default async function Home() { + const c = getApolloClient(); + const variable = await c.query({ + query: FetchExampleEventsDocument, + }); + return ( + + + + TICKETS + + + + RSC + {variable.data?.events?.map((event) => {event.id})} + + + Client fetching + + + + ); +} + +export const runtime = "edge"; diff --git a/src/app/(transition)/graphiql/page.tsx b/app/(transition)/graphiql/page.tsx similarity index 97% rename from src/app/(transition)/graphiql/page.tsx rename to app/(transition)/graphiql/page.tsx index 3087089..f6700cc 100644 --- a/src/app/(transition)/graphiql/page.tsx +++ b/app/(transition)/graphiql/page.tsx @@ -5,8 +5,8 @@ import { GraphiQL } from "graphiql"; import { useEffect, useRef, useState } from "react"; import "graphiql/graphiql.css"; import Link from "next/link"; -import { urls } from "../../../lib/urls"; -import { Button } from "../../../components/ui/button"; +import { urls } from "../../../src/lib/urls"; +import { Button } from "../../../src/components/ui/button"; const useGetAuthToken = () => { const [token, setToken] = useState(null); diff --git a/src/app/(transition)/layout.tsx b/app/(transition)/layout.tsx similarity index 95% rename from src/app/(transition)/layout.tsx rename to app/(transition)/layout.tsx index 95b9f0c..d23c104 100644 --- a/src/app/(transition)/layout.tsx +++ b/app/(transition)/layout.tsx @@ -1,5 +1,5 @@ "use client"; -import { useAuth } from "@clerk/nextjs"; +import { useAuth } from "@clerk/clerk-react"; import { AnimatePresence, LazyMotion, domAnimation } from "framer-motion"; import React, { useEffect } from "react"; diff --git a/src/app/globals.css b/app/globals.css similarity index 100% rename from src/app/globals.css rename to app/globals.css diff --git a/src/app/layout.tsx b/app/layout.tsx similarity index 66% rename from src/app/layout.tsx rename to app/layout.tsx index d50070e..c55e82c 100644 --- a/src/app/layout.tsx +++ b/app/layout.tsx @@ -1,9 +1,9 @@ -import { Nav } from "@/components/nav"; import "./globals.css"; import { Inter, Roboto } from "next/font/google"; import classNames from "classnames"; -import { ClerkProvider, currentUser } from "@clerk/nextjs"; import { ThemeProvider } from "@/components/providers"; +import { ApolloWrapper } from "../src/api/ApolloWrapper"; +import { Clerk } from "../src/components/Auth/clerk"; const inter = Inter({ subsets: ["latin"], @@ -29,7 +29,7 @@ export default async function RootLayout({ children: React.ReactNode; }) { return ( - + - - {children} - + + + {children} + + - + ); } + +export const runtime = "edge"; diff --git a/codegen.ts b/codegen.ts index b027ae3..da6c9e9 100644 --- a/codegen.ts +++ b/codegen.ts @@ -4,8 +4,8 @@ import defaultConfig from "./graphql.config"; const noTypeCheckingPlugin = { add: { content: [ + "// @ts-nocheck", "/* eslint-disable */", - "/* @ts-nocheck */", "/* prettier-ignore */", "/* This file is automatically generated. Please do not modify it manually. */", ], @@ -15,17 +15,41 @@ const config = { ...defaultConfig, ignoreNoDocuments: true, generates: { - "src/api/types.ts": { + "src/api/gql/": { + preset: "client", + plugins: [noTypeCheckingPlugin], + config: { + useTypeImports: true, + skipTypename: true, + avoidOptionals: true, + nonOptionalTypename: false, + // Lamentablemente, code-gen establece "any" como predeterminado, cuando no tiene un + // tipo para un "scalar". Esta opción nos obliga a definir un tipo cada vez que + // queremos usar un escalar sin tipo. + defaultScalarType: "unknown", + scalars: { + Date: "string", + DateTime: "string", + }, + }, + }, + "./src/api/gql/schema.gql": { + plugins: ["schema-ast"], + }, + "src/": { + preset: "near-operation-file", + presetConfig: { + extension: ".generated.tsx", + baseTypesPath: "api/gql/graphql.ts", + }, plugins: [ - "typescript", "typescript-operations", - "typescript-graphql-request", + "typescript-react-apollo", noTypeCheckingPlugin, ], config: { - avoidOptionals: true, - useTypeImports: true, - defaultScalarType: "unknown", + apolloReactHooksImportFrom: + "@apollo/experimental-nextjs-app-support/ssr", }, }, }, diff --git a/graphql.config.ts b/graphql.config.ts index ac67bce..cd93d3b 100644 --- a/graphql.config.ts +++ b/graphql.config.ts @@ -1,8 +1,8 @@ import type { IGraphQLConfig } from "graphql-config"; const config: IGraphQLConfig = { - schema: "https://api.jsconf.dev/graphql", - documents: ["src/**/*.gql"], + schema: "https://api.jsconf.dev/graphql", // TODO: Usar dotenv para que esta variable dependa de las variables de entorno. + documents: ["src/**/*.gql", "!src/api/**/*.gql"], }; export default config; diff --git a/next.config.js b/next.config.js index 28786ab..8522fc6 100644 --- a/next.config.js +++ b/next.config.js @@ -1,7 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { poweredByHeader: false, - typedRoutes: true, }; module.exports = nextConfig; diff --git a/package-lock.json b/package-lock.json index 6987079..4827cde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,10 @@ "version": "0.1.0", "license": "MIT", "dependencies": { + "@apollo/client": "^3.9.0-alpha.4", + "@apollo/experimental-nextjs-app-support": "^0.5.1", "@auth0/nextjs-auth0": "^2.6.3", - "@clerk/nextjs": "^4.21.14", + "@clerk/clerk-react": "^4.28.0", "@heroicons/react": "^2.0.18", "@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-dropdown-menu": "^2.0.5", @@ -29,7 +31,7 @@ "graphql": "^16.8.1", "graphql-request": "^6.1.0", "lucide-react": "^0.265.0", - "next": "13.4.9", + "next": "^14.0.3", "next-themes": "^0.2.1", "postcss": "8.4.25", "react": "18.2.0", @@ -39,10 +41,13 @@ }, "devDependencies": { "@graphql-codegen/cli": "^4.0.1", - "@graphql-codegen/client-preset": "^4.0.1", + "@graphql-codegen/client-preset": "^4.1.0", + "@graphql-codegen/near-operation-file-preset": "^3.0.0", + "@graphql-codegen/schema-ast": "^4.0.0", "@graphql-codegen/typescript": "^4.0.1", "@graphql-codegen/typescript-graphql-request": "^5.0.0", "@graphql-codegen/typescript-operations": "^4.0.1", + "@graphql-codegen/typescript-react-apollo": "^4.1.0", "@graphql-eslint/eslint-plugin": "^3.20.0", "@next/eslint-plugin-next": "^13.4.9", "@typescript-eslint/eslint-plugin": "^5.61.0", @@ -88,6 +93,63 @@ "node": ">=6.0.0" } }, + "node_modules/@apollo/client": { + "version": "3.9.0-alpha.4", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.9.0-alpha.4.tgz", + "integrity": "sha512-jjoxG56bNpzE28c6b1zoj3amr4hD3zBIatNQPFHQAXQ+CKEcgMWADPPyx+DdcMeOThFfg1+rKmOAtuCeSzzg+Q==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.7.3", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.4.3", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.17.5", + "prop-types": "^15.7.2", + "rehackt": "0.0.3", + "response-iterator": "^0.2.6", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, + "node_modules/@apollo/experimental-nextjs-app-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@apollo/experimental-nextjs-app-support/-/experimental-nextjs-app-support-0.5.1.tgz", + "integrity": "sha512-gQiFY/zntVAhPTTFfFFOogp4TKVMpbPsydv3gyMR5E0IK6WgtITTcl/uuWlnfL92+enk5mfrtoQ+0p+t2a9u2A==", + "dependencies": { + "server-only": "^0.0.1", + "superjson": "^1.12.2", + "ts-invariant": "^0.10.3" + }, + "peerDependencies": { + "@apollo/client": ">=3.8.0-rc || ^3.8.0 || >=3.9.0-alpha || >=3.9.0-beta || >=3.9.0-rc", + "next": "^13.4.1 || ^14.0.0", + "react": "^18" + } + }, "node_modules/@ardatan/relay-compiler": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", @@ -1219,41 +1281,13 @@ "node": ">=6.9.0" } }, - "node_modules/@clerk/backend": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-0.27.0.tgz", - "integrity": "sha512-Sj541JrpqAn1A/UwdyDBxFV3stq2A/Pe/8HdPTG3Cct6briPyavfi46O5s1+L3BSvUcKUY+UbM0+8VsoCNFi4w==", - "dependencies": { - "@clerk/types": "^3.49.0", - "@peculiar/webcrypto": "1.4.1", - "@types/node": "16.18.6", - "cookie": "0.5.0", - "deepmerge": "4.2.2", - "node-fetch-native": "1.0.1", - "snakecase-keys": "5.4.4", - "tslib": "2.4.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@clerk/backend/node_modules/@types/node": { - "version": "16.18.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.6.tgz", - "integrity": "sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==" - }, - "node_modules/@clerk/backend/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/@clerk/clerk-react": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-4.23.2.tgz", - "integrity": "sha512-6MJa8ecr22qHhTfdkMMIJGctMBqj01fLJ4vmfZvr22tIkwkPXoeYJd5XcFKuSoO2dXc1eHD/F9i/HdCqGm68gw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-4.28.0.tgz", + "integrity": "sha512-zMFdiqqXkwAks1xmheUrAS6GODDdlpsCHA3VEnNVlSL0XH3bE4jWNr7lr0SJMmcaEsmZE/JQ+uNPJ4qEvEDGjA==", "dependencies": { - "@clerk/shared": "^0.21.0", - "@clerk/types": "^3.49.0", + "@clerk/shared": "1.1.0", + "@clerk/types": "3.58.0", "tslib": "2.4.1" }, "engines": { @@ -1268,84 +1302,28 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, - "node_modules/@clerk/clerk-sdk-node": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-4.12.2.tgz", - "integrity": "sha512-7xYPsLSeGO5XoP0No/9m2dsCMezwtmiYGKOwWzt41ZzJNFlU0rfqYF3VOZEsbtQlc3ZXeU+67ItjoJYrf3kT6A==", - "dependencies": { - "@clerk/backend": "^0.27.0", - "@clerk/types": "^3.49.0", - "@types/cookies": "0.7.7", - "@types/express": "4.17.14", - "@types/node-fetch": "2.6.2", - "camelcase-keys": "6.2.2", - "snakecase-keys": "3.2.1", - "tslib": "2.4.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@clerk/clerk-sdk-node/node_modules/snakecase-keys": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.2.1.tgz", - "integrity": "sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==", - "dependencies": { - "map-obj": "^4.1.0", - "to-snake-case": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@clerk/clerk-sdk-node/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/@clerk/nextjs": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-4.23.2.tgz", - "integrity": "sha512-99bSVu9r1E9MxybO/6mmPAufSKq4KU7SFeMVkylX7UF8sy5t/LE9cLHyc+9jitcCGgZNai9Om4sj1WIgkNOP8w==", - "dependencies": { - "@clerk/backend": "^0.27.0", - "@clerk/clerk-react": "^4.23.2", - "@clerk/clerk-sdk-node": "^4.12.2", - "@clerk/types": "^3.49.0", - "path-to-regexp": "6.2.1", - "tslib": "2.4.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "next": ">=10", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0" - } - }, - "node_modules/@clerk/nextjs/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/@clerk/shared": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-0.21.0.tgz", - "integrity": "sha512-tkV2OAddFMPBHDjcMbtNNrV3NQD+hGKf2hn3TKv1mRJNZ2oR5Bfk8r0bkaqwoqxX8ndkbHLCa9gwR8SWO7GGow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-1.1.0.tgz", + "integrity": "sha512-rxQ6bxAERZsf/dzCU35qt3gRp9+a035Vrre8j8tyT60dbP8PQhXUbeNu+oVqqjpHWeyoWWt6fZGLXbDTXdXx7g==", "dependencies": { "glob-to-regexp": "0.4.1", "js-cookie": "3.0.1", - "swr": "1.3.0" + "swr": "2.2.0" }, "peerDependencies": { "react": ">=16" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } } }, "node_modules/@clerk/types": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/@clerk/types/-/types-3.49.0.tgz", - "integrity": "sha512-vAx5R/iYfsgIaIDMiDr6ZKQnAneAmRrUVYz6KCtPG6/hnEAnRYhwXpEUi89e5G0BFmuUfSxe/N/Anfc1PNteXQ==", + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-3.58.0.tgz", + "integrity": "sha512-fIsvEM3nYQwViOuYxNVcwEl0WkXW6AdYpSghNBKfOge1kriSSHP++T5rRMJBXy6asl2AEydVlUBKx9drAzqKoA==", "dependencies": { "csstype": "3.1.1" }, @@ -1749,6 +1727,194 @@ "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", "dev": true }, + "node_modules/@graphql-codegen/near-operation-file-preset": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/near-operation-file-preset/-/near-operation-file-preset-3.0.0.tgz", + "integrity": "sha512-HRPaa7OsIAHQBFeGiTUVdjFcxzgvAs7uxSqcLEJgDpCr9cffpwnlgWP3gK79KnTiHsRkyb55U1K4YyrL00g1Cw==", + "dev": true, + "dependencies": { + "@graphql-codegen/add": "^3.2.1", + "@graphql-codegen/plugin-helpers": "^3.0.0", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "@graphql-tools/utils": "^10.0.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/add": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-3.2.3.tgz", + "integrity": "sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^3.1.1", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/add/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", + "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^9.0.0", + "change-case-all": "1.0.15", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers/node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/optimize": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", + "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", + "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", + "dev": true, + "dependencies": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/near-operation-file-preset/node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/plugin-helpers": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.1.tgz", @@ -1990,15 +2156,171 @@ "tslib": "~2.5.0" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript-react-apollo": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-react-apollo/-/typescript-react-apollo-4.1.0.tgz", + "integrity": "sha512-G7l4ECoilGnW1zJeqgsFQEVup9ME3w3811ZxHP5yvTra3ZNsbZO4WbYBOPKyS5uc4swsTAxj70a28hNF7kdVcw==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^3.0.0", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.15", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-tag": "^2.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/plugin-helpers": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", + "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^9.0.0", + "change-case-all": "1.0.15", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/optimize": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", + "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", + "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", + "dev": true, + "dependencies": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-react-apollo/node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", - "dev": true - }, "node_modules/@graphql-codegen/typescript/node_modules/tslib": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", @@ -3361,9 +3683,9 @@ } }, "node_modules/@next/env": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.9.tgz", - "integrity": "sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw==" + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz", + "integrity": "sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==" }, "node_modules/@next/eslint-plugin-next": { "version": "13.4.13", @@ -3395,9 +3717,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz", - "integrity": "sha512-TVzGHpZoVBk3iDsTOQA/R6MGmFp0+17SWXMEWd6zG30AfuELmSSMe2SdPqxwXU0gbpWkJL1KgfLzy5ReN0crqQ==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.3.tgz", + "integrity": "sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==", "cpu": [ "arm64" ], @@ -3410,9 +3732,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz", - "integrity": "sha512-aSfF1fhv28N2e7vrDZ6zOQ+IIthocfaxuMWGReB5GDriF0caTqtHttAvzOMgJgXQtQx6XhyaJMozLTSEXeNN+A==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.3.tgz", + "integrity": "sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==", "cpu": [ "x64" ], @@ -3425,9 +3747,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz", - "integrity": "sha512-JhKoX5ECzYoTVyIy/7KykeO4Z2lVKq7HGQqvAH+Ip9UFn1MOJkOnkPRB7v4nmzqAoY+Je05Aj5wNABR1N18DMg==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.3.tgz", + "integrity": "sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==", "cpu": [ "arm64" ], @@ -3440,9 +3762,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz", - "integrity": "sha512-OOn6zZBIVkm/4j5gkPdGn4yqQt+gmXaLaSjRSO434WplV8vo2YaBNbSHaTM9wJpZTHVDYyjzuIYVEzy9/5RVZw==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.3.tgz", + "integrity": "sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==", "cpu": [ "arm64" ], @@ -3455,9 +3777,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz", - "integrity": "sha512-iA+fJXFPpW0SwGmx/pivVU+2t4zQHNOOAr5T378PfxPHY6JtjV6/0s1vlAJUdIHeVpX98CLp9k5VuKgxiRHUpg==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.3.tgz", + "integrity": "sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==", "cpu": [ "x64" ], @@ -3470,9 +3792,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz", - "integrity": "sha512-rlNf2WUtMM+GAQrZ9gMNdSapkVi3koSW3a+dmBVp42lfugWVvnyzca/xJlN48/7AGx8qu62WyO0ya1ikgOxh6A==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.3.tgz", + "integrity": "sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==", "cpu": [ "x64" ], @@ -3485,9 +3807,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz", - "integrity": "sha512-5T9ybSugXP77nw03vlgKZxD99AFTHaX8eT1ayKYYnGO9nmYhJjRPxcjU5FyYI+TdkQgEpIcH7p/guPLPR0EbKA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.3.tgz", + "integrity": "sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==", "cpu": [ "arm64" ], @@ -3500,9 +3822,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz", - "integrity": "sha512-ojZTCt1lP2ucgpoiFgrFj07uq4CZsq4crVXpLGgQfoFq00jPKRPgesuGPaz8lg1yLfvafkU3Jd1i8snKwYR3LA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.3.tgz", + "integrity": "sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==", "cpu": [ "ia32" ], @@ -3515,9 +3837,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz", - "integrity": "sha512-QbT03FXRNdpuL+e9pLnu+XajZdm/TtIXVYY4lA9t+9l0fLZbHXDYEKitAqxrOj37o3Vx5ufxiRAniaIebYDCgw==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.3.tgz", + "integrity": "sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==", "cpu": [ "x64" ], @@ -3805,6 +4127,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", "integrity": "sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==", + "dev": true, "dependencies": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.2", @@ -3815,6 +4138,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -3826,6 +4150,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", + "dev": true, "dependencies": { "@peculiar/asn1-schema": "^2.3.0", "@peculiar/json-schema": "^1.1.12", @@ -4629,9 +4954,9 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dependencies": { "tslib": "^2.4.0" } @@ -4660,15 +4985,6 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "devOptional": true }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, "node_modules/@types/codemirror": { "version": "5.60.8", "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", @@ -4677,57 +4993,11 @@ "@types/tern": "*" } }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" - }, "node_modules/@types/js-yaml": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", @@ -4751,50 +5021,21 @@ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" - }, "node_modules/@types/marked": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.1.tgz", "integrity": "sha512-vSSbKZFbNktrQ15v7o1EaH78EbWV+sPQbPjHG+Cp8CaNcPFUEfjZ0Iml/V0bFDwsTlYe8o6XC5Hfdp91cqPV2g==" }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, "node_modules/@types/node": { "version": "20.4.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz", "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==" }, - "node_modules/@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, "node_modules/@types/react": { "version": "18.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.14.tgz", @@ -4824,25 +5065,6 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", - "dependencies": { - "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" - } - }, "node_modules/@types/tern": { "version": "0.23.4", "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", @@ -5171,6 +5393,39 @@ "tslib": "^2.3.1" } }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -5462,6 +5717,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dev": true, "dependencies": { "pvtsutils": "^1.3.2", "pvutils": "^1.1.3", @@ -5485,11 +5741,6 @@ "node": ">=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, "node_modules/auto-bind": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", @@ -5811,6 +6062,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { "node": ">=6" } @@ -5823,22 +6075,6 @@ "node": ">= 6" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001519", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", @@ -6149,17 +6385,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -6207,6 +6432,20 @@ "node": ">= 0.6" } }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", @@ -6323,14 +6562,6 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/default-browser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", @@ -6401,14 +6632,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -6505,6 +6728,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -7441,19 +7665,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -7833,7 +8044,6 @@ "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dev": true, "dependencies": { "tslib": "^2.1.0" }, @@ -7945,6 +8155,14 @@ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -8533,6 +8751,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8927,6 +9156,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -8972,17 +9202,6 @@ "node": ">=0.10.0" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -9055,25 +9274,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -9151,39 +9351,37 @@ "dev": true }, "node_modules/next": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.9.tgz", - "integrity": "sha512-vtefFm/BWIi/eWOqf1GsmKG3cjKw1k3LjuefKRcL3iiLl3zWzFdPG3as6xtxrGO6gwTzzaO1ktL4oiHt/uvTjA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.3.tgz", + "integrity": "sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==", "dependencies": { - "@next/env": "13.4.9", - "@swc/helpers": "0.5.1", + "@next/env": "14.0.3", + "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", + "postcss": "8.4.31", "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" + "watchpack": "2.4.0" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=16.8.0" + "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.9", - "@next/swc-darwin-x64": "13.4.9", - "@next/swc-linux-arm64-gnu": "13.4.9", - "@next/swc-linux-arm64-musl": "13.4.9", - "@next/swc-linux-x64-gnu": "13.4.9", - "@next/swc-linux-x64-musl": "13.4.9", - "@next/swc-win32-arm64-msvc": "13.4.9", - "@next/swc-win32-ia32-msvc": "13.4.9", - "@next/swc-win32-x64-msvc": "13.4.9" + "@next/swc-darwin-arm64": "14.0.3", + "@next/swc-darwin-x64": "14.0.3", + "@next/swc-linux-arm64-gnu": "14.0.3", + "@next/swc-linux-arm64-musl": "14.0.3", + "@next/swc-linux-x64-gnu": "14.0.3", + "@next/swc-linux-x64-musl": "14.0.3", + "@next/swc-win32-arm64-msvc": "14.0.3", + "@next/swc-win32-ia32-msvc": "14.0.3", + "@next/swc-win32-x64-msvc": "14.0.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -9192,9 +9390,6 @@ "@opentelemetry/api": { "optional": true }, - "fibers": { - "optional": true - }, "sass": { "optional": true } @@ -9211,9 +9406,9 @@ } }, "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -9222,10 +9417,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -9237,6 +9436,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -9267,11 +9467,6 @@ } } }, - "node_modules/node-fetch-native": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.0.1.tgz", - "integrity": "sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==" - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -9523,6 +9718,16 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/optimism": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.17.5.tgz", + "integrity": "sha512-TEcp8ZwK1RczmvMnvktxHSF2tKgMWjJ71xEFGX5ApLh67VsMSTy1ZUlipJw8W+KaqgOmQ+4pqwkeivY89j+4Vw==", + "dependencies": { + "@wry/context": "^0.7.0", + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -9746,11 +9951,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -10060,6 +10260,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.3.tgz", "integrity": "sha512-6sAOMlXyrJ+8tRN5IAaYfuYZRp1C2uJ0SyDynEFxL+VY8kCRib9Lpj/+KPaNFpaQWr/iRik5nrzz6iaNlxgEGA==", + "dev": true, "dependencies": { "tslib": "^2.6.1" } @@ -10068,6 +10269,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -10091,14 +10293,6 @@ } ] }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -10248,6 +10442,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/rehackt": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.0.3.tgz", + "integrity": "sha512-aBRHudKhOWwsTvCbSoinzq+Lej/7R8e8UoPvLZo5HirZIIBLGAgdG7SL9QpdcBoQ7+3QYPi3lRLknAzXBlhZ7g==", + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/relay-runtime": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", @@ -10328,6 +10539,14 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/response-iterator": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -10573,6 +10792,11 @@ "upper-case-first": "^2.0.2" } }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -10685,35 +10909,12 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "node_modules/snakecase-keys": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz", - "integrity": "sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==", - "dependencies": { - "map-obj": "^4.1.0", - "snake-case": "^3.0.4", - "type-fest": "^2.5.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/snakecase-keys/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -10960,6 +11161,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/superjson": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.13.3.tgz", + "integrity": "sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10992,13 +11204,24 @@ } }, "node_modules/swr": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", - "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.0.tgz", + "integrity": "sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==", + "dependencies": { + "use-sync-external-store": "^1.2.0" + }, "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/synckit": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", @@ -11146,11 +11369,6 @@ "node": ">=4" } }, - "node_modules/to-no-case": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", - "integrity": "sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11162,22 +11380,6 @@ "node": ">=8.0" } }, - "node_modules/to-snake-case": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-snake-case/-/to-snake-case-1.0.0.tgz", - "integrity": "sha512-joRpzBAk1Bhi2eGEYBjukEWHOe/IvclOkiJl3DtA91jV6NwQ3MwXA4FHYeqk8BNp/D8bmi9tcNbRu/SozP0jbQ==", - "dependencies": { - "to-space-case": "^1.0.0" - } - }, - "node_modules/to-space-case": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", - "integrity": "sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==", - "dependencies": { - "to-no-case": "^1.0.0" - } - }, "node_modules/toggle-selection": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", @@ -11201,6 +11403,17 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", @@ -11597,6 +11810,14 @@ } } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -11662,6 +11883,7 @@ "version": "1.7.7", "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.7.tgz", "integrity": "sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==", + "dev": true, "dependencies": { "@peculiar/asn1-schema": "^2.3.6", "@peculiar/json-schema": "^1.1.12", @@ -11854,12 +12076,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "dependencies": { + "zen-observable": "0.8.15" } } } diff --git a/package.json b/package.json index c794c97..dba2ff3 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,10 @@ "prettier": "prettier ./src --write" }, "dependencies": { + "@apollo/client": "^3.9.0-alpha.4", + "@apollo/experimental-nextjs-app-support": "^0.5.1", "@auth0/nextjs-auth0": "^2.6.3", - "@clerk/nextjs": "^4.21.14", + "@clerk/clerk-react": "^4.28.0", "@heroicons/react": "^2.0.18", "@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-dropdown-menu": "^2.0.5", @@ -33,7 +35,7 @@ "graphql": "^16.8.1", "graphql-request": "^6.1.0", "lucide-react": "^0.265.0", - "next": "13.4.9", + "next": "^14.0.3", "next-themes": "^0.2.1", "postcss": "8.4.25", "react": "18.2.0", @@ -43,10 +45,13 @@ }, "devDependencies": { "@graphql-codegen/cli": "^4.0.1", - "@graphql-codegen/client-preset": "^4.0.1", + "@graphql-codegen/client-preset": "^4.1.0", + "@graphql-codegen/near-operation-file-preset": "^3.0.0", + "@graphql-codegen/schema-ast": "^4.0.0", "@graphql-codegen/typescript": "^4.0.1", "@graphql-codegen/typescript-graphql-request": "^5.0.0", "@graphql-codegen/typescript-operations": "^4.0.1", + "@graphql-codegen/typescript-react-apollo": "^4.1.0", "@graphql-eslint/eslint-plugin": "^3.20.0", "@next/eslint-plugin-next": "^13.4.9", "@typescript-eslint/eslint-plugin": "^5.61.0", diff --git a/src/app/favicon.ico b/public/favicon.ico similarity index 100% rename from src/app/favicon.ico rename to public/favicon.ico diff --git a/src/api/ApolloClient.tsx b/src/api/ApolloClient.tsx new file mode 100644 index 0000000..1c6653a --- /dev/null +++ b/src/api/ApolloClient.tsx @@ -0,0 +1,17 @@ +import { ApolloClient, HttpLink, InMemoryCache } from "@apollo/client"; +import { registerApolloClient } from "@apollo/experimental-nextjs-app-support/rsc"; + +const { getClient } = registerApolloClient(() => { + return new ApolloClient({ + cache: new InMemoryCache(), + link: new HttpLink({ + // this needs to be an absolute url, as relative urls cannot be used in SSR + uri: process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT, + // you can disable result caching here if you want to + // (this does not work if you are rendering your page with `export const dynamic = "force-static"`) + // fetchOptions: { cache: "no-store" }, + }), + }); +}); + +export const getApolloClient = getClient; diff --git a/src/api/ApolloWrapper.tsx b/src/api/ApolloWrapper.tsx new file mode 100644 index 0000000..7685364 --- /dev/null +++ b/src/api/ApolloWrapper.tsx @@ -0,0 +1,47 @@ +"use client"; +import { ApolloLink, HttpLink } from "@apollo/client"; +import { + ApolloNextAppProvider, + NextSSRApolloClient, + NextSSRInMemoryCache, + SSRMultipartLink, +} from "@apollo/experimental-nextjs-app-support/ssr"; + +function makeClient() { + const httpLink = new HttpLink({ + // this needs to be an absolute url, as relative urls cannot be used in SSR + uri: process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT, + // you can disable result caching here if you want to + // (this does not work if you are rendering your page with `export const dynamic = "force-static"`) + fetchOptions: { cache: "no-store" }, + // you can override the default `fetchOptions` on a per query basis + // via the `context` property on the options passed as a second argument + // to an Apollo Client data fetching hook, e.g.: + // const { data } = useSuspenseQuery(MY_QUERY, { context: { fetchOptions: { cache: "force-cache" }}}); + }); + + return new NextSSRApolloClient({ + // use the `NextSSRInMemoryCache`, not the normal `InMemoryCache` + cache: new NextSSRInMemoryCache(), + link: + typeof window === "undefined" + ? ApolloLink.from([ + // in a SSR environment, if you use multipart features like + // @defer, you need to decide how to handle these. + // This strips all interfaces with a `@defer` directive from your queries. + new SSRMultipartLink({ + stripDefer: true, + }), + httpLink, + ]) + : httpLink, + }); +} + +export function ApolloWrapper({ children }: React.PropsWithChildren) { + return ( + + {children} + + ); +} diff --git a/src/api/gql/fragment-masking.ts b/src/api/gql/fragment-masking.ts new file mode 100644 index 0000000..c000279 --- /dev/null +++ b/src/api/gql/fragment-masking.ts @@ -0,0 +1,66 @@ +import type { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from '@graphql-typed-document-node/core'; +import type { FragmentDefinitionNode } from 'graphql'; +import type { Incremental } from './graphql'; + + +export type FragmentType> = TDocumentType extends DocumentTypeDecoration< + infer TType, + any +> + ? [TType] extends [{ ' $fragmentName'?: infer TKey }] + ? TKey extends string + ? { ' $fragmentRefs'?: { [key in TKey]: TType } } + : never + : never + : never; + +// return non-nullable if `fragmentType` is non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> +): TType; +// return nullable if `fragmentType` is nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | null | undefined +): TType | null | undefined; +// return array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>> +): ReadonlyArray; +// return array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>> | null | undefined +): ReadonlyArray | null | undefined; +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | ReadonlyArray>> | null | undefined +): TType | ReadonlyArray | null | undefined { + return fragmentType as any; +} + + +export function makeFragmentData< + F extends DocumentTypeDecoration, + FT extends ResultOf +>(data: FT, _fragment: F): FragmentType { + return data as FragmentType; +} +export function isFragmentReady( + queryNode: DocumentTypeDecoration, + fragmentNode: TypedDocumentNode, + data: FragmentType, any>> | null | undefined +): data is FragmentType { + const deferredFields = (queryNode as { __meta__?: { deferredFields: Record } }).__meta__ + ?.deferredFields; + + if (!deferredFields) return true; + + const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | undefined; + const fragName = fragDef?.name?.value; + + const fields = (fragName && deferredFields[fragName]) || []; + return fields.length > 0 && fields.every(field => data && field in data); +} diff --git a/src/api/gql/gql.ts b/src/api/gql/gql.ts new file mode 100644 index 0000000..82ac475 --- /dev/null +++ b/src/api/gql/gql.ts @@ -0,0 +1,42 @@ +/* eslint-disable */ +import * as types from './graphql'; +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + */ +const documents = { + "query FetchExampleEvents {\n events {\n id\n description\n community {\n id\n name\n }\n users {\n id\n }\n tags {\n id\n name\n description\n }\n }\n}": types.FetchExampleEventsDocument, +}; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +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 FetchExampleEvents {\n events {\n id\n description\n community {\n id\n name\n }\n users {\n id\n }\n tags {\n id\n name\n description\n }\n }\n}"): (typeof documents)["query FetchExampleEvents {\n events {\n id\n description\n community {\n id\n name\n }\n users {\n id\n }\n tags {\n id\n name\n description\n }\n }\n}"]; + +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never; \ No newline at end of file diff --git a/src/api/types.ts b/src/api/gql/graphql.ts similarity index 81% rename from src/api/types.ts rename to src/api/gql/graphql.ts index 54e5549..df83455 100644 --- a/src/api/types.ts +++ b/src/api/gql/graphql.ts @@ -1,10 +1,8 @@ /* eslint-disable */ -/* @ts-nocheck */ +// @ts-nocheck /* prettier-ignore */ /* This file is automatically generated. Please do not modify it manually. */ -import type { GraphQLClient } from 'graphql-request'; -import type { GraphQLClientRequestHeaders } from 'graphql-request/build/cjs/types'; -import gql from 'graphql-tag'; +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -19,13 +17,14 @@ export type Scalars = { Boolean: { input: boolean; output: boolean; } Int: { input: number; output: number; } Float: { input: number; output: number; } - Date: { input: unknown; output: unknown; } - DateTime: { input: unknown; output: unknown; } + /** A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + Date: { input: string; output: string; } + /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + DateTime: { input: string; output: string; } }; /** Representation of a workEmail */ export type AllowedCurrency = { - __typename?: 'AllowedCurrency'; currency: Scalars['String']['output']; id: Scalars['String']['output']; }; @@ -37,7 +36,6 @@ export enum CommnunityStatus { /** Representation of a Community */ export type Community = { - __typename?: 'Community'; description: Maybe; events: Array; id: Scalars['String']['output']; @@ -46,15 +44,8 @@ export type Community = { users: Array; }; -export type CommunityCreateInput = { - description: Scalars['String']['input']; - name: Scalars['String']['input']; - slug: Scalars['String']['input']; -}; - /** Representation of a workEmail */ export type Company = { - __typename?: 'Company'; description: Maybe; domain: Scalars['String']['output']; hasBeenUpdated: Scalars['Boolean']['output']; @@ -73,6 +64,12 @@ export enum CompanyStatus { Inactive = 'inactive' } +export type CreateCommunityInput = { + description: Scalars['String']['input']; + name: Scalars['String']['input']; + slug: Scalars['String']['input']; +}; + export type CreateCompanyInput = { description: InputMaybe; /** The email domain of the company (What we'll use to match the company to the user on account-creation) */ @@ -97,9 +94,14 @@ export type CreateSalaryInput = { yearsOfExperience: Scalars['Int']['input']; }; +export type EnqueueGoogleAlbumImportInput = { + albumId: Scalars['String']['input']; + sanityEventInstanceId: Scalars['String']['input']; + token: Scalars['String']['input']; +}; + /** Representation of an Event (Events and Users, is what tickets are linked to) */ export type Event = { - __typename?: 'Event'; address: Maybe; community: Maybe; description: Maybe; @@ -183,7 +185,6 @@ export enum Gender { } export type Mutation = { - __typename?: 'Mutation'; /** Approve a ticket */ approvalUserTicket: UserTicket; /** Cancel a ticket */ @@ -196,8 +197,12 @@ export type Mutation = { createEvent: Event; /** Create a salary */ createSalary: Salary; + /** Edit an community */ + editCommunity: Community; /** Edit a ticket */ editTicket: Ticket; + /** Enqueue images to import */ + enqueueGoogleAlbumImport: Scalars['Boolean']['output']; /** Redeem a ticket */ redeemUserTicket: UserTicket; /** Kickoff the email validation flow. This flow will links an email to a user, create a company if it does not exist, and allows filling data for that email's position */ @@ -226,7 +231,7 @@ export type MutationCancelUserTicketArgs = { export type MutationCreateCommunityArgs = { - input: CommunityCreateInput; + input: CreateCommunityInput; }; @@ -245,11 +250,21 @@ export type MutationCreateSalaryArgs = { }; +export type MutationEditCommunityArgs = { + input: UpdateCommunityInput; +}; + + export type MutationEditTicketArgs = { input: TicketEditInput; }; +export type MutationEnqueueGoogleAlbumImportArgs = { + input: EnqueueGoogleAlbumImportInput; +}; + + export type MutationRedeemUserTicketArgs = { userTicketId: Scalars['String']['input']; }; @@ -293,7 +308,6 @@ export type MyTicketsSearchInput = { }; export type Query = { - __typename?: 'Query'; /** Get a list of communities. Filter by name, id, or status */ communities: Array; /** Get a community by id */ @@ -306,6 +320,8 @@ export type Query = { event: Maybe; /** Get a list of events. Filter by name, id, status or date */ events: Array; + /** Get the current user */ + me: User; /** Get a list of tickets for the current user */ myTickets: Array; status: Scalars['String']['output']; @@ -371,7 +387,6 @@ export type QueryWorkEmailArgs = { /** Representation of a workEmail */ export type Salary = { - __typename?: 'Salary'; amount: Scalars['Int']['output']; company: Company; countryCode: Scalars['String']['output']; @@ -385,6 +400,16 @@ export type Salary = { yearsOfExperience: Scalars['Int']['output']; }; +/** Representation of a Sanity Asset */ +export type SanityAssetRef = { + assetId: Scalars['String']['output']; + id: Scalars['String']['output']; + originalFilename: Scalars['String']['output']; + path: Scalars['String']['output']; + size: Scalars['Int']['output']; + url: Scalars['String']['output']; +}; + export type SearchCompaniesInput = { companyName: InputMaybe; description: InputMaybe; @@ -394,7 +419,6 @@ export type SearchCompaniesInput = { /** Representation of a tag. Tags can be associated to many things. An event, a community, etc. */ export type Tag = { - __typename?: 'Tag'; description: Maybe; id: Scalars['String']['output']; name: Maybe; @@ -409,7 +433,6 @@ export type TagSearchInput = { /** Representation of a ticket */ export type Ticket = { - __typename?: 'Ticket'; currencyId: Maybe; description: Maybe; endDateTime: Maybe; @@ -476,6 +499,14 @@ export enum TypeOfEmployment { PartTime = 'partTime' } +export type UpdateCommunityInput = { + communityId: Scalars['String']['input']; + description: InputMaybe; + name: InputMaybe; + slug: InputMaybe; + status: InputMaybe; +}; + export type UpdateCompanyInput = { companyId: Scalars['String']['input']; description: InputMaybe; @@ -502,10 +533,10 @@ export type UpdateSalaryInput = { /** Representation of a user */ export type User = { - __typename?: 'User'; bio: Maybe; communities: Array; id: Scalars['String']['output']; + isSuperAdmin: Maybe; lastName: Maybe; name: Maybe; username: Scalars['String']['output']; @@ -513,7 +544,6 @@ export type User = { /** Representation of a User ticket */ export type UserTicket = { - __typename?: 'UserTicket'; approvalStatus: TicketApprovalStatus; id: Scalars['ID']['output']; paymentStatus: TicketPaymentStatus; @@ -523,7 +553,6 @@ export type UserTicket = { /** Representation of a workEmail */ export type WorkEmail = { - __typename?: 'WorkEmail'; id: Scalars['String']['output']; isValidated: Scalars['Boolean']['output']; }; @@ -536,7 +565,6 @@ export enum WorkMetodology { /** Representation of a workEmail */ export type WorkRole = { - __typename?: 'WorkRole'; description: Scalars['String']['output']; id: Scalars['String']['output']; name: Scalars['String']['output']; @@ -557,16 +585,10 @@ export type UserEditInput = { username: InputMaybe; }; +export type FetchExampleEventsQueryVariables = Exact<{ [key: string]: never; }>; -export type SdkFunctionWrapper = (action: (requestHeaders?:Record) => Promise, operationName: string, operationType?: string) => Promise; +export type FetchExampleEventsQuery = { events: Array<{ id: string, description: string | null, community: { id: string, name: string | null } | null, users: Array<{ id: string }>, tags: Array<{ id: string, name: string | null, description: string | null }> }> }; -const defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType) => action(); - -export function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) { - return { - - }; -} -export type Sdk = ReturnType; +export const FetchExampleEventsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FetchExampleEvents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"events"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"community"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"tags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/src/api/gql/index.ts b/src/api/gql/index.ts new file mode 100644 index 0000000..f515991 --- /dev/null +++ b/src/api/gql/index.ts @@ -0,0 +1,2 @@ +export * from "./fragment-masking"; +export * from "./gql"; \ No newline at end of file diff --git a/src/api/gql/schema.gql b/src/api/gql/schema.gql new file mode 100644 index 0000000..4434f2e --- /dev/null +++ b/src/api/gql/schema.gql @@ -0,0 +1,468 @@ +"""Representation of a workEmail""" +type AllowedCurrency { + currency: String! + id: String! +} + +enum CommnunityStatus { + active + inactive +} + +"""Representation of a Community""" +type Community { + description: String + events: [Event!]! + id: String! + name: String + status: CommnunityStatus! + users: [User!]! +} + +"""Representation of a workEmail""" +type Company { + description: String + domain: String! + hasBeenUpdated: Boolean! + id: String! + logo: String + name: String + salarySubmissions: Int! + + """Not available to users""" + status: CompanyStatus + website: String +} + +enum CompanyStatus { + active + draft + inactive +} + +input CreateCommunityInput { + description: String! + name: String! + slug: String! +} + +input CreateCompanyInput { + description: String + + """ + The email domain of the company (What we'll use to match the company to the user on account-creation) + """ + domain: String! + logo: String + name: String + status: CompanyStatus + website: String +} + +input CreateSalaryInput { + amount: Int! + companyId: String! + confirmationToken: String! + countryCode: String! + currencyId: String! + gender: Gender! + genderOtherText: String! + typeOfEmployment: TypeOfEmployment! + workMetodology: WorkMetodology! + workRoleId: String! + yearsOfExperience: Int! +} + +""" +A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. +""" +scalar Date + +""" +A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. +""" +scalar DateTime + +input EnqueueGoogleAlbumImportInput { + albumId: String! + sanityEventInstanceId: String! + token: String! +} + +""" +Representation of an Event (Events and Users, is what tickets are linked to) +""" +type Event { + address: String + community: Community + description: String + endDateTime: DateTime + id: String! + latitude: String + longitude: String + maxAttendees: Int + meetingURL: String + name: String! + startDateTime: DateTime! + status: EventStatus! + tags: [Tag!]! + tickets(input: EventsTicketsSearchInput): [UserTicket!]! + users: [User!]! + visibility: EventVisibility! +} + +input EventCreateInput { + address: String + communityId: String! + description: String! + endDateTime: DateTime + latitude: String + longitude: String + maxAttendees: Int! + meetingURL: String + name: String! + startDateTime: DateTime! + status: EventStatus + timeZone: String + visibility: EventVisibility +} + +enum EventStatus { + active + inactive +} + +enum EventVisibility { + private + public + unlisted +} + +input EventsSearchInput { + id: String + name: String + startDateTimeFrom: DateTime + startDateTimeTo: DateTime + status: EventStatus + visibility: EventVisibility +} + +input EventsTicketsSearchInput { + approvalStatus: TicketApprovalStatus + id: String + paymentStatus: TicketPaymentStatus + redemptionStatus: TicketRedemptionStatus + status: TicketStatus +} + +enum Gender { + agender + female + genderfluid + genderqueer + male + non_binary + other + prefer_not_to_say + transgender_female + transgender_male + two_spirit +} + +type Mutation { + """Approve a ticket""" + approvalUserTicket(userTicketId: String!): UserTicket! + + """Cancel a ticket""" + cancelUserTicket(userTicketId: String!): UserTicket! + + """Create an community""" + createCommunity(input: CreateCommunityInput!): Community! + + """Create a company""" + createCompany(input: CreateCompanyInput!): Company! + + """Create an event""" + createEvent(input: EventCreateInput!): Event! + + """Create a salary""" + createSalary(input: CreateSalaryInput!): Salary! + + """Edit an community""" + editCommunity(input: UpdateCommunityInput!): Community! + + """Edit a ticket""" + editTicket(input: TicketEditInput!): Ticket! + + """Enqueue images to import""" + enqueueGoogleAlbumImport(input: EnqueueGoogleAlbumImportInput!): Boolean! + + """Redeem a ticket""" + redeemUserTicket(userTicketId: String!): UserTicket! + + """ + Kickoff the email validation flow. This flow will links an email to a user, create a company if it does not exist, and allows filling data for that email's position + """ + startWorkEmailValidation(email: String!): WorkEmail! + + """Update a company""" + updateCompany(input: UpdateCompanyInput!): Company! + + """Create a salary""" + updateSalary(input: UpdateSalaryInput!): Salary! + + """Update a user""" + updateUser(input: userEditInput!): User! + + """Update a user role""" + updateUserRoleInCommunity(input: updateUserRoleInCommunityInput!): User! + + """Validates work email for a user""" + validateWorkEmail(confirmationToken: String!): WorkEmail! +} + +input MyTicketsSearchInput { + approvalStatus: TicketApprovalStatus + eventId: String + paymentStatus: TicketPaymentStatus + redemptionStatus: TicketRedemptionStatus + status: TicketStatus +} + +type Query { + """Get a list of communities. Filter by name, id, or status""" + communities(id: String, name: String, status: CommnunityStatus): [Community!]! + + """Get a community by id""" + community(id: String!): Community + + """Get all available companies""" + companies(input: SearchCompaniesInput): [Company!]! + + """Get all available companies""" + company(companyId: String!): Company! + + """Get an event by id""" + event(id: String!): Event + + """Get a list of events. Filter by name, id, status or date""" + events(input: EventsSearchInput): [Event!]! + + """Get the current user""" + me: User! + + """Get a list of tickets for the current user""" + myTickets(input: MyTicketsSearchInput): [UserTicket!]! + status(name: String): String! + + """Get a list of tags""" + tags(input: TagSearchInput): [Tag!]! + + """Get a list of users""" + users: [User!]! + + """Get a workEmail and check if its validated for this user""" + workEmail(email: String!): WorkEmail! +} + +"""Representation of a workEmail""" +type Salary { + amount: Int! + company: Company! + countryCode: String! + currency: AllowedCurrency! + gender: Gender + genderOtherText: String + id: String! + typeOfEmployment: TypeOfEmployment! + workMetodology: WorkMetodology! + workRole: WorkRole! + yearsOfExperience: Int! +} + +"""Representation of a Sanity Asset""" +type SanityAssetRef { + assetId: String! + id: String! + originalFilename: String! + path: String! + size: Int! + url: String! +} + +input SearchCompaniesInput { + companyName: String + description: String + domain: String + website: String +} + +""" +Representation of a tag. Tags can be associated to many things. An event, a community, etc. +""" +type Tag { + description: String + id: String! + name: String + slug: String! +} + +input TagSearchInput { + description: String + id: String + name: String +} + +"""Representation of a ticket""" +type Ticket { + currencyId: String + description: String + endDateTime: DateTime + eventId: String! + id: ID! + name: String! + price: Int + quantity: Int + requiresApproval: Boolean + startDateTime: DateTime! + status: TicketTemplateStatus! + visibility: TicketTemplateVisibility! +} + +enum TicketApprovalStatus { + approved + pending +} + +input TicketEditInput { + currencyId: String + description: String + endDateTime: DateTime + eventId: String + name: String + price: Int + quantity: Int + requiresApproval: Boolean + startDateTime: DateTime + status: TicketTemplateStatus + ticketId: String! + visibility: TicketTemplateVisibility +} + +enum TicketPaymentStatus { + paid + unpaid +} + +enum TicketRedemptionStatus { + pending + redeemed +} + +enum TicketStatus { + active + cancelled +} + +enum TicketTemplateStatus { + active + inactive +} + +enum TicketTemplateVisibility { + private + public + unlisted +} + +enum TypeOfEmployment { + freelance + fullTime + partTime +} + +input UpdateCommunityInput { + communityId: String! + description: String + name: String + slug: String + status: CommnunityStatus +} + +input UpdateCompanyInput { + companyId: String! + description: String + domain: String + logo: String + name: String + website: String +} + +input UpdateSalaryInput { + amount: Int! + companyId: String! + confirmationToken: String! + countryCode: String! + currencyId: String! + gender: Gender! + genderOtherText: String! + salaryId: String! + typeOfEmployment: TypeOfEmployment! + workMetodology: WorkMetodology! + workRoleId: String! + yearsOfExperience: Int! +} + +"""Representation of a user""" +type User { + bio: String + communities: [Community!]! + id: String! + isSuperAdmin: Boolean + lastName: String + name: String + username: String! +} + +"""Representation of a User ticket""" +type UserTicket { + approvalStatus: TicketApprovalStatus! + id: ID! + paymentStatus: TicketPaymentStatus! + redemptionStatus: TicketRedemptionStatus! + status: TicketStatus! +} + +"""Representation of a workEmail""" +type WorkEmail { + id: String! + isValidated: Boolean! +} + +enum WorkMetodology { + hybrid + office + remote +} + +"""Representation of a workEmail""" +type WorkRole { + description: String! + id: String! + name: String! + seniority: String! +} + +input updateUserRoleInCommunityInput { + communityId: String! + role: String! + userId: String! +} + +input userEditInput { + bio: String + id: String! + lastName: String + name: String + username: String +} \ No newline at end of file diff --git a/src/api/index.ts b/src/api/index.ts deleted file mode 100644 index e427bd4..0000000 --- a/src/api/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -// import { getSdk } from "@/api/types"; -// import { GraphQLClient } from "graphql-request"; - -// const endpoint = `https://${ -// process.env.NEXT_PUBLIC_SANITY_PROJECT_ID ?? "" -// }.api.sanity.io/v1/graphql/${ -// process.env.NEXT_PUBLIC_SANITY_DATASET ?? "" -// }/default`; -// export const API = getSdk(new GraphQLClient(endpoint)); diff --git a/src/app/(transition)/(root)/page.tsx b/src/app/(transition)/(root)/page.tsx deleted file mode 100644 index 11f1bfe..0000000 --- a/src/app/(transition)/(root)/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export default function Home() { - return ( - - - - TICKETS - - - - - ); -} - -export const runtime = "edge"; diff --git a/src/app/(transition)/sign-in/[[...sign-in]]/page.tsx b/src/app/(transition)/sign-in/[[...sign-in]]/page.tsx deleted file mode 100644 index 7e84d16..0000000 --- a/src/app/(transition)/sign-in/[[...sign-in]]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { SignIn } from "@clerk/nextjs"; - -export default function Page() { - return ( - - - - ); -} - -export const runtime = "edge"; diff --git a/src/app/(transition)/sign-up/[[...sign-up]]/page.tsx b/src/app/(transition)/sign-up/[[...sign-up]]/page.tsx deleted file mode 100644 index 1cd2b2b..0000000 --- a/src/app/(transition)/sign-up/[[...sign-up]]/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { SignUp } from "@clerk/nextjs"; - -export default function Page() { - return ( - - - - ); -} diff --git a/src/components/Auth/clerk.tsx b/src/components/Auth/clerk.tsx new file mode 100644 index 0000000..8dcdd20 --- /dev/null +++ b/src/components/Auth/clerk.tsx @@ -0,0 +1,27 @@ +"use client"; +import { ClerkProvider } from "@clerk/clerk-react"; +import React from "react"; + +type Props = { + children: React.ReactNode; +}; + +export const Clerk = ({ children }: Props) => { + return ( + { + const splitted = url.host.split("."); + return [splitted.at(-2), splitted.at(-1)].join("."); + }} + publishableKey={process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY!} + > + {children} + + ); +}; diff --git a/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.generated.tsx b/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.generated.tsx new file mode 100644 index 0000000..85ac17e --- /dev/null +++ b/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.generated.tsx @@ -0,0 +1,68 @@ +// @ts-nocheck +/* eslint-disable */ +/* prettier-ignore */ +/* This file is automatically generated. Please do not modify it manually. */ +import * as Types from '../../../../api/gql/graphql'; + +import { gql } from '@apollo/client'; +import * as Apollo from '@apollo/client'; +import * as ApolloReactHooks from '@apollo/experimental-nextjs-app-support/ssr'; +const defaultOptions = {} as const; +export type FetchExampleEventsQueryVariables = Types.Exact<{ [key: string]: never; }>; + + +export type FetchExampleEventsQuery = { __typename?: 'Query', events: Array<{ __typename?: 'Event', id: string, description?: string | null, community?: { __typename?: 'Community', id: string, name?: string | null } | null, users: Array<{ __typename?: 'User', id: string }>, tags: Array<{ __typename?: 'Tag', id: string, name?: string | null, description?: string | null }> }> }; + + +export const FetchExampleEventsDocument = gql` + query FetchExampleEvents { + events { + id + description + community { + id + name + } + users { + id + } + tags { + id + name + description + } + } +} + `; + +/** + * __useFetchExampleEventsQuery__ + * + * To run a query within a React component, call `useFetchExampleEventsQuery` and pass it any options that fit your needs. + * When your component renders, `useFetchExampleEventsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useFetchExampleEventsQuery({ + * variables: { + * }, + * }); + */ +export function useFetchExampleEventsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return ApolloReactHooks.useQuery(FetchExampleEventsDocument, options); + } +export function useFetchExampleEventsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return ApolloReactHooks.useLazyQuery(FetchExampleEventsDocument, options); + } +export function useFetchExampleEventsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return ApolloReactHooks.useSuspenseQuery(FetchExampleEventsDocument, options); + } +export type FetchExampleEventsQueryHookResult = ReturnType; +export type FetchExampleEventsLazyQueryHookResult = ReturnType; +export type FetchExampleEventsSuspenseQueryHookResult = ReturnType; +export type FetchExampleEventsQueryResult = Apollo.QueryResult; \ No newline at end of file diff --git a/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.gql b/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.gql new file mode 100644 index 0000000..4fbd3f0 --- /dev/null +++ b/src/components/features/LandingPageEvents/graphql/FetchExampleEvents.gql @@ -0,0 +1,18 @@ +query FetchExampleEvents { + events { + id + description + community { + id + name + } + users { + id + } + tags { + id + name + description + } + } +} diff --git a/src/components/features/LandingPageEvents/index.tsx b/src/components/features/LandingPageEvents/index.tsx new file mode 100644 index 0000000..d2142fd --- /dev/null +++ b/src/components/features/LandingPageEvents/index.tsx @@ -0,0 +1,14 @@ +"use client"; +import React from "react"; +import { useFetchExampleEventsQuery } from "./graphql/FetchExampleEvents.generated"; + +export const LandingPageEvents = () => { + const events = useFetchExampleEventsQuery(); + return ( + <> + {events?.data?.events.map((event) => ( + {event.id} + ))} + > + ); +}; diff --git a/src/components/nav.tsx b/src/components/nav.tsx index 153264e..427325a 100644 --- a/src/components/nav.tsx +++ b/src/components/nav.tsx @@ -5,10 +5,12 @@ import { MainNav } from "./Navbar/MainNav"; import { MobileNav } from "./Navbar/MobileNav"; import { ThemeSwitcher } from "./Navbar/ThemeSwitcher"; import { LogOut, Settings, User, PackageOpen } from "lucide-react"; -import { useClerk } from "@clerk/nextjs"; +import { useClerk, useUser } from "@clerk/clerk-react"; import { useMemo } from "react"; -export const Nav = ({ isLogged }: { isLogged: boolean }) => { +export const Nav = () => { + const { isLoaded, isSignedIn } = useUser(); + const isLogged = useMemo(() => isLoaded && isSignedIn, []); const { signOut } = useClerk(); const guestItems = useMemo( diff --git a/src/middleware.ts b/src/middleware.ts deleted file mode 100644 index 8e5a7c9..0000000 --- a/src/middleware.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { authMiddleware } from "@clerk/nextjs"; - -export default authMiddleware({ - publicRoutes: ["/", "/(.*)"], -}); - -export const config = { - matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)"], -}; diff --git a/tsconfig.json b/tsconfig.json index 2e0d78a..1f5a328 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,7 +29,8 @@ "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", - "./*.js" + "./*.js", + "app" ], "exclude": ["node_modules"] }