From e9f3189ed66a8996eed43c96532ec1d4ca53c64d Mon Sep 17 00:00:00 2001 From: Benjie Date: Mon, 15 Jan 2024 15:50:30 +0000 Subject: [PATCH 1/9] Define the abbreviation before using it --- docs/intro/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro/introduction.md b/docs/intro/introduction.md index 778ad19a63..05dba92c5f 100644 --- a/docs/intro/introduction.md +++ b/docs/intro/introduction.md @@ -6,7 +6,7 @@ slug: / ## Traditional API Gateway -Traditional API Gateways form the backbone of modern web based application architectures, offering a comprehensive suite of features essential for efficient API management. These gateways handle tasks such as routing, authentication, circuit breaking, caching, logging, monitoring, protocol translation and the list doesn't end! +Traditional API Gateways ("TAGs") form the backbone of modern web based application architectures, offering a comprehensive suite of features essential for efficient API management. These gateways handle tasks such as routing, authentication, circuit breaking, caching, logging, monitoring, protocol translation and the list doesn't end! However, API Gateways don't provide developers access to the right abstraction when it comes to configuring these capabilities. Typically a TAG would provide you with primitives that are based on the underlying protocol ie. on which the API is served. For eg: You can perform authentication, routing, rate-limiting etc. on the bases of the request headers, url or method. All of which are components of the HTTP protocol. This happens because they treat the contents of request and response bodies as mere byte sequences, without delving into their substance. From 40ddbd13763503db6ccbcc41e91c7c93e82b5aca Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Mon, 15 Jan 2024 16:22:33 +0000 Subject: [PATCH 2/9] Very light editorial --- docs/intro/introduction.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/intro/introduction.md b/docs/intro/introduction.md index 05dba92c5f..6cd132c8b4 100644 --- a/docs/intro/introduction.md +++ b/docs/intro/introduction.md @@ -8,14 +8,14 @@ slug: / Traditional API Gateways ("TAGs") form the backbone of modern web based application architectures, offering a comprehensive suite of features essential for efficient API management. These gateways handle tasks such as routing, authentication, circuit breaking, caching, logging, monitoring, protocol translation and the list doesn't end! -However, API Gateways don't provide developers access to the right abstraction when it comes to configuring these capabilities. Typically a TAG would provide you with primitives that are based on the underlying protocol ie. on which the API is served. For eg: You can perform authentication, routing, rate-limiting etc. on the bases of the request headers, url or method. All of which are components of the HTTP protocol. This happens because they treat the contents of request and response bodies as mere byte sequences, without delving into their substance. +However, API Gateways don't provide developers access to the right abstraction when it comes to configuring these capabilities. Typically a TAG would provide you with primitives that are based on the underlying protocol (i.e. the protocol on which the API is served). For example: you can perform authentication, routing, rate-limiting etc. on the basis of the request headers, URL or method. All of which are components of the HTTP protocol. This happens because they treat the contents of request and response bodies as mere byte sequences, without delving into their substance. Over the years, we have gotten used to consuming and managing APIs this way. Writing our own custom abstractions and sticking it around an existing over the shelf API Gateway. Our personal experience has been that nearly all companies after a certain scale require an abstraction that's specific to their business entities and feel restricted by what the API Gateway can provide. ## Tailcall API Gateway Based on our learnings of writing APIs at massive scale, we believe that the gateway should work around an enterprise's business entities and not the other way round. That's exactly what Tailcall helps you achieve. -Tailcall provides first-class primitives designed to interact with your business entities directly without burdening the developer with the underlying protocol. This approach grants tremendous power and flexibility, transcending protocol constraints and focusing on the nature of the API's data. Let's take a the `User` entity as an example: +Tailcall provides first-class primitives designed to interact with your business entities directly without burdening the developer with the underlying protocol. This approach grants tremendous power and flexibility, transcending protocol constraints and focusing on the nature of the API's data. Let's take the `User` entity as an example: ```graphql type User { @@ -31,7 +31,7 @@ type Account { } ``` -`User` is a business entity that can be resolved from multiple APIs. A `/users` API could resolve the `id`, `name` & `email` and a `/accounts/:userId` could resolve the user's account `balance` and `lastUpdated`. With tailcall's API Gateway you will be able to specify just the account details as private and requiring authentication. +`User` is a business entity that can be resolved from multiple APIs. A `/users` API could resolve the `id`, `name` & `email` and a `/accounts/:userId` could resolve the user's account `balance` and `lastUpdated`. With tailcall's API Gateway you will be able to specify that requests accessing the account details will require authentication, whereas other requests may not. ```graphql type User { From a73c7b1251115b462f9e317fbdfcf7a238ef5b3d Mon Sep 17 00:00:00 2001 From: Tushar Mathur Date: Tue, 23 Jan 2024 10:11:10 +0530 Subject: [PATCH 3/9] style fixes --- .github/ISSUE_TEMPLATE/write-a-guide.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/write-a-guide.md b/.github/ISSUE_TEMPLATE/write-a-guide.md index 194529d1ac..f03c537c2b 100644 --- a/.github/ISSUE_TEMPLATE/write-a-guide.md +++ b/.github/ISSUE_TEMPLATE/write-a-guide.md @@ -1,29 +1,33 @@ --- name: Write a Guide about: Template to write guides -title: 'doc: ' -labels: '' -assignees: '' - +title: "doc: " +labels: "" +assignees: "" --- ## Content Creation Requirements + To maintain the quality of our content, please adhere to the following guidelines: ### 1. Accuracy in Language + - **Grammar and Spelling:** Ensure your content is free from grammatical and spelling errors. ### 2. Tone and Style + - **Neutral Tone:** Maintain a neutral, non-emotional tone throughout the content. - **Engaging Style:** Write in a free-flowing and engaging manner, keeping the reader's interest. ### 3. Content Integrity + - **Fact-Checking:** Verify all information. If unsure, use Discord to clarify. - **Relevance:** Ensure all content is cohesive, to the point, and directly related to the title. ### 4. Originality + - **Avoid Low-Effort Content:** Content should be original and not solely generated by AI tools like ChatGPT. **PS: Adherence to these guidelines is crucial. Content not meeting these standards may require revision or may not be accepted.** From a35e4fa172cf1969d144a0953f027fb00732431e Mon Sep 17 00:00:00 2001 From: Vishal Urankar Date: Tue, 23 Jan 2024 10:16:03 +0530 Subject: [PATCH 4/9] Improve code quality (#84) * Add MoreEnterpriseFeatures component * Add MoreEnterpriseFeatures component * Fix import order in MoreEnterpriseFeatures component * Add check-circle.svg icon * add pricing section * Fetching docs remotely * make enterprise features responsive * Make hero section responsive * make more features section responsive * make pricing section responsive * Add Grid to Footer * use correct font * add correct icon in footer * Add lottie-react package and new components * Add contact page component * Add ContactPage component * Add contact form component * Update package-lock.json and enterprise.tsx * make section responsive * Update Hello component layout * padding fix * Add Link component to Button and update props * Update banner buttons * remove unused assets * Add width prop to Button component * Fix button link in Graph component * Update MoreFeatures component and constants * Add flexbox layout to MoreFeatures component * Update Graph component's title width * Update button links in Discover component * Update GitHub link in Graph component * Fix footer links and grid alignment * Update social media links * Fix spacing in ChooseTailcall component * run counter only when in view * fix git overflow issue * update benchmark links * add key for loop * make home page tablet responsive * minor fixes * minor ui fixes * make about page tablet responsive * make enterprise section tablet responsive * make contact us tablet responsive * Add email and message state variables and update input and textarea elements * Add disabled prop to Button component * Add disabled attribute to Send message button * Fix alignment issue in Banner component * Add Grid component to Hero section * Update Pricing component styles * Design changes for docs * Add CheckCircle icon to MoreEnterpriseFeatures component * Update Graph component with visualizations * Update GraphContainer component * Update Button and Footer bg color * Add check-circle-broken.svg icon * add config section as per design * make section responsive * Update max-width in Discover component * Removed pat token * update url links * fix import statmt * run animation on view * change css for radio button * Add stage selection and send data to Zapier webhook * Add cursor pointer to radio buttons * Fix issue with resetting form fields * Update founder images * Changes in header * Mobile header changes * css changes * modify more features as per design * Update pricing plan buttons with href * Update MoreEnterpriseFeatures component styles and remove duplicate feature * Fix padding and margin in custom.css * minor fixes * Docs change * minor fixes * change file name * Deleted docs * Mobile header changes * Docs search * Commenting out header * remove unused assets * fix constants types * Fix link styling in Footer component * Refactor Button component styles * Refactor partner logo rendering in Partners component * Add useRef hook and animation control * Update Graph component with duration and delay props * Fix logo rendering in Features component * Update ChooseTailcall component * Update "Get Started" button link * Update font size in EnterpriseFeaturesCard * Commented out Investors component * Fix CSS formatting and styles * Update letter spacing in tailwind.config.ts * Update fetchGithubStars function to handle null response * Update ChooseTailcall component styling * minor fixes * Update button href in MoreFeatures component * Fix import statement in SearchBar.js and format copyright text in Footer.tsx * Update Configuration component styles * source docs from locally * bug fixes as per notion doc * Fix Marquee autoFill in Partners component * Update Footer styles * remove console errors by adding react-visibility-sensor * Update MoreFeatures component styling * Update Hello component styling * fix for issues raised by tushar * Github stars being fetched on runtime * Refactor GraphContainer component * change color variable names * Update Button component styles * Update background color in custom.css and Sidebar.module.css * Add search icon * implement search for mobile * css for search * add styles for search on mobile * refactor desktop search * prettier fix * Remove unused SearchResult component * Add type definition for AdditionalEnterpriseFeatures * Add ReactNode type to LayoutProviderProps * add types and comments * Refactor NavbarContent component and add CustomSearch component * Refactor mobile primary menu and add analytics event handler * add comma * Add RadioOptions type definition * Update modalContent height and add overflow-y * Fix search input focus issue in Sidebar component * Add radioOptions to constants * Remove ReactGA initialization * Add LinkButton component * Refactor GithubStarsButton component and GithubStarsProvider context * Replace Button with LinkButton in Discover component * Add spacing options to tailwind.config.ts * Add useState hook and update button component * Update Button import in Hero component * use tailwind custom space tokens for margin, padding & spacing * Update search docs styling in Sidebar and Navbar * Update index.tsx * remove todos * Update height of modalContent in Navbar/Content/styles.module.css * Refactor Navbar/Content component and add zoom behavior * Update font and dimension tokens, and color tokens in custom.css * Refactor GithubStarsButton component * Fix Tailwind border not getting applied * remove unused import * Remove console.log statement in Sidebar component * Remove unused useState import in GithubStarsButton component * Fix theme navbar item rendering issue * Update index.tsx * Update search input width for larger viewports * only use important where necessary * use useLocation hook from docusaurus instead of window.location * use var for font sizes * Update font sizes in search functionality * add theme as enum for link button * Refactor LinkButton component to improve theming and disabled state handling * add catch and type for val * remove usage of any & unknown * Fix default stars count in GithubStarsProvider * Add react-platform-js package and update search functionality * Refactor GraphContainer component * Fix types in NavbarMobilePrimaryMenu component * Update index.tsx * Add ESLint configuration file * Refactor heading elements in components * Add devDependencies for Babel and ESLint * Add TypeScript ESLint plugins and rules * More minor code imporovements * Fix spelling of TODO * Reverted prettier changes * Remove unused imports in install.tsx * Refactor search functionality to use single useEffect * store all links in constants and use those to navigate * Add useCallback to sendData function and update zapierLink constant * Refactor code to use TypeScript syntax * Update index.tsx * Update return type of ChooseTailcall component * style changes * Fix github icon * Refactoring * Update Navbar styles for small viewports * Refactor enterprise features and footer links * remove border from style * Update LinkButton styles * Remove unused code in LinkButton component * Update index.tsx * add comments * Add noImplicitAny compiler option to tsconfig.json * Update tsconfig.json * Update tsconfig.json * Pretty tsconfig * new graphic * Update button widths in Pricing and Banner components * Refactor component props and fix button width * Update GraphContainer and LinkButton styles * Remove noImplicitAny flag from tsconfig.json * Add cursor pointer to searchDocsClose * move page links in a routes file * make renderBackgroundElements fun readable and make it a pure fn * Fix type declaration for respStarsCount * Update NavbarContent component to use improved types * Fix rendering error in theme navbar items * Update SidebarWrapper props type and add SidebarConfig type * Add module declarations for search bar and react-platform-js * remove console log Co-authored-by: Amit Singh --------- Co-authored-by: Rajat Co-authored-by: Amit Singh --- .eslintrc.json | 17 + docs/getting_started/installation.mdx | 3 +- package-lock.json | 1218 ++++++++++++- package.json | 8 + src/components/Version/index.tsx | 2 +- src/components/about/Founders.tsx | 22 +- src/components/about/Hero.tsx | 12 +- src/components/about/Investors.tsx | 28 +- src/components/about/SocialBuzz.tsx | 23 +- src/components/about/WhoWeAre.tsx | 6 +- src/components/about/index.tsx | 2 +- src/components/contact/Hello.tsx | 81 +- src/components/contact/index.tsx | 2 +- .../enterprise/EnterpriseFeatures.tsx | 21 +- src/components/enterprise/Hero.tsx | 25 +- .../enterprise/MoreEnterpriseFeatures.tsx | 29 +- src/components/enterprise/Pricing.tsx | 49 +- src/components/enterprise/index.tsx | 2 +- src/components/home/Banner.tsx | 59 +- src/components/home/ChooseTailcall.tsx | 14 +- src/components/home/Configuration.tsx | 15 +- src/components/home/Features.tsx | 26 +- src/components/home/Graph.tsx | 29 +- src/components/home/GraphContainer.tsx | 50 +- src/components/home/LegacyGateway.tsx | 20 +- src/components/home/MoreFeatures.tsx | 52 +- src/components/home/Partners.tsx | 8 +- src/components/home/Playground.tsx | 9 +- src/components/home/index.tsx | 2 +- src/components/install.tsx | 4 +- src/components/shared/Button.tsx | 87 - src/components/shared/Discover.tsx | 29 +- src/components/shared/Footer.tsx | 34 +- src/components/shared/GithubStarsButton.tsx | 36 +- src/components/shared/GithubStarsProvider.tsx | 37 +- src/components/shared/LinkButton.tsx | 103 ++ src/components/shared/SearchResult.tsx | 176 -- src/components/shared/SectionTitle.tsx | 8 +- src/constants/index.ts | 32 +- src/constants/routes.ts | 8 + src/css/custom.css | 164 +- src/pages/about.tsx | 9 +- src/pages/contact.tsx | 7 +- src/pages/enterprise.tsx | 7 +- src/pages/index.tsx | 10 +- src/theme/DocRoot/Layout/Sidebar/index.tsx | 105 +- .../{Sidebar.module.css => styles.module.css} | 26 +- src/theme/Layout/Provider/index.tsx | 14 +- src/theme/Navbar/Content/index.tsx | 156 +- src/theme/Navbar/Content/styles.module.css | 90 +- .../MobileSidebar/PrimaryMenu/index.tsx | 21 +- src/types/index.d.ts | 49 +- src/utils/index.ts | 12 + static/animations/solution-graphic.json | 1585 +---------------- static/icons/basic/search.svg | 3 + static/icons/companies/github-light.svg | 12 - tailwind.config.ts | 39 + tsconfig.json | 12 +- 58 files changed, 2359 insertions(+), 2350 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 src/components/shared/Button.tsx create mode 100644 src/components/shared/LinkButton.tsx delete mode 100644 src/components/shared/SearchResult.tsx create mode 100644 src/constants/routes.ts rename src/theme/DocRoot/Layout/Sidebar/{Sidebar.module.css => styles.module.css} (75%) create mode 100644 static/icons/basic/search.svg diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..7311b66c17 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,17 @@ +{ + "parser": "@babel/eslint-parser", + "parserOptions": { + "ecmaVersion": 2021, + "sourceType": "module", + "requireConfigFile": false + }, + "extends": ["plugin:@docusaurus/recommended", "plugin:@typescript-eslint/recommended"], + "plugins": ["@docusaurus", "@typescript-eslint"], + "rules": { + "@docusaurus/string-literal-i18n-messages": "error", + "@docusaurus/no-html-links": "error", + "@typescript-eslint/no-explicit-any": ["error", {"ignoreRestArgs": true}] + // Add other TypeScript rules as needed + }, + "ignorePatterns": ["node_modules/", "build/"] +} diff --git a/docs/getting_started/installation.mdx b/docs/getting_started/installation.mdx index 7cc658a633..e8b1505e55 100644 --- a/docs/getting_started/installation.mdx +++ b/docs/getting_started/installation.mdx @@ -9,8 +9,7 @@ import Version from "../../src/components/Version" import InstallCommand from "../../src/components/install" <> - You can install the latest version -{" "} - ****, by using NPM. + You can install the latest version - , by using NPM. ## NPM diff --git a/package-lock.json b/package-lock.json index 5021a2abdf..ac5baaa17c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,20 +23,37 @@ "react-dom": "^18.0.0", "react-fast-marquee": "^1.6.2", "react-ga4": "^2.1.0", + "react-hot-toast": "^2.4.1", "react-on-screen": "^2.1.1", + "react-platform-js": "^0.0.1", "tailwindcss": "^3.3.5" }, "devDependencies": { + "@babel/core": "^7.23.7", + "@babel/eslint-parser": "^7.23.3", + "@docusaurus/eslint-plugin": "^3.1.0", "@docusaurus/module-type-aliases": "3.0.0", "@docusaurus/tsconfig": "3.0.0", "@docusaurus/types": "3.0.0", + "@typescript-eslint/eslint-plugin": "^6.19.0", + "@typescript-eslint/parser": "^6.19.0", "docusaurus-plugin-remote-content": "^4.0.0", + "eslint": "^8.56.0", "typescript": "~5.2.2" }, "engines": { "node": ">=18.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@algolia/autocomplete-core": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", @@ -306,19 +323,19 @@ } }, "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", + "@babel/helpers": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -342,6 +359,42 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/eslint-parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", @@ -663,12 +716,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" }, "engines": { @@ -2085,9 +2138,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -2299,6 +2352,22 @@ "node": ">=18.0" } }, + "node_modules/@docusaurus/eslint-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.1.0.tgz", + "integrity": "sha512-Zo/QNKFyHa0JG2shKwFKZTQnSc8ECXIWmnfi8y5RjTBiWLsoxusePCRcOQMqVWSRknO0bumZyOLjKEFK7Z57Ew==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.62.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "eslint": ">=6" + } + }, "node_modules/@docusaurus/logger": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.0.0.tgz", @@ -3384,6 +3453,89 @@ "node": ">=18.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "devOptional": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "devOptional": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "devOptional": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "devOptional": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "devOptional": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -3397,6 +3549,39 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "devOptional": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "devOptional": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "devOptional": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3736,6 +3921,15 @@ "react-dom": ">= 15" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4424,6 +4618,12 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, "node_modules/@types/send": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", @@ -4480,11 +4680,548 @@ "@types/yargs-parser": "*" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" - }, + "node_modules/@types/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", + "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.19.0", + "@typescript-eslint/type-utils": "6.19.0", + "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", + "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", + "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", + "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", + "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.19.0", + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", + "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz", + "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.19.0", + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", + "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", + "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", + "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", + "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz", + "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.19.0", + "@typescript-eslint/utils": "6.19.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", + "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", + "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", + "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/visitor-keys": "6.19.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", + "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.19.0", + "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", + "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -6320,6 +7057,12 @@ "node": ">=4.0.0" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "devOptional": true + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -6546,6 +7289,18 @@ "node": ">=6" } }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "devOptional": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/docusaurus-lunr-search": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/docusaurus-lunr-search/-/docusaurus-lunr-search-3.3.1.tgz", @@ -6873,6 +7628,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "devOptional": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -6885,6 +7695,160 @@ "node": ">=8.0.0" } }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "devOptional": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "devOptional": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "devOptional": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "devOptional": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "devOptional": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "devOptional": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "devOptional": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -6897,6 +7861,27 @@ "node": ">=4" } }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "devOptional": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -7232,6 +8217,12 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "devOptional": true + }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -7309,6 +8300,18 @@ "node": ">=0.4.0" } }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "devOptional": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -7432,6 +8435,26 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "devOptional": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "devOptional": true + }, "node_modules/flux": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", @@ -7880,6 +8903,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/goober": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.14.tgz", + "integrity": "sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -7931,6 +8962,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "devOptional": true + }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -9517,6 +10554,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "devOptional": true + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -9594,6 +10637,19 @@ "node": ">=6" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "devOptional": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -9682,6 +10738,12 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "devOptional": true + }, "node_modules/lodash.pullall": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", @@ -12445,6 +13507,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "devOptional": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -12705,6 +13773,23 @@ "opener": "bin/opener-bin.js" } }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "devOptional": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-cancelable": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", @@ -13804,6 +14889,15 @@ "postcss": "^8.2.15" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "devOptional": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -14261,6 +15355,21 @@ "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-hot-toast": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz", + "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==", + "dependencies": { + "goober": "^2.1.10" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -14313,6 +15422,36 @@ "react-dom": ">=15.0.0" } }, + "node_modules/react-platform-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/react-platform-js/-/react-platform-js-0.0.1.tgz", + "integrity": "sha512-+d7v0wuYBl5i2zROFOJUnGX40nWgTu363UtT1iSLS3et7S9mF9GzhkhEb3gg6RbRE1mpeUnCtMiHa3904MecIg==", + "dependencies": { + "ua-parser-js": "^0.7.12" + } + }, + "node_modules/react-platform-js/node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, "node_modules/react-router": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", @@ -16822,6 +17961,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -16832,6 +17983,39 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "devOptional": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", diff --git a/package.json b/package.json index 98623d8b73..76a6cc3f39 100644 --- a/package.json +++ b/package.json @@ -30,14 +30,22 @@ "react-dom": "^18.0.0", "react-fast-marquee": "^1.6.2", "react-ga4": "^2.1.0", + "react-hot-toast": "^2.4.1", "react-on-screen": "^2.1.1", + "react-platform-js": "^0.0.1", "tailwindcss": "^3.3.5" }, "devDependencies": { + "@babel/core": "^7.23.7", + "@babel/eslint-parser": "^7.23.3", + "@docusaurus/eslint-plugin": "^3.1.0", "@docusaurus/module-type-aliases": "3.0.0", "@docusaurus/tsconfig": "3.0.0", "@docusaurus/types": "3.0.0", + "@typescript-eslint/eslint-plugin": "^6.19.0", + "@typescript-eslint/parser": "^6.19.0", "docusaurus-plugin-remote-content": "^4.0.0", + "eslint": "^8.56.0", "typescript": "~5.2.2" }, "browserslist": { diff --git a/src/components/Version/index.tsx b/src/components/Version/index.tsx index 5335bb75e5..48e75fa1f0 100644 --- a/src/components/Version/index.tsx +++ b/src/components/Version/index.tsx @@ -1,6 +1,6 @@ import React, {useEffect, useState} from "react" -const Version = () => { +const Version = (): JSX.Element => { const [version, setVersion] = useState() const fetchVersion = async () => { diff --git a/src/components/about/Founders.tsx b/src/components/about/Founders.tsx index d508c2f41a..b6ba94b9a2 100644 --- a/src/components/about/Founders.tsx +++ b/src/components/about/Founders.tsx @@ -13,15 +13,19 @@ type Founder = { } } -const Founder = ({founder}: Founder) => { +type SocialIconProps = { + social: Social +} + +const Founder = ({founder}: Founder): JSX.Element => { return (
{founder.name} -
+
{founder.name} {founder.title} -
+
{founder.socialLinks.map((social) => ( ))} @@ -31,10 +35,10 @@ const Founder = ({founder}: Founder) => { ) } -const SocialIcon = ({social}) => { +const SocialIcon = ({social}: SocialIconProps) => { const [isHovered, setIsHovered] = useState(false) - const getIcon = (name, isHovered) => { + const getIcon = (name: string, isHovered: boolean) => { switch (name) { case "linkedin": return ( @@ -45,7 +49,7 @@ const SocialIcon = ({social}) => { @@ -60,7 +64,7 @@ const SocialIcon = ({social}) => { @@ -71,7 +75,7 @@ const SocialIcon = ({social}) => { ) @@ -96,7 +100,7 @@ const SocialIcon = ({social}) => { const Founders = () => { return ( -
+
{founders.map((founder) => ( ))} diff --git a/src/components/about/Hero.tsx b/src/components/about/Hero.tsx index b622b0d944..fea9fae0b2 100644 --- a/src/components/about/Hero.tsx +++ b/src/components/about/Hero.tsx @@ -1,14 +1,18 @@ import React from "react" +import Heading from "@theme/Heading" import SectionTitle from "../shared/SectionTitle" -const Hero = () => { +const Hero = (): JSX.Element => { return (
-
+
-

+ Demystify the complexity of API composition, with unparalleled ease and efficiency. -

+
{ +const Investors = (): JSX.Element => { return (
-

- We are backed by incredible investors. +

+ We are backed by incredible investors.

-
-
+
+
{ className="h-full w-full object-contain" />
-
+
{
-
+

Angel Investors

-
+
{investors.map((investor) => (
{ alt={investor.name} className="rounded-2xl h-32 w-32" /> - {investor.name} + {investor.name} {investor.title}
))} diff --git a/src/components/about/SocialBuzz.tsx b/src/components/about/SocialBuzz.tsx index 3eb82e7611..48c1a64971 100644 --- a/src/components/about/SocialBuzz.tsx +++ b/src/components/about/SocialBuzz.tsx @@ -1,11 +1,11 @@ import React from "react" import SectionTitle from "../shared/SectionTitle" -const SocialBuzz = () => { +const SocialBuzz = (): JSX.Element => { return ( -
-
-
+
+
+
Social & Buzz
@@ -16,10 +16,7 @@ const SocialBuzz = () => { ${require("@site/static/images/about/tweet-2-2x.jpg").default} 2x `} alt="tweet 2" - className="rounded-3xl m-2 lg:hidden" - style={{ - border: "1px solid var(--ifm-color-gray-700)", - }} + className="rounded-3xl m-SPACE_02 lg:hidden border border-solid border-tailCall-border-light-500" /> { ${require("@site/static/images/about/tweet-1-2x.jpg").default} 2x `} alt="" - className=" rounded-3xl m-2" - style={{ - border: "1px solid var(--ifm-color-gray-700)", - }} + className="border border-solid border-tailCall-border-light-500 rounded-3xl m-SPACE_02" />
{ ${require("@site/static/images/about/tweet-2-2x.jpg").default} 2x `} alt="tweet 2" - className="rounded-3xl m-2 lg:block hidden" - style={{ - border: "1px solid var(--ifm-color-gray-700)", - }} + className="border border-solid border-tailCall-border-light-500 rounded-3xl m-SPACE_02 lg:block hidden" />
) diff --git a/src/components/about/WhoWeAre.tsx b/src/components/about/WhoWeAre.tsx index 7858358ee6..055a6e2923 100644 --- a/src/components/about/WhoWeAre.tsx +++ b/src/components/about/WhoWeAre.tsx @@ -1,12 +1,12 @@ import React from "react" import SectionTitle from "../shared/SectionTitle" -const WhoWeAre = () => { +const WhoWeAre = (): JSX.Element => { return ( -
+
-

+

Who we are?

diff --git a/src/components/about/index.tsx b/src/components/about/index.tsx index f90f03486d..11b7014290 100644 --- a/src/components/about/index.tsx +++ b/src/components/about/index.tsx @@ -7,7 +7,7 @@ import SocialBuzz from "./SocialBuzz" import Discover from "../shared/Discover" import Footer from "../shared/Footer" -const AboutPage = () => { +const AboutPage = (): JSX.Element => { return ( <> diff --git a/src/components/contact/Hello.tsx b/src/components/contact/Hello.tsx index 408f4692e6..837eb89c95 100644 --- a/src/components/contact/Hello.tsx +++ b/src/components/contact/Hello.tsx @@ -1,35 +1,18 @@ -import React from "react" - +import React, {useCallback, useState} from "react" +import Heading from "@theme/Heading" +import toast, {Toaster} from "react-hot-toast" import Grid from "@site/static/images/about/grid-large.svg" -import Button from "../shared/Button" +import LinkButton from "../shared/LinkButton" import {analyticsHandler} from "@site/src/utils" +import {Theme, radioOptions, zapierLink} from "@site/src/constants" -const radioOptions = [ - {id: "1", name: "Evaluating", value: "evaluating"}, - { - id: "2", - name: "Monolith", - value: "monolith", - }, - { - id: "3", - name: "Multiple Graphql with Bff", - value: "bff", - }, - { - id: "4", - name: "Federated", - value: "federated", - }, -] - -const Hello = () => { - const [email, setEmail] = React.useState("") - const [message, setMessage] = React.useState("") - const [stage, setStage] = React.useState("") +const Hello = (): JSX.Element => { + const [email, setEmail] = useState("") + const [message, setMessage] = useState("") + const [stage, setStage] = useState("") - const sendData = async () => { - const response = await fetch("https://hooks.zapier.com/hooks/catch/2793322/3a1gxp2/", { + const sendData = useCallback(async () => { + const response = await fetch(zapierLink, { method: "POST", body: JSON.stringify({ email, @@ -41,24 +24,31 @@ const Hello = () => { const data = await response.json() if (data.status === "success") { + toast.success("Thank you for contacting us.", { + duration: 3000, + }) analyticsHandler("Contact Page", "Click", "Send message") setEmail("") setMessage("") setStage("") } - } + }, []) return (
+ -
-

- Say hello to us! -

+
+ + Say hello to us! + -
-
+
+
@@ -67,31 +57,28 @@ const Hello = () => { type="email" value={email} onChange={(e) => setEmail(e.target.value)} - style={{ - border: "1px solid var(--ifm-color-gray-700)", - }} - className="rounded-lg font-space-grotesk h-11 w-[95%] sm:w-[480px] p-3 text-content-small outline-none focus:border-x-tailCall-light-700" + className="border border-solid border-tailCall-border-light-500 rounded-lg font-space-grotesk h-11 w-[95%] sm:w-[480px] p-SPACE_03 text-content-small outline-none focus:border-x-tailCall-light-700" placeholder="you@company.com" />
-
+

What stage of GraphQL are you in?

-
+
{radioOptions.map((option) => ( -
+
setStage(option.value)} className="radio-button" /> -
@@ -99,7 +86,7 @@ const Hello = () => {
-
+
@@ -107,12 +94,12 @@ const Hello = () => { name="company" value={message} onChange={(e) => setMessage(e.target.value)} - className="rounded-lg font-space-grotesk h-32 w-[95%] sm:w-[480px] border border-tailCall-light-400 p-3 text-content-small outline-none focus:border-x-tailCall-light-700" + className="rounded-lg font-space-grotesk h-32 w-[95%] sm:w-[480px] border border-tailCall-light-400 p-SPACE_03 text-content-small outline-none focus:border-x-tailCall-light-700" placeholder="Leave us a message..." />
-
diff --git a/src/components/contact/index.tsx b/src/components/contact/index.tsx index 21fae2361b..43ae971f1b 100644 --- a/src/components/contact/index.tsx +++ b/src/components/contact/index.tsx @@ -2,7 +2,7 @@ import React from "react" import Hello from "./Hello" import Footer from "../shared/Footer" -const ContactPage = () => { +const ContactPage = (): JSX.Element => { return ( <> diff --git a/src/components/enterprise/EnterpriseFeatures.tsx b/src/components/enterprise/EnterpriseFeatures.tsx index 979c6ee523..1e9f851f05 100644 --- a/src/components/enterprise/EnterpriseFeatures.tsx +++ b/src/components/enterprise/EnterpriseFeatures.tsx @@ -1,5 +1,7 @@ -import {enterpriseFeatures} from "@site/src/constants" import React from "react" +import Heading from "@theme/Heading" + +import {enterpriseFeatures} from "@site/src/constants" type EnterpriseFeaturesCardProps = { feature: { @@ -10,14 +12,9 @@ type EnterpriseFeaturesCardProps = { } } -const EnterpriseFeaturesCard = ({feature}: EnterpriseFeaturesCardProps) => { +const EnterpriseFeaturesCard = ({feature}: EnterpriseFeaturesCardProps): JSX.Element => { return ( -
+

{feature.title}

{feature.description}

@@ -27,11 +24,11 @@ const EnterpriseFeaturesCard = ({feature}: EnterpriseFeaturesCardProps) => { const EnterpriseFeatures = () => { return ( -
-

+
+ Some of our enterprise features. -

-
+ +
{enterpriseFeatures.map((feature) => ( ))} diff --git a/src/components/enterprise/Hero.tsx b/src/components/enterprise/Hero.tsx index a63b40eb1e..6bf3c201e5 100644 --- a/src/components/enterprise/Hero.tsx +++ b/src/components/enterprise/Hero.tsx @@ -1,21 +1,28 @@ import React from "react" -import Button from "../shared/Button" +import Heading from "@theme/Heading" + +import LinkButton from "../shared/LinkButton" import {analyticsHandler} from "@site/src/utils" +import {Theme} from "@site/src/constants" +import {pageLinks} from "@site/src/constants/routes" -const Hero = () => { +const Hero = (): JSX.Element => { return ( -
-

+
+
Extend the power
- of GraphQL + of GraphQL
to your organization.
-

-
diff --git a/src/components/enterprise/MoreEnterpriseFeatures.tsx b/src/components/enterprise/MoreEnterpriseFeatures.tsx index f99ab66cc5..f9cb3a48b7 100644 --- a/src/components/enterprise/MoreEnterpriseFeatures.tsx +++ b/src/components/enterprise/MoreEnterpriseFeatures.tsx @@ -1,40 +1,27 @@ import React from "react" +import Heading from "@theme/Heading" import {additionalEnterpriseFeatures} from "@site/src/constants" import CheckCircle from "@site/static/icons/basic/check-circle-broken.svg" -const MoreEnterpriseFeatures = () => { +const MoreEnterpriseFeatures = (): JSX.Element => { return ( -
-
+
+
-

+ Additional enterprise features -

+
-
+
{additionalEnterpriseFeatures.map((feature) => (
diff --git a/src/components/enterprise/Pricing.tsx b/src/components/enterprise/Pricing.tsx index 7653797dc7..070a974700 100644 --- a/src/components/enterprise/Pricing.tsx +++ b/src/components/enterprise/Pricing.tsx @@ -1,28 +1,31 @@ import React from "react" +import Heading from "@theme/Heading" import CheckCircle from "@site/static/icons/basic/check-circle.svg" -import {pricingPlans} from "@site/src/constants" -import Button from "../shared/Button" +import {Theme, pricingPlans} from "@site/src/constants" +import LinkButton from "../shared/LinkButton" import {analyticsHandler} from "@site/src/utils" -const Pricing = () => { +const Pricing = (): JSX.Element => { return ( -
-

- Plans that fit your scale. -

+
+ + Plans that fit your scale. + -
+
{pricingPlans.map((plan) => (
{plan.mostPopular && ( -

+

Most popular

)} @@ -38,9 +41,9 @@ const Pricing = () => {
-
+
{plan.features.map((feature) => ( -
+
{feature.name} @@ -49,23 +52,23 @@ const Pricing = () => { ))}
-
-
-
-
diff --git a/src/components/enterprise/index.tsx b/src/components/enterprise/index.tsx index 301a8dd4b1..9afed9e118 100644 --- a/src/components/enterprise/index.tsx +++ b/src/components/enterprise/index.tsx @@ -7,7 +7,7 @@ import Discover from "../shared/Discover" import Footer from "../shared/Footer" import Pricing from "./Pricing" -const EnterprisePage = () => { +const EnterprisePage = (): JSX.Element => { return (
diff --git a/src/components/home/Banner.tsx b/src/components/home/Banner.tsx index cff386a72a..036cb52870 100644 --- a/src/components/home/Banner.tsx +++ b/src/components/home/Banner.tsx @@ -1,59 +1,64 @@ import React from "react" -import ReactGA from "react-ga4" +import Heading from "@theme/Heading" -import Button from "../shared/Button" +import LinkButton from "../shared/LinkButton" import HeroImage from "@site/static/images/home/hero.svg" import {analyticsHandler} from "@site/src/utils" +import {Theme, codeSandboxUrl} from "@site/src/constants" +import {pageLinks} from "@site/src/constants/routes" -const Banner = () => { +const Banner = (): JSX.Element => { return (
-
+
-

+ GraphQL platform engineered for{" "} - scale -

-

+ scale + +

A cloud native solution to streamline API management across{" "} - edge,  - middle,  + edge, + middle, and service layers.

-
-
-
-
- +
) diff --git a/src/components/home/ChooseTailcall.tsx b/src/components/home/ChooseTailcall.tsx index bf21040d3f..b9518ab51f 100644 --- a/src/components/home/ChooseTailcall.tsx +++ b/src/components/home/ChooseTailcall.tsx @@ -1,28 +1,24 @@ import React from "react" import {chooseTailcall} from "@site/src/constants" -const ChooseTailcall = () => { +const ChooseTailcall = (): JSX.Element => { return ( <> -

+

More reasons to choose tailcall.

-
+
{chooseTailcall.map((item) => (
-

{item.title}

+

{item.title}

{item.description}

diff --git a/src/components/home/Configuration.tsx b/src/components/home/Configuration.tsx index 29e638909f..ebf896ba4f 100644 --- a/src/components/home/Configuration.tsx +++ b/src/components/home/Configuration.tsx @@ -1,18 +1,19 @@ import React from "react" +import Heading from "@theme/Heading" import CodeBlock from "@theme/CodeBlock" -const Configuration = () => { +const Configuration = (): JSX.Element => { return ( -
+
-

- Get Started -

-

+ + Get Started + +

Setup the Tailcall instantly via npm and unlock the power of high-performance API orchestration.

More -

+

To dive deeper into TailCall checkout our docs for detailed tutorials. Ideal for devs at any level, it's packed with advanced tips, powerful operators and best practices.

diff --git a/src/components/home/Features.tsx b/src/components/home/Features.tsx index 6995417fda..81c2f62052 100644 --- a/src/components/home/Features.tsx +++ b/src/components/home/Features.tsx @@ -1,4 +1,5 @@ import React from "react" +import Heading from "@theme/Heading" import {features} from "@site/src/constants" import GreaterThanUnderscoreIcon from "@site/static/icons/basic/gt-underscore.svg" @@ -14,30 +15,35 @@ type FeatureProps = { } } -const Feature = ({feature}: FeatureProps) => { +const Feature = ({feature}: FeatureProps): JSX.Element => { return ( -
-
+
+
-
{feature.title}
+ + {feature.title} +
-
+

{feature.description1} - + {feature.highlightedText} {feature.description2}

-
+
@@ -47,7 +53,7 @@ const Feature = ({feature}: FeatureProps) => { const Features = () => { return ( -
+
{features.map((feature) => ( ))} diff --git a/src/components/home/Graph.tsx b/src/components/home/Graph.tsx index a471ff4664..d1eb0d9ac5 100644 --- a/src/components/home/Graph.tsx +++ b/src/components/home/Graph.tsx @@ -1,26 +1,31 @@ import React from "react" +import Heading from "@theme/Heading" -import Button from "../shared/Button" +import LinkButton from "../shared/LinkButton" import ChooseTailcall from "./ChooseTailcall" import GraphContainer from "./GraphContainer" import githubLogo from "@site/static/icons/companies/github-light.svg" import RequestVisual from "@site/static/animations/request-visual.json" import LatencyVisual from "@site/static/animations/latency-visual.json" import {analyticsHandler} from "@site/src/utils" +import {Theme, tailCallBenchmarkUrl} from "@site/src/constants" -const Graph = () => { +const Graph = (): JSX.Element => { return ( -
-
+
+
-
+ Platform made for performance. -
+
-
-
diff --git a/src/components/home/Partners.tsx b/src/components/home/Partners.tsx index 97e8fe1673..b30fd17e85 100644 --- a/src/components/home/Partners.tsx +++ b/src/components/home/Partners.tsx @@ -4,15 +4,15 @@ import Marquee from "react-fast-marquee" import GreaterThanUnderscoreIcon from "@site/static/icons/basic/gt-undescore-gray.svg" import {partnerImages} from "@site/src/constants" -const Partners = () => { +const Partners = (): JSX.Element => { return ( -
+
Our Cloud Partners
-
+
{partnerImages.map((partner) => (
{partner.name} @@ -20,7 +20,7 @@ const Partners = () => { ))}
-
+
{partnerImages.map((partner) => (
{partner.name} diff --git a/src/components/home/Playground.tsx b/src/components/home/Playground.tsx index d237ce2524..953af92d76 100644 --- a/src/components/home/Playground.tsx +++ b/src/components/home/Playground.tsx @@ -1,9 +1,12 @@ import React from "react" +import Heading from "@theme/Heading" -const Playground = () => { +const Playground = (): JSX.Element => { return ( -
-

Playground

+
+ + Playground +