├── .gitignore
├── README.md
├── assets
├── bookstore-api-account.png
├── bookstore-basic.png
├── bookstore-form.png
├── bookstore-next.png
├── bookstore-react.png
└── enable-issue-feature.png
├── assignment-1
├── README.md
├── index.html
├── script.js
└── style.css
├── assignment-2
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ ├── logo.svg
│ ├── reportWebVitals.js
│ └── setupTests.js
├── assignment-3
├── .eslintrc
├── .gitignore
├── .prettierrc
├── README.md
├── package.json
├── pnpm-lock.yaml
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── src
│ ├── App.css
│ ├── App.test.tsx
│ ├── App.tsx
│ ├── index.css
│ ├── index.tsx
│ ├── logo.svg
│ ├── react-app-env.d.ts
│ ├── reportWebVitals.ts
│ └── setupTests.ts
└── tsconfig.json
├── assignment-4
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── README.md
├── next.config.js
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── public
│ ├── next.svg
│ └── vercel.svg
├── src
│ └── app
│ │ ├── favicon.ico
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
├── tailwind.config.ts
└── tsconfig.json
├── assignment-5
└── README.md
├── assignment-6
└── README.md
├── assignment-7
└── README.md
└── final-project
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | .DS_Store
3 | .vscode
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Frontend Training 2023
2 |
3 | Welcome to the Frontend Training 2023 repository! This is where you'll find exercises and templates meant to guide you through 8 training sessions on frontend development organized by [Dwarves Foundation](https://d.foundation/).
4 |
5 | ## Get Started
6 |
7 | 1. **Fork the Repository:** If you're a part of this class, kindly [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo#forking-a-repository) this repository.
8 | 2. **Set Your Fork to Public:** This helps us in evaluating and collaborating on your assignments.
9 | 3. **Syncing and Updates:** After every session, we will push relevant assignments here. Ensure you [sync your forked repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) to pull the exercise templates.
10 |
11 | ## Assignments Schedule
12 |
13 | | Day | Topic | Deadline |
14 | | --- | ------------------------------------------------------------------------- | ---------- |
15 | | 1 | [HTML, CSS & JavaScript](./assignment-1/) | 21/09/2023 |
16 | | 2 | [React & State management](./assignment-2/) | 26/09/2023 |
17 | | 3 | [Tooling: Webpack, Babel, TypeScript, ESLint & Prettier](./assignment-3/) | 01/10/2023 |
18 | | 4 | [NextJS & TailwindCSS](./assignment-4/) | 06/10/2023 |
19 | | 5 | [Form handling](./assignment-5/) | 08/10/2023 |
20 | | 6 | [Authentication & API Integration](./assignment-6/) | 13/10/2023 |
21 | | 7 | [Type-safe client server](./assignment-7/) | 15/10/2023 |
22 | | 8 | [Final project](./final-project/) | 24/10/2023 |
23 |
24 | Stay tuned for updates on future assignments!
25 |
26 | ## Assignment Submission
27 |
28 | To submit your assignments, please ensure you have enabled the **Issues** feature in your forked repository. If it's disabled by default, you can enable it by navigating to `Settings > General` on your fork. Scroll down to the `Features` sub-section and check the `Issues` box.
29 |
30 | .
31 |
32 | Once enabled, follow these steps for each submission:
33 |
34 | 1. **Code Submission**: Place your submitted code in the respective `/assignment-[number]` folder on your fork.
35 | 2. **Deployment**: Deploy your project on a cloud service to generate a public preview link.
36 | 3. **Issue Creation**: Open an issue in your forked repository with the title `Submission for assignment [number]`. Ensure you include the public preview link in the issue description. Refer to [this example issue](https://github.com/zlatanpham/df-frontend-2023/issues/1) for guidance.
37 |
38 | ## Evaluation Criteria
39 |
40 | We evaluate assignments based on the following criteria:
41 |
42 | - **Timeliness**: The assignment must be submitted by the deadline (based on the time of the last commit in the assignment folder).
43 | - **Requirements Fulfillment**: The assignment must fulfill all mandatory requirements.
44 |
45 | Our team will carefully assess your submissions. After evaluation, we'll share the results and offer feedback on the corresponding open issue.
46 |
47 | ## Support
48 |
49 | Should you have any questions or run into any issues, don't hesitate to reach out on [our Discord](https://discord.com/invite/Y2vvH9rQE4). We are happy to help!
50 |
51 | Best of luck with your training! 🌟
52 |
--------------------------------------------------------------------------------
/assets/bookstore-api-account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/bookstore-api-account.png
--------------------------------------------------------------------------------
/assets/bookstore-basic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/bookstore-basic.png
--------------------------------------------------------------------------------
/assets/bookstore-form.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/bookstore-form.png
--------------------------------------------------------------------------------
/assets/bookstore-next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/bookstore-next.png
--------------------------------------------------------------------------------
/assets/bookstore-react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/bookstore-react.png
--------------------------------------------------------------------------------
/assets/enable-issue-feature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assets/enable-issue-feature.png
--------------------------------------------------------------------------------
/assignment-1/README.md:
--------------------------------------------------------------------------------
1 | # HTML, CSS & JavaScript
2 |
3 | Design and develop a simple bookstore Content Management System (CMS) table that lets users view and add records. For this task, you'll need to use HTML, CSS, and JavaScript to craft a user-friendly interface for content management.
4 |
5 | .
6 |
7 | ### **Requirements**
8 |
9 | - Set up an initial CMS table with columns for various attributes such as name, author, and topic.
10 | - Fill the table with sample records or placeholder data.
11 | - Enable book search by title.
12 | - Permit users to input data for a new record and incorporate it into the table (no field validation necessary).
13 | - Allow users to delete rows from the table.
14 |
15 | **Assignment Deliverables**
16 |
17 | - Craft the project using **HTML, CSS,** and **JavaScript**; no need for frameworks or libraries.
18 | - The project should be deployable, and a demo link must be provided for review (While you can select any deployment platform, we've provided a [tutorial on using Vercel](https://dwarves.notion.site/Steps-to-Deploy-Your-Assignments-Using-Vercel-cff73a5fe1024e47a4f512bbb7f93c19) to simplify the process.)
19 | - **Bonus:** Store the data in the browser's [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).
20 |
21 | **What Are We Looking For?**
22 |
23 | - The objective here is to assess how you organize your work, employ JavaScript for basic DOM manipulations, utilize semantic HTML, and style elements like the table, input fields, and buttons with CSS.
24 | - The app should be visually appealing, but there's no need to be overkill; a minimalist design is perfectly acceptable.
25 |
26 | ### Submission
27 |
28 | - Begin your work using the html, js, and css files found in the assignment folder.
29 | - Ensure all the assignment code resides in the `/assignment-1` directory.
30 | - The final submission deadline is **21/09/2023**.
31 | - After completing and setting up the deployable demo, [open a Github issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue) in your forked repository titled **Submission for assignment 1**. Include the demo link in the description.
32 |
--------------------------------------------------------------------------------
/assignment-1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Bookstore
7 |
8 |
9 |
10 |
11 | Hello world
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/assignment-1/script.js:
--------------------------------------------------------------------------------
1 | // Your JS code goes here
--------------------------------------------------------------------------------
/assignment-1/style.css:
--------------------------------------------------------------------------------
1 | html {
2 | height: 100%;
3 | width: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/assignment-2/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/assignment-2/README.md:
--------------------------------------------------------------------------------
1 | # React & State Management
2 |
3 | In the previous assignment, we built a simple CMS table using just HTML, CSS, and JavaScript. For this assignment, you're tasked with recreating the same interface using React. This will allow us to appreciate how React enhances our approach to web app development.
4 |
5 | .
6 |
7 | ## Requirements
8 |
9 | - Port the functionality from [Assignment 01](../assignment-1/) into this React project.
10 | - **New**: Introduce pagination for the table, allowing users to navigate between pages. Display 5 records per page.
11 |
12 | ### Deliverables
13 |
14 | - Design the React project incorporating all essential components and functionalities.
15 | - Ensure the project can be deployed. Provide a demo link for review. While you can choose any deployment platform, we've included [a tutorial](https://www.notion.so/Steps-to-Deploy-Your-Assignments-Using-Vercel-cff73a5fe1024e47a4f512bbb7f93c19?pvs=21) on using Vercel to guide you through the process.
16 | - **Bonus**: Enhance user experience by adding a toggle for light/dark mode themes.
17 |
18 | ### What Are We Looking For?
19 |
20 | - Proper structuring of React components and effective state management with Hooks.
21 | - Full implementation of all listed features.
22 | - Adherence to styling and design principles to produce a visually appealing, minimalist UI.
23 |
24 | ## Submission
25 |
26 | - Begin your work using the template found in the assignment folder. This project is bootstrapped by [Create React App](https://create-react-app.dev/). Visit the document to see the details but you can use the following commands to start the project:
27 | ```bash
28 | # Install packages
29 | npm install
30 | # Run the app in development mode
31 | npm start
32 | # Build the app for production
33 | npm run build
34 | ```
35 | - Ensure all the assignment code resides in the `/assignment-2` directory.
36 | The final submission deadline is **26/09/2023**.
37 | - After completing and setting up the deployable demo, open a Github issue in your forked repository titled **Submission for assignment 2**. Include the demo link in the description.
38 |
--------------------------------------------------------------------------------
/assignment-2/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "assignment-2",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@testing-library/jest-dom": "^5.17.0",
7 | "@testing-library/react": "^13.4.0",
8 | "@testing-library/user-event": "^13.5.0",
9 | "react": "^18.2.0",
10 | "react-dom": "^18.2.0",
11 | "react-scripts": "5.0.1",
12 | "web-vitals": "^2.1.4"
13 | },
14 | "scripts": {
15 | "start": "react-scripts start",
16 | "build": "react-scripts build",
17 | "test": "react-scripts test",
18 | "eject": "react-scripts eject"
19 | },
20 | "eslintConfig": {
21 | "extends": [
22 | "react-app",
23 | "react-app/jest"
24 | ]
25 | },
26 | "browserslist": {
27 | "production": [
28 | ">0.2%",
29 | "not dead",
30 | "not op_mini all"
31 | ],
32 | "development": [
33 | "last 1 chrome version",
34 | "last 1 firefox version",
35 | "last 1 safari version"
36 | ]
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/assignment-2/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-2/public/favicon.ico
--------------------------------------------------------------------------------
/assignment-2/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | React App
28 |
29 |
30 | You need to enable JavaScript to run this app.
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/assignment-2/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-2/public/logo192.png
--------------------------------------------------------------------------------
/assignment-2/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-2/public/logo512.png
--------------------------------------------------------------------------------
/assignment-2/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/assignment-2/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/assignment-2/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .App-logo {
12 | animation: App-logo-spin infinite 20s linear;
13 | }
14 | }
15 |
16 | .App-header {
17 | background-color: #282c34;
18 | min-height: 100vh;
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: center;
23 | font-size: calc(10px + 2vmin);
24 | color: white;
25 | }
26 |
27 | .App-link {
28 | color: #61dafb;
29 | }
30 |
31 | @keyframes App-logo-spin {
32 | from {
33 | transform: rotate(0deg);
34 | }
35 | to {
36 | transform: rotate(360deg);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/assignment-2/src/App.js:
--------------------------------------------------------------------------------
1 | import logo from './logo.svg';
2 | import './App.css';
3 |
4 | function App() {
5 | return (
6 |
22 | );
23 | }
24 |
25 | export default App;
26 |
--------------------------------------------------------------------------------
/assignment-2/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from './App';
3 |
4 | test('renders learn react link', () => {
5 | render( );
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/assignment-2/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/assignment-2/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 |
7 | const root = ReactDOM.createRoot(document.getElementById('root'));
8 | root.render(
9 |
10 |
11 |
12 | );
13 |
14 | // If you want to start measuring performance in your app, pass a function
15 | // to log results (for example: reportWebVitals(console.log))
16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 | reportWebVitals();
18 |
--------------------------------------------------------------------------------
/assignment-2/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assignment-2/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/assignment-2/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/assignment-3/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["./node_modules/@dwarvesf/react-eslint-config"],
3 | "env": {
4 | "es6": true,
5 | "browser": true,
6 | "node": true,
7 | "jest": true
8 | },
9 | "globals": {
10 | "io": true,
11 | "chrome": true
12 | },
13 | "parserOptions": {
14 | "ecmaVersion": 10,
15 | "ecmaFeatures": {
16 | "jsx": true
17 | },
18 | "project": ["./tsconfig.json"],
19 | "createDefaultProgram": true,
20 | "sourceType": "module"
21 | },
22 | "rules": {},
23 | "overrides": [
24 | {
25 | "files": ["**/*.ts?(x)", "**/*.js?(x)"],
26 | "rules": {
27 | "react/react-in-jsx-scope": "off",
28 | "react/jsx-sort-props": "off",
29 | "react/function-component-definition": "off",
30 | "no-shadow": "off"
31 | }
32 | }
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------
/assignment-3/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/assignment-3/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": true,
3 | "bracketSameLine": false,
4 | "jsxSingleQuote": false,
5 | "printWidth": 80,
6 | "proseWrap": "always",
7 | "semi": false,
8 | "singleQuote": true,
9 | "tabWidth": 2,
10 | "trailingComma": "all",
11 | "htmlWhitespaceSensitivity": "ignore"
12 | }
13 |
--------------------------------------------------------------------------------
/assignment-3/README.md:
--------------------------------------------------------------------------------
1 | # Development Tooling
2 |
3 | In the previous assignment, we took a leap from a traditional web interface to a modern React application. Now, we're going to level up the project by incorporating TypeScript for type safety and setting up ESLint rules to ensure clean and convention-following code.
4 |
5 | ## Requirements
6 |
7 | - Convert the [Assignment 02's React Project](../assignment-2/) into TypeScript to leverage better type safety and developer experience.
8 | - Follow the predefined convention configuration from [@dwarvesf/react-eslint-config](https://github.com/dwarvesf/react-toolkit/tree/master/packages/eslint-config) to promote error-free code.
9 |
10 | ### Deliverables
11 |
12 | - Deliver a Typescript-based React project that is well-structured, free of linting errors, and consistently formatted.
13 | - **Bonus**: Enhance developer experience and code quality by configuring ESLint to run automatically before each commit. This way, every commit will abide by established code conventions. You might find tools like [Husky](https://typicode.github.io/husky/) and [lint-staged](https://github.com/okonet/lint-staged) valuable for this task.
14 |
15 | ### What Are We Looking For?
16 |
17 | - A comprehensive and organized TypeScript project, ensuring safer and more predictable code.
18 | - Effectively follow ESLint rules, demonstrating an adherence to coding standards and conventions.
19 |
20 | ## Submission
21 |
22 | - Begin your project based on the existing codebase in `/assignment-3` folder. Use the following commands to get started with PNPM:
23 | ```bash
24 | # Install packages with PNPM
25 | pnpm install
26 | # Run the app in development mode
27 | pnpm start
28 | # Build the app for production
29 | pnpm run build
30 | ```
31 | - Ensure all the assignment code resides in the `/assignment-3` directory.
32 | - The final submission deadline is **01/10/2023**.
33 | - After completing and setting up the deployable demo, open a Github issue in your forked repository titled **Submission for assignment 3**. Include the demo link in the description.
34 |
35 |
--------------------------------------------------------------------------------
/assignment-3/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "assignment-3",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "react": "^18.2.0",
7 | "react-dom": "^18.2.0",
8 | "react-scripts": "5.0.1",
9 | "typescript": "^4.9.5",
10 | "web-vitals": "^2.1.4"
11 | },
12 | "scripts": {
13 | "start": "react-scripts start",
14 | "build": "react-scripts build",
15 | "test": "react-scripts test",
16 | "eject": "react-scripts eject",
17 | "lint": "eslint src --ext .js,.jsx,.ts,.tsx",
18 | "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
19 | "preinstall": "npx only-allow pnpm"
20 | },
21 | "eslintConfig": {
22 | "extends": [
23 | "react-app",
24 | "react-app/jest"
25 | ]
26 | },
27 | "browserslist": {
28 | "production": [
29 | ">0.2%",
30 | "not dead",
31 | "not op_mini all"
32 | ],
33 | "development": [
34 | "last 1 chrome version",
35 | "last 1 firefox version",
36 | "last 1 safari version"
37 | ]
38 | },
39 | "devDependencies": {
40 | "@dwarvesf/react-eslint-config": "^1.0.1",
41 | "@testing-library/jest-dom": "^6.1.3",
42 | "@testing-library/react": "^13.4.0",
43 | "@testing-library/user-event": "^13.5.0",
44 | "@types/jest": "^27.5.2",
45 | "@types/node": "^16.18.52",
46 | "@types/react": "^18.2.22",
47 | "@types/react-dom": "^18.2.7",
48 | "prettier": "^3.0.3"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/assignment-3/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-3/public/favicon.ico
--------------------------------------------------------------------------------
/assignment-3/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | React App
28 |
29 |
30 | You need to enable JavaScript to run this app.
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/assignment-3/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-3/public/logo192.png
--------------------------------------------------------------------------------
/assignment-3/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-3/public/logo512.png
--------------------------------------------------------------------------------
/assignment-3/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/assignment-3/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/assignment-3/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .App-logo {
12 | animation: App-logo-spin infinite 20s linear;
13 | }
14 | }
15 |
16 | .App-header {
17 | background-color: #282c34;
18 | min-height: 100vh;
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: center;
23 | font-size: calc(10px + 2vmin);
24 | color: white;
25 | }
26 |
27 | .App-link {
28 | color: #61dafb;
29 | }
30 |
31 | @keyframes App-logo-spin {
32 | from {
33 | transform: rotate(0deg);
34 | }
35 | to {
36 | transform: rotate(360deg);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/assignment-3/src/App.test.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { render, screen } from '@testing-library/react'
3 | import App from './App'
4 |
5 | test('renders learn react link', () => {
6 | render( )
7 | const linkElement = screen.getByText(/learn react/i)
8 | expect(linkElement).toBeInTheDocument()
9 | })
10 |
--------------------------------------------------------------------------------
/assignment-3/src/App.tsx:
--------------------------------------------------------------------------------
1 | import logo from './logo.svg'
2 | import './App.css'
3 |
4 | function App() {
5 | return (
6 |
23 | )
24 | }
25 |
26 | export default App
27 |
--------------------------------------------------------------------------------
/assignment-3/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/assignment-3/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import './index.css'
4 | import App from './App'
5 | import reportWebVitals from './reportWebVitals'
6 |
7 | const rootElement = document.getElementById('root')
8 |
9 | if (rootElement) {
10 | const root = ReactDOM.createRoot(rootElement)
11 | root.render(
12 |
13 |
14 | ,
15 | )
16 | // If you want to start measuring performance in your app, pass a function
17 | // to log results (for example: reportWebVitals(console.log))
18 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
19 | reportWebVitals()
20 | }
21 |
--------------------------------------------------------------------------------
/assignment-3/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assignment-3/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/assignment-3/src/reportWebVitals.ts:
--------------------------------------------------------------------------------
1 | import { ReportHandler } from 'web-vitals'
2 |
3 | const reportWebVitals = (onPerfEntry?: ReportHandler) => {
4 | if (onPerfEntry && onPerfEntry instanceof Function) {
5 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
6 | getCLS(onPerfEntry)
7 | getFID(onPerfEntry)
8 | getFCP(onPerfEntry)
9 | getLCP(onPerfEntry)
10 | getTTFB(onPerfEntry)
11 | })
12 | }
13 | }
14 |
15 | export default reportWebVitals
16 |
--------------------------------------------------------------------------------
/assignment-3/src/setupTests.ts:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom'
6 |
--------------------------------------------------------------------------------
/assignment-3/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "preserve",
4 | "allowJs": true,
5 | "esModuleInterop": true,
6 | "allowSyntheticDefaultImports": true,
7 | "types": ["node", "jest"],
8 | "strict": true,
9 | "noUnusedLocals": false,
10 | "noUnusedParameters": true,
11 | "forceConsistentCasingInFileNames": false,
12 | "noEmit": true,
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "noImplicitAny": false,
16 | "checkJs": false,
17 | "strictNullChecks": true,
18 | "strictFunctionTypes": true,
19 | "strictPropertyInitialization": true,
20 | "useUnknownInCatchVariables": false,
21 | "noImplicitThis": true,
22 | "target": "ESNext",
23 | "lib": ["dom", "dom.iterable", "esnext"],
24 | "skipLibCheck": true,
25 | "module": "esnext",
26 | "moduleResolution": "node",
27 | "incremental": true
28 | },
29 | "include": [
30 | "**/*.ts",
31 | "**/*.tsx",
32 | "**/*.d.ts",
33 | "**/*.js",
34 | "**/*.jsx",
35 | ],
36 | "exclude": ["node_modules"]
37 | }
38 |
--------------------------------------------------------------------------------
/assignment-4/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: [
4 | './node_modules/@dwarvesf/react-eslint-config',
5 | 'eslint:recommended',
6 | 'plugin:react/recommended',
7 | 'plugin:prettier/recommended',
8 | 'plugin:@typescript-eslint/eslint-recommended',
9 | 'plugin:@typescript-eslint/recommended',
10 | 'next',
11 | 'next/core-web-vitals',
12 | ],
13 | ignorePatterns: [
14 | 'node_modules/',
15 | ],
16 | env: {
17 | es6: true,
18 | browser: true,
19 | node: true,
20 | },
21 | globals: {
22 | io: true,
23 | chrome: true,
24 | },
25 | parserOptions: {
26 | ecmaVersion: 10,
27 | ecmaFeatures: {
28 | jsx: true,
29 | },
30 | project: ['./tsconfig.json'],
31 | tsconfigRootDir: __dirname,
32 | createDefaultProgram: true,
33 | sourceType: 'module',
34 | babelOptions: {
35 | presets: [require.resolve('next/babel')],
36 | },
37 | },
38 | rules: {},
39 | overrides: [
40 | {
41 | files: ['**/*.ts?(x)', '**/*.js?(x)'],
42 | rules: {
43 | 'react/react-in-jsx-scope': 'off',
44 | 'react/jsx-sort-props': 'off',
45 | 'react/function-component-definition': 'off',
46 | 'no-shadow': 'off',
47 | },
48 | },
49 | ],
50 | }
51 |
--------------------------------------------------------------------------------
/assignment-4/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env*.local
29 |
30 | # vercel
31 | .vercel
32 |
33 | # typescript
34 | *.tsbuildinfo
35 | next-env.d.ts
36 |
37 | # tools
38 | /.vscode
39 | .eslintcache
40 |
--------------------------------------------------------------------------------
/assignment-4/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": true,
3 | "bracketSameLine": false,
4 | "jsxSingleQuote": false,
5 | "printWidth": 80,
6 | "proseWrap": "always",
7 | "semi": false,
8 | "singleQuote": true,
9 | "tabWidth": 2,
10 | "trailingComma": "all",
11 | "htmlWhitespaceSensitivity": "ignore"
12 | }
13 |
--------------------------------------------------------------------------------
/assignment-4/README.md:
--------------------------------------------------------------------------------
1 | # NextJS & Tailwind
2 |
3 | Adapt the CMS Bookstore interface from [Assignment 02's React Project](../assignment-2/) into a NextJS application. This transition will highlight the flexibility and power of the framework. Enhance the UI using TailwindCSS to ensure a responsive and modern design.
4 |
5 |
6 |
7 |
8 |
9 | ## Requirements
10 |
11 | 1. Use the functionalities from [Assignment 02](../assignment-2/) as a foundation. Transform the project to utilize the power of NextJS.
12 | 2. Employ TailwindCSS exclusively for the project's styling needs.
13 | 3. View a book's detail by clicking its "View" button. This should navigate the user to **`/book/:id`**.
14 | 4. Implement a `404 page` for invalid routes. If a user attempts to access a non-existent book id, display a `Not Found` UI.
15 | 5. Within the book detail page, incorporate a "Delete" button. Once a book is deleted successfully, redirect users back to the main listing page and ensure the deleted book is no longer displayed.
16 |
17 | ### Deliverables
18 |
19 | - A well-structured NextJS project written in TypeScript, incorporating all necessary components and functionalities. Ensure that TailwindCSS is utilized effectively for all styling aspects.
20 | - The code should be fully formatted, following best practices and conventions, with ESLint and TypeScript rules from [Assignment 03](../assignment-3/).
21 | - Ensure the project can be deployed. Provide a demo link for review. While you have the freedom to choose any deployment platform, our recommended platform is Vercel. (Refer to the provided [tutorial](https://www.notion.so/Steps-to-Deploy-Your-Assignments-Using-Vercel-cff73a5fe1024e47a4f512bbb7f93c19?pvs=21) on using Vercel for deployment guidance).
22 | - **Bonus:** Integrate a light and dark mode toggle for the UI using TailwindCSS.
23 | - **Bonus**: for an enhanced user experience, persist the search query and pagination state in the URL. For instance, if a user searches for a book with the keyword "abc" and is on page 2 of the results, the URL should reflect **`/?q=abc&page=2`**.
24 |
25 | ### What Are We Looking For?
26 |
27 | - Proper use of NextJS framework & TailwindCSS.
28 | - Full implementation of all listed features.
29 | - Improvement from feedback from your previous assignments
30 |
31 | ## Submission
32 |
33 | - Begin with the template found in the assignment folder. This project should be initialized using NextJS and TailwindCSS. To guide you, you can use the following commands:
34 |
35 | ```bash
36 | # Install packages
37 | pnpm install
38 | # Run the app in development mode
39 | pnpm dev
40 | # Build the app for production
41 | pnpm build
42 | ```
43 |
44 | - Ensure all assignment code is placed within the **`/assignment-4`** directory. The final submission deadline is **06/10/2023**.
45 | - After finalizing and ensuring a deployable demo, open a Github issue in your forked repository titled "**Submission for Assignment 4.**" Include the demo link in the description.
46 |
--------------------------------------------------------------------------------
/assignment-4/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/assignment-4/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "assignment-4",
3 | "version": "0.1.0",
4 | "private": true,
5 | "description": "DF 2023 Assignment 4",
6 | "author": "Dwarves Foundation",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/dwarvesf/df-frontend-2023.git"
10 | },
11 | "scripts": {
12 | "dev": "next dev",
13 | "build": "next build",
14 | "start": "next start",
15 | "lint": "eslint src --ext .js,.jsx,.ts,.tsx",
16 | "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
17 | "preinstall": "npx only-allow pnpm"
18 | },
19 | "dependencies": {
20 | "next": "^13.5.3",
21 | "react": "^18.2.0",
22 | "react-dom": "^18.2.0"
23 | },
24 | "devDependencies": {
25 | "@dwarvesf/react-eslint-config": "^1.0.1",
26 | "@next/eslint-plugin-next": "^13.5.3",
27 | "@types/node": "^20.7.0",
28 | "@types/react": "^18.2.22",
29 | "@types/react-dom": "^18.2.7",
30 | "autoprefixer": "^10.4.16",
31 | "eslint": "^8.50.0",
32 | "eslint-config-next": "^13.5.3",
33 | "postcss": "^8.4.30",
34 | "prettier": "^3.0.3",
35 | "tailwindcss": "^3.3.3",
36 | "typescript": "^5.2.2"
37 | },
38 | "engines": {
39 | "node": ">=14.0.0"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/assignment-4/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | next:
9 | specifier: ^13.5.3
10 | version: 13.5.3(react-dom@18.2.0)(react@18.2.0)
11 | react:
12 | specifier: ^18.2.0
13 | version: 18.2.0
14 | react-dom:
15 | specifier: ^18.2.0
16 | version: 18.2.0(react@18.2.0)
17 |
18 | devDependencies:
19 | '@dwarvesf/react-eslint-config':
20 | specifier: ^1.0.1
21 | version: 1.0.1(@typescript-eslint/eslint-plugin@6.7.3)(@typescript-eslint/parser@6.7.3)(babel-eslint@10.1.0)(eslint-config-airbnb-typescript@17.1.0)(eslint-config-airbnb@19.0.4)(eslint-config-prettier@8.10.0)(eslint-config-react@1.1.7)(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-prettier@5.0.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint-plugin-testing-library@5.11.1)(eslint@8.50.0)
22 | '@next/eslint-plugin-next':
23 | specifier: ^13.5.3
24 | version: 13.5.3
25 | '@types/node':
26 | specifier: ^20.7.0
27 | version: 20.7.0
28 | '@types/react':
29 | specifier: ^18.2.22
30 | version: 18.2.22
31 | '@types/react-dom':
32 | specifier: ^18.2.7
33 | version: 18.2.7
34 | autoprefixer:
35 | specifier: ^10.4.16
36 | version: 10.4.16(postcss@8.4.30)
37 | eslint:
38 | specifier: ^8.50.0
39 | version: 8.50.0
40 | eslint-config-next:
41 | specifier: ^13.5.3
42 | version: 13.5.3(eslint@8.50.0)(typescript@5.2.2)
43 | postcss:
44 | specifier: ^8.4.30
45 | version: 8.4.30
46 | prettier:
47 | specifier: ^3.0.3
48 | version: 3.0.3
49 | tailwindcss:
50 | specifier: ^3.3.3
51 | version: 3.3.3
52 | typescript:
53 | specifier: ^5.2.2
54 | version: 5.2.2
55 |
56 | packages:
57 |
58 | /@aashutoshrathi/word-wrap@1.2.6:
59 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
60 | engines: {node: '>=0.10.0'}
61 | dev: true
62 |
63 | /@alloc/quick-lru@5.2.0:
64 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
65 | engines: {node: '>=10'}
66 | dev: true
67 |
68 | /@babel/code-frame@7.22.13:
69 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
70 | engines: {node: '>=6.9.0'}
71 | dependencies:
72 | '@babel/highlight': 7.22.20
73 | chalk: 2.4.2
74 | dev: true
75 |
76 | /@babel/generator@7.23.0:
77 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
78 | engines: {node: '>=6.9.0'}
79 | dependencies:
80 | '@babel/types': 7.23.0
81 | '@jridgewell/gen-mapping': 0.3.3
82 | '@jridgewell/trace-mapping': 0.3.19
83 | jsesc: 2.5.2
84 | dev: true
85 |
86 | /@babel/helper-environment-visitor@7.22.20:
87 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
88 | engines: {node: '>=6.9.0'}
89 | dev: true
90 |
91 | /@babel/helper-function-name@7.23.0:
92 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
93 | engines: {node: '>=6.9.0'}
94 | dependencies:
95 | '@babel/template': 7.22.15
96 | '@babel/types': 7.23.0
97 | dev: true
98 |
99 | /@babel/helper-hoist-variables@7.22.5:
100 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
101 | engines: {node: '>=6.9.0'}
102 | dependencies:
103 | '@babel/types': 7.23.0
104 | dev: true
105 |
106 | /@babel/helper-split-export-declaration@7.22.6:
107 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
108 | engines: {node: '>=6.9.0'}
109 | dependencies:
110 | '@babel/types': 7.23.0
111 | dev: true
112 |
113 | /@babel/helper-string-parser@7.22.5:
114 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
115 | engines: {node: '>=6.9.0'}
116 | dev: true
117 |
118 | /@babel/helper-validator-identifier@7.22.20:
119 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
120 | engines: {node: '>=6.9.0'}
121 | dev: true
122 |
123 | /@babel/highlight@7.22.20:
124 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
125 | engines: {node: '>=6.9.0'}
126 | dependencies:
127 | '@babel/helper-validator-identifier': 7.22.20
128 | chalk: 2.4.2
129 | js-tokens: 4.0.0
130 | dev: true
131 |
132 | /@babel/parser@7.23.0:
133 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
134 | engines: {node: '>=6.0.0'}
135 | hasBin: true
136 | dependencies:
137 | '@babel/types': 7.23.0
138 | dev: true
139 |
140 | /@babel/runtime@7.23.1:
141 | resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==}
142 | engines: {node: '>=6.9.0'}
143 | dependencies:
144 | regenerator-runtime: 0.14.0
145 | dev: true
146 |
147 | /@babel/template@7.22.15:
148 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
149 | engines: {node: '>=6.9.0'}
150 | dependencies:
151 | '@babel/code-frame': 7.22.13
152 | '@babel/parser': 7.23.0
153 | '@babel/types': 7.23.0
154 | dev: true
155 |
156 | /@babel/traverse@7.23.0:
157 | resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==}
158 | engines: {node: '>=6.9.0'}
159 | dependencies:
160 | '@babel/code-frame': 7.22.13
161 | '@babel/generator': 7.23.0
162 | '@babel/helper-environment-visitor': 7.22.20
163 | '@babel/helper-function-name': 7.23.0
164 | '@babel/helper-hoist-variables': 7.22.5
165 | '@babel/helper-split-export-declaration': 7.22.6
166 | '@babel/parser': 7.23.0
167 | '@babel/types': 7.23.0
168 | debug: 4.3.4
169 | globals: 11.12.0
170 | transitivePeerDependencies:
171 | - supports-color
172 | dev: true
173 |
174 | /@babel/types@7.23.0:
175 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
176 | engines: {node: '>=6.9.0'}
177 | dependencies:
178 | '@babel/helper-string-parser': 7.22.5
179 | '@babel/helper-validator-identifier': 7.22.20
180 | to-fast-properties: 2.0.0
181 | dev: true
182 |
183 | /@dwarvesf/react-eslint-config@1.0.1(@typescript-eslint/eslint-plugin@6.7.3)(@typescript-eslint/parser@6.7.3)(babel-eslint@10.1.0)(eslint-config-airbnb-typescript@17.1.0)(eslint-config-airbnb@19.0.4)(eslint-config-prettier@8.10.0)(eslint-config-react@1.1.7)(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-prettier@5.0.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint-plugin-testing-library@5.11.1)(eslint@8.50.0):
184 | resolution: {integrity: sha512-VepdWkv6bGvogXjMFy2LCkP4Aqv8N2kVx60UFLvZ5z8A2z9acCG50Yjt4ICL2J0ZfrXP6/PI0kJSHI1NCurbuw==}
185 | engines: {node: '>=12.0.0'}
186 | peerDependencies:
187 | '@typescript-eslint/eslint-plugin': 6.x
188 | '@typescript-eslint/parser': 6.x
189 | babel-eslint: 10.x
190 | eslint: 8.x
191 | eslint-config-airbnb: 19.x
192 | eslint-config-airbnb-typescript: 17.x
193 | eslint-config-prettier: 8.x
194 | eslint-config-react: 1.x
195 | eslint-plugin-import: 2.x
196 | eslint-plugin-jsx-a11y: 6.x
197 | eslint-plugin-prettier: 5.x
198 | eslint-plugin-react: 7.x
199 | eslint-plugin-react-hooks: 4.x
200 | eslint-plugin-testing-library: 5.x
201 | dependencies:
202 | '@typescript-eslint/eslint-plugin': 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2)
203 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
204 | babel-eslint: 10.1.0(eslint@8.50.0)
205 | eslint: 8.50.0
206 | eslint-config-airbnb: 19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0)
207 | eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@6.7.3)(@typescript-eslint/parser@6.7.3)(eslint-plugin-import@2.28.1)(eslint@8.50.0)
208 | eslint-config-prettier: 8.10.0(eslint@8.50.0)
209 | eslint-config-react: 1.1.7
210 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
211 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0)
212 | eslint-plugin-prettier: 5.0.0(eslint-config-prettier@8.10.0)(eslint@8.50.0)(prettier@3.0.3)
213 | eslint-plugin-react: 7.33.2(eslint@8.50.0)
214 | eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0)
215 | eslint-plugin-testing-library: 5.11.1(eslint@8.50.0)(typescript@5.2.2)
216 | dev: true
217 |
218 | /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0):
219 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
220 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
221 | peerDependencies:
222 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
223 | dependencies:
224 | eslint: 8.50.0
225 | eslint-visitor-keys: 3.4.3
226 | dev: true
227 |
228 | /@eslint-community/regexpp@4.8.2:
229 | resolution: {integrity: sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g==}
230 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
231 | dev: true
232 |
233 | /@eslint/eslintrc@2.1.2:
234 | resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
235 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
236 | dependencies:
237 | ajv: 6.12.6
238 | debug: 4.3.4
239 | espree: 9.6.1
240 | globals: 13.22.0
241 | ignore: 5.2.4
242 | import-fresh: 3.3.0
243 | js-yaml: 4.1.0
244 | minimatch: 3.1.2
245 | strip-json-comments: 3.1.1
246 | transitivePeerDependencies:
247 | - supports-color
248 | dev: true
249 |
250 | /@eslint/js@8.50.0:
251 | resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==}
252 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
253 | dev: true
254 |
255 | /@humanwhocodes/config-array@0.11.11:
256 | resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
257 | engines: {node: '>=10.10.0'}
258 | dependencies:
259 | '@humanwhocodes/object-schema': 1.2.1
260 | debug: 4.3.4
261 | minimatch: 3.1.2
262 | transitivePeerDependencies:
263 | - supports-color
264 | dev: true
265 |
266 | /@humanwhocodes/module-importer@1.0.1:
267 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
268 | engines: {node: '>=12.22'}
269 | dev: true
270 |
271 | /@humanwhocodes/object-schema@1.2.1:
272 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
273 | dev: true
274 |
275 | /@jridgewell/gen-mapping@0.3.3:
276 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
277 | engines: {node: '>=6.0.0'}
278 | dependencies:
279 | '@jridgewell/set-array': 1.1.2
280 | '@jridgewell/sourcemap-codec': 1.4.15
281 | '@jridgewell/trace-mapping': 0.3.19
282 | dev: true
283 |
284 | /@jridgewell/resolve-uri@3.1.1:
285 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
286 | engines: {node: '>=6.0.0'}
287 | dev: true
288 |
289 | /@jridgewell/set-array@1.1.2:
290 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
291 | engines: {node: '>=6.0.0'}
292 | dev: true
293 |
294 | /@jridgewell/sourcemap-codec@1.4.15:
295 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
296 | dev: true
297 |
298 | /@jridgewell/trace-mapping@0.3.19:
299 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
300 | dependencies:
301 | '@jridgewell/resolve-uri': 3.1.1
302 | '@jridgewell/sourcemap-codec': 1.4.15
303 | dev: true
304 |
305 | /@next/env@13.5.3:
306 | resolution: {integrity: sha512-X4te86vsbjsB7iO4usY9jLPtZ827Mbx+WcwNBGUOIuswuTAKQtzsuoxc/6KLxCMvogKG795MhrR1LDhYgDvasg==}
307 | dev: false
308 |
309 | /@next/eslint-plugin-next@13.5.3:
310 | resolution: {integrity: sha512-lbZOoEjzSuTtpk9UgV9rOmxYw+PsSfNR+00mZcInqooiDMZ1u+RqT1YQYLsEZPW1kumZoQe5+exkCBtZ2xn0uw==}
311 | dependencies:
312 | glob: 7.1.7
313 | dev: true
314 |
315 | /@next/swc-darwin-arm64@13.5.3:
316 | resolution: {integrity: sha512-6hiYNJxJmyYvvKGrVThzo4nTcqvqUTA/JvKim7Auaj33NexDqSNwN5YrrQu+QhZJCIpv2tULSHt+lf+rUflLSw==}
317 | engines: {node: '>= 10'}
318 | cpu: [arm64]
319 | os: [darwin]
320 | requiresBuild: true
321 | dev: false
322 | optional: true
323 |
324 | /@next/swc-darwin-x64@13.5.3:
325 | resolution: {integrity: sha512-UpBKxu2ob9scbpJyEq/xPgpdrgBgN3aLYlxyGqlYX5/KnwpJpFuIHU2lx8upQQ7L+MEmz+fA1XSgesoK92ppwQ==}
326 | engines: {node: '>= 10'}
327 | cpu: [x64]
328 | os: [darwin]
329 | requiresBuild: true
330 | dev: false
331 | optional: true
332 |
333 | /@next/swc-linux-arm64-gnu@13.5.3:
334 | resolution: {integrity: sha512-5AzM7Yx1Ky+oLY6pHs7tjONTF22JirDPd5Jw/3/NazJ73uGB05NqhGhB4SbeCchg7SlVYVBeRMrMSZwJwq/xoA==}
335 | engines: {node: '>= 10'}
336 | cpu: [arm64]
337 | os: [linux]
338 | requiresBuild: true
339 | dev: false
340 | optional: true
341 |
342 | /@next/swc-linux-arm64-musl@13.5.3:
343 | resolution: {integrity: sha512-A/C1shbyUhj7wRtokmn73eBksjTM7fFQoY2v/0rTM5wehpkjQRLOXI8WJsag2uLhnZ4ii5OzR1rFPwoD9cvOgA==}
344 | engines: {node: '>= 10'}
345 | cpu: [arm64]
346 | os: [linux]
347 | requiresBuild: true
348 | dev: false
349 | optional: true
350 |
351 | /@next/swc-linux-x64-gnu@13.5.3:
352 | resolution: {integrity: sha512-FubPuw/Boz8tKkk+5eOuDHOpk36F80rbgxlx4+xty/U71e3wZZxVYHfZXmf0IRToBn1Crb8WvLM9OYj/Ur815g==}
353 | engines: {node: '>= 10'}
354 | cpu: [x64]
355 | os: [linux]
356 | requiresBuild: true
357 | dev: false
358 | optional: true
359 |
360 | /@next/swc-linux-x64-musl@13.5.3:
361 | resolution: {integrity: sha512-DPw8nFuM1uEpbX47tM3wiXIR0Qa+atSzs9Q3peY1urkhofx44o7E1svnq+a5Q0r8lAcssLrwiM+OyJJgV/oj7g==}
362 | engines: {node: '>= 10'}
363 | cpu: [x64]
364 | os: [linux]
365 | requiresBuild: true
366 | dev: false
367 | optional: true
368 |
369 | /@next/swc-win32-arm64-msvc@13.5.3:
370 | resolution: {integrity: sha512-zBPSP8cHL51Gub/YV8UUePW7AVGukp2D8JU93IHbVDu2qmhFAn9LWXiOOLKplZQKxnIPUkJTQAJDCWBWU4UWUA==}
371 | engines: {node: '>= 10'}
372 | cpu: [arm64]
373 | os: [win32]
374 | requiresBuild: true
375 | dev: false
376 | optional: true
377 |
378 | /@next/swc-win32-ia32-msvc@13.5.3:
379 | resolution: {integrity: sha512-ONcL/lYyGUj4W37D4I2I450SZtSenmFAvapkJQNIJhrPMhzDU/AdfLkW98NvH1D2+7FXwe7yclf3+B7v28uzBQ==}
380 | engines: {node: '>= 10'}
381 | cpu: [ia32]
382 | os: [win32]
383 | requiresBuild: true
384 | dev: false
385 | optional: true
386 |
387 | /@next/swc-win32-x64-msvc@13.5.3:
388 | resolution: {integrity: sha512-2Vz2tYWaLqJvLcWbbTlJ5k9AN6JD7a5CN2pAeIzpbecK8ZF/yobA39cXtv6e+Z8c5UJuVOmaTldEAIxvsIux/Q==}
389 | engines: {node: '>= 10'}
390 | cpu: [x64]
391 | os: [win32]
392 | requiresBuild: true
393 | dev: false
394 | optional: true
395 |
396 | /@nodelib/fs.scandir@2.1.5:
397 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
398 | engines: {node: '>= 8'}
399 | dependencies:
400 | '@nodelib/fs.stat': 2.0.5
401 | run-parallel: 1.2.0
402 | dev: true
403 |
404 | /@nodelib/fs.stat@2.0.5:
405 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
406 | engines: {node: '>= 8'}
407 | dev: true
408 |
409 | /@nodelib/fs.walk@1.2.8:
410 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
411 | engines: {node: '>= 8'}
412 | dependencies:
413 | '@nodelib/fs.scandir': 2.1.5
414 | fastq: 1.15.0
415 | dev: true
416 |
417 | /@pkgr/utils@2.4.2:
418 | resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
419 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
420 | dependencies:
421 | cross-spawn: 7.0.3
422 | fast-glob: 3.3.1
423 | is-glob: 4.0.3
424 | open: 9.1.0
425 | picocolors: 1.0.0
426 | tslib: 2.6.2
427 | dev: true
428 |
429 | /@rushstack/eslint-patch@1.4.0:
430 | resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==}
431 | dev: true
432 |
433 | /@swc/helpers@0.5.2:
434 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
435 | dependencies:
436 | tslib: 2.6.2
437 | dev: false
438 |
439 | /@types/json-schema@7.0.13:
440 | resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
441 | dev: true
442 |
443 | /@types/json5@0.0.29:
444 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
445 | dev: true
446 |
447 | /@types/node@20.7.0:
448 | resolution: {integrity: sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==}
449 | dev: true
450 |
451 | /@types/prop-types@15.7.7:
452 | resolution: {integrity: sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==}
453 | dev: true
454 |
455 | /@types/react-dom@18.2.7:
456 | resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
457 | dependencies:
458 | '@types/react': 18.2.22
459 | dev: true
460 |
461 | /@types/react@18.2.22:
462 | resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==}
463 | dependencies:
464 | '@types/prop-types': 15.7.7
465 | '@types/scheduler': 0.16.4
466 | csstype: 3.1.2
467 | dev: true
468 |
469 | /@types/scheduler@0.16.4:
470 | resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==}
471 | dev: true
472 |
473 | /@types/semver@7.5.3:
474 | resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==}
475 | dev: true
476 |
477 | /@typescript-eslint/eslint-plugin@6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2):
478 | resolution: {integrity: sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==}
479 | engines: {node: ^16.0.0 || >=18.0.0}
480 | peerDependencies:
481 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
482 | eslint: ^7.0.0 || ^8.0.0
483 | typescript: '*'
484 | peerDependenciesMeta:
485 | typescript:
486 | optional: true
487 | dependencies:
488 | '@eslint-community/regexpp': 4.8.2
489 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
490 | '@typescript-eslint/scope-manager': 6.7.3
491 | '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
492 | '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
493 | '@typescript-eslint/visitor-keys': 6.7.3
494 | debug: 4.3.4
495 | eslint: 8.50.0
496 | graphemer: 1.4.0
497 | ignore: 5.2.4
498 | natural-compare: 1.4.0
499 | semver: 7.5.4
500 | ts-api-utils: 1.0.3(typescript@5.2.2)
501 | typescript: 5.2.2
502 | transitivePeerDependencies:
503 | - supports-color
504 | dev: true
505 |
506 | /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2):
507 | resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==}
508 | engines: {node: ^16.0.0 || >=18.0.0}
509 | peerDependencies:
510 | eslint: ^7.0.0 || ^8.0.0
511 | typescript: '*'
512 | peerDependenciesMeta:
513 | typescript:
514 | optional: true
515 | dependencies:
516 | '@typescript-eslint/scope-manager': 6.7.3
517 | '@typescript-eslint/types': 6.7.3
518 | '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2)
519 | '@typescript-eslint/visitor-keys': 6.7.3
520 | debug: 4.3.4
521 | eslint: 8.50.0
522 | typescript: 5.2.2
523 | transitivePeerDependencies:
524 | - supports-color
525 | dev: true
526 |
527 | /@typescript-eslint/scope-manager@5.62.0:
528 | resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
529 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
530 | dependencies:
531 | '@typescript-eslint/types': 5.62.0
532 | '@typescript-eslint/visitor-keys': 5.62.0
533 | dev: true
534 |
535 | /@typescript-eslint/scope-manager@6.7.3:
536 | resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==}
537 | engines: {node: ^16.0.0 || >=18.0.0}
538 | dependencies:
539 | '@typescript-eslint/types': 6.7.3
540 | '@typescript-eslint/visitor-keys': 6.7.3
541 | dev: true
542 |
543 | /@typescript-eslint/type-utils@6.7.3(eslint@8.50.0)(typescript@5.2.2):
544 | resolution: {integrity: sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==}
545 | engines: {node: ^16.0.0 || >=18.0.0}
546 | peerDependencies:
547 | eslint: ^7.0.0 || ^8.0.0
548 | typescript: '*'
549 | peerDependenciesMeta:
550 | typescript:
551 | optional: true
552 | dependencies:
553 | '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2)
554 | '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
555 | debug: 4.3.4
556 | eslint: 8.50.0
557 | ts-api-utils: 1.0.3(typescript@5.2.2)
558 | typescript: 5.2.2
559 | transitivePeerDependencies:
560 | - supports-color
561 | dev: true
562 |
563 | /@typescript-eslint/types@5.62.0:
564 | resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
565 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
566 | dev: true
567 |
568 | /@typescript-eslint/types@6.7.3:
569 | resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==}
570 | engines: {node: ^16.0.0 || >=18.0.0}
571 | dev: true
572 |
573 | /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2):
574 | resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
575 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
576 | peerDependencies:
577 | typescript: '*'
578 | peerDependenciesMeta:
579 | typescript:
580 | optional: true
581 | dependencies:
582 | '@typescript-eslint/types': 5.62.0
583 | '@typescript-eslint/visitor-keys': 5.62.0
584 | debug: 4.3.4
585 | globby: 11.1.0
586 | is-glob: 4.0.3
587 | semver: 7.5.4
588 | tsutils: 3.21.0(typescript@5.2.2)
589 | typescript: 5.2.2
590 | transitivePeerDependencies:
591 | - supports-color
592 | dev: true
593 |
594 | /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2):
595 | resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==}
596 | engines: {node: ^16.0.0 || >=18.0.0}
597 | peerDependencies:
598 | typescript: '*'
599 | peerDependenciesMeta:
600 | typescript:
601 | optional: true
602 | dependencies:
603 | '@typescript-eslint/types': 6.7.3
604 | '@typescript-eslint/visitor-keys': 6.7.3
605 | debug: 4.3.4
606 | globby: 11.1.0
607 | is-glob: 4.0.3
608 | semver: 7.5.4
609 | ts-api-utils: 1.0.3(typescript@5.2.2)
610 | typescript: 5.2.2
611 | transitivePeerDependencies:
612 | - supports-color
613 | dev: true
614 |
615 | /@typescript-eslint/utils@5.62.0(eslint@8.50.0)(typescript@5.2.2):
616 | resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
617 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
618 | peerDependencies:
619 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
620 | dependencies:
621 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
622 | '@types/json-schema': 7.0.13
623 | '@types/semver': 7.5.3
624 | '@typescript-eslint/scope-manager': 5.62.0
625 | '@typescript-eslint/types': 5.62.0
626 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2)
627 | eslint: 8.50.0
628 | eslint-scope: 5.1.1
629 | semver: 7.5.4
630 | transitivePeerDependencies:
631 | - supports-color
632 | - typescript
633 | dev: true
634 |
635 | /@typescript-eslint/utils@6.7.3(eslint@8.50.0)(typescript@5.2.2):
636 | resolution: {integrity: sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==}
637 | engines: {node: ^16.0.0 || >=18.0.0}
638 | peerDependencies:
639 | eslint: ^7.0.0 || ^8.0.0
640 | dependencies:
641 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
642 | '@types/json-schema': 7.0.13
643 | '@types/semver': 7.5.3
644 | '@typescript-eslint/scope-manager': 6.7.3
645 | '@typescript-eslint/types': 6.7.3
646 | '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2)
647 | eslint: 8.50.0
648 | semver: 7.5.4
649 | transitivePeerDependencies:
650 | - supports-color
651 | - typescript
652 | dev: true
653 |
654 | /@typescript-eslint/visitor-keys@5.62.0:
655 | resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
656 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
657 | dependencies:
658 | '@typescript-eslint/types': 5.62.0
659 | eslint-visitor-keys: 3.4.3
660 | dev: true
661 |
662 | /@typescript-eslint/visitor-keys@6.7.3:
663 | resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==}
664 | engines: {node: ^16.0.0 || >=18.0.0}
665 | dependencies:
666 | '@typescript-eslint/types': 6.7.3
667 | eslint-visitor-keys: 3.4.3
668 | dev: true
669 |
670 | /acorn-jsx@5.3.2(acorn@8.10.0):
671 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
672 | peerDependencies:
673 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
674 | dependencies:
675 | acorn: 8.10.0
676 | dev: true
677 |
678 | /acorn@8.10.0:
679 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
680 | engines: {node: '>=0.4.0'}
681 | hasBin: true
682 | dev: true
683 |
684 | /ajv@6.12.6:
685 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
686 | dependencies:
687 | fast-deep-equal: 3.1.3
688 | fast-json-stable-stringify: 2.1.0
689 | json-schema-traverse: 0.4.1
690 | uri-js: 4.4.1
691 | dev: true
692 |
693 | /ansi-regex@5.0.1:
694 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
695 | engines: {node: '>=8'}
696 | dev: true
697 |
698 | /ansi-styles@3.2.1:
699 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
700 | engines: {node: '>=4'}
701 | dependencies:
702 | color-convert: 1.9.3
703 | dev: true
704 |
705 | /ansi-styles@4.3.0:
706 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
707 | engines: {node: '>=8'}
708 | dependencies:
709 | color-convert: 2.0.1
710 | dev: true
711 |
712 | /any-promise@1.3.0:
713 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
714 | dev: true
715 |
716 | /anymatch@3.1.3:
717 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
718 | engines: {node: '>= 8'}
719 | dependencies:
720 | normalize-path: 3.0.0
721 | picomatch: 2.3.1
722 | dev: true
723 |
724 | /arg@5.0.2:
725 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
726 | dev: true
727 |
728 | /argparse@2.0.1:
729 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
730 | dev: true
731 |
732 | /aria-query@5.3.0:
733 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
734 | dependencies:
735 | dequal: 2.0.3
736 | dev: true
737 |
738 | /array-buffer-byte-length@1.0.0:
739 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
740 | dependencies:
741 | call-bind: 1.0.2
742 | is-array-buffer: 3.0.2
743 | dev: true
744 |
745 | /array-includes@3.1.7:
746 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
747 | engines: {node: '>= 0.4'}
748 | dependencies:
749 | call-bind: 1.0.2
750 | define-properties: 1.2.1
751 | es-abstract: 1.22.2
752 | get-intrinsic: 1.2.1
753 | is-string: 1.0.7
754 | dev: true
755 |
756 | /array-union@2.1.0:
757 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
758 | engines: {node: '>=8'}
759 | dev: true
760 |
761 | /array.prototype.findlastindex@1.2.3:
762 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
763 | engines: {node: '>= 0.4'}
764 | dependencies:
765 | call-bind: 1.0.2
766 | define-properties: 1.2.1
767 | es-abstract: 1.22.2
768 | es-shim-unscopables: 1.0.0
769 | get-intrinsic: 1.2.1
770 | dev: true
771 |
772 | /array.prototype.flat@1.3.2:
773 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
774 | engines: {node: '>= 0.4'}
775 | dependencies:
776 | call-bind: 1.0.2
777 | define-properties: 1.2.1
778 | es-abstract: 1.22.2
779 | es-shim-unscopables: 1.0.0
780 | dev: true
781 |
782 | /array.prototype.flatmap@1.3.2:
783 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
784 | engines: {node: '>= 0.4'}
785 | dependencies:
786 | call-bind: 1.0.2
787 | define-properties: 1.2.1
788 | es-abstract: 1.22.2
789 | es-shim-unscopables: 1.0.0
790 | dev: true
791 |
792 | /array.prototype.tosorted@1.1.2:
793 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==}
794 | dependencies:
795 | call-bind: 1.0.2
796 | define-properties: 1.2.1
797 | es-abstract: 1.22.2
798 | es-shim-unscopables: 1.0.0
799 | get-intrinsic: 1.2.1
800 | dev: true
801 |
802 | /arraybuffer.prototype.slice@1.0.2:
803 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
804 | engines: {node: '>= 0.4'}
805 | dependencies:
806 | array-buffer-byte-length: 1.0.0
807 | call-bind: 1.0.2
808 | define-properties: 1.2.1
809 | es-abstract: 1.22.2
810 | get-intrinsic: 1.2.1
811 | is-array-buffer: 3.0.2
812 | is-shared-array-buffer: 1.0.2
813 | dev: true
814 |
815 | /ast-types-flow@0.0.7:
816 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
817 | dev: true
818 |
819 | /asynciterator.prototype@1.0.0:
820 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==}
821 | dependencies:
822 | has-symbols: 1.0.3
823 | dev: true
824 |
825 | /autoprefixer@10.4.16(postcss@8.4.30):
826 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
827 | engines: {node: ^10 || ^12 || >=14}
828 | hasBin: true
829 | peerDependencies:
830 | postcss: ^8.1.0
831 | dependencies:
832 | browserslist: 4.21.11
833 | caniuse-lite: 1.0.30001539
834 | fraction.js: 4.3.6
835 | normalize-range: 0.1.2
836 | picocolors: 1.0.0
837 | postcss: 8.4.30
838 | postcss-value-parser: 4.2.0
839 | dev: true
840 |
841 | /available-typed-arrays@1.0.5:
842 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
843 | engines: {node: '>= 0.4'}
844 | dev: true
845 |
846 | /axe-core@4.8.2:
847 | resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==}
848 | engines: {node: '>=4'}
849 | dev: true
850 |
851 | /axobject-query@3.2.1:
852 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
853 | dependencies:
854 | dequal: 2.0.3
855 | dev: true
856 |
857 | /babel-eslint@10.1.0(eslint@8.50.0):
858 | resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==}
859 | engines: {node: '>=6'}
860 | deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
861 | peerDependencies:
862 | eslint: '>= 4.12.1'
863 | dependencies:
864 | '@babel/code-frame': 7.22.13
865 | '@babel/parser': 7.23.0
866 | '@babel/traverse': 7.23.0
867 | '@babel/types': 7.23.0
868 | eslint: 8.50.0
869 | eslint-visitor-keys: 1.3.0
870 | resolve: 1.22.6
871 | transitivePeerDependencies:
872 | - supports-color
873 | dev: true
874 |
875 | /balanced-match@1.0.2:
876 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
877 | dev: true
878 |
879 | /big-integer@1.6.51:
880 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
881 | engines: {node: '>=0.6'}
882 | dev: true
883 |
884 | /binary-extensions@2.2.0:
885 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
886 | engines: {node: '>=8'}
887 | dev: true
888 |
889 | /bplist-parser@0.2.0:
890 | resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
891 | engines: {node: '>= 5.10.0'}
892 | dependencies:
893 | big-integer: 1.6.51
894 | dev: true
895 |
896 | /brace-expansion@1.1.11:
897 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
898 | dependencies:
899 | balanced-match: 1.0.2
900 | concat-map: 0.0.1
901 | dev: true
902 |
903 | /braces@3.0.2:
904 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
905 | engines: {node: '>=8'}
906 | dependencies:
907 | fill-range: 7.0.1
908 | dev: true
909 |
910 | /browserslist@4.21.11:
911 | resolution: {integrity: sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==}
912 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
913 | hasBin: true
914 | dependencies:
915 | caniuse-lite: 1.0.30001539
916 | electron-to-chromium: 1.4.529
917 | node-releases: 2.0.13
918 | update-browserslist-db: 1.0.13(browserslist@4.21.11)
919 | dev: true
920 |
921 | /bundle-name@3.0.0:
922 | resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
923 | engines: {node: '>=12'}
924 | dependencies:
925 | run-applescript: 5.0.0
926 | dev: true
927 |
928 | /busboy@1.6.0:
929 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
930 | engines: {node: '>=10.16.0'}
931 | dependencies:
932 | streamsearch: 1.1.0
933 | dev: false
934 |
935 | /call-bind@1.0.2:
936 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
937 | dependencies:
938 | function-bind: 1.1.1
939 | get-intrinsic: 1.2.1
940 | dev: true
941 |
942 | /callsites@3.1.0:
943 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
944 | engines: {node: '>=6'}
945 | dev: true
946 |
947 | /camelcase-css@2.0.1:
948 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
949 | engines: {node: '>= 6'}
950 | dev: true
951 |
952 | /caniuse-lite@1.0.30001539:
953 | resolution: {integrity: sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==}
954 |
955 | /chalk@2.4.2:
956 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
957 | engines: {node: '>=4'}
958 | dependencies:
959 | ansi-styles: 3.2.1
960 | escape-string-regexp: 1.0.5
961 | supports-color: 5.5.0
962 | dev: true
963 |
964 | /chalk@4.1.2:
965 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
966 | engines: {node: '>=10'}
967 | dependencies:
968 | ansi-styles: 4.3.0
969 | supports-color: 7.2.0
970 | dev: true
971 |
972 | /chokidar@3.5.3:
973 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
974 | engines: {node: '>= 8.10.0'}
975 | dependencies:
976 | anymatch: 3.1.3
977 | braces: 3.0.2
978 | glob-parent: 5.1.2
979 | is-binary-path: 2.1.0
980 | is-glob: 4.0.3
981 | normalize-path: 3.0.0
982 | readdirp: 3.6.0
983 | optionalDependencies:
984 | fsevents: 2.3.3
985 | dev: true
986 |
987 | /client-only@0.0.1:
988 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
989 | dev: false
990 |
991 | /color-convert@1.9.3:
992 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
993 | dependencies:
994 | color-name: 1.1.3
995 | dev: true
996 |
997 | /color-convert@2.0.1:
998 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
999 | engines: {node: '>=7.0.0'}
1000 | dependencies:
1001 | color-name: 1.1.4
1002 | dev: true
1003 |
1004 | /color-name@1.1.3:
1005 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
1006 | dev: true
1007 |
1008 | /color-name@1.1.4:
1009 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1010 | dev: true
1011 |
1012 | /commander@4.1.1:
1013 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
1014 | engines: {node: '>= 6'}
1015 | dev: true
1016 |
1017 | /concat-map@0.0.1:
1018 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1019 | dev: true
1020 |
1021 | /confusing-browser-globals@1.0.11:
1022 | resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
1023 | dev: true
1024 |
1025 | /cross-spawn@7.0.3:
1026 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1027 | engines: {node: '>= 8'}
1028 | dependencies:
1029 | path-key: 3.1.1
1030 | shebang-command: 2.0.0
1031 | which: 2.0.2
1032 | dev: true
1033 |
1034 | /cssesc@3.0.0:
1035 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
1036 | engines: {node: '>=4'}
1037 | hasBin: true
1038 | dev: true
1039 |
1040 | /csstype@3.1.2:
1041 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
1042 | dev: true
1043 |
1044 | /damerau-levenshtein@1.0.8:
1045 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
1046 | dev: true
1047 |
1048 | /debug@3.2.7:
1049 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
1050 | peerDependencies:
1051 | supports-color: '*'
1052 | peerDependenciesMeta:
1053 | supports-color:
1054 | optional: true
1055 | dependencies:
1056 | ms: 2.1.3
1057 | dev: true
1058 |
1059 | /debug@4.3.4:
1060 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1061 | engines: {node: '>=6.0'}
1062 | peerDependencies:
1063 | supports-color: '*'
1064 | peerDependenciesMeta:
1065 | supports-color:
1066 | optional: true
1067 | dependencies:
1068 | ms: 2.1.2
1069 | dev: true
1070 |
1071 | /deep-is@0.1.4:
1072 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1073 | dev: true
1074 |
1075 | /default-browser-id@3.0.0:
1076 | resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
1077 | engines: {node: '>=12'}
1078 | dependencies:
1079 | bplist-parser: 0.2.0
1080 | untildify: 4.0.0
1081 | dev: true
1082 |
1083 | /default-browser@4.0.0:
1084 | resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
1085 | engines: {node: '>=14.16'}
1086 | dependencies:
1087 | bundle-name: 3.0.0
1088 | default-browser-id: 3.0.0
1089 | execa: 7.2.0
1090 | titleize: 3.0.0
1091 | dev: true
1092 |
1093 | /define-data-property@1.1.0:
1094 | resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==}
1095 | engines: {node: '>= 0.4'}
1096 | dependencies:
1097 | get-intrinsic: 1.2.1
1098 | gopd: 1.0.1
1099 | has-property-descriptors: 1.0.0
1100 | dev: true
1101 |
1102 | /define-lazy-prop@3.0.0:
1103 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
1104 | engines: {node: '>=12'}
1105 | dev: true
1106 |
1107 | /define-properties@1.2.1:
1108 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
1109 | engines: {node: '>= 0.4'}
1110 | dependencies:
1111 | define-data-property: 1.1.0
1112 | has-property-descriptors: 1.0.0
1113 | object-keys: 1.1.1
1114 | dev: true
1115 |
1116 | /dequal@2.0.3:
1117 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
1118 | engines: {node: '>=6'}
1119 | dev: true
1120 |
1121 | /didyoumean@1.2.2:
1122 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
1123 | dev: true
1124 |
1125 | /dir-glob@3.0.1:
1126 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1127 | engines: {node: '>=8'}
1128 | dependencies:
1129 | path-type: 4.0.0
1130 | dev: true
1131 |
1132 | /dlv@1.1.3:
1133 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
1134 | dev: true
1135 |
1136 | /doctrine@2.1.0:
1137 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
1138 | engines: {node: '>=0.10.0'}
1139 | dependencies:
1140 | esutils: 2.0.3
1141 | dev: true
1142 |
1143 | /doctrine@3.0.0:
1144 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1145 | engines: {node: '>=6.0.0'}
1146 | dependencies:
1147 | esutils: 2.0.3
1148 | dev: true
1149 |
1150 | /electron-to-chromium@1.4.529:
1151 | resolution: {integrity: sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A==}
1152 | dev: true
1153 |
1154 | /emoji-regex@9.2.2:
1155 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
1156 | dev: true
1157 |
1158 | /enhanced-resolve@5.15.0:
1159 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
1160 | engines: {node: '>=10.13.0'}
1161 | dependencies:
1162 | graceful-fs: 4.2.11
1163 | tapable: 2.2.1
1164 | dev: true
1165 |
1166 | /es-abstract@1.22.2:
1167 | resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
1168 | engines: {node: '>= 0.4'}
1169 | dependencies:
1170 | array-buffer-byte-length: 1.0.0
1171 | arraybuffer.prototype.slice: 1.0.2
1172 | available-typed-arrays: 1.0.5
1173 | call-bind: 1.0.2
1174 | es-set-tostringtag: 2.0.1
1175 | es-to-primitive: 1.2.1
1176 | function.prototype.name: 1.1.6
1177 | get-intrinsic: 1.2.1
1178 | get-symbol-description: 1.0.0
1179 | globalthis: 1.0.3
1180 | gopd: 1.0.1
1181 | has: 1.0.3
1182 | has-property-descriptors: 1.0.0
1183 | has-proto: 1.0.1
1184 | has-symbols: 1.0.3
1185 | internal-slot: 1.0.5
1186 | is-array-buffer: 3.0.2
1187 | is-callable: 1.2.7
1188 | is-negative-zero: 2.0.2
1189 | is-regex: 1.1.4
1190 | is-shared-array-buffer: 1.0.2
1191 | is-string: 1.0.7
1192 | is-typed-array: 1.1.12
1193 | is-weakref: 1.0.2
1194 | object-inspect: 1.12.3
1195 | object-keys: 1.1.1
1196 | object.assign: 4.1.4
1197 | regexp.prototype.flags: 1.5.1
1198 | safe-array-concat: 1.0.1
1199 | safe-regex-test: 1.0.0
1200 | string.prototype.trim: 1.2.8
1201 | string.prototype.trimend: 1.0.7
1202 | string.prototype.trimstart: 1.0.7
1203 | typed-array-buffer: 1.0.0
1204 | typed-array-byte-length: 1.0.0
1205 | typed-array-byte-offset: 1.0.0
1206 | typed-array-length: 1.0.4
1207 | unbox-primitive: 1.0.2
1208 | which-typed-array: 1.1.11
1209 | dev: true
1210 |
1211 | /es-iterator-helpers@1.0.15:
1212 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==}
1213 | dependencies:
1214 | asynciterator.prototype: 1.0.0
1215 | call-bind: 1.0.2
1216 | define-properties: 1.2.1
1217 | es-abstract: 1.22.2
1218 | es-set-tostringtag: 2.0.1
1219 | function-bind: 1.1.1
1220 | get-intrinsic: 1.2.1
1221 | globalthis: 1.0.3
1222 | has-property-descriptors: 1.0.0
1223 | has-proto: 1.0.1
1224 | has-symbols: 1.0.3
1225 | internal-slot: 1.0.5
1226 | iterator.prototype: 1.1.2
1227 | safe-array-concat: 1.0.1
1228 | dev: true
1229 |
1230 | /es-set-tostringtag@2.0.1:
1231 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1232 | engines: {node: '>= 0.4'}
1233 | dependencies:
1234 | get-intrinsic: 1.2.1
1235 | has: 1.0.3
1236 | has-tostringtag: 1.0.0
1237 | dev: true
1238 |
1239 | /es-shim-unscopables@1.0.0:
1240 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1241 | dependencies:
1242 | has: 1.0.3
1243 | dev: true
1244 |
1245 | /es-to-primitive@1.2.1:
1246 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1247 | engines: {node: '>= 0.4'}
1248 | dependencies:
1249 | is-callable: 1.2.7
1250 | is-date-object: 1.0.5
1251 | is-symbol: 1.0.4
1252 | dev: true
1253 |
1254 | /escalade@3.1.1:
1255 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1256 | engines: {node: '>=6'}
1257 | dev: true
1258 |
1259 | /escape-string-regexp@1.0.5:
1260 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1261 | engines: {node: '>=0.8.0'}
1262 | dev: true
1263 |
1264 | /escape-string-regexp@4.0.0:
1265 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1266 | engines: {node: '>=10'}
1267 | dev: true
1268 |
1269 | /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.28.1)(eslint@8.50.0):
1270 | resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
1271 | engines: {node: ^10.12.0 || >=12.0.0}
1272 | peerDependencies:
1273 | eslint: ^7.32.0 || ^8.2.0
1274 | eslint-plugin-import: ^2.25.2
1275 | dependencies:
1276 | confusing-browser-globals: 1.0.11
1277 | eslint: 8.50.0
1278 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1279 | object.assign: 4.1.4
1280 | object.entries: 1.1.7
1281 | semver: 6.3.1
1282 | dev: true
1283 |
1284 | /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.7.3)(@typescript-eslint/parser@6.7.3)(eslint-plugin-import@2.28.1)(eslint@8.50.0):
1285 | resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==}
1286 | peerDependencies:
1287 | '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0
1288 | '@typescript-eslint/parser': ^5.0.0 || ^6.0.0
1289 | eslint: ^7.32.0 || ^8.2.0
1290 | eslint-plugin-import: ^2.25.3
1291 | dependencies:
1292 | '@typescript-eslint/eslint-plugin': 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2)
1293 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
1294 | eslint: 8.50.0
1295 | eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.28.1)(eslint@8.50.0)
1296 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1297 | dev: true
1298 |
1299 | /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.28.1)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0):
1300 | resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==}
1301 | engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0}
1302 | peerDependencies:
1303 | eslint: ^7.32.0 || ^8.2.0
1304 | eslint-plugin-import: ^2.25.3
1305 | eslint-plugin-jsx-a11y: ^6.5.1
1306 | eslint-plugin-react: ^7.28.0
1307 | eslint-plugin-react-hooks: ^4.3.0
1308 | dependencies:
1309 | eslint: 8.50.0
1310 | eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.28.1)(eslint@8.50.0)
1311 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1312 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0)
1313 | eslint-plugin-react: 7.33.2(eslint@8.50.0)
1314 | eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0)
1315 | object.assign: 4.1.4
1316 | object.entries: 1.1.7
1317 | dev: true
1318 |
1319 | /eslint-config-next@13.5.3(eslint@8.50.0)(typescript@5.2.2):
1320 | resolution: {integrity: sha512-VN2qbCpq2DMWgs7SVF8KTmc8bVaWz3s4nmcFqRLs7PNBt5AXejOhJuZ4zg2sCEHOvz5RvqdwLeI++NSCV6qHVg==}
1321 | peerDependencies:
1322 | eslint: ^7.23.0 || ^8.0.0
1323 | typescript: '>=3.3.1'
1324 | peerDependenciesMeta:
1325 | typescript:
1326 | optional: true
1327 | dependencies:
1328 | '@next/eslint-plugin-next': 13.5.3
1329 | '@rushstack/eslint-patch': 1.4.0
1330 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
1331 | eslint: 8.50.0
1332 | eslint-import-resolver-node: 0.3.9
1333 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0)
1334 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1335 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0)
1336 | eslint-plugin-react: 7.33.2(eslint@8.50.0)
1337 | eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0)
1338 | typescript: 5.2.2
1339 | transitivePeerDependencies:
1340 | - eslint-import-resolver-webpack
1341 | - supports-color
1342 | dev: true
1343 |
1344 | /eslint-config-prettier@8.10.0(eslint@8.50.0):
1345 | resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
1346 | hasBin: true
1347 | peerDependencies:
1348 | eslint: '>=7.0.0'
1349 | dependencies:
1350 | eslint: 8.50.0
1351 | dev: true
1352 |
1353 | /eslint-config-react@1.1.7:
1354 | resolution: {integrity: sha512-P4Z6u68wf0BvIvZNu+U8uQsk3DcZ1CcCI1XpUkJlG6vOa+iVcSQLgE01f2DB2kXlKRcT8/3dsH+wveLgvEgbkQ==}
1355 | dev: true
1356 |
1357 | /eslint-import-resolver-node@0.3.9:
1358 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
1359 | dependencies:
1360 | debug: 3.2.7
1361 | is-core-module: 2.13.0
1362 | resolve: 1.22.6
1363 | transitivePeerDependencies:
1364 | - supports-color
1365 | dev: true
1366 |
1367 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0):
1368 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
1369 | engines: {node: ^14.18.0 || >=16.0.0}
1370 | peerDependencies:
1371 | eslint: '*'
1372 | eslint-plugin-import: '*'
1373 | dependencies:
1374 | debug: 4.3.4
1375 | enhanced-resolve: 5.15.0
1376 | eslint: 8.50.0
1377 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1378 | eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1379 | fast-glob: 3.3.1
1380 | get-tsconfig: 4.7.2
1381 | is-core-module: 2.13.0
1382 | is-glob: 4.0.3
1383 | transitivePeerDependencies:
1384 | - '@typescript-eslint/parser'
1385 | - eslint-import-resolver-node
1386 | - eslint-import-resolver-webpack
1387 | - supports-color
1388 | dev: true
1389 |
1390 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0):
1391 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1392 | engines: {node: '>=4'}
1393 | peerDependencies:
1394 | '@typescript-eslint/parser': '*'
1395 | eslint: '*'
1396 | eslint-import-resolver-node: '*'
1397 | eslint-import-resolver-typescript: '*'
1398 | eslint-import-resolver-webpack: '*'
1399 | peerDependenciesMeta:
1400 | '@typescript-eslint/parser':
1401 | optional: true
1402 | eslint:
1403 | optional: true
1404 | eslint-import-resolver-node:
1405 | optional: true
1406 | eslint-import-resolver-typescript:
1407 | optional: true
1408 | eslint-import-resolver-webpack:
1409 | optional: true
1410 | dependencies:
1411 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
1412 | debug: 3.2.7
1413 | eslint: 8.50.0
1414 | eslint-import-resolver-node: 0.3.9
1415 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0)
1416 | transitivePeerDependencies:
1417 | - supports-color
1418 | dev: true
1419 |
1420 | /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0):
1421 | resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
1422 | engines: {node: '>=4'}
1423 | peerDependencies:
1424 | '@typescript-eslint/parser': '*'
1425 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1426 | peerDependenciesMeta:
1427 | '@typescript-eslint/parser':
1428 | optional: true
1429 | dependencies:
1430 | '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
1431 | array-includes: 3.1.7
1432 | array.prototype.findlastindex: 1.2.3
1433 | array.prototype.flat: 1.3.2
1434 | array.prototype.flatmap: 1.3.2
1435 | debug: 3.2.7
1436 | doctrine: 2.1.0
1437 | eslint: 8.50.0
1438 | eslint-import-resolver-node: 0.3.9
1439 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
1440 | has: 1.0.3
1441 | is-core-module: 2.13.0
1442 | is-glob: 4.0.3
1443 | minimatch: 3.1.2
1444 | object.fromentries: 2.0.7
1445 | object.groupby: 1.0.1
1446 | object.values: 1.1.7
1447 | semver: 6.3.1
1448 | tsconfig-paths: 3.14.2
1449 | transitivePeerDependencies:
1450 | - eslint-import-resolver-typescript
1451 | - eslint-import-resolver-webpack
1452 | - supports-color
1453 | dev: true
1454 |
1455 | /eslint-plugin-jsx-a11y@6.7.1(eslint@8.50.0):
1456 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
1457 | engines: {node: '>=4.0'}
1458 | peerDependencies:
1459 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1460 | dependencies:
1461 | '@babel/runtime': 7.23.1
1462 | aria-query: 5.3.0
1463 | array-includes: 3.1.7
1464 | array.prototype.flatmap: 1.3.2
1465 | ast-types-flow: 0.0.7
1466 | axe-core: 4.8.2
1467 | axobject-query: 3.2.1
1468 | damerau-levenshtein: 1.0.8
1469 | emoji-regex: 9.2.2
1470 | eslint: 8.50.0
1471 | has: 1.0.3
1472 | jsx-ast-utils: 3.3.5
1473 | language-tags: 1.0.5
1474 | minimatch: 3.1.2
1475 | object.entries: 1.1.7
1476 | object.fromentries: 2.0.7
1477 | semver: 6.3.1
1478 | dev: true
1479 |
1480 | /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.10.0)(eslint@8.50.0)(prettier@3.0.3):
1481 | resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==}
1482 | engines: {node: ^14.18.0 || >=16.0.0}
1483 | peerDependencies:
1484 | '@types/eslint': '>=8.0.0'
1485 | eslint: '>=8.0.0'
1486 | eslint-config-prettier: '*'
1487 | prettier: '>=3.0.0'
1488 | peerDependenciesMeta:
1489 | '@types/eslint':
1490 | optional: true
1491 | eslint-config-prettier:
1492 | optional: true
1493 | dependencies:
1494 | eslint: 8.50.0
1495 | eslint-config-prettier: 8.10.0(eslint@8.50.0)
1496 | prettier: 3.0.3
1497 | prettier-linter-helpers: 1.0.0
1498 | synckit: 0.8.5
1499 | dev: true
1500 |
1501 | /eslint-plugin-react-hooks@4.6.0(eslint@8.50.0):
1502 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
1503 | engines: {node: '>=10'}
1504 | peerDependencies:
1505 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
1506 | dependencies:
1507 | eslint: 8.50.0
1508 | dev: true
1509 |
1510 | /eslint-plugin-react@7.33.2(eslint@8.50.0):
1511 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==}
1512 | engines: {node: '>=4'}
1513 | peerDependencies:
1514 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1515 | dependencies:
1516 | array-includes: 3.1.7
1517 | array.prototype.flatmap: 1.3.2
1518 | array.prototype.tosorted: 1.1.2
1519 | doctrine: 2.1.0
1520 | es-iterator-helpers: 1.0.15
1521 | eslint: 8.50.0
1522 | estraverse: 5.3.0
1523 | jsx-ast-utils: 3.3.5
1524 | minimatch: 3.1.2
1525 | object.entries: 1.1.7
1526 | object.fromentries: 2.0.7
1527 | object.hasown: 1.1.3
1528 | object.values: 1.1.7
1529 | prop-types: 15.8.1
1530 | resolve: 2.0.0-next.4
1531 | semver: 6.3.1
1532 | string.prototype.matchall: 4.0.10
1533 | dev: true
1534 |
1535 | /eslint-plugin-testing-library@5.11.1(eslint@8.50.0)(typescript@5.2.2):
1536 | resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==}
1537 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
1538 | peerDependencies:
1539 | eslint: ^7.5.0 || ^8.0.0
1540 | dependencies:
1541 | '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2)
1542 | eslint: 8.50.0
1543 | transitivePeerDependencies:
1544 | - supports-color
1545 | - typescript
1546 | dev: true
1547 |
1548 | /eslint-scope@5.1.1:
1549 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1550 | engines: {node: '>=8.0.0'}
1551 | dependencies:
1552 | esrecurse: 4.3.0
1553 | estraverse: 4.3.0
1554 | dev: true
1555 |
1556 | /eslint-scope@7.2.2:
1557 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1558 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1559 | dependencies:
1560 | esrecurse: 4.3.0
1561 | estraverse: 5.3.0
1562 | dev: true
1563 |
1564 | /eslint-visitor-keys@1.3.0:
1565 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
1566 | engines: {node: '>=4'}
1567 | dev: true
1568 |
1569 | /eslint-visitor-keys@3.4.3:
1570 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1571 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1572 | dev: true
1573 |
1574 | /eslint@8.50.0:
1575 | resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==}
1576 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1577 | hasBin: true
1578 | dependencies:
1579 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
1580 | '@eslint-community/regexpp': 4.8.2
1581 | '@eslint/eslintrc': 2.1.2
1582 | '@eslint/js': 8.50.0
1583 | '@humanwhocodes/config-array': 0.11.11
1584 | '@humanwhocodes/module-importer': 1.0.1
1585 | '@nodelib/fs.walk': 1.2.8
1586 | ajv: 6.12.6
1587 | chalk: 4.1.2
1588 | cross-spawn: 7.0.3
1589 | debug: 4.3.4
1590 | doctrine: 3.0.0
1591 | escape-string-regexp: 4.0.0
1592 | eslint-scope: 7.2.2
1593 | eslint-visitor-keys: 3.4.3
1594 | espree: 9.6.1
1595 | esquery: 1.5.0
1596 | esutils: 2.0.3
1597 | fast-deep-equal: 3.1.3
1598 | file-entry-cache: 6.0.1
1599 | find-up: 5.0.0
1600 | glob-parent: 6.0.2
1601 | globals: 13.22.0
1602 | graphemer: 1.4.0
1603 | ignore: 5.2.4
1604 | imurmurhash: 0.1.4
1605 | is-glob: 4.0.3
1606 | is-path-inside: 3.0.3
1607 | js-yaml: 4.1.0
1608 | json-stable-stringify-without-jsonify: 1.0.1
1609 | levn: 0.4.1
1610 | lodash.merge: 4.6.2
1611 | minimatch: 3.1.2
1612 | natural-compare: 1.4.0
1613 | optionator: 0.9.3
1614 | strip-ansi: 6.0.1
1615 | text-table: 0.2.0
1616 | transitivePeerDependencies:
1617 | - supports-color
1618 | dev: true
1619 |
1620 | /espree@9.6.1:
1621 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1622 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1623 | dependencies:
1624 | acorn: 8.10.0
1625 | acorn-jsx: 5.3.2(acorn@8.10.0)
1626 | eslint-visitor-keys: 3.4.3
1627 | dev: true
1628 |
1629 | /esquery@1.5.0:
1630 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1631 | engines: {node: '>=0.10'}
1632 | dependencies:
1633 | estraverse: 5.3.0
1634 | dev: true
1635 |
1636 | /esrecurse@4.3.0:
1637 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1638 | engines: {node: '>=4.0'}
1639 | dependencies:
1640 | estraverse: 5.3.0
1641 | dev: true
1642 |
1643 | /estraverse@4.3.0:
1644 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1645 | engines: {node: '>=4.0'}
1646 | dev: true
1647 |
1648 | /estraverse@5.3.0:
1649 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1650 | engines: {node: '>=4.0'}
1651 | dev: true
1652 |
1653 | /esutils@2.0.3:
1654 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1655 | engines: {node: '>=0.10.0'}
1656 | dev: true
1657 |
1658 | /execa@5.1.1:
1659 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1660 | engines: {node: '>=10'}
1661 | dependencies:
1662 | cross-spawn: 7.0.3
1663 | get-stream: 6.0.1
1664 | human-signals: 2.1.0
1665 | is-stream: 2.0.1
1666 | merge-stream: 2.0.0
1667 | npm-run-path: 4.0.1
1668 | onetime: 5.1.2
1669 | signal-exit: 3.0.7
1670 | strip-final-newline: 2.0.0
1671 | dev: true
1672 |
1673 | /execa@7.2.0:
1674 | resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
1675 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
1676 | dependencies:
1677 | cross-spawn: 7.0.3
1678 | get-stream: 6.0.1
1679 | human-signals: 4.3.1
1680 | is-stream: 3.0.0
1681 | merge-stream: 2.0.0
1682 | npm-run-path: 5.1.0
1683 | onetime: 6.0.0
1684 | signal-exit: 3.0.7
1685 | strip-final-newline: 3.0.0
1686 | dev: true
1687 |
1688 | /fast-deep-equal@3.1.3:
1689 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1690 | dev: true
1691 |
1692 | /fast-diff@1.3.0:
1693 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1694 | dev: true
1695 |
1696 | /fast-glob@3.3.1:
1697 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
1698 | engines: {node: '>=8.6.0'}
1699 | dependencies:
1700 | '@nodelib/fs.stat': 2.0.5
1701 | '@nodelib/fs.walk': 1.2.8
1702 | glob-parent: 5.1.2
1703 | merge2: 1.4.1
1704 | micromatch: 4.0.5
1705 | dev: true
1706 |
1707 | /fast-json-stable-stringify@2.1.0:
1708 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1709 | dev: true
1710 |
1711 | /fast-levenshtein@2.0.6:
1712 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1713 | dev: true
1714 |
1715 | /fastq@1.15.0:
1716 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1717 | dependencies:
1718 | reusify: 1.0.4
1719 | dev: true
1720 |
1721 | /file-entry-cache@6.0.1:
1722 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1723 | engines: {node: ^10.12.0 || >=12.0.0}
1724 | dependencies:
1725 | flat-cache: 3.1.0
1726 | dev: true
1727 |
1728 | /fill-range@7.0.1:
1729 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1730 | engines: {node: '>=8'}
1731 | dependencies:
1732 | to-regex-range: 5.0.1
1733 | dev: true
1734 |
1735 | /find-up@5.0.0:
1736 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1737 | engines: {node: '>=10'}
1738 | dependencies:
1739 | locate-path: 6.0.0
1740 | path-exists: 4.0.0
1741 | dev: true
1742 |
1743 | /flat-cache@3.1.0:
1744 | resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
1745 | engines: {node: '>=12.0.0'}
1746 | dependencies:
1747 | flatted: 3.2.9
1748 | keyv: 4.5.3
1749 | rimraf: 3.0.2
1750 | dev: true
1751 |
1752 | /flatted@3.2.9:
1753 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
1754 | dev: true
1755 |
1756 | /for-each@0.3.3:
1757 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1758 | dependencies:
1759 | is-callable: 1.2.7
1760 | dev: true
1761 |
1762 | /fraction.js@4.3.6:
1763 | resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==}
1764 | dev: true
1765 |
1766 | /fs.realpath@1.0.0:
1767 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1768 | dev: true
1769 |
1770 | /fsevents@2.3.3:
1771 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1772 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1773 | os: [darwin]
1774 | requiresBuild: true
1775 | dev: true
1776 | optional: true
1777 |
1778 | /function-bind@1.1.1:
1779 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1780 | dev: true
1781 |
1782 | /function.prototype.name@1.1.6:
1783 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
1784 | engines: {node: '>= 0.4'}
1785 | dependencies:
1786 | call-bind: 1.0.2
1787 | define-properties: 1.2.1
1788 | es-abstract: 1.22.2
1789 | functions-have-names: 1.2.3
1790 | dev: true
1791 |
1792 | /functions-have-names@1.2.3:
1793 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1794 | dev: true
1795 |
1796 | /get-intrinsic@1.2.1:
1797 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
1798 | dependencies:
1799 | function-bind: 1.1.1
1800 | has: 1.0.3
1801 | has-proto: 1.0.1
1802 | has-symbols: 1.0.3
1803 | dev: true
1804 |
1805 | /get-stream@6.0.1:
1806 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1807 | engines: {node: '>=10'}
1808 | dev: true
1809 |
1810 | /get-symbol-description@1.0.0:
1811 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1812 | engines: {node: '>= 0.4'}
1813 | dependencies:
1814 | call-bind: 1.0.2
1815 | get-intrinsic: 1.2.1
1816 | dev: true
1817 |
1818 | /get-tsconfig@4.7.2:
1819 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
1820 | dependencies:
1821 | resolve-pkg-maps: 1.0.0
1822 | dev: true
1823 |
1824 | /glob-parent@5.1.2:
1825 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1826 | engines: {node: '>= 6'}
1827 | dependencies:
1828 | is-glob: 4.0.3
1829 | dev: true
1830 |
1831 | /glob-parent@6.0.2:
1832 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1833 | engines: {node: '>=10.13.0'}
1834 | dependencies:
1835 | is-glob: 4.0.3
1836 | dev: true
1837 |
1838 | /glob-to-regexp@0.4.1:
1839 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
1840 | dev: false
1841 |
1842 | /glob@7.1.6:
1843 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
1844 | dependencies:
1845 | fs.realpath: 1.0.0
1846 | inflight: 1.0.6
1847 | inherits: 2.0.4
1848 | minimatch: 3.1.2
1849 | once: 1.4.0
1850 | path-is-absolute: 1.0.1
1851 | dev: true
1852 |
1853 | /glob@7.1.7:
1854 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
1855 | dependencies:
1856 | fs.realpath: 1.0.0
1857 | inflight: 1.0.6
1858 | inherits: 2.0.4
1859 | minimatch: 3.1.2
1860 | once: 1.4.0
1861 | path-is-absolute: 1.0.1
1862 | dev: true
1863 |
1864 | /glob@7.2.3:
1865 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1866 | dependencies:
1867 | fs.realpath: 1.0.0
1868 | inflight: 1.0.6
1869 | inherits: 2.0.4
1870 | minimatch: 3.1.2
1871 | once: 1.4.0
1872 | path-is-absolute: 1.0.1
1873 | dev: true
1874 |
1875 | /globals@11.12.0:
1876 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1877 | engines: {node: '>=4'}
1878 | dev: true
1879 |
1880 | /globals@13.22.0:
1881 | resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==}
1882 | engines: {node: '>=8'}
1883 | dependencies:
1884 | type-fest: 0.20.2
1885 | dev: true
1886 |
1887 | /globalthis@1.0.3:
1888 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
1889 | engines: {node: '>= 0.4'}
1890 | dependencies:
1891 | define-properties: 1.2.1
1892 | dev: true
1893 |
1894 | /globby@11.1.0:
1895 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1896 | engines: {node: '>=10'}
1897 | dependencies:
1898 | array-union: 2.1.0
1899 | dir-glob: 3.0.1
1900 | fast-glob: 3.3.1
1901 | ignore: 5.2.4
1902 | merge2: 1.4.1
1903 | slash: 3.0.0
1904 | dev: true
1905 |
1906 | /gopd@1.0.1:
1907 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1908 | dependencies:
1909 | get-intrinsic: 1.2.1
1910 | dev: true
1911 |
1912 | /graceful-fs@4.2.11:
1913 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1914 |
1915 | /graphemer@1.4.0:
1916 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1917 | dev: true
1918 |
1919 | /has-bigints@1.0.2:
1920 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1921 | dev: true
1922 |
1923 | /has-flag@3.0.0:
1924 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1925 | engines: {node: '>=4'}
1926 | dev: true
1927 |
1928 | /has-flag@4.0.0:
1929 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1930 | engines: {node: '>=8'}
1931 | dev: true
1932 |
1933 | /has-property-descriptors@1.0.0:
1934 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1935 | dependencies:
1936 | get-intrinsic: 1.2.1
1937 | dev: true
1938 |
1939 | /has-proto@1.0.1:
1940 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1941 | engines: {node: '>= 0.4'}
1942 | dev: true
1943 |
1944 | /has-symbols@1.0.3:
1945 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1946 | engines: {node: '>= 0.4'}
1947 | dev: true
1948 |
1949 | /has-tostringtag@1.0.0:
1950 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1951 | engines: {node: '>= 0.4'}
1952 | dependencies:
1953 | has-symbols: 1.0.3
1954 | dev: true
1955 |
1956 | /has@1.0.3:
1957 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1958 | engines: {node: '>= 0.4.0'}
1959 | dependencies:
1960 | function-bind: 1.1.1
1961 | dev: true
1962 |
1963 | /human-signals@2.1.0:
1964 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1965 | engines: {node: '>=10.17.0'}
1966 | dev: true
1967 |
1968 | /human-signals@4.3.1:
1969 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
1970 | engines: {node: '>=14.18.0'}
1971 | dev: true
1972 |
1973 | /ignore@5.2.4:
1974 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1975 | engines: {node: '>= 4'}
1976 | dev: true
1977 |
1978 | /import-fresh@3.3.0:
1979 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1980 | engines: {node: '>=6'}
1981 | dependencies:
1982 | parent-module: 1.0.1
1983 | resolve-from: 4.0.0
1984 | dev: true
1985 |
1986 | /imurmurhash@0.1.4:
1987 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1988 | engines: {node: '>=0.8.19'}
1989 | dev: true
1990 |
1991 | /inflight@1.0.6:
1992 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1993 | dependencies:
1994 | once: 1.4.0
1995 | wrappy: 1.0.2
1996 | dev: true
1997 |
1998 | /inherits@2.0.4:
1999 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
2000 | dev: true
2001 |
2002 | /internal-slot@1.0.5:
2003 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
2004 | engines: {node: '>= 0.4'}
2005 | dependencies:
2006 | get-intrinsic: 1.2.1
2007 | has: 1.0.3
2008 | side-channel: 1.0.4
2009 | dev: true
2010 |
2011 | /is-array-buffer@3.0.2:
2012 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
2013 | dependencies:
2014 | call-bind: 1.0.2
2015 | get-intrinsic: 1.2.1
2016 | is-typed-array: 1.1.12
2017 | dev: true
2018 |
2019 | /is-async-function@2.0.0:
2020 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
2021 | engines: {node: '>= 0.4'}
2022 | dependencies:
2023 | has-tostringtag: 1.0.0
2024 | dev: true
2025 |
2026 | /is-bigint@1.0.4:
2027 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
2028 | dependencies:
2029 | has-bigints: 1.0.2
2030 | dev: true
2031 |
2032 | /is-binary-path@2.1.0:
2033 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
2034 | engines: {node: '>=8'}
2035 | dependencies:
2036 | binary-extensions: 2.2.0
2037 | dev: true
2038 |
2039 | /is-boolean-object@1.1.2:
2040 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
2041 | engines: {node: '>= 0.4'}
2042 | dependencies:
2043 | call-bind: 1.0.2
2044 | has-tostringtag: 1.0.0
2045 | dev: true
2046 |
2047 | /is-callable@1.2.7:
2048 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
2049 | engines: {node: '>= 0.4'}
2050 | dev: true
2051 |
2052 | /is-core-module@2.13.0:
2053 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
2054 | dependencies:
2055 | has: 1.0.3
2056 | dev: true
2057 |
2058 | /is-date-object@1.0.5:
2059 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
2060 | engines: {node: '>= 0.4'}
2061 | dependencies:
2062 | has-tostringtag: 1.0.0
2063 | dev: true
2064 |
2065 | /is-docker@2.2.1:
2066 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
2067 | engines: {node: '>=8'}
2068 | hasBin: true
2069 | dev: true
2070 |
2071 | /is-docker@3.0.0:
2072 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
2073 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2074 | hasBin: true
2075 | dev: true
2076 |
2077 | /is-extglob@2.1.1:
2078 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2079 | engines: {node: '>=0.10.0'}
2080 | dev: true
2081 |
2082 | /is-finalizationregistry@1.0.2:
2083 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
2084 | dependencies:
2085 | call-bind: 1.0.2
2086 | dev: true
2087 |
2088 | /is-generator-function@1.0.10:
2089 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
2090 | engines: {node: '>= 0.4'}
2091 | dependencies:
2092 | has-tostringtag: 1.0.0
2093 | dev: true
2094 |
2095 | /is-glob@4.0.3:
2096 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2097 | engines: {node: '>=0.10.0'}
2098 | dependencies:
2099 | is-extglob: 2.1.1
2100 | dev: true
2101 |
2102 | /is-inside-container@1.0.0:
2103 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
2104 | engines: {node: '>=14.16'}
2105 | hasBin: true
2106 | dependencies:
2107 | is-docker: 3.0.0
2108 | dev: true
2109 |
2110 | /is-map@2.0.2:
2111 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
2112 | dev: true
2113 |
2114 | /is-negative-zero@2.0.2:
2115 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
2116 | engines: {node: '>= 0.4'}
2117 | dev: true
2118 |
2119 | /is-number-object@1.0.7:
2120 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
2121 | engines: {node: '>= 0.4'}
2122 | dependencies:
2123 | has-tostringtag: 1.0.0
2124 | dev: true
2125 |
2126 | /is-number@7.0.0:
2127 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2128 | engines: {node: '>=0.12.0'}
2129 | dev: true
2130 |
2131 | /is-path-inside@3.0.3:
2132 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
2133 | engines: {node: '>=8'}
2134 | dev: true
2135 |
2136 | /is-regex@1.1.4:
2137 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
2138 | engines: {node: '>= 0.4'}
2139 | dependencies:
2140 | call-bind: 1.0.2
2141 | has-tostringtag: 1.0.0
2142 | dev: true
2143 |
2144 | /is-set@2.0.2:
2145 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
2146 | dev: true
2147 |
2148 | /is-shared-array-buffer@1.0.2:
2149 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
2150 | dependencies:
2151 | call-bind: 1.0.2
2152 | dev: true
2153 |
2154 | /is-stream@2.0.1:
2155 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
2156 | engines: {node: '>=8'}
2157 | dev: true
2158 |
2159 | /is-stream@3.0.0:
2160 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
2161 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2162 | dev: true
2163 |
2164 | /is-string@1.0.7:
2165 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
2166 | engines: {node: '>= 0.4'}
2167 | dependencies:
2168 | has-tostringtag: 1.0.0
2169 | dev: true
2170 |
2171 | /is-symbol@1.0.4:
2172 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
2173 | engines: {node: '>= 0.4'}
2174 | dependencies:
2175 | has-symbols: 1.0.3
2176 | dev: true
2177 |
2178 | /is-typed-array@1.1.12:
2179 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
2180 | engines: {node: '>= 0.4'}
2181 | dependencies:
2182 | which-typed-array: 1.1.11
2183 | dev: true
2184 |
2185 | /is-weakmap@2.0.1:
2186 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
2187 | dev: true
2188 |
2189 | /is-weakref@1.0.2:
2190 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
2191 | dependencies:
2192 | call-bind: 1.0.2
2193 | dev: true
2194 |
2195 | /is-weakset@2.0.2:
2196 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
2197 | dependencies:
2198 | call-bind: 1.0.2
2199 | get-intrinsic: 1.2.1
2200 | dev: true
2201 |
2202 | /is-wsl@2.2.0:
2203 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
2204 | engines: {node: '>=8'}
2205 | dependencies:
2206 | is-docker: 2.2.1
2207 | dev: true
2208 |
2209 | /isarray@2.0.5:
2210 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
2211 | dev: true
2212 |
2213 | /isexe@2.0.0:
2214 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2215 | dev: true
2216 |
2217 | /iterator.prototype@1.1.2:
2218 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
2219 | dependencies:
2220 | define-properties: 1.2.1
2221 | get-intrinsic: 1.2.1
2222 | has-symbols: 1.0.3
2223 | reflect.getprototypeof: 1.0.4
2224 | set-function-name: 2.0.1
2225 | dev: true
2226 |
2227 | /jiti@1.20.0:
2228 | resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==}
2229 | hasBin: true
2230 | dev: true
2231 |
2232 | /js-tokens@4.0.0:
2233 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
2234 |
2235 | /js-yaml@4.1.0:
2236 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
2237 | hasBin: true
2238 | dependencies:
2239 | argparse: 2.0.1
2240 | dev: true
2241 |
2242 | /jsesc@2.5.2:
2243 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
2244 | engines: {node: '>=4'}
2245 | hasBin: true
2246 | dev: true
2247 |
2248 | /json-buffer@3.0.1:
2249 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
2250 | dev: true
2251 |
2252 | /json-schema-traverse@0.4.1:
2253 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
2254 | dev: true
2255 |
2256 | /json-stable-stringify-without-jsonify@1.0.1:
2257 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
2258 | dev: true
2259 |
2260 | /json5@1.0.2:
2261 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
2262 | hasBin: true
2263 | dependencies:
2264 | minimist: 1.2.8
2265 | dev: true
2266 |
2267 | /jsx-ast-utils@3.3.5:
2268 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
2269 | engines: {node: '>=4.0'}
2270 | dependencies:
2271 | array-includes: 3.1.7
2272 | array.prototype.flat: 1.3.2
2273 | object.assign: 4.1.4
2274 | object.values: 1.1.7
2275 | dev: true
2276 |
2277 | /keyv@4.5.3:
2278 | resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
2279 | dependencies:
2280 | json-buffer: 3.0.1
2281 | dev: true
2282 |
2283 | /language-subtag-registry@0.3.22:
2284 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
2285 | dev: true
2286 |
2287 | /language-tags@1.0.5:
2288 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
2289 | dependencies:
2290 | language-subtag-registry: 0.3.22
2291 | dev: true
2292 |
2293 | /levn@0.4.1:
2294 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
2295 | engines: {node: '>= 0.8.0'}
2296 | dependencies:
2297 | prelude-ls: 1.2.1
2298 | type-check: 0.4.0
2299 | dev: true
2300 |
2301 | /lilconfig@2.1.0:
2302 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
2303 | engines: {node: '>=10'}
2304 | dev: true
2305 |
2306 | /lines-and-columns@1.2.4:
2307 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
2308 | dev: true
2309 |
2310 | /locate-path@6.0.0:
2311 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
2312 | engines: {node: '>=10'}
2313 | dependencies:
2314 | p-locate: 5.0.0
2315 | dev: true
2316 |
2317 | /lodash.merge@4.6.2:
2318 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
2319 | dev: true
2320 |
2321 | /loose-envify@1.4.0:
2322 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
2323 | hasBin: true
2324 | dependencies:
2325 | js-tokens: 4.0.0
2326 |
2327 | /lru-cache@6.0.0:
2328 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
2329 | engines: {node: '>=10'}
2330 | dependencies:
2331 | yallist: 4.0.0
2332 | dev: true
2333 |
2334 | /merge-stream@2.0.0:
2335 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
2336 | dev: true
2337 |
2338 | /merge2@1.4.1:
2339 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
2340 | engines: {node: '>= 8'}
2341 | dev: true
2342 |
2343 | /micromatch@4.0.5:
2344 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
2345 | engines: {node: '>=8.6'}
2346 | dependencies:
2347 | braces: 3.0.2
2348 | picomatch: 2.3.1
2349 | dev: true
2350 |
2351 | /mimic-fn@2.1.0:
2352 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
2353 | engines: {node: '>=6'}
2354 | dev: true
2355 |
2356 | /mimic-fn@4.0.0:
2357 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
2358 | engines: {node: '>=12'}
2359 | dev: true
2360 |
2361 | /minimatch@3.1.2:
2362 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
2363 | dependencies:
2364 | brace-expansion: 1.1.11
2365 | dev: true
2366 |
2367 | /minimist@1.2.8:
2368 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2369 | dev: true
2370 |
2371 | /ms@2.1.2:
2372 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2373 | dev: true
2374 |
2375 | /ms@2.1.3:
2376 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
2377 | dev: true
2378 |
2379 | /mz@2.7.0:
2380 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
2381 | dependencies:
2382 | any-promise: 1.3.0
2383 | object-assign: 4.1.1
2384 | thenify-all: 1.6.0
2385 | dev: true
2386 |
2387 | /nanoid@3.3.6:
2388 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
2389 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2390 | hasBin: true
2391 |
2392 | /natural-compare@1.4.0:
2393 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2394 | dev: true
2395 |
2396 | /next@13.5.3(react-dom@18.2.0)(react@18.2.0):
2397 | resolution: {integrity: sha512-4Nt4HRLYDW/yRpJ/QR2t1v63UOMS55A38dnWv3UDOWGezuY0ZyFO1ABNbD7mulVzs9qVhgy2+ppjdsANpKP1mg==}
2398 | engines: {node: '>=16.14.0'}
2399 | hasBin: true
2400 | peerDependencies:
2401 | '@opentelemetry/api': ^1.1.0
2402 | react: ^18.2.0
2403 | react-dom: ^18.2.0
2404 | sass: ^1.3.0
2405 | peerDependenciesMeta:
2406 | '@opentelemetry/api':
2407 | optional: true
2408 | sass:
2409 | optional: true
2410 | dependencies:
2411 | '@next/env': 13.5.3
2412 | '@swc/helpers': 0.5.2
2413 | busboy: 1.6.0
2414 | caniuse-lite: 1.0.30001539
2415 | postcss: 8.4.14
2416 | react: 18.2.0
2417 | react-dom: 18.2.0(react@18.2.0)
2418 | styled-jsx: 5.1.1(react@18.2.0)
2419 | watchpack: 2.4.0
2420 | zod: 3.21.4
2421 | optionalDependencies:
2422 | '@next/swc-darwin-arm64': 13.5.3
2423 | '@next/swc-darwin-x64': 13.5.3
2424 | '@next/swc-linux-arm64-gnu': 13.5.3
2425 | '@next/swc-linux-arm64-musl': 13.5.3
2426 | '@next/swc-linux-x64-gnu': 13.5.3
2427 | '@next/swc-linux-x64-musl': 13.5.3
2428 | '@next/swc-win32-arm64-msvc': 13.5.3
2429 | '@next/swc-win32-ia32-msvc': 13.5.3
2430 | '@next/swc-win32-x64-msvc': 13.5.3
2431 | transitivePeerDependencies:
2432 | - '@babel/core'
2433 | - babel-plugin-macros
2434 | dev: false
2435 |
2436 | /node-releases@2.0.13:
2437 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
2438 | dev: true
2439 |
2440 | /normalize-path@3.0.0:
2441 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2442 | engines: {node: '>=0.10.0'}
2443 | dev: true
2444 |
2445 | /normalize-range@0.1.2:
2446 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
2447 | engines: {node: '>=0.10.0'}
2448 | dev: true
2449 |
2450 | /npm-run-path@4.0.1:
2451 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2452 | engines: {node: '>=8'}
2453 | dependencies:
2454 | path-key: 3.1.1
2455 | dev: true
2456 |
2457 | /npm-run-path@5.1.0:
2458 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
2459 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2460 | dependencies:
2461 | path-key: 4.0.0
2462 | dev: true
2463 |
2464 | /object-assign@4.1.1:
2465 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2466 | engines: {node: '>=0.10.0'}
2467 | dev: true
2468 |
2469 | /object-hash@3.0.0:
2470 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
2471 | engines: {node: '>= 6'}
2472 | dev: true
2473 |
2474 | /object-inspect@1.12.3:
2475 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
2476 | dev: true
2477 |
2478 | /object-keys@1.1.1:
2479 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
2480 | engines: {node: '>= 0.4'}
2481 | dev: true
2482 |
2483 | /object.assign@4.1.4:
2484 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
2485 | engines: {node: '>= 0.4'}
2486 | dependencies:
2487 | call-bind: 1.0.2
2488 | define-properties: 1.2.1
2489 | has-symbols: 1.0.3
2490 | object-keys: 1.1.1
2491 | dev: true
2492 |
2493 | /object.entries@1.1.7:
2494 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==}
2495 | engines: {node: '>= 0.4'}
2496 | dependencies:
2497 | call-bind: 1.0.2
2498 | define-properties: 1.2.1
2499 | es-abstract: 1.22.2
2500 | dev: true
2501 |
2502 | /object.fromentries@2.0.7:
2503 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
2504 | engines: {node: '>= 0.4'}
2505 | dependencies:
2506 | call-bind: 1.0.2
2507 | define-properties: 1.2.1
2508 | es-abstract: 1.22.2
2509 | dev: true
2510 |
2511 | /object.groupby@1.0.1:
2512 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
2513 | dependencies:
2514 | call-bind: 1.0.2
2515 | define-properties: 1.2.1
2516 | es-abstract: 1.22.2
2517 | get-intrinsic: 1.2.1
2518 | dev: true
2519 |
2520 | /object.hasown@1.1.3:
2521 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==}
2522 | dependencies:
2523 | define-properties: 1.2.1
2524 | es-abstract: 1.22.2
2525 | dev: true
2526 |
2527 | /object.values@1.1.7:
2528 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
2529 | engines: {node: '>= 0.4'}
2530 | dependencies:
2531 | call-bind: 1.0.2
2532 | define-properties: 1.2.1
2533 | es-abstract: 1.22.2
2534 | dev: true
2535 |
2536 | /once@1.4.0:
2537 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2538 | dependencies:
2539 | wrappy: 1.0.2
2540 | dev: true
2541 |
2542 | /onetime@5.1.2:
2543 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2544 | engines: {node: '>=6'}
2545 | dependencies:
2546 | mimic-fn: 2.1.0
2547 | dev: true
2548 |
2549 | /onetime@6.0.0:
2550 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2551 | engines: {node: '>=12'}
2552 | dependencies:
2553 | mimic-fn: 4.0.0
2554 | dev: true
2555 |
2556 | /open@9.1.0:
2557 | resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
2558 | engines: {node: '>=14.16'}
2559 | dependencies:
2560 | default-browser: 4.0.0
2561 | define-lazy-prop: 3.0.0
2562 | is-inside-container: 1.0.0
2563 | is-wsl: 2.2.0
2564 | dev: true
2565 |
2566 | /optionator@0.9.3:
2567 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
2568 | engines: {node: '>= 0.8.0'}
2569 | dependencies:
2570 | '@aashutoshrathi/word-wrap': 1.2.6
2571 | deep-is: 0.1.4
2572 | fast-levenshtein: 2.0.6
2573 | levn: 0.4.1
2574 | prelude-ls: 1.2.1
2575 | type-check: 0.4.0
2576 | dev: true
2577 |
2578 | /p-limit@3.1.0:
2579 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2580 | engines: {node: '>=10'}
2581 | dependencies:
2582 | yocto-queue: 0.1.0
2583 | dev: true
2584 |
2585 | /p-locate@5.0.0:
2586 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2587 | engines: {node: '>=10'}
2588 | dependencies:
2589 | p-limit: 3.1.0
2590 | dev: true
2591 |
2592 | /parent-module@1.0.1:
2593 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2594 | engines: {node: '>=6'}
2595 | dependencies:
2596 | callsites: 3.1.0
2597 | dev: true
2598 |
2599 | /path-exists@4.0.0:
2600 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2601 | engines: {node: '>=8'}
2602 | dev: true
2603 |
2604 | /path-is-absolute@1.0.1:
2605 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2606 | engines: {node: '>=0.10.0'}
2607 | dev: true
2608 |
2609 | /path-key@3.1.1:
2610 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2611 | engines: {node: '>=8'}
2612 | dev: true
2613 |
2614 | /path-key@4.0.0:
2615 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2616 | engines: {node: '>=12'}
2617 | dev: true
2618 |
2619 | /path-parse@1.0.7:
2620 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2621 | dev: true
2622 |
2623 | /path-type@4.0.0:
2624 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2625 | engines: {node: '>=8'}
2626 | dev: true
2627 |
2628 | /picocolors@1.0.0:
2629 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2630 |
2631 | /picomatch@2.3.1:
2632 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2633 | engines: {node: '>=8.6'}
2634 | dev: true
2635 |
2636 | /pify@2.3.0:
2637 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
2638 | engines: {node: '>=0.10.0'}
2639 | dev: true
2640 |
2641 | /pirates@4.0.6:
2642 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
2643 | engines: {node: '>= 6'}
2644 | dev: true
2645 |
2646 | /postcss-import@15.1.0(postcss@8.4.30):
2647 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
2648 | engines: {node: '>=14.0.0'}
2649 | peerDependencies:
2650 | postcss: ^8.0.0
2651 | dependencies:
2652 | postcss: 8.4.30
2653 | postcss-value-parser: 4.2.0
2654 | read-cache: 1.0.0
2655 | resolve: 1.22.6
2656 | dev: true
2657 |
2658 | /postcss-js@4.0.1(postcss@8.4.30):
2659 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
2660 | engines: {node: ^12 || ^14 || >= 16}
2661 | peerDependencies:
2662 | postcss: ^8.4.21
2663 | dependencies:
2664 | camelcase-css: 2.0.1
2665 | postcss: 8.4.30
2666 | dev: true
2667 |
2668 | /postcss-load-config@4.0.1(postcss@8.4.30):
2669 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
2670 | engines: {node: '>= 14'}
2671 | peerDependencies:
2672 | postcss: '>=8.0.9'
2673 | ts-node: '>=9.0.0'
2674 | peerDependenciesMeta:
2675 | postcss:
2676 | optional: true
2677 | ts-node:
2678 | optional: true
2679 | dependencies:
2680 | lilconfig: 2.1.0
2681 | postcss: 8.4.30
2682 | yaml: 2.3.2
2683 | dev: true
2684 |
2685 | /postcss-nested@6.0.1(postcss@8.4.30):
2686 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
2687 | engines: {node: '>=12.0'}
2688 | peerDependencies:
2689 | postcss: ^8.2.14
2690 | dependencies:
2691 | postcss: 8.4.30
2692 | postcss-selector-parser: 6.0.13
2693 | dev: true
2694 |
2695 | /postcss-selector-parser@6.0.13:
2696 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2697 | engines: {node: '>=4'}
2698 | dependencies:
2699 | cssesc: 3.0.0
2700 | util-deprecate: 1.0.2
2701 | dev: true
2702 |
2703 | /postcss-value-parser@4.2.0:
2704 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2705 | dev: true
2706 |
2707 | /postcss@8.4.14:
2708 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
2709 | engines: {node: ^10 || ^12 || >=14}
2710 | dependencies:
2711 | nanoid: 3.3.6
2712 | picocolors: 1.0.0
2713 | source-map-js: 1.0.2
2714 | dev: false
2715 |
2716 | /postcss@8.4.30:
2717 | resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==}
2718 | engines: {node: ^10 || ^12 || >=14}
2719 | dependencies:
2720 | nanoid: 3.3.6
2721 | picocolors: 1.0.0
2722 | source-map-js: 1.0.2
2723 | dev: true
2724 |
2725 | /prelude-ls@1.2.1:
2726 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2727 | engines: {node: '>= 0.8.0'}
2728 | dev: true
2729 |
2730 | /prettier-linter-helpers@1.0.0:
2731 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
2732 | engines: {node: '>=6.0.0'}
2733 | dependencies:
2734 | fast-diff: 1.3.0
2735 | dev: true
2736 |
2737 | /prettier@3.0.3:
2738 | resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==}
2739 | engines: {node: '>=14'}
2740 | hasBin: true
2741 | dev: true
2742 |
2743 | /prop-types@15.8.1:
2744 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
2745 | dependencies:
2746 | loose-envify: 1.4.0
2747 | object-assign: 4.1.1
2748 | react-is: 16.13.1
2749 | dev: true
2750 |
2751 | /punycode@2.3.0:
2752 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
2753 | engines: {node: '>=6'}
2754 | dev: true
2755 |
2756 | /queue-microtask@1.2.3:
2757 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2758 | dev: true
2759 |
2760 | /react-dom@18.2.0(react@18.2.0):
2761 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
2762 | peerDependencies:
2763 | react: ^18.2.0
2764 | dependencies:
2765 | loose-envify: 1.4.0
2766 | react: 18.2.0
2767 | scheduler: 0.23.0
2768 | dev: false
2769 |
2770 | /react-is@16.13.1:
2771 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
2772 | dev: true
2773 |
2774 | /react@18.2.0:
2775 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
2776 | engines: {node: '>=0.10.0'}
2777 | dependencies:
2778 | loose-envify: 1.4.0
2779 | dev: false
2780 |
2781 | /read-cache@1.0.0:
2782 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
2783 | dependencies:
2784 | pify: 2.3.0
2785 | dev: true
2786 |
2787 | /readdirp@3.6.0:
2788 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2789 | engines: {node: '>=8.10.0'}
2790 | dependencies:
2791 | picomatch: 2.3.1
2792 | dev: true
2793 |
2794 | /reflect.getprototypeof@1.0.4:
2795 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==}
2796 | engines: {node: '>= 0.4'}
2797 | dependencies:
2798 | call-bind: 1.0.2
2799 | define-properties: 1.2.1
2800 | es-abstract: 1.22.2
2801 | get-intrinsic: 1.2.1
2802 | globalthis: 1.0.3
2803 | which-builtin-type: 1.1.3
2804 | dev: true
2805 |
2806 | /regenerator-runtime@0.14.0:
2807 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
2808 | dev: true
2809 |
2810 | /regexp.prototype.flags@1.5.1:
2811 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
2812 | engines: {node: '>= 0.4'}
2813 | dependencies:
2814 | call-bind: 1.0.2
2815 | define-properties: 1.2.1
2816 | set-function-name: 2.0.1
2817 | dev: true
2818 |
2819 | /resolve-from@4.0.0:
2820 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2821 | engines: {node: '>=4'}
2822 | dev: true
2823 |
2824 | /resolve-pkg-maps@1.0.0:
2825 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
2826 | dev: true
2827 |
2828 | /resolve@1.22.6:
2829 | resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
2830 | hasBin: true
2831 | dependencies:
2832 | is-core-module: 2.13.0
2833 | path-parse: 1.0.7
2834 | supports-preserve-symlinks-flag: 1.0.0
2835 | dev: true
2836 |
2837 | /resolve@2.0.0-next.4:
2838 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
2839 | hasBin: true
2840 | dependencies:
2841 | is-core-module: 2.13.0
2842 | path-parse: 1.0.7
2843 | supports-preserve-symlinks-flag: 1.0.0
2844 | dev: true
2845 |
2846 | /reusify@1.0.4:
2847 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2848 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2849 | dev: true
2850 |
2851 | /rimraf@3.0.2:
2852 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2853 | hasBin: true
2854 | dependencies:
2855 | glob: 7.2.3
2856 | dev: true
2857 |
2858 | /run-applescript@5.0.0:
2859 | resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
2860 | engines: {node: '>=12'}
2861 | dependencies:
2862 | execa: 5.1.1
2863 | dev: true
2864 |
2865 | /run-parallel@1.2.0:
2866 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2867 | dependencies:
2868 | queue-microtask: 1.2.3
2869 | dev: true
2870 |
2871 | /safe-array-concat@1.0.1:
2872 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
2873 | engines: {node: '>=0.4'}
2874 | dependencies:
2875 | call-bind: 1.0.2
2876 | get-intrinsic: 1.2.1
2877 | has-symbols: 1.0.3
2878 | isarray: 2.0.5
2879 | dev: true
2880 |
2881 | /safe-regex-test@1.0.0:
2882 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
2883 | dependencies:
2884 | call-bind: 1.0.2
2885 | get-intrinsic: 1.2.1
2886 | is-regex: 1.1.4
2887 | dev: true
2888 |
2889 | /scheduler@0.23.0:
2890 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2891 | dependencies:
2892 | loose-envify: 1.4.0
2893 | dev: false
2894 |
2895 | /semver@6.3.1:
2896 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
2897 | hasBin: true
2898 | dev: true
2899 |
2900 | /semver@7.5.4:
2901 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
2902 | engines: {node: '>=10'}
2903 | hasBin: true
2904 | dependencies:
2905 | lru-cache: 6.0.0
2906 | dev: true
2907 |
2908 | /set-function-name@2.0.1:
2909 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
2910 | engines: {node: '>= 0.4'}
2911 | dependencies:
2912 | define-data-property: 1.1.0
2913 | functions-have-names: 1.2.3
2914 | has-property-descriptors: 1.0.0
2915 | dev: true
2916 |
2917 | /shebang-command@2.0.0:
2918 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2919 | engines: {node: '>=8'}
2920 | dependencies:
2921 | shebang-regex: 3.0.0
2922 | dev: true
2923 |
2924 | /shebang-regex@3.0.0:
2925 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2926 | engines: {node: '>=8'}
2927 | dev: true
2928 |
2929 | /side-channel@1.0.4:
2930 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2931 | dependencies:
2932 | call-bind: 1.0.2
2933 | get-intrinsic: 1.2.1
2934 | object-inspect: 1.12.3
2935 | dev: true
2936 |
2937 | /signal-exit@3.0.7:
2938 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2939 | dev: true
2940 |
2941 | /slash@3.0.0:
2942 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2943 | engines: {node: '>=8'}
2944 | dev: true
2945 |
2946 | /source-map-js@1.0.2:
2947 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2948 | engines: {node: '>=0.10.0'}
2949 |
2950 | /streamsearch@1.1.0:
2951 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
2952 | engines: {node: '>=10.0.0'}
2953 | dev: false
2954 |
2955 | /string.prototype.matchall@4.0.10:
2956 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
2957 | dependencies:
2958 | call-bind: 1.0.2
2959 | define-properties: 1.2.1
2960 | es-abstract: 1.22.2
2961 | get-intrinsic: 1.2.1
2962 | has-symbols: 1.0.3
2963 | internal-slot: 1.0.5
2964 | regexp.prototype.flags: 1.5.1
2965 | set-function-name: 2.0.1
2966 | side-channel: 1.0.4
2967 | dev: true
2968 |
2969 | /string.prototype.trim@1.2.8:
2970 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
2971 | engines: {node: '>= 0.4'}
2972 | dependencies:
2973 | call-bind: 1.0.2
2974 | define-properties: 1.2.1
2975 | es-abstract: 1.22.2
2976 | dev: true
2977 |
2978 | /string.prototype.trimend@1.0.7:
2979 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
2980 | dependencies:
2981 | call-bind: 1.0.2
2982 | define-properties: 1.2.1
2983 | es-abstract: 1.22.2
2984 | dev: true
2985 |
2986 | /string.prototype.trimstart@1.0.7:
2987 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
2988 | dependencies:
2989 | call-bind: 1.0.2
2990 | define-properties: 1.2.1
2991 | es-abstract: 1.22.2
2992 | dev: true
2993 |
2994 | /strip-ansi@6.0.1:
2995 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2996 | engines: {node: '>=8'}
2997 | dependencies:
2998 | ansi-regex: 5.0.1
2999 | dev: true
3000 |
3001 | /strip-bom@3.0.0:
3002 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
3003 | engines: {node: '>=4'}
3004 | dev: true
3005 |
3006 | /strip-final-newline@2.0.0:
3007 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
3008 | engines: {node: '>=6'}
3009 | dev: true
3010 |
3011 | /strip-final-newline@3.0.0:
3012 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
3013 | engines: {node: '>=12'}
3014 | dev: true
3015 |
3016 | /strip-json-comments@3.1.1:
3017 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
3018 | engines: {node: '>=8'}
3019 | dev: true
3020 |
3021 | /styled-jsx@5.1.1(react@18.2.0):
3022 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
3023 | engines: {node: '>= 12.0.0'}
3024 | peerDependencies:
3025 | '@babel/core': '*'
3026 | babel-plugin-macros: '*'
3027 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
3028 | peerDependenciesMeta:
3029 | '@babel/core':
3030 | optional: true
3031 | babel-plugin-macros:
3032 | optional: true
3033 | dependencies:
3034 | client-only: 0.0.1
3035 | react: 18.2.0
3036 | dev: false
3037 |
3038 | /sucrase@3.34.0:
3039 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
3040 | engines: {node: '>=8'}
3041 | hasBin: true
3042 | dependencies:
3043 | '@jridgewell/gen-mapping': 0.3.3
3044 | commander: 4.1.1
3045 | glob: 7.1.6
3046 | lines-and-columns: 1.2.4
3047 | mz: 2.7.0
3048 | pirates: 4.0.6
3049 | ts-interface-checker: 0.1.13
3050 | dev: true
3051 |
3052 | /supports-color@5.5.0:
3053 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
3054 | engines: {node: '>=4'}
3055 | dependencies:
3056 | has-flag: 3.0.0
3057 | dev: true
3058 |
3059 | /supports-color@7.2.0:
3060 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
3061 | engines: {node: '>=8'}
3062 | dependencies:
3063 | has-flag: 4.0.0
3064 | dev: true
3065 |
3066 | /supports-preserve-symlinks-flag@1.0.0:
3067 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
3068 | engines: {node: '>= 0.4'}
3069 | dev: true
3070 |
3071 | /synckit@0.8.5:
3072 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
3073 | engines: {node: ^14.18.0 || >=16.0.0}
3074 | dependencies:
3075 | '@pkgr/utils': 2.4.2
3076 | tslib: 2.6.2
3077 | dev: true
3078 |
3079 | /tailwindcss@3.3.3:
3080 | resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==}
3081 | engines: {node: '>=14.0.0'}
3082 | hasBin: true
3083 | dependencies:
3084 | '@alloc/quick-lru': 5.2.0
3085 | arg: 5.0.2
3086 | chokidar: 3.5.3
3087 | didyoumean: 1.2.2
3088 | dlv: 1.1.3
3089 | fast-glob: 3.3.1
3090 | glob-parent: 6.0.2
3091 | is-glob: 4.0.3
3092 | jiti: 1.20.0
3093 | lilconfig: 2.1.0
3094 | micromatch: 4.0.5
3095 | normalize-path: 3.0.0
3096 | object-hash: 3.0.0
3097 | picocolors: 1.0.0
3098 | postcss: 8.4.30
3099 | postcss-import: 15.1.0(postcss@8.4.30)
3100 | postcss-js: 4.0.1(postcss@8.4.30)
3101 | postcss-load-config: 4.0.1(postcss@8.4.30)
3102 | postcss-nested: 6.0.1(postcss@8.4.30)
3103 | postcss-selector-parser: 6.0.13
3104 | resolve: 1.22.6
3105 | sucrase: 3.34.0
3106 | transitivePeerDependencies:
3107 | - ts-node
3108 | dev: true
3109 |
3110 | /tapable@2.2.1:
3111 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
3112 | engines: {node: '>=6'}
3113 | dev: true
3114 |
3115 | /text-table@0.2.0:
3116 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
3117 | dev: true
3118 |
3119 | /thenify-all@1.6.0:
3120 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
3121 | engines: {node: '>=0.8'}
3122 | dependencies:
3123 | thenify: 3.3.1
3124 | dev: true
3125 |
3126 | /thenify@3.3.1:
3127 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
3128 | dependencies:
3129 | any-promise: 1.3.0
3130 | dev: true
3131 |
3132 | /titleize@3.0.0:
3133 | resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
3134 | engines: {node: '>=12'}
3135 | dev: true
3136 |
3137 | /to-fast-properties@2.0.0:
3138 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
3139 | engines: {node: '>=4'}
3140 | dev: true
3141 |
3142 | /to-regex-range@5.0.1:
3143 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
3144 | engines: {node: '>=8.0'}
3145 | dependencies:
3146 | is-number: 7.0.0
3147 | dev: true
3148 |
3149 | /ts-api-utils@1.0.3(typescript@5.2.2):
3150 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
3151 | engines: {node: '>=16.13.0'}
3152 | peerDependencies:
3153 | typescript: '>=4.2.0'
3154 | dependencies:
3155 | typescript: 5.2.2
3156 | dev: true
3157 |
3158 | /ts-interface-checker@0.1.13:
3159 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
3160 | dev: true
3161 |
3162 | /tsconfig-paths@3.14.2:
3163 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
3164 | dependencies:
3165 | '@types/json5': 0.0.29
3166 | json5: 1.0.2
3167 | minimist: 1.2.8
3168 | strip-bom: 3.0.0
3169 | dev: true
3170 |
3171 | /tslib@1.14.1:
3172 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
3173 | dev: true
3174 |
3175 | /tslib@2.6.2:
3176 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
3177 |
3178 | /tsutils@3.21.0(typescript@5.2.2):
3179 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
3180 | engines: {node: '>= 6'}
3181 | peerDependencies:
3182 | 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'
3183 | dependencies:
3184 | tslib: 1.14.1
3185 | typescript: 5.2.2
3186 | dev: true
3187 |
3188 | /type-check@0.4.0:
3189 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
3190 | engines: {node: '>= 0.8.0'}
3191 | dependencies:
3192 | prelude-ls: 1.2.1
3193 | dev: true
3194 |
3195 | /type-fest@0.20.2:
3196 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
3197 | engines: {node: '>=10'}
3198 | dev: true
3199 |
3200 | /typed-array-buffer@1.0.0:
3201 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
3202 | engines: {node: '>= 0.4'}
3203 | dependencies:
3204 | call-bind: 1.0.2
3205 | get-intrinsic: 1.2.1
3206 | is-typed-array: 1.1.12
3207 | dev: true
3208 |
3209 | /typed-array-byte-length@1.0.0:
3210 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
3211 | engines: {node: '>= 0.4'}
3212 | dependencies:
3213 | call-bind: 1.0.2
3214 | for-each: 0.3.3
3215 | has-proto: 1.0.1
3216 | is-typed-array: 1.1.12
3217 | dev: true
3218 |
3219 | /typed-array-byte-offset@1.0.0:
3220 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
3221 | engines: {node: '>= 0.4'}
3222 | dependencies:
3223 | available-typed-arrays: 1.0.5
3224 | call-bind: 1.0.2
3225 | for-each: 0.3.3
3226 | has-proto: 1.0.1
3227 | is-typed-array: 1.1.12
3228 | dev: true
3229 |
3230 | /typed-array-length@1.0.4:
3231 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
3232 | dependencies:
3233 | call-bind: 1.0.2
3234 | for-each: 0.3.3
3235 | is-typed-array: 1.1.12
3236 | dev: true
3237 |
3238 | /typescript@5.2.2:
3239 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
3240 | engines: {node: '>=14.17'}
3241 | hasBin: true
3242 | dev: true
3243 |
3244 | /unbox-primitive@1.0.2:
3245 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
3246 | dependencies:
3247 | call-bind: 1.0.2
3248 | has-bigints: 1.0.2
3249 | has-symbols: 1.0.3
3250 | which-boxed-primitive: 1.0.2
3251 | dev: true
3252 |
3253 | /untildify@4.0.0:
3254 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
3255 | engines: {node: '>=8'}
3256 | dev: true
3257 |
3258 | /update-browserslist-db@1.0.13(browserslist@4.21.11):
3259 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
3260 | hasBin: true
3261 | peerDependencies:
3262 | browserslist: '>= 4.21.0'
3263 | dependencies:
3264 | browserslist: 4.21.11
3265 | escalade: 3.1.1
3266 | picocolors: 1.0.0
3267 | dev: true
3268 |
3269 | /uri-js@4.4.1:
3270 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
3271 | dependencies:
3272 | punycode: 2.3.0
3273 | dev: true
3274 |
3275 | /util-deprecate@1.0.2:
3276 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
3277 | dev: true
3278 |
3279 | /watchpack@2.4.0:
3280 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
3281 | engines: {node: '>=10.13.0'}
3282 | dependencies:
3283 | glob-to-regexp: 0.4.1
3284 | graceful-fs: 4.2.11
3285 | dev: false
3286 |
3287 | /which-boxed-primitive@1.0.2:
3288 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
3289 | dependencies:
3290 | is-bigint: 1.0.4
3291 | is-boolean-object: 1.1.2
3292 | is-number-object: 1.0.7
3293 | is-string: 1.0.7
3294 | is-symbol: 1.0.4
3295 | dev: true
3296 |
3297 | /which-builtin-type@1.1.3:
3298 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
3299 | engines: {node: '>= 0.4'}
3300 | dependencies:
3301 | function.prototype.name: 1.1.6
3302 | has-tostringtag: 1.0.0
3303 | is-async-function: 2.0.0
3304 | is-date-object: 1.0.5
3305 | is-finalizationregistry: 1.0.2
3306 | is-generator-function: 1.0.10
3307 | is-regex: 1.1.4
3308 | is-weakref: 1.0.2
3309 | isarray: 2.0.5
3310 | which-boxed-primitive: 1.0.2
3311 | which-collection: 1.0.1
3312 | which-typed-array: 1.1.11
3313 | dev: true
3314 |
3315 | /which-collection@1.0.1:
3316 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
3317 | dependencies:
3318 | is-map: 2.0.2
3319 | is-set: 2.0.2
3320 | is-weakmap: 2.0.1
3321 | is-weakset: 2.0.2
3322 | dev: true
3323 |
3324 | /which-typed-array@1.1.11:
3325 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
3326 | engines: {node: '>= 0.4'}
3327 | dependencies:
3328 | available-typed-arrays: 1.0.5
3329 | call-bind: 1.0.2
3330 | for-each: 0.3.3
3331 | gopd: 1.0.1
3332 | has-tostringtag: 1.0.0
3333 | dev: true
3334 |
3335 | /which@2.0.2:
3336 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
3337 | engines: {node: '>= 8'}
3338 | hasBin: true
3339 | dependencies:
3340 | isexe: 2.0.0
3341 | dev: true
3342 |
3343 | /wrappy@1.0.2:
3344 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
3345 | dev: true
3346 |
3347 | /yallist@4.0.0:
3348 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
3349 | dev: true
3350 |
3351 | /yaml@2.3.2:
3352 | resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
3353 | engines: {node: '>= 14'}
3354 | dev: true
3355 |
3356 | /yocto-queue@0.1.0:
3357 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
3358 | engines: {node: '>=10'}
3359 | dev: true
3360 |
3361 | /zod@3.21.4:
3362 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
3363 | dev: false
3364 |
--------------------------------------------------------------------------------
/assignment-4/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/assignment-4/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assignment-4/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assignment-4/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dwarvesf/df-frontend-2023/3ec9e6c4b2e429ddc21b2640823f97085d79f67f/assignment-4/src/app/favicon.ico
--------------------------------------------------------------------------------
/assignment-4/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | :root {
6 | --foreground-rgb: 0, 0, 0;
7 | --background-start-rgb: 214, 219, 220;
8 | --background-end-rgb: 255, 255, 255;
9 | }
10 |
11 | @media (prefers-color-scheme: dark) {
12 | :root {
13 | --foreground-rgb: 255, 255, 255;
14 | --background-start-rgb: 0, 0, 0;
15 | --background-end-rgb: 0, 0, 0;
16 | }
17 | }
18 |
19 | body {
20 | color: rgb(var(--foreground-rgb));
21 | background: linear-gradient(
22 | to bottom,
23 | transparent,
24 | rgb(var(--background-end-rgb))
25 | )
26 | rgb(var(--background-start-rgb));
27 | }
28 |
--------------------------------------------------------------------------------
/assignment-4/src/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import './globals.css'
2 | import type { Metadata } from 'next'
3 | import { Inter } from 'next/font/google'
4 |
5 | const inter = Inter({ subsets: ['latin'] })
6 |
7 | export const metadata: Metadata = {
8 | title: 'Create Next App',
9 | description: 'Generated by create next app',
10 | }
11 |
12 | export default function RootLayout({
13 | children,
14 | }: {
15 | children: React.ReactNode
16 | }) {
17 | return (
18 |
19 | {children}
20 |
21 | )
22 | }
23 |
--------------------------------------------------------------------------------
/assignment-4/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Image from 'next/image'
3 |
4 | export default function Home() {
5 | return (
6 |
7 |
8 |
9 | Get started by editing
10 | src/app/page.tsx
11 |
12 |
30 |
31 |
32 |
33 |
41 |
42 |
43 |
112 |
113 | )
114 | }
115 |
--------------------------------------------------------------------------------
/assignment-4/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from 'tailwindcss'
2 |
3 | const config: Config = {
4 | content: [
5 | './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
6 | './src/components/**/*.{js,ts,jsx,tsx,mdx}',
7 | './src/app/**/*.{js,ts,jsx,tsx,mdx}',
8 | ],
9 | theme: {
10 | extend: {
11 | backgroundImage: {
12 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
13 | 'gradient-conic':
14 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
15 | },
16 | },
17 | },
18 | plugins: [],
19 | }
20 | export default config
21 |
--------------------------------------------------------------------------------
/assignment-4/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "allowSyntheticDefaultImports": true,
17 | "types": ["node"],
18 | "noUnusedLocals": false,
19 | "noUnusedParameters": true,
20 | "forceConsistentCasingInFileNames": false,
21 | "noImplicitAny": false,
22 | "checkJs": false,
23 | "strictNullChecks": true,
24 | "strictFunctionTypes": true,
25 | "strictPropertyInitialization": true,
26 | "useUnknownInCatchVariables": false,
27 | "noImplicitThis": true,
28 | "plugins": [
29 | {
30 | "name": "next"
31 | }
32 | ]
33 | },
34 | "include": [
35 | "next-env.d.ts",
36 | ".next/types/**/*.ts",
37 | "**/*.ts",
38 | "**/*.tsx",
39 | "**/*.d.ts",
40 | "**/*.js",
41 | "**/*.jsx"
42 | ],
43 | "exclude": ["node_modules"]
44 | }
45 |
--------------------------------------------------------------------------------
/assignment-5/README.md:
--------------------------------------------------------------------------------
1 | # Form Handling
2 |
3 | Improve our [Assignment 04's Next.js application](../assignment-4/) application by adding an "Edit" feature for book details. Also, integrate a user-friendly and secure login page while ensuring a rigorous form validation system throughout the application. This enhancement aims to bolster the user experience and the overall security of the platform.
4 |
5 |
6 |
7 |
8 |
9 | ## Requirements
10 |
11 | 1. Use the functionalities from [Assignment 04](../assignment-4/) as a foundation.
12 | 2. Augment the book details page with an "Edit" button.
13 | 3. The 'Edit' button should trigger a modal window containing a pre-filled form with the current book details. This allows users to update the information and save changes.
14 | 4. Introduce a login page with a form that captures:
15 | - Email
16 | - Password
17 | 5. All forms should have validation and user-friendly error indicators.
18 |
19 | ### Validation rules
20 |
21 | **Book Creation/Editing:**
22 |
23 | - Book name: Minimum of 5 characters, required.
24 | - Author name: Only letters and spaces, required.
25 | - Book topic: Must select from available options, required.
26 |
27 | **Login Form:**
28 |
29 | - Email: Valid email pattern, required.
30 | - Password: Minimum of 8 characters with at least 1 uppercase and 1 symbol, required.
31 |
32 | ### Deliverables
33 |
34 | - Well-crafted Typescript NextJS Project with fully formatted, all the necessary components, functionalities, and error-free.
35 | - Ensure that form UI reflect an error state and display an appropriate message when an error occurs.
36 | - Ensure your code is fully formatted and adheres to comprehensive coding conventions.
37 | - Ensure the project is deployable and provide a demo link for review.
38 | - **Bonus**: Implement a [Password Strength Meter](https://www.passwordmonster.com/). For password fields, display a dynamic strength meter that updates based on password complexity.
39 |
40 | ### What Are We Looking For?
41 |
42 | - Effective use of form hooks and robust validation techniques.
43 | - Full implementation of all features listed in the requirements.
44 | - Demonstrated improvement and incorporation of feedback received from previous assignments.
45 |
46 | ## Submission
47 |
48 | - Ensure all assignment code is placed within the **`/assignment-5`** directory. You should transfer all of the application code from your Assignment 04 and relocate it to this folder.
49 | - The final submission deadline is **08/10/2023**.
50 | - After finalizing and ensuring a deployable demo, open a Github issue in your forked repository titled "**Submission for Assignment 5.**" Include the demo link in the description.
51 |
--------------------------------------------------------------------------------
/assignment-6/README.md:
--------------------------------------------------------------------------------
1 | # Authentication & API Integration
2 |
3 | With your foundational work from Assignments 04 & 05, it's time to turn your Next.js application into a dynamic powerhouse by integrating with a backend API. The goal for this assignment is to introduce the integration of backend services, understand protected routes, and API caching mechanism.
4 |
5 | Refer to the API documentation at: [**Bookstore API Docs**](https://develop-api.bookstore.dwarvesf.com/swagger/index.html).
6 |
7 | ## **Requirements**
8 |
9 | - Begin by incorporating the functionalities already built in the Next.js application from [Assignment 05](../assignment-5/).
10 | - Seamlessly integrate the APIs into the UI.
11 | - Protect all routes, exempting the `/login` route. Unauthorized access to protected routes should redirect the user back to the login page.
12 | - Incorporate a "Log out" button prominently within the application header. This button should effectively log out the user and redirect to the login page.
13 | - Implement caching for the responses obtained from GET APIs. The intention is to provide an almost instantaneous loading experience for the end user.
14 |
15 | **Create account to authorize APIs**
16 |
17 | - Head to API swagger documentation at: [**Bookstore API Docs**.](https://develop-api.bookstore.dwarvesf.com/swagger/index.html#/Auth/signup)
18 | - Expand the accordion row [POST] `auth/signup`.
19 | - Next, click on `Try it out` button, and input the account information into the body data.
20 | - After that, click on the `Execute` button to make the API call.
21 | - If you receive the status below, it means your account has been successfully created.
22 |
23 | 
24 |
25 | ### **Deliverables**
26 |
27 | - Ensure that the form, authentication mechanisms, data caching, and protected routes correctly represent their intended states.
28 | - Assure that the code is thoroughly formatted and aligns with comprehensive coding conventions.
29 | - Confirm the project's deployability and, as proof, provide a working demo link for review and assessment.
30 | - **Bonus:** Revoke access if an API responds 401 error code.
31 | - **Bonus:** Elevate your application's security and performance by storing user credentials securely using cookies and implementing Server Side Rendering (SSR) for all the pages.
32 |
33 | ### **What Are We Looking For?**
34 |
35 | - Proficiently leveraging data fetching, SWR, and navigating protected routes with authentication.
36 | - Completing the implementation of all the features outlined in the requirements.
37 | - Demonstrating clear improvement and the successful integration of feedback received from previous assignments.
38 |
39 | ## **Submission**
40 |
41 | - Ensure all assignment code is neatly contained within the **`/assignment-6`** directory. Transfer any necessary application code from your previous assignments into this directory.
42 | - The last date to ensure your submission is **13/10/2023**.
43 | - Upon finalizing your work and ensuring that your demo is deployable, initiate a Github issue in your forked repository titled "**Submission for Assignment 6**." Remember to include the demo link within the issue's description for easy accessibility.
44 |
--------------------------------------------------------------------------------
/assignment-7/README.md:
--------------------------------------------------------------------------------
1 | # Type-safe client server
2 |
3 | Building on the momentum from [Assignment 06](../assignment-6/), this assignment emphasizes the importance of type-safety between the frontend and backend. By ensuring that both ends speak the same **"type"** language, we mitigate risks, reduce potential bugs, and enhance the robustness of our applications.
4 |
5 | ## **Requirements**
6 |
7 | 1. Start with the Next.js project you developed in [Assignment 06](../assignment-6/).
8 | 2. Make use of [Orval](https://orval.dev/) to pull the schema documentation from the [**Bookstore API**](https://develop-api.bookstore.dwarvesf.com/swagger/index.html). This tool will allow you to ensure type-safety by generating client-side types based on the server's API schema.
9 | 3. With the schema in hand, leverage SWR to fetch data and ensure that the frontend correctly interprets and displays the Bookstore API responses.
10 | 4. For guidance on setting up **`Orval`** within your Next.js project, consider referencing the [Next.js Boilerplate](https://github.com/dwarvesf/nextjs-boilerplate). This resource offers a structured way to integrate type-safe practices into your project.
11 |
12 | ### **Deliverables**
13 |
14 | - Ensure your codebase is clean, readable, and strictly adheres to type-safe practices. Your client-side code should seamlessly match the server-side schema, minimizing type mismatches and potential errors.
15 | - Confirm the project's deployability. Ensure that there's a smooth data flow between the backend and frontend, with API responses accurately represented in the UI.
16 |
17 | ### **What We Are Looking For?**
18 |
19 | - Mastery in integrating type-safe practices into your application. This isn't just about using tools but understanding the principle behind type-safety and its advantages.
20 | - Successful implementation of all listed requirements.
21 | - Clear progression from the previous assignments. We're keen to see how you've incorporated feedback and elevated the quality of your project.
22 |
23 | ## **Submission**
24 |
25 | - All assignment-related code should reside in the **`/assignment-7`** directory. Please migrate necessary codes from prior assignments into this directory, ensuring a clear distinction between projects.
26 | - The submission deadline is **`15/10/2023`**.
27 | - Once you've finalized your work and confirmed its deployability, raise a Github issue in your forked repository titled "**Submission for Assignment 7**". Within the issue's description, include the demo link for easy access and review.
28 |
--------------------------------------------------------------------------------
/final-project/README.md:
--------------------------------------------------------------------------------
1 | # Final Project
2 |
3 | Your final project will consist of creating an app that takes advantage of ChatGPT and LLMs. We have a list of possible application ideas listed in our [Google Sheets](https://docs.google.com/spreadsheets/d/11DjfMCVNNgEGEKZ2jhNWenjMdQnaTQ3cXtA72KxGQgU/edit#gid=286807029). Please submit any other ideas you may have to the team and we will assign one of our engineers to help and support you with your project.
4 |
5 | Some ideas will include, but are not limited to:
6 |
7 | 1. **Code review**: A process of reviewing a software codebase to identify bugs, increase code quality, and help developers learn the source code. An important step in the software development process to get a second opinion on the solution and implementation before it’s merged into an upstream branch like a feature branch or the main branch.
8 |
9 | 2. **Chess game**: A board game for two players, either with Chinese or Western chess, each controlling an army of chess pieces, with the objective to checkmate the opponent's king. Have ChatGPT evaluate positions on the board and create an optimal strategy and path to win the game.
10 |
11 | 3. **Interview training app**: An app that helps candidates and students practice interviews through customized interviews, instant feedback, questions prepared, answer guide, and other features. Use case is to provide powerful insight on how you perform and boosts your confidence by receiving instant feedback on your answers and learn from your mistakes during every interview.
12 |
13 | 4. **i18n helper app**: An app that helps developers prepare their software for multilingual support (i18n) and align internationalized software with particular cultures' needs (l10n) by translating and generating JSON files.
14 |
15 | 5. **Social media manager**: A tool that helps businesses manage their social media accounts by scheduling posts, analyzing performance metrics, monitoring mentions of their brand or products, and engaging with their audience. It can help businesses save time and streamline their social media marketing efforts.
16 |
17 | 6. **Resume builder**: A tool that helps job seekers create professional resumes quickly and easily by providing templates, tips, and suggestions for content based on the job seeker's experience and skills. It can help job seekers stand out from other applicants by presenting their qualifications in a clear and concise manner.
18 |
19 | 7. **Mermaid chart generator**: A tool that generates diagrams and flowcharts using text-based syntax called Mermaid. It allows users to create diagrams quickly without having to use a graphical user interface (GUI). Mermaid supports various types of diagrams such as flowcharts, sequence diagrams, Gantt charts, class diagrams, state diagrams, pie charts, ER diagrams, etc.
20 |
21 | 8. **Storybook GPT**: A tool that generates component stories using ChatGPT. It allows developers to create component stories without having to write them by hand. It can help developers save time and effort by automating the process of creating component stories.
22 |
23 | 9. **Language learning app**: An app that helps users learn a new language by providing lessons on grammar, vocabulary, pronunciation, etc., through interactive exercises such as quizzes, games, flashcards, etc., Users can track their progress over time and receive feedback on their performance to improve their language skills effectively. Some popular language learning apps include Duolingo, Babbel, Rosetta Stone, etc.
24 |
25 | ## Dwarves Chat API
26 |
27 | We have a simple chat API that allows users to send and receive messages. We've hosted our API to be a clone of OpenAI's [chat completions](https://platform.openai.com/docs/api-reference/chat) API. If you have any issues with our API, please open an issue in our `#frontend-23` channel on Discord.
28 |
29 | - https://openrouter-api.dwarvesf.com/api/v1/docs
30 | - https://openrouter-api.dwarvesf.com/api/v1/openapi.json
31 |
32 | 
33 |
34 | ### Generating the types in your frontend app
35 |
36 | If you haven't cloned our boilerplate, refer to it here and clone it to get started: https://github.com/dwarvesf/nextjs-boilerplate. This project uses PNPM, so be sure to install it.
37 |
38 | Once you've cloned the project, you can run `pnpm install` to install all the dependencies.
39 |
40 | Edit your `orval.config.js` file and update the target OpenAPI document to the `openapi.json` file from our API server:
41 |
42 | ```diff
43 | ...
44 | input: {
45 | - target: 'https://demo-api.dwarvesf.com/swagger/doc.json',
46 | + target: 'https://openrouter-api.dwarvesf.com/api/v1/openapi.json',
47 | validation: false,
48 | },
49 | ...
50 | ```
51 |
52 | Then run the `generate:api` command we've added in the `package.json` with PNPM:
53 |
54 | ```sh
55 | pnpm run generate:api
56 | ```
57 |
58 | You will be able to see your types and code generated from our API:
59 |
60 | 
61 |
62 | ### API Usage
63 |
64 | Our base URL for our API lives at `https://openrouter-api.dwarvesf.com/api/v1`. In our API, we have essentially 2 routes:
65 |
66 | - `/auth/login`
67 |
68 | This API is used to authenticate the user. It takes in a username and password and returns an access token.
69 |
70 | There are a few things you need to be aware before using this API:
71 |
72 | 1. Your username is your `Discord's name` you've specified in the [Google Sheets](https://docs.google.com/spreadsheets/d/11DjfMCVNNgEGEKZ2jhNWenjMdQnaTQ3cXtA72KxGQgU/edit?usp=sharing).
73 | 2. Your password will provided for you. Ask our engineers on our `#frontend-23` channel, and we'll PM your your pass.
74 | 3. **You will need to acquire an access token from this API to use the chat completions API.**
75 |
76 | 
77 |
78 | Example curl request:
79 | ```sh
80 | curl -X 'POST' \
81 | 'https://https://openrouter-api.dwarvesf.com/api/v1/auth/login' \
82 | -H 'accept: application/json' \
83 | -H 'Content-Type: application/json' \
84 | -d '{
85 | "username": "monotykamary",
86 | "password": "---"
87 | }'
88 | ```
89 |
90 | Example response:
91 | ```sh
92 | {
93 | "data": {
94 | "id": 1,
95 | "username": "monotykamary",
96 | "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJtb25vdHlrYW1hcnkiLCJhcGlLZXkiOiJzay1vci12MS0uLi4iLCJhbGciOiJIUzI1NiJ9.77-977-977-9R--_vT7vv707Ve-_vdWIHy7vv73vv70P77-9J0Vu77-9ae-_vXTvv73vv71yGu-_vUkK.vF2e8-ZI_81Yo43omG8HWNy1wgyqxDVtXEsjzMyv8ks"
97 | }
98 | }
99 | ```
100 |
101 | The access token will be used in the `Authorization` Header for the chat completions API.
102 |
103 | - `/chat/completions`
104 |
105 | This API mimics OpenAI's [chat completions](https://platform.openai.com/docs/api-reference/chat) API. You can refer to their [docs](https://platform.openai.com/docs/guides/gpt/chat-completions-api) for reference on how to use this API in depth.
106 |
107 | The `accessToken` you acquire from the `/auth/login` API will be used in the `Authorization` header. Take note that this **this API supports both POST and SSE requests.**
108 |
109 | Example curl request:
110 | ```sh
111 | curl -X 'POST' \
112 | 'https://openrouter-api.dwarvesf.com/api/v1/chat/completions' \
113 | -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJtb25vdHlrYW1' \
114 | -H 'accept: application/json' \
115 | -H 'Content-Type: application/json' \
116 | -d '{
117 | "model": "openai/gpt-3.5-turbo",
118 | "messages": [
119 | {"role": "system", "content": "You are a helpful assistant."},
120 | {"role": "user", "content": "Explain the Great Gatsby in 200 words."}
121 | ]
122 | }'
123 | ```
124 |
125 | Example response:
126 | ```sh
127 | {
128 | "id": "gen-41dd85g17iuKzKcxMxZeMLSoOoGA",
129 | "model": "openai/gpt-3.5-turbo",
130 | "choices": [
131 | {
132 | "message": {
133 | "role": "assistant",
134 | "content": "The Great Gatsby is a novel written by F. Scott Fitzgerald, published in 1925. It is set in the summer of 1922 in Long Island, New York, and follows the lives of several wealthy characters as they navigate love, ambition, and social status.\n\nThe main character, Jay Gatsby, is a mysterious millionaire who throws lavish parties in hopes of winning back his lost love, Daisy Buchanan. Daisy is married to a man named Tom, who is having an affair with a woman named Myrtle.\n\nAs the story unfolds, the characters' secrets and desires are revealed, leading to tragic consequences. The novel explores themes of the American Dream, wealth, love, and social class, and is considered a classic of American literature.\n\nThe Great Gatsby is known for its vivid descriptions of the Roaring Twenties, including the extravagant parties and glamorous lifestyles of the wealthy. It is also known for its complex characters and their struggles with identity, desire, and the pursuit of happiness."
135 | }
136 | }
137 | ]
138 | }
139 | ```
140 |
141 | You can also run this on our API to see the response: https://openrouter-api.dwarvesf.com/api/v1/chat/completions.
142 |
143 | 
144 |
145 | 
146 |
147 | To stream with the API, update your curl request to include the header `Accept: text/event-stream` and in your body, add `stream: true`:
148 |
149 | ```sh
150 | curl -X 'POST' \
151 | 'https://openrouter-api.dwarvesf.com/api/v1/chat/completions' \
152 | -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJtb25vdHlrYW1' \
153 | -H 'accept: application/json' \
154 | -H 'Content-Type: application/json' \
155 | -H 'Accept: text/event-stream' \
156 | -d '{
157 | "model": "openai/gpt-3.5-turbo",
158 | "messages": [
159 | {"role": "system", "content": "You are a helpful assistant."},
160 | {"role": "user", "content": "Explain the Great Gatsby in 200 words."}
161 | ],
162 | "stream": true
163 | }'
164 | ```
165 |
166 | You will get a **stream** of responses as the API processes your message. You can use this message stream to append your messages in real-time.
167 | ```
168 | ...
169 |
170 | data: {"id": "gen-xGt1Nyy2WbqG7RgOCqbgMwsnAosJ", "choices": [{"index": 0, "delta": {"role": "assistant", "content": "\n"}}]}
171 |
172 | ...
173 | ```
174 |
175 | #### CORS
176 |
177 | When using CORS, we advise you add the `Origin` and the `Access-Control-Request-Headers` headers to your request.
178 |
179 | ```sh
180 | curl -X 'POST' \
181 | 'https://openrouter-api.dwarvesf.com/api/v1/chat/completions' \
182 | -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJtb25vdHlrYW1' \
183 | -H 'accept: application/json' \
184 | -H 'Origin: http://localhost'\
185 | -H 'Access-Control-Request-Method: POST' \
186 | -H 'Content-Type: application/json' \
187 | -d '{
188 | "model": "openai/gpt-3.5-turbo",
189 | "messages": [
190 | {"role": "system", "content": "You are a helpful assistant."},
191 | {"role": "user", "content": "Explain the Great Gatsby in 200 words."}
192 | ]
193 | }'
194 | ```
195 |
196 | When using our API, you will see that you can select your chat model. We support any models hosted on [OpenRouter](https://openrouter.ai/docs#quick-start). However, we highly recommend you use the following models for your application:
197 |
198 | - `openai/gpt-3.5-turbo`
199 | - `openai/gpt-3.5-turbo-16k`
200 | - `openai/gpt-4`
201 | - `openai/gpt-4-32k`
202 | - `openai/gpt-3.5-turbo-instruct`
203 |
204 | Also take note that your access token will have a credit limit to how many tokens you can request on our server. If you need more credits, contact our engineers on our `#frontend-23` channel.
205 |
--------------------------------------------------------------------------------