diff --git a/.env.template b/.env.template
new file mode 100644
index 0000000..572f3fb
--- /dev/null
+++ b/.env.template
@@ -0,0 +1,12 @@
+VITE_ENVIRONMENT_ID=
+VITE_DELIVERY_API_KEY=
+
+# (Optional) used only for model generation
+VITE_MAPI_API_KEY=
+
+# Only for Kontent.ai developers
+VITE_AUTH_REDIRECT_URL=
+VITE_AUTH_DOMAIN=
+VITE_AUTH_CLIENT_ID=
+VITE_KONTENT_URL=
+VITE_DELIVER_URL=
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..b30e6bb
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,22 @@
+name: Lint & Build
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ id: nvm
+ - name: Use Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: ".nvmrc"
+ - run: npm ci
+ - run: npm run lint
+ - run: npm run build
+
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index a547bf3..3b0b403 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,5 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+
+.env
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..1a2f5bd
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+lts/*
\ No newline at end of file
diff --git a/README.md b/README.md
index 74872fd..8988ba7 100644
--- a/README.md
+++ b/README.md
@@ -1,50 +1,67 @@
-# React + TypeScript + Vite
-
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-
-Currently, two official plugins are available:
-
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
-
-## Expanding the ESLint configuration
-
-If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
-
-- Configure the top-level `parserOptions` property like this:
-
-```js
-export default tseslint.config({
- languageOptions: {
- // other options...
- parserOptions: {
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
- tsconfigRootDir: import.meta.dirname,
- },
- },
-})
-```
-
-- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
-- Optionally add `...tseslint.configs.stylisticTypeChecked`
-- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:
-
-```js
-// eslint.config.js
-import react from 'eslint-plugin-react'
-
-export default tseslint.config({
- // Set the react version
- settings: { react: { version: '18.3' } },
- plugins: {
- // Add the react plugin
- react,
- },
- rules: {
- // other rules...
- // Enable its recommended rules
- ...react.configs.recommended.rules,
- ...react.configs['jsx-runtime'].rules,
- },
-})
-```
+# Kontent.ai Kickstart Sample React App
+
+[![Contributors][contributors-shield]][contributors-url]
+[![Forks][forks-shield]][forks-url]
+[![Stargazers][stars-shield]][stars-url]
+[![Issues][issues-shield]][issues-url]
+[![MIT License][license-shield]][license-url]
+[![Discord][discord-shield]][discord-url]
+
+This repository contains the solution for the Kontent.ai Kickstart Sample React App. It serves as a learning resource for those starting new projects with Kontent.ai, providing a foundational template to build upon.
+
+The app is built with Vite for fast and optimized development, and Tailwind CSS is used for styling the application.
+
+## Contributing
+
+### How to Contribute
+
+- **Report Issues**: Use the [GitHub Issues](https://github.com/kontent-ai/kickstart-react-app/issues) to report bugs or request features.
+- **Fork the Repository**: Create a personal fork of the repository on GitHub.
+- **Create a Feature Branch**: Use a descriptive name for your branch.
+- **Submit a Pull Request**: Submit your changes for review.
+
+Please read our [Contributing Guidelines](CONTRIBUTING.md) for more details.
+
+### Code of Conduct
+
+This project adheres to a [Code of Conduct](https://github.com/kontent-ai/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
+
+### Getting Started with Development
+
+- Run `npm ci` to install packages.
+- Create a `.env` file from `.env.template` and fill out all necessary variables.
+- Run `npm run dev` to run the application in developer mode.
+
+## License
+
+This project is licensed under the MIT License - see the [LICENSE.md](LICENSE) file for details.
+
+---
+
+## Support
+
+If you have any questions or need assistance, please reach out:
+
+- **Kontent.ai Support**: [Contact Support](https://kontent.ai/support/)
+
+---
+
+## Additional Resources
+
+- **Kontent.ai Official Documentation**: [Learn more about Kontent.ai](https://kontent.ai/learn/)
+
+---
+
+[contributors-shield]: https://img.shields.io/github/contributors/kontent-ai/kickstart-react-app?style=for-the-badge
+[contributors-url]: https://github.com/kontent-ai/kickstart-react-app/graphs/contributors
+[forks-shield]: https://img.shields.io/github/forks/kontent-ai/kickstart-react-app.svg?style=for-the-badge
+[forks-url]: https://github.com/kontent-ai/kickstart-react-app/network/members
+[stars-shield]: https://img.shields.io/github/stars/kontent-ai/kickstart-react-app.svg?style=for-the-badge
+[stars-url]: https://github.com/kontent-ai/kickstart-react-app/stargazers
+[issues-shield]: https://img.shields.io/github/issues/kontent-ai/kickstart-react-app.svg?style=for-the-badge
+[issues-url]: https://github.com/kontent-ai/kickstart-react-app/issues
+[license-shield]: https://img.shields.io/github/license/kontent-ai/kickstart-react-app.svg?style=for-the-badge
+[license-url]: https://github.com/kontent-ai/kickstart-react-app/blob/master/LICENSE.md
+[discord-shield]: https://img.shields.io/discord/821885171984891914?color=%237289DA&label=Kontent.ai%20Discord&logo=discord&style=for-the-badge
+[discord-url]: https://discord.com/invite/SKCxwPtevJ
+
diff --git a/eslint.config.js b/eslint.config.js
index 58dc891..dc6a056 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -3,17 +3,26 @@ import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
+import react from 'eslint-plugin-react';
export default tseslint.config(
+ js.configs.recommended,
+ tseslint.configs.recommended,
{ ignores: ['dist'] },
{
- extends: ["@kontent-ai"],
files: ['**/*.{ts,tsx}'],
languageOptions: {
- ecmaVersion: 2020,
+ ecmaVersion: "latest",
+ sourceType: "module",
globals: globals.browser,
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true
+ }
+ }
},
plugins: {
+ react,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
diff --git a/generateModel.ts b/generateModel.ts
new file mode 100644
index 0000000..db81b93
--- /dev/null
+++ b/generateModel.ts
@@ -0,0 +1,30 @@
+import dotenv from 'dotenv';
+import {generateDeliveryModelsAsync} from "@kontent-ai/model-generator";
+
+
+dotenv.config();
+
+const {VITE_ENVIRONMENT_ID, VITE_MAPI_API_KEY} = process.env;
+
+if(!VITE_ENVIRONMENT_ID){
+ throw new Error("VITE_ENVIRONMENT_ID cannot be empty!");
+}
+
+if(!VITE_MAPI_API_KEY){
+ throw new Error("VITE_MAPI_API_KEY cannot be empty!");
+}
+
+await generateDeliveryModelsAsync(
+ {
+ environmentId: VITE_ENVIRONMENT_ID,
+ apiKey: VITE_MAPI_API_KEY,
+ addTimestamp: false,
+ outputDir: "./src/model",
+ moduleFileExtension: "ts",
+ fileResolvers: {
+ taxonomy: "camelCase",
+ contentType: "camelCase",
+ snippet: "camelCase"
+ }
+ }
+);
\ No newline at end of file
diff --git a/index.html b/index.html
index e4b78ea..b71e8b4 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,11 @@
-
Vite + React + TS
+
+
+
+
+ Kontent.ai Kickstart
diff --git a/package-lock.json b/package-lock.json
index ec8a995..c062d82 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,25 +8,35 @@
"name": "kickstart-react-app",
"version": "0.0.0",
"dependencies": {
+ "@auth0/auth0-react": "^2.2.4",
+ "@kontent-ai/delivery-sdk": "^15.2.0",
+ "@kontent-ai/rich-text-resolver": "^1.2.1",
+ "@portabletext/react": "^3.1.0",
+ "@tanstack/react-query": "^5.59.20",
+ "dotenv": "^16.4.5",
"react": "^18.3.1",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "react-error-boundary": "^4.1.2",
+ "react-router-dom": "^6.28.0"
},
"devDependencies": {
- "@eslint/js": "^8.57.1",
- "@kontent-ai/eslint-config": "^1.0.2",
+ "@eslint/js": "^9.15.0",
+ "@kontent-ai/model-generator": "^8.0.0-11",
+ "@types/node": "^22.9.0",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.3",
"autoprefixer": "^10.4.20",
"dprint": "^0.47.4",
- "eslint": "^8.57.1",
- "eslint-plugin-react-hooks": "^4.6.2",
- "eslint-plugin-react-refresh": "^0.4.13",
+ "eslint": "^9.15.0",
+ "eslint-plugin-react": "^7.37.2",
+ "eslint-plugin-react-hooks": "^5.0.0",
+ "eslint-plugin-react-refresh": "^0.4.14",
"globals": "^15.11.0",
"postcss": "^8.4.47",
"tailwindcss": "^3.4.14",
"typescript": "~5.6.2",
- "typescript-eslint": "^8.10.0",
+ "typescript-eslint": "^8.15.0",
"vite": "^5.4.9"
}
},
@@ -57,6 +67,25 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@auth0/auth0-react": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-2.2.4.tgz",
+ "integrity": "sha512-l29PQC0WdgkCoOc6WeMAY26gsy/yXJICW0jHfj0nz8rZZphYKrLNqTRWFFCMJY+sagza9tSgB1kG/UvQYgGh9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@auth0/auth0-spa-js": "^2.1.3"
+ },
+ "peerDependencies": {
+ "react": "^16.11.0 || ^17 || ^18",
+ "react-dom": "^16.11.0 || ^17 || ^18"
+ }
+ },
+ "node_modules/@auth0/auth0-spa-js": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-2.1.3.tgz",
+ "integrity": "sha512-NMTBNuuG4g3rame1aCnNS5qFYIzsTUV5qTFPRfTyYFS1feS6jsCBR+eTq9YkxCp1yuoM2UIcjunPaoPl77U9xQ==",
+ "license": "MIT"
+ },
"node_modules/@babel/code-frame": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz",
@@ -310,6 +339,18 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/template": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
@@ -888,26 +929,51 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
- "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/@eslint/config-array": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz",
+ "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
+ "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+ "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
"dev": true,
"license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -915,52 +981,94 @@
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.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==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@eslint/js": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "version": "9.15.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz",
+ "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
+ "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.3",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -977,13 +1085,19 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
@@ -1085,23 +1199,90 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@kontent-ai/eslint-config": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@kontent-ai/eslint-config/-/eslint-config-1.0.2.tgz",
- "integrity": "sha512-l8afrftPudGEXL3Jb/y5FjyM/jvBKX251h5KeRBWddYyZiZIset0e1vifQIW2vPTX3E1l698XC3QyV9DTL6B1Q==",
+ "node_modules/@kontent-ai/core-sdk": {
+ "version": "10.8.0",
+ "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.8.0.tgz",
+ "integrity": "sha512-6o5kn+ANhJ7vCucWXunxy1qCSSDsN3F86zdLXzPnFaK/qOf4BJGnPda81Alvnt4N7n4e1m9J7uP0tm3tQ/W25Q==",
+ "license": "MIT",
+ "dependencies": {
+ "axios": "1.7.7"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@kontent-ai/delivery-sdk": {
+ "version": "15.2.0",
+ "resolved": "https://registry.npmjs.org/@kontent-ai/delivery-sdk/-/delivery-sdk-15.2.0.tgz",
+ "integrity": "sha512-ozo7L9TWDlh3Zo3ZsIL9plj7r1QmrMKMLUz4JpTc5nyNF9ZYws3EUjydUpUvjKR7MYm9OeqQcCgiOTSvc9wwdQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@kontent-ai/core-sdk": "10.8.0",
+ "url-parse": "1.5.10",
+ "uuid": "10.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@kontent-ai/management-sdk": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@kontent-ai/management-sdk/-/management-sdk-7.5.1.tgz",
+ "integrity": "sha512-sx7cwRq3kqamKOm3hNk5nZN5b/B1d+OiPBz9mJRJKG9Oz8ovaQsnKPxVDvvBS50fA5B+iiClXZtV0cWq/Hf2cA==",
"dev": true,
- "license": "SEE LICENSE IN LICENSE.md",
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/parser": "^6.19.0"
+ "@kontent-ai/core-sdk": "10.8.0",
+ "mime": "3.0.0"
},
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^6.19.0",
- "eslint": "^8.0.0",
- "eslint-plugin-import": "^2.29.0",
- "eslint-plugin-jest": "^27.0.0",
- "eslint-plugin-react": "^7.0.0",
- "eslint-plugin-react-hooks": "^4.0.0",
- "eslint-plugin-simple-import-sort": "^10.0.0"
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@kontent-ai/model-generator": {
+ "version": "8.0.0-11",
+ "resolved": "https://registry.npmjs.org/@kontent-ai/model-generator/-/model-generator-8.0.0-11.tgz",
+ "integrity": "sha512-ZhtZmIwoTNP/JQ6Bt0i0Fhdvj4x/JA4kCI9h9sPWb3MKl2o9Q4vu05IIfr6Il3DsVpH2gsfNyFnpD/tcfn5pqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@kontent-ai/delivery-sdk": "15.2.0",
+ "@kontent-ai/management-sdk": "7.5.1",
+ "chalk": "5.3.0",
+ "prettier": "3.3.3",
+ "ts-pattern": "5.5.0",
+ "yargs": "17.7.2"
+ },
+ "bin": {
+ "kontent-generate": "dist/lib/cli/app.js"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@kontent-ai/model-generator/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@kontent-ai/rich-text-resolver": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@kontent-ai/rich-text-resolver/-/rich-text-resolver-1.2.1.tgz",
+ "integrity": "sha512-ck3LMxbComoz+UXqoDvHuRJ8WAxWJAeKRCuhqMUY0k0cF+9pV4p2Z6kuUFrCEq0qtyfirTq0akAHhM13zNz/ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@portabletext/to-html": "^2.0.13",
+ "@portabletext/types": "^2.0.13",
+ "node-html-parser": "^6.1.13",
+ "short-unique-id": "^5.2.0"
}
},
"node_modules/@nodelib/fs.scandir": {
@@ -1153,6 +1334,65 @@
"node": ">=14"
}
},
+ "node_modules/@portabletext/react": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@portabletext/react/-/react-3.1.0.tgz",
+ "integrity": "sha512-ZGHlvS+NvId9RSqnflN8xF2KVZgAgD399dK1GaycurnGNZGZYTd5nZmc8by1yL76Ar8n/dbVtouUDJIkO4Tupw==",
+ "license": "MIT",
+ "dependencies": {
+ "@portabletext/toolkit": "^2.0.15",
+ "@portabletext/types": "^2.0.13"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "react": "^17 || ^18 || >=19.0.0-rc"
+ }
+ },
+ "node_modules/@portabletext/to-html": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@portabletext/to-html/-/to-html-2.0.13.tgz",
+ "integrity": "sha512-T3zL+2RcPCPGCp7rRrGrNJnGAqkdlpiOZnb/wh4tjDYJevteGY+5hmA0/5idLXzLiPv6vT8Gld852Sc0aFXwUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@portabletext/toolkit": "^2.0.15",
+ "@portabletext/types": "^2.0.13"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/@portabletext/toolkit": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@portabletext/toolkit/-/toolkit-2.0.16.tgz",
+ "integrity": "sha512-aBvnD8MscoAlEIuZBn0Aksd+oCuoMGFOT3CtHIgRBaac0Vu4YnnMUF45xo/B/T5vmwWcnDXoJEJdn+SKDg1m+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@portabletext/types": "^2.0.13"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/@portabletext/types": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@portabletext/types/-/types-2.0.13.tgz",
+ "integrity": "sha512-5xk5MSyQU9CrDho3Rsguj38jhijhD36Mk8S6mZo3huv6PM+t4M/5kJN2KFIxgvt4ONpvOEs1pVIZAV0cL0Vi+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz",
+ "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
@@ -1377,13 +1617,31 @@
"win32"
]
},
- "node_modules/@rtsao/scc": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
- "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
- "dev": true,
+ "node_modules/@tanstack/query-core": {
+ "version": "5.59.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.20.tgz",
+ "integrity": "sha512-e8vw0lf7KwfGe1if4uPFhvZRWULqHjFcz3K8AebtieXvnMOz5FSzlZe3mTLlPuUBcydCnBRqYs2YJ5ys68wwLg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.59.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.20.tgz",
+ "integrity": "sha512-Zly0egsK0tFdfSbh5/mapSa+Zfc3Et0Zkar7Wo5sQkFzWyB3p3uZWOHR2wrlAEEV2L953eLuDBtbgFvMYiLvUw==",
"license": "MIT",
- "peer": true
+ "dependencies": {
+ "@tanstack/query-core": "5.59.20"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19"
+ }
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
@@ -1442,16 +1700,17 @@
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "node_modules/@types/node": {
+ "version": "22.9.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
+ "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
"dev": true,
"license": "MIT",
- "peer": true
+ "dependencies": {
+ "undici-types": "~6.19.8"
+ }
},
"node_modules/@types/prop-types": {
"version": "15.7.13",
@@ -1481,44 +1740,33 @@
"@types/react": "*"
}
},
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
- "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz",
+ "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
- "@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/type-utils": "6.21.0",
- "@typescript-eslint/utils": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4",
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.15.0",
+ "@typescript-eslint/type-utils": "8.15.0",
+ "@typescript-eslint/utils": "8.15.0",
+ "@typescript-eslint/visitor-keys": "8.15.0",
"graphemer": "^1.4.0",
- "ignore": "^5.2.4",
+ "ignore": "^5.3.1",
"natural-compare": "^1.4.0",
- "semver": "^7.5.4",
- "ts-api-utils": "^1.0.1"
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.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"
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -1526,134 +1774,140 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
- "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz",
+ "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==",
"dev": true,
- "license": "MIT",
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0"
+ "@typescript-eslint/scope-manager": "8.15.0",
+ "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/typescript-estree": "8.15.0",
+ "@typescript-eslint/visitor-keys": "8.15.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
- "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz",
+ "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==",
"dev": true,
"license": "MIT",
- "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/visitor-keys": "8.15.0"
+ },
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
- "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz",
+ "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
+ "@typescript-eslint/typescript-estree": "8.15.0",
+ "@typescript-eslint/utils": "8.15.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"
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz",
+ "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==",
"dev": true,
"license": "MIT",
- "peer": 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.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "semver": "^7.5.4"
- },
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
- "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz",
+ "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==",
"dev": true,
- "license": "MIT",
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "eslint-visitor-keys": "^3.4.1"
+ "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/visitor-keys": "8.15.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": {
+ "node_modules/@typescript-eslint/typescript-estree/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,
"license": "MIT",
- "peer": 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==",
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
- "peer": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1664,13 +1918,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"license": "ISC",
- "peer": true,
"bin": {
"semver": "bin/semver.js"
},
@@ -1678,28 +1931,27 @@
"node": ">=10"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
- "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz",
+ "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==",
"dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.15.0",
+ "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/typescript-estree": "8.15.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -1707,459 +1959,43 @@
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
- "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz",
+ "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0"
+ "@typescript-eslint/types": "8.15.0",
+ "eslint-visitor-keys": "^4.2.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
- "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
- "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz",
+ "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==",
"dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
- "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "6.21.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,
- "license": "MIT",
- "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,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/parser/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz",
- "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "8.11.0",
- "@typescript-eslint/visitor-keys": "8.11.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
- "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/utils": "6.21.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
- "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
- "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
- "dev": true,
- "license": "MIT",
- "peer": 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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
- "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
- "dev": true,
- "license": "MIT",
- "peer": 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.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.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.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
- "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.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,
- "license": "MIT",
- "peer": 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,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/type-utils/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz",
- "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz",
- "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "8.11.0",
- "@typescript-eslint/visitor-keys": "8.11.0",
- "debug": "^4.3.4",
- "fast-glob": "^3.3.2",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/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,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz",
- "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.11.0",
- "@typescript-eslint/types": "8.11.0",
- "@typescript-eslint/typescript-estree": "8.11.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz",
- "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "8.11.0",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.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",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz",
- "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==",
- "dev": true,
- "license": "MIT",
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.25.2",
"@babel/plugin-transform-react-jsx-self": "^7.24.7",
@@ -2175,9 +2011,9 @@
}
},
"node_modules/acorn": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
- "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -2278,7 +2114,6 @@
"integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.5",
"is-array-buffer": "^3.0.4"
@@ -2296,7 +2131,6 @@
"integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -2312,45 +2146,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/array.prototype.findlast": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
"integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
"dev": true,
"license": "MIT",
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.findlastindex": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
- "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -2372,7 +2173,6 @@
"integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -2392,7 +2192,6 @@
"integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -2412,7 +2211,6 @@
"integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -2430,7 +2228,6 @@
"integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"call-bind": "^1.0.5",
@@ -2448,6 +2245,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
"node_modules/autoprefixer": {
"version": "10.4.20",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
@@ -2492,7 +2295,6 @@
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
@@ -2503,6 +2305,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -2523,6 +2336,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2586,7 +2405,6 @@
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -2695,6 +2513,97 @@
"node": ">= 6"
}
},
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/cliui/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -2712,6 +2621,18 @@
"dev": true,
"license": "MIT"
},
+ "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==",
+ "license": "MIT",
+ "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",
@@ -2737,9 +2658,9 @@
"license": "MIT"
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2751,6 +2672,34 @@
"node": ">= 8"
}
},
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -2777,7 +2726,6 @@
"integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -2796,7 +2744,6 @@
"integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -2815,7 +2762,6 @@
"integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -2859,7 +2805,6 @@
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -2878,7 +2823,6 @@
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
@@ -2891,6 +2835,15 @@
"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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -2898,37 +2851,91 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"license": "MIT",
"dependencies": {
- "path-type": "^4.0.0"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "node_modules/dlv": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "license": "Apache-2.0",
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "esutils": "^2.0.2"
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
},
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.4.5",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
+ "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=6.0.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
}
},
"node_modules/dprint": {
@@ -2973,13 +2980,24 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/es-abstract": {
- "version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "version": "1.23.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
+ "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"arraybuffer.prototype.slice": "^1.0.3",
@@ -2996,7 +3014,7 @@
"function.prototype.name": "^1.1.6",
"get-intrinsic": "^1.2.4",
"get-symbol-description": "^1.0.2",
- "globalthis": "^1.0.3",
+ "globalthis": "^1.0.4",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.3",
@@ -3012,10 +3030,10 @@
"is-string": "^1.0.7",
"is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
+ "object-inspect": "^1.13.3",
"object-keys": "^1.1.1",
"object.assign": "^4.1.5",
- "regexp.prototype.flags": "^1.5.2",
+ "regexp.prototype.flags": "^1.5.3",
"safe-array-concat": "^1.1.2",
"safe-regex-test": "^1.0.3",
"string.prototype.trim": "^1.2.9",
@@ -3041,7 +3059,6 @@
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"get-intrinsic": "^1.2.4"
},
@@ -3055,18 +3072,16 @@
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz",
- "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz",
+ "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -3076,6 +3091,7 @@
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"globalthis": "^1.0.4",
+ "gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.3",
"has-symbols": "^1.0.3",
@@ -3093,7 +3109,6 @@
"integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-errors": "^1.3.0"
},
@@ -3107,7 +3122,6 @@
"integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"get-intrinsic": "^1.2.4",
"has-tostringtag": "^1.0.2",
@@ -3123,7 +3137,6 @@
"integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"hasown": "^2.0.0"
}
@@ -3134,7 +3147,6 @@
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -3174,384 +3186,96 @@
"@esbuild/linux-ia32": "0.21.5",
"@esbuild/linux-loong64": "0.21.5",
"@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/eslint": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.1",
- "@humanwhocodes/config-array": "^0.13.0",
- "@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-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
- "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.31.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
- "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@rtsao/scc": "^1.1.0",
- "array-includes": "^3.1.8",
- "array.prototype.findlastindex": "^1.2.5",
- "array.prototype.flat": "^1.3.2",
- "array.prototype.flatmap": "^1.3.2",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.12.0",
- "hasown": "^2.0.2",
- "is-core-module": "^2.15.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.8",
- "object.groupby": "^1.0.3",
- "object.values": "^1.2.0",
- "semver": "^6.3.1",
- "string.prototype.trimend": "^1.0.8",
- "tsconfig-paths": "^3.15.0"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-jest": {
- "version": "27.9.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
- "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/utils": "^5.10.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0",
- "eslint": "^7.0.0 || ^8.0.0",
- "jest": "*"
- },
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- },
- "jest": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-jest/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,
- "license": "MIT",
- "peer": 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/eslint-plugin-jest/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,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/eslint-plugin-jest/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,
- "license": "BSD-2-Clause",
- "peer": 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/eslint-plugin-jest/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,
- "license": "MIT",
- "peer": 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/eslint-plugin-jest/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,
- "license": "MIT",
- "peer": 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"
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
- "node_modules/eslint-plugin-jest/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8.0.0"
+ "node": ">=6"
}
},
- "node_modules/eslint-plugin-jest/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=4.0"
+ "node": ">=0.8.0"
}
},
- "node_modules/eslint-plugin-jest/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "node_modules/eslint": {
+ "version": "9.15.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz",
+ "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==",
"dev": true,
- "license": "ISC",
- "peer": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.19.0",
+ "@eslint/core": "^0.9.0",
+ "@eslint/eslintrc": "^3.2.0",
+ "@eslint/js": "9.15.0",
+ "@eslint/plugin-kit": "^0.2.3",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.1",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.5",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
"bin": {
- "semver": "bin/semver.js"
+ "eslint": "bin/eslint.js"
},
"engines": {
- "node": ">=10"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-react": {
@@ -3560,7 +3284,6 @@
"integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"array-includes": "^3.1.8",
"array.prototype.findlast": "^1.2.5",
@@ -3589,49 +3312,34 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
- "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz",
+ "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
},
"peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-react-refresh": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.13.tgz",
- "integrity": "sha512-f1EppwrpJRWmqDTyvAyomFVDYRtrS7iTEqv3nokETnMiMzs2SSTmKRTACce4O2p4jYyowiSMvpdwC/RLcMFhuQ==",
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz",
+ "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"eslint": ">=7"
}
},
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.5",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
"integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -3644,21 +3352,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-plugin-simple-import-sort": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz",
- "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "peerDependencies": {
- "eslint": ">=5.0.0"
- }
- },
"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==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+ "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -3666,7 +3363,7 @@
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -3751,20 +3448,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "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==",
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=8"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/has-flag": {
@@ -3791,18 +3485,31 @@
}
},
"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==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.14.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^4.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -3916,16 +3623,16 @@
}
},
"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==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/fill-range": {
@@ -3959,34 +3666,52 @@
}
},
"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==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
"license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
"dev": true,
"license": "ISC"
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-callable": "^1.1.3"
}
@@ -4008,6 +3733,20 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/fraction.js": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -4022,13 +3761,6 @@
"url": "https://github.com/sponsors/rawify"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -4060,7 +3792,6 @@
"integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -4080,7 +3811,6 @@
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -4095,13 +3825,22 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@@ -4122,7 +3861,6 @@
"integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.5",
"es-errors": "^1.3.0",
@@ -4135,28 +3873,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -4189,7 +3905,6 @@
"integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-properties": "^1.2.1",
"gopd": "^1.0.1"
@@ -4201,34 +3916,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -4249,7 +3942,6 @@
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -4270,7 +3962,6 @@
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -4284,7 +3975,6 @@
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4298,7 +3988,6 @@
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4312,7 +4001,6 @@
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-symbols": "^1.0.3"
},
@@ -4336,6 +4024,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -4373,32 +4070,12 @@
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/internal-slot": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
"integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"es-errors": "^1.3.0",
"hasown": "^2.0.0",
@@ -4414,7 +4091,6 @@
"integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.1"
@@ -4432,7 +4108,6 @@
"integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -4449,7 +4124,6 @@
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-bigints": "^1.0.1"
},
@@ -4476,7 +4150,6 @@
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -4494,7 +4167,6 @@
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4524,7 +4196,6 @@
"integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-typed-array": "^1.1.13"
},
@@ -4541,7 +4212,6 @@
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -4568,7 +4238,6 @@
"integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -4592,7 +4261,6 @@
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -4622,7 +4290,6 @@
"integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4636,7 +4303,6 @@
"integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4660,7 +4326,6 @@
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -4671,23 +4336,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -4705,7 +4359,6 @@
"integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4719,7 +4372,6 @@
"integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7"
},
@@ -4736,7 +4388,6 @@
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -4753,7 +4404,6 @@
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-symbols": "^1.0.2"
},
@@ -4770,7 +4420,6 @@
"integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"which-typed-array": "^1.1.14"
},
@@ -4787,7 +4436,6 @@
"integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -4801,7 +4449,6 @@
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -4815,7 +4462,6 @@
"integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"get-intrinsic": "^1.2.4"
@@ -4832,8 +4478,7 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
@@ -4848,7 +4493,6 @@
"integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-properties": "^1.2.1",
"get-intrinsic": "^1.2.1",
@@ -4958,7 +4602,6 @@
"integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"array-includes": "^3.1.6",
"array.prototype.flat": "^1.3.1",
@@ -5079,6 +4722,40 @@
"node": ">=8.6"
}
},
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -5092,17 +4769,6 @@
"node": "*"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -5158,6 +4824,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/node-html-parser": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
+ "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "he": "1.2.0"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
@@ -5185,6 +4861,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -5206,12 +4894,11 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -5225,7 +4912,6 @@
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
@@ -5236,7 +4922,6 @@
"integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
@@ -5256,7 +4941,6 @@
"integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -5272,7 +4956,6 @@
"integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -5286,29 +4969,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.groupby": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
- "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/object.values": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
"integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -5321,16 +4987,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -5403,22 +5059,12 @@
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/path-key": {
@@ -5462,16 +5108,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -5518,7 +5154,6 @@
"integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.4"
}
@@ -5696,19 +5331,40 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prettier": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.13.1"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -5719,6 +5375,12 @@
"node": ">=6"
}
},
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -5765,13 +5427,24 @@
"react": "^18.3.1"
}
},
+ "node_modules/react-error-boundary": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.1.2.tgz",
+ "integrity": "sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "peerDependencies": {
+ "react": ">=16.13.1"
+ }
+ },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/react-refresh": {
"version": "0.14.2",
@@ -5783,6 +5456,38 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-router": {
+ "version": "6.28.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz",
+ "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@remix-run/router": "1.21.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.28.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.0.tgz",
+ "integrity": "sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==",
+ "license": "MIT",
+ "dependencies": {
+ "@remix-run/router": "1.21.0",
+ "react-router": "6.28.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -5812,7 +5517,6 @@
"integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -5829,13 +5533,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT"
+ },
"node_modules/regexp.prototype.flags": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
"integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -5849,6 +5558,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -5888,23 +5613,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/rollup": {
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz",
@@ -5971,7 +5679,6 @@
"integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"get-intrinsic": "^1.2.4",
@@ -5991,7 +5698,6 @@
"integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -6029,7 +5735,6 @@
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -6048,7 +5753,6 @@
"integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -6082,13 +5786,22 @@
"node": ">=8"
}
},
+ "node_modules/short-unique-id": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.2.0.tgz",
+ "integrity": "sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==",
+ "license": "Apache-2.0",
+ "bin": {
+ "short-unique-id": "bin/short-unique-id",
+ "suid": "bin/short-unique-id"
+ }
+ },
"node_modules/side-channel": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -6115,16 +5828,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -6211,7 +5914,6 @@
"integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -6239,7 +5941,6 @@
"integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@@ -6251,7 +5952,6 @@
"integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -6271,7 +5971,6 @@
"integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -6287,7 +5986,6 @@
"integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -6327,17 +6025,6 @@
"node": ">=8"
}
},
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -6485,13 +6172,6 @@
"node": ">=14.0.0"
}
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -6529,9 +6209,9 @@
}
},
"node_modules/ts-api-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
- "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz",
+ "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6548,58 +6228,12 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/tsconfig-paths": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
- "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "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,
- "license": "0BSD",
- "peer": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "node_modules/ts-pattern": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.5.0.tgz",
+ "integrity": "sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==",
"dev": true,
- "license": "MIT",
- "peer": 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"
- }
+ "license": "MIT"
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -6614,26 +6248,12 @@
"node": ">= 0.8.0"
}
},
- "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==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/typed-array-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
"integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -6649,7 +6269,6 @@
"integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
@@ -6665,19 +6284,19 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz",
+ "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "is-typed-array": "^1.1.13",
+ "reflect.getprototypeof": "^1.0.6"
},
"engines": {
"node": ">= 0.4"
@@ -6692,7 +6311,6 @@
"integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
@@ -6723,75 +6341,15 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.11.0.tgz",
- "integrity": "sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/eslint-plugin": "8.11.0",
- "@typescript-eslint/parser": "8.11.0",
- "@typescript-eslint/utils": "8.11.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz",
- "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz",
+ "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.11.0",
- "@typescript-eslint/type-utils": "8.11.0",
- "@typescript-eslint/utils": "8.11.0",
- "@typescript-eslint/visitor-keys": "8.11.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.3.1",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
- "eslint": "^8.57.0 || ^9.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz",
- "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "8.11.0",
- "@typescript-eslint/types": "8.11.0",
- "@typescript-eslint/typescript-estree": "8.11.0",
- "@typescript-eslint/visitor-keys": "8.11.0",
- "debug": "^4.3.4"
+ "@typescript-eslint/eslint-plugin": "8.15.0",
+ "@typescript-eslint/parser": "8.15.0",
+ "@typescript-eslint/utils": "8.15.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6809,38 +6367,12 @@
}
}
},
- "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz",
- "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "8.11.0",
- "@typescript-eslint/utils": "8.11.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -6851,6 +6383,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
@@ -6892,6 +6431,16 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -6899,6 +6448,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/uuid": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/vite": {
"version": "5.4.10",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz",
@@ -6981,7 +6543,6 @@
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -6999,7 +6560,6 @@
"integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"function.prototype.name": "^1.1.6",
"has-tostringtag": "^1.0.2",
@@ -7027,7 +6587,6 @@
"integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"is-map": "^2.0.3",
"is-set": "^2.0.3",
@@ -7047,7 +6606,6 @@
"integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
@@ -7209,12 +6767,15 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/yallist": {
"version": "3.1.1",
@@ -7236,6 +6797,57 @@
"node": ">= 14"
}
},
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index f434fc0..9630bc8 100644
--- a/package.json
+++ b/package.json
@@ -6,29 +6,41 @@
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
- "lint": "eslint .",
+ "lint": "eslint ./src",
+ "fmt": "dprint fmt",
+ "fmt:check": "dprint check",
"preview": "vite preview"
},
"dependencies": {
+ "@auth0/auth0-react": "^2.2.4",
+ "@kontent-ai/delivery-sdk": "^15.2.0",
+ "@kontent-ai/rich-text-resolver": "^1.2.1",
+ "@portabletext/react": "^3.1.0",
+ "@tanstack/react-query": "^5.59.20",
+ "dotenv": "^16.4.5",
"react": "^18.3.1",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "react-error-boundary": "^4.1.2",
+ "react-router-dom": "^6.28.0"
},
"devDependencies": {
- "@eslint/js": "^8.57.1",
- "@kontent-ai/eslint-config": "^1.0.2",
+ "@eslint/js": "^9.15.0",
+ "@kontent-ai/model-generator": "^8.0.0-11",
+ "@types/node": "^22.9.0",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.3",
"autoprefixer": "^10.4.20",
"dprint": "^0.47.4",
- "eslint": "^8.57.1",
- "eslint-plugin-react-hooks": "^4.6.2",
- "eslint-plugin-react-refresh": "^0.4.13",
+ "eslint": "^9.15.0",
+ "eslint-plugin-react": "^7.37.2",
+ "eslint-plugin-react-hooks": "^5.0.0",
+ "eslint-plugin-react-refresh": "^0.4.14",
"globals": "^15.11.0",
"postcss": "^8.4.47",
"tailwindcss": "^3.4.14",
"typescript": "~5.6.2",
- "typescript-eslint": "^8.10.0",
+ "typescript-eslint": "^8.15.0",
"vite": "^5.4.9"
}
}
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..14267e9
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Allow: /
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
deleted file mode 100644
index 0a32b06..0000000
--- a/src/App.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-function App() {
- return (
-
- Hello world!
-
- );
-}
-
-export default App;
diff --git a/src/components/Container.tsx b/src/components/Container.tsx
new file mode 100644
index 0000000..b204c3e
--- /dev/null
+++ b/src/components/Container.tsx
@@ -0,0 +1,9 @@
+import { FC, PropsWithChildren } from "react";
+
+const Container: FC = ({ children }) => (
+
+ {children}
+
+);
+
+export default Container;
diff --git a/src/components/Divider.tsx b/src/components/Divider.tsx
new file mode 100644
index 0000000..126b20c
--- /dev/null
+++ b/src/components/Divider.tsx
@@ -0,0 +1,5 @@
+import { FC } from "react";
+
+const Divider: FC = () => ;
+
+export default Divider;
diff --git a/src/components/FeaturedArticle.tsx b/src/components/FeaturedArticle.tsx
new file mode 100644
index 0000000..fc047ce
--- /dev/null
+++ b/src/components/FeaturedArticle.tsx
@@ -0,0 +1,57 @@
+import React from "react";
+import FeaturedComponentBase from "./FeaturedComponentBase";
+import { Article } from "../model";
+import { Replace } from "../utils/types";
+import RenderElement from "./RenderElement";
+
+type FeaturedArticleProps = Readonly<{
+ article: Replace }>;
+}>;
+
+const FeaturedArticle: React.FC = ({ article }) => {
+ const shouldRender = Object.entries(article.elements).length > 0;
+
+ return shouldRender && (
+
+ <>
+
+
+
+ {article.elements.title?.value}
+
+
+
+
+ {article.elements.publish_date?.value
+ && `Published on ${
+ new Date(article.elements.publish_date.value!).toLocaleDateString("en-US", {
+ month: "short",
+ year: "numeric",
+ day: "numeric",
+ })
+ }`}
+
+
+
+
+ {article.elements.introduction?.value}
+
+
+
+
+ Read more
+
+ >
+
+ );
+};
+
+export default FeaturedArticle;
diff --git a/src/components/FeaturedComponentBase.tsx b/src/components/FeaturedComponentBase.tsx
new file mode 100644
index 0000000..30db18f
--- /dev/null
+++ b/src/components/FeaturedComponentBase.tsx
@@ -0,0 +1,41 @@
+import { Elements } from "@kontent-ai/delivery-sdk";
+import { FC, PropsWithChildren } from "react";
+import RenderElement from "./RenderElement";
+
+type FeaturedContentProps = PropsWithChildren<
+ Readonly<{
+ type: "article" | "event";
+ image?: Elements.AssetsElement;
+ }>
+>;
+
+const FeaturedComponentBase: FC = ({ type, image, children }) => {
+ const img = image?.value[0];
+ return (
+
+
+
+ {img && (
+ <>
+
+ {type === "event" ? "FEATURED EVENT" : "FEATURED ARTICLE"}
+
+
+ >
+ )}
+
+
+
+ {children}
+
+
+ );
+};
+
+export default FeaturedComponentBase;
diff --git a/src/components/FeaturedContent.tsx b/src/components/FeaturedContent.tsx
new file mode 100644
index 0000000..8f0c232
--- /dev/null
+++ b/src/components/FeaturedContent.tsx
@@ -0,0 +1,37 @@
+import { FC } from "react";
+import { isArticle, isEvent, LandingPage } from "../model";
+import PageSection from "./PageSection";
+import FeaturedArticle from "./FeaturedArticle";
+import FeaturedEvent from "./FeaturedEvent";
+import Divider from "./Divider";
+
+type FeaturedContentProps = {
+ featuredContent: LandingPage["elements"]["featured_content"];
+};
+
+const FeaturedContent: FC = ({ featuredContent }) => {
+ const featuredArticle = featuredContent.linkedItems.find(isArticle);
+ const featuredEvent = featuredContent.linkedItems.find(isEvent);
+
+ return (
+ <>
+ {featuredArticle
+ && (
+
+
+
+ )}
+
+ {featuredArticle && featuredEvent && }
+
+ {featuredEvent
+ && (
+
+
+
+ )}
+ >
+ );
+};
+
+export default FeaturedContent;
diff --git a/src/components/FeaturedEvent.tsx b/src/components/FeaturedEvent.tsx
new file mode 100644
index 0000000..fb8dc8d
--- /dev/null
+++ b/src/components/FeaturedEvent.tsx
@@ -0,0 +1,81 @@
+import { FC } from "react";
+import FeaturedComponentBase from "./FeaturedComponentBase";
+import { Event } from "../model";
+import { formatDate } from "../utils/date";
+import { browserParse, transformToPortableText } from "@kontent-ai/rich-text-resolver";
+import { PortableText } from "@portabletext/react";
+import { defaultPortableRichTextComponents } from "../utils/richtext";
+import { Replace } from "../utils/types";
+import RenderElement from "./RenderElement";
+
+type FeaturedEventProps = Readonly<{
+ event: Replace }>;
+}>;
+
+const FeaturedEvent: FC = ({ event }) => {
+ const createTag = (text: string) => (
+
+ );
+
+ const shouldRender = Object.entries(event.elements).length > 0;
+
+ return shouldRender
+ ? (
+
+ <>
+
+
+
+ {event.elements.name?.value}
+
+
+
+
+ {`${
+ event.elements.start_date?.value?.length
+ ? formatDate(event.elements.start_date?.value as string)
+ : ""
+ }${
+ event.elements.end_date?.value?.length
+ ? ` - ${formatDate(event.elements.end_date?.value as string)}`
+ : ""
+ }`}
+
+
+
+ {event.elements.event_type?.value.map(t => createTag(t.name.toUpperCase()))}
+ {event.elements.event_topic?.value.map(t => createTag(t.name.toUpperCase()))}
+
+
(
+
+ )}
+ >
+
+
+ {event.elements.description?.value !== "
" && (
+
+ Read more
+
+ )}
+ >
+
+ )
+ : <>>;
+};
+
+export default FeaturedEvent;
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
new file mode 100644
index 0000000..1a4a582
--- /dev/null
+++ b/src/components/Footer.tsx
@@ -0,0 +1,17 @@
+import { FC } from "react";
+import Logo from "./Logo";
+import Navigation from "./Navigation";
+import Divider from "./Divider";
+
+const Footer: FC = () => (
+
+);
+
+export default Footer;
diff --git a/src/components/Header.tsx b/src/components/Header.tsx
new file mode 100644
index 0000000..abaa92d
--- /dev/null
+++ b/src/components/Header.tsx
@@ -0,0 +1,16 @@
+import Container from "./Container";
+import Logo from "./Logo";
+import Navigation from "./Navigation";
+
+const Header: React.FC = () => {
+ return (
+
+
+
+
+
+
+ );
+};
+
+export default Header;
diff --git a/src/components/HeroImage.tsx b/src/components/HeroImage.tsx
new file mode 100644
index 0000000..a01a41b
--- /dev/null
+++ b/src/components/HeroImage.tsx
@@ -0,0 +1,46 @@
+import { Elements } from "@kontent-ai/delivery-sdk";
+import { FC } from "react";
+import RenderElement from "./RenderElement";
+
+type HeroImageProps = Readonly<{
+ data: {
+ headline?: Elements.TextElement;
+ subheadline?: Elements.TextElement;
+ heroImage?: Elements.AssetsElement;
+ };
+}>;
+
+const HeroImage: FC = ({ data }) => {
+ return (
+
+
+
+
+ {data.headline?.value}
+
+
+
+ {data.subheadline?.value}
+
+
+
+
+ {data.heroImage?.value[0]
+ ? (
+
+
+ )
+ : <>>}
+
+
+
+ );
+};
+
+export default HeroImage;
diff --git a/src/components/Loader.tsx b/src/components/Loader.tsx
new file mode 100644
index 0000000..d87212c
--- /dev/null
+++ b/src/components/Loader.tsx
@@ -0,0 +1,7 @@
+const Loader = (): JSX.Element => {
+ return (
+
+ );
+};
+
+export default Loader;
diff --git a/src/components/Logo.tsx b/src/components/Logo.tsx
new file mode 100644
index 0000000..0acb061
--- /dev/null
+++ b/src/components/Logo.tsx
@@ -0,0 +1,13 @@
+import { FC } from "react";
+
+const Logo: FC = () => (
+
+);
+
+export default Logo;
diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx
new file mode 100644
index 0000000..ac478fc
--- /dev/null
+++ b/src/components/Navigation.tsx
@@ -0,0 +1,19 @@
+import { FC } from "react";
+
+const Navigation: FC = () => {
+ const createMenuLink = (name: string) => (
+
+ {name}
+
+ );
+
+ return (
+
+
+ {["Solutions", "Products", "Pricing", "Contact", "Our Company"].map(createMenuLink)}
+
+
+ );
+};
+
+export default Navigation;
diff --git a/src/components/PageContent.tsx b/src/components/PageContent.tsx
new file mode 100644
index 0000000..dd1e9fd
--- /dev/null
+++ b/src/components/PageContent.tsx
@@ -0,0 +1,40 @@
+import { FC } from "react";
+import { PortableText, PortableTextReactComponents, PortableTextTypeComponentProps } from "@portabletext/react";
+import { Elements } from "@kontent-ai/delivery-sdk";
+import { LandingPage, Video as VideoElement } from "../model";
+import Video from "./Video";
+import { browserParse, PortableTextComponent, transformToPortableText } from "@kontent-ai/rich-text-resolver";
+import { defaultPortableRichTextComponents } from "../utils/richtext";
+
+type PageContentProps = {
+ body: LandingPage["elements"]["body_copy"];
+};
+
+const PageContent: FC = ({ body }) => {
+ const parsedTree = browserParse(body.value);
+ const portableText = transformToPortableText(parsedTree);
+
+ return (
+
+ );
+};
+
+const createPortableTextComponents = (
+ element: Elements.RichTextElement,
+): Partial => ({
+ ...defaultPortableRichTextComponents,
+ types: {
+ component: ({ value }: PortableTextTypeComponentProps) => {
+ const item = element.linkedItems.find(item => item.system.codename === value.component._ref);
+ if (!item) {
+ return Did not find any item with codename {value.component._ref}
;
+ }
+
+ return ;
+ },
+ },
+});
+
+export default PageContent;
diff --git a/src/components/PageSection.tsx b/src/components/PageSection.tsx
new file mode 100644
index 0000000..12d3070
--- /dev/null
+++ b/src/components/PageSection.tsx
@@ -0,0 +1,18 @@
+import { FC, PropsWithChildren } from "react";
+import Container from "./Container";
+
+type PageSectionProps = PropsWithChildren<
+ Readonly<{
+ color: string;
+ }>
+>;
+
+const PageSection: FC = ({ children, color }) => (
+
+
+ {children}
+
+
+);
+
+export default PageSection;
diff --git a/src/components/RenderElement.tsx b/src/components/RenderElement.tsx
new file mode 100644
index 0000000..504ac77
--- /dev/null
+++ b/src/components/RenderElement.tsx
@@ -0,0 +1,75 @@
+import { Elements } from "@kontent-ai/delivery-sdk";
+import type { FC, ReactNode } from "react";
+import { ElementCodenames } from "../model";
+
+type AllElementsUnion =
+ | Elements.TextElement
+ | Elements.LinkedItemsElement
+ | Elements.MultipleChoiceElement
+ | Elements.DateTimeElement
+ | Elements.RichTextElement
+ | Elements.NumberElement
+ | Elements.AssetsElement
+ | Elements.UrlSlugElement
+ | Elements.TaxonomyElement
+ | Elements.CustomElement;
+
+type ElementTypeUnion =
+ | "text"
+ | "number"
+ | "modular_content"
+ | "asset"
+ | "date_time"
+ | "rich_text"
+ | "multiple_choice"
+ | "url_slug"
+ | "taxonomy"
+ | "custom";
+
+type RenderElementProps = {
+ element?: AllElementsUnion;
+ elementCodename: ElementCodenames;
+ requiredElementType: ElementTypeUnion;
+ errorMessageClassName?: string;
+ children?: ReactNode | (() => ReactNode);
+};
+
+const RenderElement: FC = (props) => {
+ if (!props.element) {
+ return (
+
+ Missing or invalid element codename{" "}
+
+ {props.elementCodename}
+ . To learn more about codenames refer to the{" "}
+
+ Kontent.ai documentation
+ .
+
+ );
+ }
+
+ if (props.element.type !== props.requiredElementType) {
+ return (
+
+ Invalid type of element with codename{" "}
+
+ {props.elementCodename}
+
+ {". "}
+ Required type of element: {props.requiredElementType} . Actual type: {props.element.type} .
+
+ );
+ }
+
+ if (typeof props.children === "function") {
+ return props.children();
+ }
+
+ return <>{props.children}>;
+};
+
+export default RenderElement;
diff --git a/src/components/Video.tsx b/src/components/Video.tsx
new file mode 100644
index 0000000..83f4b73
--- /dev/null
+++ b/src/components/Video.tsx
@@ -0,0 +1,51 @@
+import { FC } from "react";
+import { Video as VideoType } from "../model";
+import { Replace } from "../utils/types";
+import RenderElement from "./RenderElement";
+
+type VideoProps = {
+ video: Replace }>;
+};
+
+const Video: FC = ({ video }) => {
+ return (
+
+
+
+ {video.elements.headline?.value}
+
+
+
+
+ {video.elements.description?.value}
+
+
+
+ {video.elements.video_link?.value
+ ? (
+
+
+
+
+ {video.elements.caption?.value}
+
+
+
+ )
+ : <>>}
+
+
+ );
+};
+
+export default Video;
diff --git a/src/components/auth/AuthProviderWithRedirect.tsx b/src/components/auth/AuthProviderWithRedirect.tsx
new file mode 100644
index 0000000..1fe1ab5
--- /dev/null
+++ b/src/components/auth/AuthProviderWithRedirect.tsx
@@ -0,0 +1,29 @@
+import { Auth0Provider } from "@auth0/auth0-react";
+import { FC, PropsWithChildren } from "react";
+import { useNavigate } from "react-router-dom";
+
+const Auth0ProviderWithRedirect: FC> = ({ children }) => {
+ const navigate = useNavigate();
+
+ const onRedirectCallback = () => {
+ navigate("/");
+ };
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default Auth0ProviderWithRedirect;
diff --git a/src/context/AppContext.tsx b/src/context/AppContext.tsx
new file mode 100644
index 0000000..9fa825a
--- /dev/null
+++ b/src/context/AppContext.tsx
@@ -0,0 +1,62 @@
+import { useAuth0 } from "@auth0/auth0-react";
+import { useSuspenseQuery } from "@tanstack/react-query";
+import { createContext, FC, PropsWithChildren, useContext } from "react";
+import { useParams } from "react-router-dom";
+import { loadPreviewApiKey } from "../utils/api";
+
+type AppContext = {
+ environmentId: string;
+ apiKey: string;
+};
+
+const defaultAppContext: AppContext = {
+ environmentId: import.meta.env.VITE_ENVIRONMENT_ID!,
+ apiKey: import.meta.env.VITE_DELIVERY_API_KEY!,
+};
+
+const AppContext = createContext(defaultAppContext);
+
+export const useAppContext = () => useContext(AppContext);
+
+export const AppContextComponent: FC = ({ children }) => {
+ const { envId } = useParams();
+ const { getAccessTokenSilently, loginWithRedirect } = useAuth0();
+
+ const contextData = useSuspenseQuery({
+ queryKey: [`env-data${envId ? `-${envId}` : ""}`],
+ queryFn: () => {
+ if (!envId) {
+ return defaultAppContext;
+ }
+ return getAccessTokenSilently()
+ .then(res => {
+ return loadPreviewApiKey({
+ accessToken: res,
+ environmentId: envId,
+ });
+ })
+ .then(res => {
+ if (!res) {
+ throw new Error("Could not obtain preview API KEY");
+ }
+
+ return { environmentId: envId, apiKey: res };
+ })
+ .catch(err => {
+ if (err.error === "login_required") {
+ loginWithRedirect();
+ }
+ if (err.error === "consent_required") {
+ loginWithRedirect();
+ }
+ throw err;
+ });
+ },
+ });
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/src/index.css b/src/index.css
index bd6213e..b5c61c9 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,3 +1,3 @@
@tailwind base;
@tailwind components;
-@tailwind utilities;
\ No newline at end of file
+@tailwind utilities;
diff --git a/src/main.tsx b/src/main.tsx
index 4aff025..735bb59 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,9 +1,58 @@
-import { StrictMode } from 'react'
-import { createRoot } from 'react-dom/client'
-import App from './App.tsx'
+import { StrictMode, Suspense } from "react";
+import { createRoot } from "react-dom/client";
+import LandingPage from "./pages/LandingPage.tsx";
+import { AppContextComponent } from "./context/AppContext.tsx";
+import { createBrowserRouter, RouterProvider } from "react-router-dom";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import Auth0ProviderWithRedirect from "./components/auth/AuthProviderWithRedirect.tsx";
+import Loader from "./components/Loader.tsx";
+import { ErrorBoundary } from "react-error-boundary";
-createRoot(document.getElementById('root')!).render(
+const queryClient = new QueryClient();
+
+const router = createBrowserRouter([
+ {
+ path: "/",
+ element: (
+
+
+
+
+
+ ),
+ },
+ {
+ path: "/:envId",
+ element: (
+
+
+ (
+
+ There was an error!
{error.message}
+
+ )}
+ >
+
+
+
+ }
+ >
+
+
+
+
+
+
+
+ ),
+ },
+]);
+
+createRoot(document.getElementById("root")!).render(
-
+
,
-)
+);
diff --git a/src/model/content-type-snippets/index.ts b/src/model/content-type-snippets/index.ts
new file mode 100644
index 0000000..8b0bae8
--- /dev/null
+++ b/src/model/content-type-snippets/index.ts
@@ -0,0 +1,16 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+export {};
diff --git a/src/model/content-types/article.ts b/src/model/content-types/article.ts
new file mode 100644
index 0000000..067a590
--- /dev/null
+++ b/src/model/content-types/article.ts
@@ -0,0 +1,86 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { Elements } from '@kontent-ai/delivery-sdk';
+import type { CoreContentType } from '../system/index.ts';
+
+/**
+ * Article
+ *
+ * Id: decfd6d7-5392-4740-bdb7-f689264713bb
+ * Codename: article
+ */
+export type Article = CoreContentType<
+ {
+ /**
+ * Title
+ *
+ * Type: text
+ * Required: false
+ * Codename: title
+ * Id: 6715c085-15e3-411f-adb6-94f2b08013cc
+ */
+ readonly title: Elements.TextElement;
+ /**
+ * Introduction
+ *
+ * Type: text
+ * Required: false
+ * Codename: introduction
+ * Id: 05ec475e-bb61-4572-8ce0-5eec942925dd
+ */
+ readonly introduction: Elements.TextElement;
+ /**
+ * Image
+ *
+ * Type: asset
+ * Required: false
+ * Codename: image
+ * Id: f9763b82-4733-4a4e-8aac-e695ea97412e
+ */
+ readonly image: Elements.AssetsElement;
+ /**
+ * Body Copy
+ *
+ * Type: rich_text
+ * Required: false
+ * Codename: body_copy
+ * Id: f538ae1c-2d68-40a8-91f8-f276b0237152
+ */
+ readonly body_copy: Elements.RichTextElement;
+ /**
+ * Publish Date
+ *
+ * Type: date_time
+ * Required: false
+ * Codename: publish_date
+ * Id: 0e33b980-1d7a-405e-b02a-3ab76fcffc3b
+ */
+ readonly publish_date: Elements.DateTimeElement;
+ },
+ 'article'
+>;
+
+/**
+ * Type representing all available element codenames for Article
+ */
+export type ArticleElementCodenames = 'title' | 'introduction' | 'image' | 'body_copy' | 'publish_date';
+
+/**
+ * Type guard for Article
+ */
+export function isArticle(item: CoreContentType | undefined | null): item is Article {
+ return item?.system?.type === 'article';
+}
diff --git a/src/model/content-types/event.ts b/src/model/content-types/event.ts
new file mode 100644
index 0000000..06e5556
--- /dev/null
+++ b/src/model/content-types/event.ts
@@ -0,0 +1,105 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { Elements } from '@kontent-ai/delivery-sdk';
+import type { CoreContentType } from '../system/index.ts';
+import type { EventType, Topics } from '../taxonomies/index.ts';
+
+/**
+ * Event
+ *
+ * Id: 446d4c1e-5049-4e45-ae1c-4284e660fe68
+ * Codename: event
+ */
+export type Event = CoreContentType<
+ {
+ /**
+ * Name
+ *
+ * Type: text
+ * Required: false
+ * Codename: name
+ * Id: 42ee07e2-3b03-4795-9843-da0731645a20
+ */
+ readonly name: Elements.TextElement;
+ /**
+ * Description
+ *
+ * Type: rich_text
+ * Required: false
+ * Codename: description
+ * Id: a30856f6-4700-48ec-b009-f1b24f4b41c2
+ */
+ readonly description: Elements.RichTextElement;
+ /**
+ * Image
+ *
+ * Type: asset
+ * Required: false
+ * Codename: image
+ * Id: 3e1b3668-0605-4f19-a689-a088448d49c0
+ */
+ readonly image: Elements.AssetsElement;
+ /**
+ * Start date
+ *
+ * Type: date_time
+ * Required: false
+ * Codename: start_date
+ * Id: 980d800f-cd12-43a0-ab4c-5c0e50cea0b9
+ */
+ readonly start_date: Elements.DateTimeElement;
+ /**
+ * End Date
+ *
+ * Type: date_time
+ * Required: false
+ * Codename: end_date
+ * Id: c33d2553-e161-4b2f-81e2-43f06c945f08
+ */
+ readonly end_date: Elements.DateTimeElement;
+ /**
+ * Event Type
+ *
+ * Type: taxonomy
+ * Required: false
+ * Codename: event_type
+ * Id: b36909a0-b8f2-4f09-9676-795ea5ce49f7
+ */
+ readonly event_type: Elements.TaxonomyElement;
+ /**
+ * Topics
+ *
+ * Type: taxonomy
+ * Required: false
+ * Codename: event_topic
+ * Id: 6ab84c72-0db5-4c09-88f8-d9bdefbc9849
+ */
+ readonly event_topic: Elements.TaxonomyElement;
+ },
+ 'event'
+>;
+
+/**
+ * Type representing all available element codenames for Event
+ */
+export type EventElementCodenames = 'name' | 'description' | 'image' | 'start_date' | 'end_date' | 'event_type' | 'event_topic';
+
+/**
+ * Type guard for Event
+ */
+export function isEvent(item: CoreContentType | undefined | null): item is Event {
+ return item?.system?.type === 'event';
+}
diff --git a/src/model/content-types/index.ts b/src/model/content-types/index.ts
new file mode 100644
index 0000000..5aba861
--- /dev/null
+++ b/src/model/content-types/index.ts
@@ -0,0 +1,19 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+export * from './article.ts';
+export * from './event.ts';
+export * from './landingPage.ts';
+export * from './video.ts';
diff --git a/src/model/content-types/landingPage.ts b/src/model/content-types/landingPage.ts
new file mode 100644
index 0000000..9a6f6bf
--- /dev/null
+++ b/src/model/content-types/landingPage.ts
@@ -0,0 +1,87 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { Elements } from '@kontent-ai/delivery-sdk';
+import type { CoreContentType } from '../system/index.ts';
+import type { Video, Event, Article } from './index.ts';
+
+/**
+ * Landing Page
+ *
+ * Id: 9c8cf106-199f-4535-856b-a66e97399b42
+ * Codename: landing_page
+ */
+export type LandingPage = CoreContentType<
+ {
+ /**
+ * Headline
+ *
+ * Type: text
+ * Required: false
+ * Codename: headline
+ * Id: 3c5fca8b-a024-42fe-b2ec-eb2d2f8e6ca8
+ */
+ readonly headline: Elements.TextElement;
+ /**
+ * Subheadline
+ *
+ * Type: text
+ * Required: false
+ * Codename: subheadline
+ * Id: a19250b6-c8e1-4871-bf83-956e95782d7c
+ */
+ readonly subheadline: Elements.TextElement;
+ /**
+ * Hero Image
+ *
+ * Type: asset
+ * Required: false
+ * Codename: hero_image
+ * Id: 9f33cab3-4496-489a-8b36-0a602b3b41a3
+ */
+ readonly hero_image: Elements.AssetsElement;
+ /**
+ * Body Copy
+ *
+ * Type: rich_text
+ * Required: false
+ * Codename: body_copy
+ * Id: d52b6c00-2b3d-4978-b5d8-f80703601f20
+ */
+ readonly body_copy: Elements.RichTextElement;
+ /**
+ * Featured Content
+ *
+ * Type: modular_content
+ * Required: false
+ * Codename: featured_content
+ * Id: 3c1157eb-c8f0-4a2b-b434-023dff40e5d4
+ */
+ readonly featured_content: Elements.LinkedItemsElement;
+ },
+ 'landing_page'
+>;
+
+/**
+ * Type representing all available element codenames for Landing Page
+ */
+export type LandingPageElementCodenames = 'headline' | 'subheadline' | 'hero_image' | 'body_copy' | 'featured_content';
+
+/**
+ * Type guard for Landing Page
+ */
+export function isLandingPage(item: CoreContentType | undefined | null): item is LandingPage {
+ return item?.system?.type === 'landing_page';
+}
diff --git a/src/model/content-types/landing_page.ts b/src/model/content-types/landing_page.ts
new file mode 100644
index 0000000..49febb7
--- /dev/null
+++ b/src/model/content-types/landing_page.ts
@@ -0,0 +1,87 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-5'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { Elements } from '@kontent-ai/delivery-sdk';
+import type { CoreContentType } from '../system/index.ts';
+import type { Video, Event, Article } from './index.ts';
+
+/**
+ * Landing Page
+ *
+ * Id: 9c8cf106-199f-4535-856b-a66e97399b42
+ * Codename: landing_page
+ */
+export type LandingPage = CoreContentType<
+ {
+ /**
+ * Headline
+ *
+ * Type: text
+ * Required: false
+ * Codename: headline
+ * Id: 3c5fca8b-a024-42fe-b2ec-eb2d2f8e6ca8
+ */
+ readonly headline: Elements.TextElement;
+ /**
+ * Subheadline
+ *
+ * Type: text
+ * Required: false
+ * Codename: subheadline
+ * Id: a19250b6-c8e1-4871-bf83-956e95782d7c
+ */
+ readonly subheadline: Elements.TextElement;
+ /**
+ * Hero Image
+ *
+ * Type: asset
+ * Required: false
+ * Codename: hero_image
+ * Id: 9f33cab3-4496-489a-8b36-0a602b3b41a3
+ */
+ readonly hero_image: Elements.AssetsElement;
+ /**
+ * Body Copy
+ *
+ * Type: rich_text
+ * Required: false
+ * Codename: body_copy
+ * Id: d52b6c00-2b3d-4978-b5d8-f80703601f20
+ */
+ readonly body_copy: Elements.RichTextElement;
+ /**
+ * Featured Content
+ *
+ * Type: modular_content
+ * Required: false
+ * Codename: featured_content
+ * Id: 3c1157eb-c8f0-4a2b-b434-023dff40e5d4
+ */
+ readonly featured_content: Elements.LinkedItemsElement;
+ },
+ 'landing_page'
+>;
+
+/**
+ * Type representing all available element codenames for Landing Page
+ */
+export type LandingPageElementCodenames = 'headline' | 'subheadline' | 'hero_image' | 'body_copy' | 'featured_content';
+
+/**
+ * Type guard for Landing Page
+ */
+export function isLandingPage(item: CoreContentType): item is LandingPage {
+ return item.system.type === 'landing_page';
+}
diff --git a/src/model/content-types/video.ts b/src/model/content-types/video.ts
new file mode 100644
index 0000000..fb33c03
--- /dev/null
+++ b/src/model/content-types/video.ts
@@ -0,0 +1,86 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { Elements } from '@kontent-ai/delivery-sdk';
+import type { CoreContentType } from '../system/index.ts';
+
+/**
+ * Video
+ *
+ * Id: fe811adb-4000-4563-b4f7-7d00371e820c
+ * Codename: video
+ */
+export type Video = CoreContentType<
+ {
+ /**
+ * Headline
+ *
+ * Type: text
+ * Required: false
+ * Codename: headline
+ * Id: 5e1bf371-2032-4e14-a074-a4803f1ee368
+ */
+ readonly headline: Elements.TextElement;
+ /**
+ * Description
+ *
+ * Type: text
+ * Required: false
+ * Codename: description
+ * Id: 1824fdaa-4466-4abf-bd42-31aa3156444d
+ */
+ readonly description: Elements.TextElement;
+ /**
+ * Video Link
+ *
+ * Type: text
+ * Required: false
+ * Codename: video_link
+ * Id: bfaf2724-4821-40b8-a859-e44ddc68bebd
+ */
+ readonly video_link: Elements.TextElement;
+ /**
+ * Caption
+ *
+ * Type: text
+ * Required: false
+ * Codename: caption
+ * Id: c93e998a-74f8-44ec-b071-bd2f9b21d561
+ */
+ readonly caption: Elements.TextElement;
+ /**
+ * Autoplay
+ *
+ * Type: multiple_choice
+ * Required: false
+ * Codename: autoplay
+ * Id: 66b1191c-9114-4c89-aec9-f54fcaaecb36
+ */
+ readonly autoplay: Elements.MultipleChoiceElement<'true' | 'false'>;
+ },
+ 'video'
+>;
+
+/**
+ * Type representing all available element codenames for Video
+ */
+export type VideoElementCodenames = 'headline' | 'description' | 'video_link' | 'caption' | 'autoplay';
+
+/**
+ * Type guard for Video
+ */
+export function isVideo(item: CoreContentType | undefined | null): item is Video {
+ return item?.system?.type === 'video';
+}
diff --git a/src/model/index.ts b/src/model/index.ts
new file mode 100644
index 0000000..27fe882
--- /dev/null
+++ b/src/model/index.ts
@@ -0,0 +1,19 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+export * from './content-type-snippets/index.ts';
+export * from './content-types/index.ts';
+export * from './system/index.ts';
+export * from './taxonomies/index.ts';
diff --git a/src/model/project/assetFolders.ts b/src/model/project/assetFolders.ts
new file mode 100644
index 0000000..2fda6b5
--- /dev/null
+++ b/src/model/project/assetFolders.ts
@@ -0,0 +1,4 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const assetFolders = {} as const;
diff --git a/src/model/project/collections.ts b/src/model/project/collections.ts
new file mode 100644
index 0000000..5761283
--- /dev/null
+++ b/src/model/project/collections.ts
@@ -0,0 +1,13 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const collections = {
+ /**
+ * Default
+ */
+ default: {
+ codename: "default",
+ id: "00000000-0000-0000-0000-000000000000",
+ name: "Default",
+ },
+} as const;
diff --git a/src/model/project/contentTypeSnippets.ts b/src/model/project/contentTypeSnippets.ts
new file mode 100644
index 0000000..51b9bf4
--- /dev/null
+++ b/src/model/project/contentTypeSnippets.ts
@@ -0,0 +1,4 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const contentTypeSnippets = {} as const;
diff --git a/src/model/project/contentTypes.ts b/src/model/project/contentTypes.ts
new file mode 100644
index 0000000..79f8180
--- /dev/null
+++ b/src/model/project/contentTypes.ts
@@ -0,0 +1,302 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const contentTypes = {
+ /**
+ * Article
+ */
+ article: {
+ codename: "article",
+ id: "decfd6d7-5392-4740-bdb7-f689264713bb",
+ externalId: undefined,
+ name: "Article",
+ elements: {
+ /**
+ * Body Copy (rich_text)
+ */
+ body_copy: {
+ codename: "body_copy",
+ id: "f538ae1c-2d68-40a8-91f8-f276b0237152",
+ externalId: undefined,
+ name: "Body Copy",
+ required: false,
+ type: "rich_text",
+ },
+
+ /**
+ * Image (asset)
+ */
+ image: {
+ codename: "image",
+ id: "f9763b82-4733-4a4e-8aac-e695ea97412e",
+ externalId: undefined,
+ name: "Image",
+ required: false,
+ type: "asset",
+ },
+
+ /**
+ * Introduction (text)
+ */
+ introduction: {
+ codename: "introduction",
+ id: "05ec475e-bb61-4572-8ce0-5eec942925dd",
+ externalId: undefined,
+ name: "Introduction",
+ required: false,
+ type: "text",
+ },
+
+ /**
+ * Publish Date (date_time)
+ */
+ publish_date: {
+ codename: "publish_date",
+ id: "0e33b980-1d7a-405e-b02a-3ab76fcffc3b",
+ externalId: undefined,
+ name: "Publish Date",
+ required: false,
+ type: "date_time",
+ },
+
+ /**
+ * Title (text)
+ */
+ title: {
+ codename: "title",
+ id: "6715c085-15e3-411f-adb6-94f2b08013cc",
+ externalId: undefined,
+ name: "Title",
+ required: false,
+ type: "text",
+ },
+ },
+ },
+
+ /**
+ * Event
+ */
+ event: {
+ codename: "event",
+ id: "446d4c1e-5049-4e45-ae1c-4284e660fe68",
+ externalId: undefined,
+ name: "Event",
+ elements: {
+ /**
+ * Asset (asset)
+ */
+ asset: {
+ codename: "asset",
+ id: "3e1b3668-0605-4f19-a689-a088448d49c0",
+ externalId: undefined,
+ name: "Asset",
+ required: false,
+ type: "asset",
+ },
+
+ /**
+ * Description (rich_text)
+ */
+ description: {
+ codename: "description",
+ id: "a30856f6-4700-48ec-b009-f1b24f4b41c2",
+ externalId: undefined,
+ name: "Description",
+ required: false,
+ type: "rich_text",
+ },
+
+ /**
+ * End Date (date_time)
+ */
+ end_date: {
+ codename: "end_date",
+ id: "c33d2553-e161-4b2f-81e2-43f06c945f08",
+ externalId: undefined,
+ name: "End Date",
+ required: false,
+ type: "date_time",
+ },
+
+ /**
+ * Topics (taxonomy)
+ */
+ event_topic: {
+ codename: "event_topic",
+ id: "6ab84c72-0db5-4c09-88f8-d9bdefbc9849",
+ externalId: undefined,
+ name: "Event Topic",
+ required: false,
+ type: "taxonomy",
+ },
+
+ /**
+ * Event Type (taxonomy)
+ */
+ event_type: {
+ codename: "event_type",
+ id: "b36909a0-b8f2-4f09-9676-795ea5ce49f7",
+ externalId: undefined,
+ name: "Event Type",
+ required: false,
+ type: "taxonomy",
+ },
+
+ /**
+ * Name (text)
+ */
+ name: {
+ codename: "name",
+ id: "42ee07e2-3b03-4795-9843-da0731645a20",
+ externalId: undefined,
+ name: "Name",
+ required: false,
+ type: "text",
+ },
+
+ /**
+ * Start date (date_time)
+ */
+ start_date: {
+ codename: "start_date",
+ id: "980d800f-cd12-43a0-ab4c-5c0e50cea0b9",
+ externalId: undefined,
+ name: "Start date",
+ required: false,
+ type: "date_time",
+ },
+ },
+ },
+
+ /**
+ * Landing Page
+ */
+ landing_page: {
+ codename: "landing_page",
+ id: "9c8cf106-199f-4535-856b-a66e97399b42",
+ externalId: undefined,
+ name: "Landing Page",
+ elements: {
+ /**
+ * Body Copy (rich_text)
+ */
+ body_copy: {
+ codename: "body_copy",
+ id: "d52b6c00-2b3d-4978-b5d8-f80703601f20",
+ externalId: undefined,
+ name: "Body Copy",
+ required: false,
+ type: "rich_text",
+ },
+
+ /**
+ * Featured Content (modular_content)
+ */
+ featured_content: {
+ codename: "featured_content",
+ id: "3c1157eb-c8f0-4a2b-b434-023dff40e5d4",
+ externalId: undefined,
+ name: "Featured Content",
+ required: false,
+ type: "modular_content",
+ },
+
+ /**
+ * Headline (text)
+ */
+ headline: {
+ codename: "headline",
+ id: "3c5fca8b-a024-42fe-b2ec-eb2d2f8e6ca8",
+ externalId: undefined,
+ name: "Headline",
+ required: false,
+ type: "text",
+ },
+
+ /**
+ * Hero Image (asset)
+ */
+ hero_image: {
+ codename: "hero_image",
+ id: "9f33cab3-4496-489a-8b36-0a602b3b41a3",
+ externalId: undefined,
+ name: "Hero Image",
+ required: false,
+ type: "asset",
+ },
+
+ /**
+ * Subheadline (text)
+ */
+ subheadline: {
+ codename: "subheadline",
+ id: "a19250b6-c8e1-4871-bf83-956e95782d7c",
+ externalId: undefined,
+ name: "Subheadline",
+ required: false,
+ type: "text",
+ },
+ },
+ },
+
+ /**
+ * Video
+ */
+ video: {
+ codename: "video",
+ id: "fe811adb-4000-4563-b4f7-7d00371e820c",
+ externalId: undefined,
+ name: "Video",
+ elements: {
+ /**
+ * Autoplay (multiple_choice)
+ */
+ autoplay: {
+ codename: "autoplay",
+ id: "66b1191c-9114-4c89-aec9-f54fcaaecb36",
+ externalId: undefined,
+ name: "Autoplay",
+ required: false,
+ type: "multiple_choice",
+ options: {
+ true: {
+ name: "True",
+ id: "c1a6aec5-64a6-4bd2-ac33-98d1acab0321",
+ codename: "true",
+ externalId: undefined,
+ },
+ false: {
+ name: "False",
+ id: "6a7d1345-0b3e-4c1f-b142-107e3a5f0f6a",
+ codename: "false",
+ externalId: undefined,
+ },
+ },
+ },
+
+ /**
+ * Caption (text)
+ */
+ caption: {
+ codename: "caption",
+ id: "c93e998a-74f8-44ec-b071-bd2f9b21d561",
+ externalId: undefined,
+ name: "Caption",
+ required: false,
+ type: "text",
+ },
+
+ /**
+ * Video Link (text)
+ */
+ video_link: {
+ codename: "video_link",
+ id: "bfaf2724-4821-40b8-a859-e44ddc68bebd",
+ externalId: undefined,
+ name: "Video Link",
+ required: false,
+ type: "text",
+ },
+ },
+ },
+} as const;
diff --git a/src/model/project/index.ts b/src/model/project/index.ts
new file mode 100644
index 0000000..0ae978f
--- /dev/null
+++ b/src/model/project/index.ts
@@ -0,0 +1,9 @@
+export * from "./assetFolders.js";
+export * from "./collections.js";
+export * from "./contentTypes.js";
+export * from "./contentTypeSnippets.js";
+export * from "./languages.js";
+export * from "./roles.js";
+export * from "./taxonomies.js";
+export * from "./webhooks.js";
+export * from "./workflows.js";
diff --git a/src/model/project/languages.ts b/src/model/project/languages.ts
new file mode 100644
index 0000000..4144259
--- /dev/null
+++ b/src/model/project/languages.ts
@@ -0,0 +1,17 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const languages = {
+ /**
+ * Default project language
+ */
+ default: {
+ codename: "default",
+ id: "00000000-0000-0000-0000-000000000000",
+ isActive: true,
+ isDefault: true,
+ fallbackLanguageId: "00000000-0000-0000-0000-000000000000",
+ externalId: undefined,
+ name: "Default project language",
+ },
+} as const;
diff --git a/src/model/project/roles.ts b/src/model/project/roles.ts
new file mode 100644
index 0000000..dc1cee6
--- /dev/null
+++ b/src/model/project/roles.ts
@@ -0,0 +1,13 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const roles = {
+ /**
+ * Project manager
+ */
+ projectManager: {
+ codename: "project-manager",
+ id: "131e9d4e-63c9-45ec-94a3-e678fb676c9d",
+ name: "Project manager",
+ },
+} as const;
diff --git a/src/model/project/taxonomies.ts b/src/model/project/taxonomies.ts
new file mode 100644
index 0000000..0dcf716
--- /dev/null
+++ b/src/model/project/taxonomies.ts
@@ -0,0 +1,122 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const taxonomies = {
+ /**
+ * Event Type
+ */
+ event_type: {
+ codename: "event_type",
+ id: "520444f4-df68-46de-87fb-51bc9587e81a",
+ externalId: undefined,
+ name: "Event Type",
+ terms: {
+ conference: {
+ codename: "conference",
+ id: "45916307-35dc-4f02-b339-d708550692fb",
+ externalId: undefined,
+ name: "Conference",
+ terms: {},
+ },
+ seminar: {
+ codename: "seminar",
+ id: "deffa026-e95a-42ec-8bae-994895ea5ec6",
+ externalId: undefined,
+ name: "Seminar",
+ terms: {},
+ },
+ webinar: {
+ codename: "webinar",
+ id: "554e5590-6c72-4e3e-9436-f505ac6b39af",
+ externalId: undefined,
+ name: "Webinar",
+ terms: {},
+ },
+ workshop: {
+ codename: "workshop",
+ id: "1d2cac9b-fec2-437e-8760-d58739f97af6",
+ externalId: undefined,
+ name: "Workshop",
+ terms: {},
+ },
+ },
+ },
+
+ /**
+ * Topics
+ */
+ topics: {
+ codename: "topics",
+ id: "97a1eee0-2fa1-452d-a21b-6a113b38fad0",
+ externalId: undefined,
+ name: "Topics",
+ terms: {
+ nutrition: {
+ codename: "nutrition",
+ id: "bd4dadb0-8831-4c84-9003-53a52595ad54",
+ externalId: undefined,
+ name: "Nutrition",
+ terms: {
+ diabetes_management: {
+ codename: "diabetes_management",
+ id: "acd23424-2960-49f2-ae2d-e179f319d28b",
+ externalId: undefined,
+ name: "Diabetes Management",
+ terms: {},
+ },
+ healthy_dieting: {
+ codename: "healthy_dieting",
+ id: "8b8d5b15-8b22-40b5-8777-e46a7b34a871",
+ externalId: undefined,
+ name: "Healthy Dieting",
+ terms: {},
+ },
+ },
+ },
+ physical_fitness: {
+ codename: "physical_fitness",
+ id: "52777e64-5303-4d73-adde-7137e315c9bb",
+ externalId: undefined,
+ name: "Physical Fitness",
+ terms: {
+ cardio_exercise: {
+ codename: "cardio_exercise",
+ id: "d0e257a8-8aa5-4c2e-91c4-6d9884f1d122",
+ externalId: undefined,
+ name: "Cardio Exercise",
+ terms: {},
+ },
+ strength_training: {
+ codename: "strength_training",
+ id: "f274178b-6ea5-4592-ae36-bde22214302e",
+ externalId: undefined,
+ name: "Strength Training",
+ terms: {},
+ },
+ },
+ },
+ preventive_care: {
+ codename: "preventive_care",
+ id: "06954e24-3f28-4738-99ef-c85d8f42e88c",
+ externalId: undefined,
+ name: "Preventive Care",
+ terms: {
+ immunization: {
+ codename: "immunization",
+ id: "8b473c66-a69c-465f-ab69-f9a69bf4ecb4",
+ externalId: undefined,
+ name: "Immunization",
+ terms: {},
+ },
+ screenings: {
+ codename: "screenings",
+ id: "fe180cd2-a0bd-42ec-bae9-0cda2e6f3373",
+ externalId: undefined,
+ name: "Screenings",
+ terms: {},
+ },
+ },
+ },
+ },
+ },
+} as const;
diff --git a/src/model/project/webhooks.ts b/src/model/project/webhooks.ts
new file mode 100644
index 0000000..e24c0cb
--- /dev/null
+++ b/src/model/project/webhooks.ts
@@ -0,0 +1,4 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const webhooks = {} as const;
diff --git a/src/model/project/workflows.ts b/src/model/project/workflows.ts
new file mode 100644
index 0000000..ec56d13
--- /dev/null
+++ b/src/model/project/workflows.ts
@@ -0,0 +1,37 @@
+/**
+ * Generated by '@kontent-ai/model-generator@7.4.0'
+ */
+export const workflows = {
+ /**
+ * Default
+ * Archived step Id: 7a535a69-ad34-47f8-806a-def1fdf4d391
+ * Published step Id: c199950d-99f0-4983-b711-6c4c91624b22
+ */
+ default: {
+ codename: "default",
+ id: "00000000-0000-0000-0000-000000000000",
+ name: "Default",
+ steps: {
+ archived: {
+ name: "Archived",
+ codename: "archived",
+ id: "7a535a69-ad34-47f8-806a-def1fdf4d391",
+ },
+ published: {
+ name: "Published",
+ codename: "published",
+ id: "c199950d-99f0-4983-b711-6c4c91624b22",
+ },
+ scheduled: {
+ name: "Scheduled",
+ codename: "scheduled",
+ id: "9d2b0228-4d0d-4c23-8b49-01a698857709",
+ },
+ draft: {
+ name: "Draft",
+ codename: "draft",
+ id: "eee6db3b-545a-4785-8e86-e3772c8756f9",
+ },
+ },
+ },
+} as const;
diff --git a/src/model/system/core.type.ts b/src/model/system/core.type.ts
new file mode 100644
index 0000000..208383e
--- /dev/null
+++ b/src/model/system/core.type.ts
@@ -0,0 +1,31 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+import type { IContentItem, IContentItemElements } from '@kontent-ai/delivery-sdk';
+import type {
+ ContentTypeCodenames,
+ CollectionCodenames,
+ LanguageCodenames,
+ WorkflowCodenames,
+ WorkflowStepCodenames
+} from './delivery.codenames.ts';
+
+/**
+ * Core content type used in favor of generic 'IContentItem'
+ */
+export type CoreContentType<
+ TElements extends IContentItemElements = IContentItemElements,
+ TContentTypeCodename extends ContentTypeCodenames = ContentTypeCodenames
+> = IContentItem;
diff --git a/src/model/system/delivery.codenames.ts b/src/model/system/delivery.codenames.ts
new file mode 100644
index 0000000..1359308
--- /dev/null
+++ b/src/model/system/delivery.codenames.ts
@@ -0,0 +1,62 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+/**
+ * Type representing all languages
+ */
+export type LanguageCodenames = 'default';
+
+/**
+ * Type representing all content types
+ */
+export type ContentTypeCodenames = 'article' | 'video' | 'landing_page' | 'event';
+
+/**
+ * Type representing all collections
+ */
+export type CollectionCodenames = 'default';
+
+/**
+ * Type representing all workflows
+ */
+export type WorkflowCodenames = 'default';
+
+/**
+ * Type representing all worksflow steps across all workflows
+ */
+export type WorkflowStepCodenames = 'draft' | 'published' | 'archived' | 'scheduled';
+
+/**
+ * Type representing all element codenames across all content types
+ */
+export type ElementCodenames =
+ | 'title'
+ | 'introduction'
+ | 'image'
+ | 'body_copy'
+ | 'publish_date'
+ | 'headline'
+ | 'description'
+ | 'video_link'
+ | 'caption'
+ | 'autoplay'
+ | 'subheadline'
+ | 'hero_image'
+ | 'featured_content'
+ | 'name'
+ | 'start_date'
+ | 'end_date'
+ | 'event_type'
+ | 'event_topic';
diff --git a/src/model/system/index.ts b/src/model/system/index.ts
new file mode 100644
index 0000000..7c23c6f
--- /dev/null
+++ b/src/model/system/index.ts
@@ -0,0 +1,17 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+export * from './core.type.ts';
+export * from './delivery.codenames.ts';
diff --git a/src/model/taxonomies/eventTopic.ts b/src/model/taxonomies/eventTopic.ts
new file mode 100644
index 0000000..65f528f
--- /dev/null
+++ b/src/model/taxonomies/eventTopic.ts
@@ -0,0 +1,31 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Demo
+* Id: 038587ec-2989-01aa-becb-3908833e756d
+*
+* -------------------------------------------------------------------------------
+**/
+
+/**
+ * Event Topic
+ *
+ * Codename: event_topic
+ * Id: 97a1eee0-2fa1-452d-a21b-6a113b38fad0
+ */
+export type EventTopic =
+ | 'healthy_dieting'
+ | 'diabetes_management'
+ | 'nutrition'
+ | 'cardio_exercise'
+ | 'strength_training'
+ | 'physical_fitness'
+ | 'screenings'
+ | 'immunization'
+ | 'preventive_care';
diff --git a/src/model/taxonomies/eventType.ts b/src/model/taxonomies/eventType.ts
new file mode 100644
index 0000000..f83e555
--- /dev/null
+++ b/src/model/taxonomies/eventType.ts
@@ -0,0 +1,22 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+/**
+ * Event Type
+ *
+ * Codename: event_type
+ * Id: 520444f4-df68-46de-87fb-51bc9587e81a
+ */
+export type EventType = 'conference' | 'seminar' | 'webinar' | 'workshop';
diff --git a/src/model/taxonomies/event_type.ts b/src/model/taxonomies/event_type.ts
new file mode 100644
index 0000000..acf6b84
--- /dev/null
+++ b/src/model/taxonomies/event_type.ts
@@ -0,0 +1,22 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-5'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+/**
+ * Event Type
+ *
+ * Codename: event_type
+ * Id: 520444f4-df68-46de-87fb-51bc9587e81a
+ */
+export type EventType = 'conference' | 'seminar' | 'webinar' | 'workshop';
diff --git a/src/model/taxonomies/index.ts b/src/model/taxonomies/index.ts
new file mode 100644
index 0000000..038f19d
--- /dev/null
+++ b/src/model/taxonomies/index.ts
@@ -0,0 +1,17 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+export * from './eventType.ts';
+export * from './topics.ts';
diff --git a/src/model/taxonomies/topics.ts b/src/model/taxonomies/topics.ts
new file mode 100644
index 0000000..ef2990b
--- /dev/null
+++ b/src/model/taxonomies/topics.ts
@@ -0,0 +1,31 @@
+
+/**
+* This file has been auto-generated by '@kontent-ai/model-generator@8.0.0-11'.
+*
+* (c) Kontent.ai
+*
+* -------------------------------------------------------------------------------
+*
+* Project: Kontent.ai Kickstart
+* Environment: Production
+* Id: 7cf79e13-fcde-01b6-f508-14ca05d794b8
+*
+* -------------------------------------------------------------------------------
+**/
+
+/**
+ * Topics
+ *
+ * Codename: topics
+ * Id: 97a1eee0-2fa1-452d-a21b-6a113b38fad0
+ */
+export type Topics =
+ | 'healthy_dieting'
+ | 'diabetes_management'
+ | 'nutrition'
+ | 'cardio_exercise'
+ | 'strength_training'
+ | 'physical_fitness'
+ | 'screenings'
+ | 'immunization'
+ | 'preventive_care';
diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx
new file mode 100644
index 0000000..1a5e166
--- /dev/null
+++ b/src/pages/LandingPage.tsx
@@ -0,0 +1,81 @@
+import { DeliveryError } from "@kontent-ai/delivery-sdk";
+
+import Footer from "../components/Footer";
+import Header from "../components/Header";
+import HeroImage from "../components/HeroImage";
+import PageContent from "../components/PageContent";
+import PageSection from "../components/PageSection";
+import "../index.css";
+import { type LandingPage } from "../model";
+import { createClient } from "../utils/client";
+import { useSuspenseQuery } from "@tanstack/react-query";
+import { FC } from "react";
+import { useAppContext } from "../context/AppContext";
+import { Replace } from "../utils/types";
+import RenderElement from "../components/RenderElement";
+import FeaturedContent from "../components/FeaturedContent";
+import { contentTypes } from "../model/project";
+
+const LandingPage: FC = () => {
+ const { environmentId, apiKey } = useAppContext();
+
+ const landingPage = useSuspenseQuery({
+ queryKey: ["landing_page"],
+ queryFn: () =>
+ createClient(environmentId, apiKey)
+ .items()
+ .type(contentTypes.landing_page.codename)
+ .limitParameter(1)
+ .toPromise()
+ .then(res => res.data.items[0] as Replace }> ?? null)
+ .catch((err) => {
+ if (err instanceof DeliveryError) {
+ return null;
+ }
+ throw err;
+ }),
+ });
+
+ return (
+
+
+
+ {landingPage.data && Object.entries(landingPage.data.elements).length
+ ? (
+
+ )
+ :
}
+
+
+ );
+};
+
+export default LandingPage;
diff --git a/src/utils/api.ts b/src/utils/api.ts
new file mode 100644
index 0000000..91514e0
--- /dev/null
+++ b/src/utils/api.ts
@@ -0,0 +1,103 @@
+import { get, post, RequestContext } from "./fetch";
+
+type LoadPreviewApiKeyDeps = Readonly<{
+ accessToken: string;
+ environmentId: string;
+}>;
+
+type ProjectContainer = Readonly<{
+ projectContainerId: string;
+}>;
+
+type TokenSeedResponse = Readonly<{
+ token_seed_id: string;
+}>;
+
+type KeyFromSeedResponse = Readonly<{
+ api_key: string;
+}>;
+
+export const loadPreviewApiKey = async ({ accessToken, environmentId }: LoadPreviewApiKeyDeps) => {
+ const projectContainerId = await getProjectContainerForEnvironment(accessToken, environmentId)
+ .then(res => res?.projectContainerId);
+
+ if (!projectContainerId) {
+ return null;
+ }
+
+ const tokenSeed = await getPreviewApiTokenSeed(accessToken, projectContainerId, environmentId).then(res =>
+ res?.[0]?.token_seed_id
+ );
+
+ if (!tokenSeed) {
+ return null;
+ }
+
+ return getKeyForTokenSeed(accessToken, projectContainerId, tokenSeed)
+ .then(response => response.api_key)
+ .catch(() => null);
+};
+
+export const getProjectContainerForEnvironment = (
+ authToken: string,
+ environmentId: string,
+): Promise => {
+ const requestContext: RequestContext = { authToken };
+ const url = `${import.meta.env.VITE_KONTENT_URL}/api/project-management/${environmentId}`;
+
+ return get(url, requestContext)
+ .then(async (res) => {
+ if (res.ok) {
+ return await res.json() as ProjectContainer;
+ }
+
+ console.error((await res.json()).description);
+ return null;
+ });
+};
+
+export const getPreviewApiTokenSeed = (
+ authToken: string,
+ projectContainerId: string,
+ environmentId: string,
+): Promise | null> => {
+ const requestContext: RequestContext = {
+ authToken: authToken,
+ };
+ const url = `${import.meta.env.VITE_KONTENT_URL}/api/project-container/${projectContainerId}/keys/listing`;
+ const data = {
+ query: "",
+ api_key_types: ["delivery-api"],
+ environments: [environmentId],
+ };
+
+ return post(url, data, requestContext)
+ .then(async res => {
+ if (!res.ok) {
+ console.error((await res.json()).description);
+ return null;
+ }
+
+ const tokens = await res.json() as TokenSeedResponse[];
+
+ if (!tokens.length) {
+ console.error(`There is no Delivery API key for environment ${environmentId}`);
+ return null;
+ }
+
+ return tokens;
+ });
+};
+
+export const getKeyForTokenSeed = (
+ authToken: string,
+ projectContainerId: string,
+ tokenSeed: string,
+): Promise => {
+ const requestContext: RequestContext = {
+ authToken: authToken,
+ };
+ const url = `${import.meta.env.VITE_KONTENT_URL}/api/project-container/${projectContainerId}/keys/${tokenSeed}`;
+
+ return get(url, requestContext).then(res => res.json());
+};
diff --git a/src/utils/client.ts b/src/utils/client.ts
new file mode 100644
index 0000000..4e008a9
--- /dev/null
+++ b/src/utils/client.ts
@@ -0,0 +1,13 @@
+import { createDeliveryClient } from "@kontent-ai/delivery-sdk";
+
+export const createClient = (environmentId: string, previewApiKey: string) =>
+ createDeliveryClient({
+ environmentId,
+ previewApiKey: previewApiKey,
+ defaultQueryConfig: {
+ usePreviewMode: true,
+ },
+ proxy: {
+ basePreviewUrl: import.meta.env.VITE_DELIVER_URL,
+ },
+ });
diff --git a/src/utils/date.ts b/src/utils/date.ts
new file mode 100644
index 0000000..71d5966
--- /dev/null
+++ b/src/utils/date.ts
@@ -0,0 +1,6 @@
+export const formatDate = (date: string) =>
+ new Date(date).toLocaleDateString("en-US", {
+ month: "short",
+ year: "numeric",
+ day: "numeric",
+ });
diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts
new file mode 100644
index 0000000..fe1aac2
--- /dev/null
+++ b/src/utils/fetch.ts
@@ -0,0 +1,37 @@
+export type RequestContext = Readonly<{
+ readonly appInstanceId?: string;
+ readonly authToken?: string;
+}>;
+
+export type CustomHeaders = Record;
+
+const makeHeaders = (requestContext?: RequestContext): CustomHeaders =>
+ requestContext
+ ? {
+ ...requestContext.authToken ? { Authorization: `Bearer ${requestContext.authToken}` } : {},
+ ...requestContext.appInstanceId ? { "X-AppInstanceId": requestContext.appInstanceId } : {},
+ }
+ : {};
+
+export const get = (url: string, requestContext: RequestContext) => {
+ return fetch(url, {
+ method: "get",
+ headers: {
+ "Content-Type": "application/json",
+ ...makeHeaders(requestContext),
+ },
+ credentials: "same-origin",
+ });
+};
+
+export const post = (url: string, data: object, requestContext: RequestContext) => {
+ return fetch(url, {
+ method: "post",
+ headers: {
+ "Content-Type": "application/json",
+ ...makeHeaders(requestContext),
+ },
+ body: JSON.stringify(data),
+ credentials: "same-origin",
+ });
+};
diff --git a/src/utils/richtext.tsx b/src/utils/richtext.tsx
new file mode 100644
index 0000000..de708f4
--- /dev/null
+++ b/src/utils/richtext.tsx
@@ -0,0 +1,18 @@
+import { PortableTextReactComponents } from "@portabletext/react";
+
+export const defaultPortableRichTextComponents: Partial = {
+ list: {
+ bullet: ({ children }) => ,
+ number: ({ children }) => {children} ,
+ },
+ marks: {
+ sup: ({ children }) => {children} ,
+ sub: ({ children }) => {children} ,
+ },
+ block: {
+ h1: ({ children }) => {children} ,
+ h2: ({ children }) => {children} ,
+ h3: ({ children }) => {children} ,
+ normal: ({ children }) => {children}
,
+ },
+};
diff --git a/src/utils/types.ts b/src/utils/types.ts
new file mode 100644
index 0000000..e54db7e
--- /dev/null
+++ b/src/utils/types.ts
@@ -0,0 +1,5 @@
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export type Replace = T extends any ?
+ & Omit
+ & Readonly
+ : never;
diff --git a/tailwind.config.js b/tailwind.config.js
index d37737f..c702fbe 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,11 +1,30 @@
/** @type {import('tailwindcss').Config} */
+
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
- extend: {},
+ extend: {
+ colors: {
+ burgundy: "#993265",
+ azure: "#009edb",
+ white: '#ffffff',
+ gray: {
+ light: "#8e8e8e",
+ DEFAULT: "#3b3b3b"
+ },
+ creme: "#fff7e7"
+ },
+ fontFamily: {
+ sans: ['"Source Sans 3"', 'Arial', 'sans-serif'],
+ libre: ['"Abhaya Libre"', "Arial"]
+ }
+ },
+ container: {
+ center: true,
+ }
},
plugins: [],
}
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 0000000..1c2d0ee
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,8 @@
+{
+ "rewrites": [
+ {
+ "source": "/(.*)",
+ "destination": "/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
index 8b0f57b..49ffa96 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,4 +4,7 @@ import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
+ server: {
+ port: 3000,
+ },
})