├── README.md ├── backend ├── target │ └── classes │ │ ├── com │ │ └── example │ │ │ └── demoforrohit │ │ │ ├── Entity │ │ │ ├── App.class │ │ │ └── User.class │ │ │ ├── JPA │ │ │ ├── appInterface.class │ │ │ └── UserRepository.class │ │ │ ├── config │ │ │ ├── CorsConfig.class │ │ │ └── CorsConfig$1.class │ │ │ ├── services │ │ │ ├── UserService.class │ │ │ └── appService.class │ │ │ ├── DemoforrohitApplication.class │ │ │ └── controller │ │ │ ├── AuthController.class │ │ │ └── appController.class │ │ └── application.properties ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── demoforrohit │ │ │ │ ├── repo │ │ │ │ └── appRepo.java │ │ │ │ ├── JPA │ │ │ │ ├── appInterface.java │ │ │ │ └── UserRepository.java │ │ │ │ ├── DemoforrohitApplication.java │ │ │ │ ├── controller │ │ │ │ ├── appController.java │ │ │ │ └── AuthController.java │ │ │ │ ├── Entity │ │ │ │ ├── User.java │ │ │ │ └── App.java │ │ │ │ ├── config │ │ │ │ └── CorsConfig.java │ │ │ │ └── services │ │ │ │ ├── UserService.java │ │ │ │ └── appService.java │ │ └── resources │ │ │ └── application.properties │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── demoforrohit │ │ └── DemoforrohitApplicationTests.java ├── Dockerfile ├── HELP.md ├── pom.xml ├── mvnw.cmd └── mvnw ├── my-app ├── src │ ├── main.jsx │ ├── index.css │ ├── App.css │ ├── assets │ │ └── react.svg │ └── App.jsx ├── index.html ├── Dockerfile ├── vite.config.js ├── package.json ├── README.md ├── eslint.config.js ├── public │ └── vite.svg └── package-lock.json └── docker-compose.yml /README.md: -------------------------------------------------------------------------------- 1 | # docker_compose_3tier_app 2 | 3 | ![diagram](https://github.com/user-attachments/assets/f7b9546d-e8b2-4847-a699-c2aa335d5de4) 4 | -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/Entity/App.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/Entity/App.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/Entity/User.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/Entity/User.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/JPA/appInterface.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/JPA/appInterface.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/config/CorsConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/config/CorsConfig.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/JPA/UserRepository.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/JPA/UserRepository.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/config/CorsConfig$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/config/CorsConfig$1.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/services/UserService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/services/UserService.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/services/appService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/services/appService.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/DemoforrohitApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/DemoforrohitApplication.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/controller/AuthController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/controller/AuthController.class -------------------------------------------------------------------------------- /backend/target/classes/com/example/demoforrohit/controller/appController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arjundhav/docker_compose_3tier_app/main/backend/target/classes/com/example/demoforrohit/controller/appController.class -------------------------------------------------------------------------------- /my-app/src/main.jsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react' 2 | import { createRoot } from 'react-dom/client' 3 | import './index.css' 4 | import App from './App.jsx' 5 | 6 | createRoot(document.getElementById('root')).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/repo/appRepo.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.repo; 2 | // 3 | //import com.example.demoforrohit.Entity.app; 4 | //import org.springframework.data.jpa.repository.JpaRepository; 5 | // 6 | //public interface appRepo extends JpaRepository { 7 | //} -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/JPA/appInterface.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.JPA; 2 | 3 | 4 | import com.example.demoforrohit.Entity.App; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | 7 | public interface appInterface extends JpaRepository { 8 | } 9 | -------------------------------------------------------------------------------- /backend/src/test/java/com/example/demoforrohit/DemoforrohitApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoforrohitApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/JPA/UserRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.JPA; 2 | 3 | import com.example.demoforrohit.Entity.User; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import java.util.Optional; 6 | 7 | public interface UserRepository extends JpaRepository { 8 | Optional findByUsername(String username); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /backend/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build Spring Boot App 2 | FROM maven:3.9.6-eclipse-temurin-21 AS backend 3 | WORKDIR /app 4 | COPY backend/pom.xml ./ 5 | COPY backend/src ./src 6 | RUN mvn clean package -DskipTests 7 | 8 | # Stage 2: Run Spring Boot App 9 | FROM eclipse-temurin:21-jdk-alpine 10 | WORKDIR /app 11 | COPY --from=backend /app/target/*.jar app.jar 12 | EXPOSE 8080 13 | ENTRYPOINT ["java", "-jar", "app.jar"] -------------------------------------------------------------------------------- /my-app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /my-app/Dockerfile: -------------------------------------------------------------------------------- 1 | # Use official Node.js image 2 | FROM node:alpine 3 | 4 | # Set working directory 5 | WORKDIR /app 6 | 7 | # Copy package.json and install dependencies 8 | COPY ./my-app/package*.json ./ 9 | RUN npm install 10 | 11 | # Copy all files 12 | COPY my-app/ ./ 13 | 14 | # Build the app 15 | RUN npm run build 16 | 17 | # Expose port 18 | EXPOSE 4173 19 | 20 | # Start the app 21 | CMD ["npm", "run", "preview"] -------------------------------------------------------------------------------- /my-app/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | server: { 8 | host: '0.0.0.0', // Listen on all network interfaces 9 | port: 4173, // Specify the port 10 | watch: { 11 | usePolling: true, // Useful for file change detection in Docker 12 | }, 13 | }, 14 | }) 15 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/DemoforrohitApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class DemoforrohitApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(DemoforrohitApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /my-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "start": "nodemon --watch src --exec vite --host", 8 | "dev": "vite", 9 | "build": "vite build", 10 | "lint": "eslint .", 11 | "preview": "vite preview" 12 | }, 13 | "dependencies": { 14 | "react": "^19.1.0", 15 | "react-dom": "^19.1.0", 16 | "react-icons": "^5.5.0" 17 | }, 18 | "devDependencies": { 19 | "@eslint/js": "^9.25.0", 20 | "@types/react": "^19.1.2", 21 | "@types/react-dom": "^19.1.2", 22 | "@vitejs/plugin-react": "^4.4.1", 23 | "eslint": "^9.25.0", 24 | "eslint-plugin-react-hooks": "^5.2.0", 25 | "eslint-plugin-react-refresh": "^0.4.19", 26 | "globals": "^16.0.0", 27 | "nodemon": "^3.1.10", 28 | "vite": "^6.3.5" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/controller/appController.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.controller; 2 | 3 | 4 | import com.example.demoforrohit.Entity.App; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.*; 7 | import com.example.demoforrohit.services.appService; 8 | 9 | import java.util.List; 10 | 11 | @RestController 12 | @RequestMapping("/rohit") 13 | public class appController { 14 | 15 | @Autowired 16 | private appService appService; 17 | 18 | @GetMapping 19 | public List getAll(){; 20 | return appService.getList(); 21 | } 22 | 23 | @PostMapping 24 | public App create(@RequestBody App app){ 25 | System.out.print(app); 26 | return appService.create(app); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /my-app/README.md: -------------------------------------------------------------------------------- 1 | # React + Vite 2 | 3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. 4 | 5 | Currently, two official plugins are available: 6 | 7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh 8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh 9 | 10 | ## Expanding the ESLint configuration 11 | 12 | If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. 13 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/Entity/User.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.Entity; 2 | 3 | import jakarta.persistence.*; 4 | 5 | @Entity 6 | @Table(name = "users") 7 | public class User { 8 | @Id 9 | @GeneratedValue(strategy = GenerationType.IDENTITY) 10 | private Long id; 11 | 12 | @Column(unique = true, nullable = false) 13 | private String username; 14 | 15 | @Column(nullable = false) 16 | private String password; 17 | 18 | // Getters and setters 19 | public Long getId() { return id; } 20 | public void setId(Long id) { this.id = id; } 21 | public String getUsername() { return username; } 22 | public void setUsername(String username) { this.username = username; } 23 | public String getPassword() { return password; } 24 | public void setPassword(String password) { this.password = password; } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /my-app/eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | 6 | export default [ 7 | { ignores: ['dist'] }, 8 | { 9 | files: ['**/*.{js,jsx}'], 10 | languageOptions: { 11 | ecmaVersion: 2020, 12 | globals: globals.browser, 13 | parserOptions: { 14 | ecmaVersion: 'latest', 15 | ecmaFeatures: { jsx: true }, 16 | sourceType: 'module', 17 | }, 18 | }, 19 | plugins: { 20 | 'react-hooks': reactHooks, 21 | 'react-refresh': reactRefresh, 22 | }, 23 | rules: { 24 | ...js.configs.recommended.rules, 25 | ...reactHooks.configs.recommended.rules, 26 | 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], 27 | 'react-refresh/only-export-components': [ 28 | 'warn', 29 | { allowConstantExport: true }, 30 | ], 31 | }, 32 | }, 33 | ] 34 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/config/CorsConfig.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 7 | 8 | @Configuration 9 | public class CorsConfig { 10 | 11 | @Bean 12 | public WebMvcConfigurer corsConfigurer() { 13 | return new WebMvcConfigurer() { 14 | @Override 15 | public void addCorsMappings(CorsRegistry registry) { 16 | registry.addMapping("/**") // Allow all endpoints 17 | .allowedOrigins("http://localhost:4173") // Your React app origin 18 | .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") 19 | .allowedHeaders("*") 20 | .allowCredentials(true); 21 | } 22 | }; 23 | } 24 | } -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/services/UserService.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.services; 2 | 3 | import com.example.demoforrohit.Entity.User; 4 | import com.example.demoforrohit.JPA.UserRepository; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import java.util.Optional; 9 | 10 | @Service 11 | public class UserService { 12 | @Autowired 13 | private UserRepository userRepository; 14 | 15 | public boolean authenticate(String username, String password) { 16 | Optional userOpt = userRepository.findByUsername(username); 17 | return userOpt.isPresent() && userOpt.get().getPassword().equals(password); 18 | } 19 | 20 | public boolean userExists(String username) { 21 | return userRepository.findByUsername(username).isPresent(); 22 | } 23 | 24 | public User register(User user) { 25 | user.setId(null); // Ensure a new user is created 26 | return userRepository.save(user); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /backend/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=demoforrohit 2 | server.port=8080 3 | 4 | #profile 5 | spring.profiles.active=dev 6 | 7 | ## H2 Console 8 | #spring.h2.console.enabled=true 9 | #spring.h2.console.path=/h2-console 10 | # 11 | ## Datasource Configuration 12 | #spring.datasource.url=jdbc:h2:mem:App 13 | #spring.datasource.driver-class-name=org.h2.Driver 14 | #spring.datasource.username=sa 15 | #spring.datasource.password=Rohit 16 | # 17 | ## JPA (Hibernate) 18 | #spring.jpa.hibernate.ddl-auto=update 19 | #spring.jpa.show-sql=true 20 | #spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 21 | 22 | 23 | 24 | spring.datasource.url=jdbc:oracle:thin:@//192.168.1.103:1521/XEPDB1 25 | spring.datasource.username=system 26 | spring.datasource.password=rohit 27 | spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 28 | spring.jpa.database-platform=org.hibernate.dialect.OracleDialect 29 | spring.jpa.hibernate.ddl-auto=update 30 | spring.jpa.show-sql=true 31 | spring.jpa.properties.hibernate.format_sql=true 32 | logging.level.org.hibernate.type.descriptor.sql=TRACE 33 | logging.level.org.hibernate.orm.jdbc.bind=TRACE 34 | -------------------------------------------------------------------------------- /backend/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=demoforrohit 2 | server.port=8080 3 | 4 | #profile 5 | spring.profiles.active=dev 6 | 7 | ## H2 Console 8 | #spring.h2.console.enabled=true 9 | #spring.h2.console.path=/h2-console 10 | # 11 | ## Datasource Configuration 12 | #spring.datasource.url=jdbc:h2:mem:App 13 | #spring.datasource.driver-class-name=org.h2.Driver 14 | #spring.datasource.username=sa 15 | #spring.datasource.password=Rohit 16 | # 17 | ## JPA (Hibernate) 18 | #spring.jpa.hibernate.ddl-auto=update 19 | #spring.jpa.show-sql=true 20 | #spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 21 | 22 | 23 | 24 | spring.datasource.url=jdbc:oracle:thin:@//192.168.1.103:1521/XEPDB1 25 | spring.datasource.username=system 26 | spring.datasource.password=rohit 27 | spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 28 | spring.jpa.database-platform=org.hibernate.dialect.OracleDialect 29 | spring.jpa.hibernate.ddl-auto=update 30 | spring.jpa.show-sql=true 31 | spring.jpa.properties.hibernate.format_sql=true 32 | logging.level.org.hibernate.type.descriptor.sql=TRACE 33 | logging.level.org.hibernate.orm.jdbc.bind=TRACE 34 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/services/appService.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.services; 2 | 3 | import com.example.demoforrohit.Entity.App; 4 | import com.example.demoforrohit.JPA.appInterface; 5 | //import com.example.demoforrohit.repo.appRepo; 6 | 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.PostMapping; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | 17 | @Slf4j 18 | @Service 19 | public class appService { 20 | 21 | // @Autowired 22 | // private appRepo appRepo; 23 | // private List list = new ArrayList<>(); 24 | 25 | 26 | @Autowired 27 | private appInterface appInterface; 28 | 29 | @PostMapping 30 | public App create(App app){ 31 | System.out.print(app); 32 | appInterface.save(app); 33 | return app; 34 | } 35 | 36 | @GetMapping 37 | public List getList(){ 38 | // System.out.print(list); 39 | return appInterface.findAll(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /backend/HELP.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | ### Reference Documentation 4 | For further reference, please consider the following sections: 5 | 6 | * [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) 7 | * [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.5.0/maven-plugin) 8 | * [Create an OCI image](https://docs.spring.io/spring-boot/3.5.0/maven-plugin/build-image.html) 9 | * [Spring Web](https://docs.spring.io/spring-boot/3.5.0/reference/web/servlet.html) 10 | 11 | ### Guides 12 | The following guides illustrate how to use some features concretely: 13 | 14 | * [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) 15 | * [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) 16 | * [Building REST services with Spring](https://spring.io/guides/tutorials/rest/) 17 | 18 | ### Maven Parent overrides 19 | 20 | Due to Maven's design, elements are inherited from the parent POM to the project POM. 21 | While most of the inheritance is fine, it also inherits unwanted elements like `` and `` from the parent. 22 | To prevent this, the project POM contains empty overrides for these elements. 23 | If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides. 24 | 25 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/Entity/App.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.Entity; 2 | 3 | 4 | import jakarta.persistence.Entity; 5 | import jakarta.persistence.Id; 6 | import lombok.Data; 7 | 8 | @Entity 9 | public class App { 10 | 11 | @Id 12 | private int id; 13 | private String name; 14 | private String surname; 15 | 16 | public App(String name, int id, String surname) { 17 | this.name = name; 18 | this.id = id; 19 | this.surname = surname; 20 | } 21 | public App(){ 22 | 23 | } 24 | 25 | public int getId() { 26 | return id; 27 | } 28 | 29 | public void setId(int id) { 30 | this.id = id; 31 | } 32 | 33 | public String getName() { 34 | return name; 35 | } 36 | 37 | public void setName(String name) { 38 | this.name = name; 39 | } 40 | 41 | public String getSurname() { 42 | return surname; 43 | } 44 | 45 | public void setSurname(String surname) { 46 | this.surname = surname; 47 | } 48 | 49 | // @Override 50 | // public String toString() { 51 | // return "App{" + 52 | // "id=" + id + 53 | // ", name='" + name + '\'' + 54 | // ", surname='" + surname + '\'' + 55 | // '}'; 56 | // } 57 | } 58 | 59 | -------------------------------------------------------------------------------- /my-app/src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | a { 17 | font-weight: 500; 18 | color: #646cff; 19 | text-decoration: inherit; 20 | } 21 | a:hover { 22 | color: #535bf2; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | display: flex; 28 | place-items: center; 29 | min-width: 320px; 30 | min-height: 100vh; 31 | } 32 | 33 | h1 { 34 | font-size: 3.2em; 35 | line-height: 1.1; 36 | } 37 | 38 | button { 39 | border-radius: 8px; 40 | border: 1px solid transparent; 41 | padding: 0.6em 1.2em; 42 | font-size: 1em; 43 | font-weight: 500; 44 | font-family: inherit; 45 | background-color: #1a1a1a; 46 | cursor: pointer; 47 | transition: border-color 0.25s; 48 | } 49 | button:hover { 50 | border-color: #646cff; 51 | } 52 | button:focus, 53 | button:focus-visible { 54 | outline: 4px auto -webkit-focus-ring-color; 55 | } 56 | 57 | @media (prefers-color-scheme: light) { 58 | :root { 59 | color: #213547; 60 | background-color: #ffffff; 61 | } 62 | a:hover { 63 | color: #747bff; 64 | } 65 | button { 66 | background-color: #f9f9f9; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /my-app/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | oracle_db: 5 | image: gvenzl/oracle-xe:21-slim 6 | container_name: oracle_db 7 | ports: 8 | - "1521:1521" 9 | environment: 10 | ORACLE_PASSWORD: rohit 11 | APP_USER: rohit 12 | APP_USER_PASSWORD: rohit 13 | ORACLE_DATABASE: XEPDB1 14 | volumes: 15 | - oracle-data:/opt/oracle/oradata 16 | networks: 17 | - app-network 18 | healthcheck: 19 | test: ["CMD", "bash", "-c", "echo 'SELECT 1 FROM DUAL;' | sqlplus -s system/rohit@//localhost:1521/XEPDB1"] 20 | interval: 30s 21 | timeout: 10s 22 | retries: 10 23 | start_period: 60s 24 | 25 | backend: 26 | build: 27 | context: . 28 | dockerfile: /backend/Dockerfile 29 | container_name: spring_backend 30 | ports: 31 | - "8080:8080" 32 | environment: 33 | SPRING_DATASOURCE_URL: jdbc:oracle:thin:@192.168.1.103:1521/XEPDB1 34 | SPRING_DATASOURCE_USERNAME: system 35 | SPRING_DATASOURCE_PASSWORD: rohit 36 | depends_on: 37 | oracle_db: 38 | condition: service_healthy 39 | networks: 40 | - app-network 41 | 42 | frontend: 43 | build: 44 | context: . 45 | dockerfile: /my-app/Dockerfile 46 | container_name: react_frontend 47 | ports: 48 | - "4173:4173" 49 | networks: 50 | - app-network 51 | 52 | volumes: 53 | oracle-data: 54 | driver: local 55 | 56 | networks: 57 | app-network: 58 | driver: bridge 59 | -------------------------------------------------------------------------------- /backend/src/main/java/com/example/demoforrohit/controller/AuthController.java: -------------------------------------------------------------------------------- 1 | package com.example.demoforrohit.controller; 2 | 3 | import com.example.demoforrohit.Entity.User; 4 | import com.example.demoforrohit.services.UserService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.http.ResponseEntity; 7 | import org.springframework.web.bind.annotation.*; 8 | 9 | @RestController 10 | @RequestMapping("/auth") 11 | public class AuthController { 12 | @Autowired 13 | private UserService userService; 14 | 15 | @PostMapping("/login") 16 | public ResponseEntity login(@RequestBody User user) { 17 | if (!userService.userExists(user.getUsername())) { 18 | return ResponseEntity.badRequest().body("User not registered. Please register first."); 19 | } 20 | boolean authenticated = userService.authenticate(user.getUsername(), user.getPassword()); 21 | if (authenticated) { 22 | return ResponseEntity.ok("Login successful"); 23 | } else { 24 | return ResponseEntity.badRequest().body("Invalid credentials"); 25 | } 26 | } 27 | 28 | @PostMapping("/register") 29 | public ResponseEntity register(@RequestBody User user) { 30 | if (user.getUsername() == null || user.getUsername().trim().isEmpty()) { 31 | return ResponseEntity.badRequest().body("Username must not be null or empty"); 32 | } 33 | if (user.getPassword() == null || user.getPassword().trim().isEmpty()) { 34 | return ResponseEntity.badRequest().body("Password must not be null or empty"); 35 | } 36 | if (userService.userExists(user.getUsername())) { 37 | return ResponseEntity.badRequest().body("User already registered"); 38 | } 39 | userService.register(user); 40 | return ResponseEntity.ok("Registration successful"); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /my-app/src/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | min-height: 100vh; 3 | margin: 0; 4 | display: flex; 5 | align-items: center; 6 | justify-content: center; 7 | background: #f0f2f5; /* Optional: subtle background */ 8 | } 9 | 10 | .container { 11 | background: #fff; 12 | border-radius: 12px; 13 | box-shadow: 0 4px 24px rgba(0,0,0,0.08); 14 | padding: 32px; 15 | max-width: 400px; 16 | width: 100%; 17 | /* Remove margin and centering flex from .container */ 18 | margin: 0; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | } 24 | 25 | .input-group { 26 | display: flex; 27 | align-items: center; 28 | background: #f5f6fa; 29 | border-radius: 8px; 30 | padding: 10px 14px; 31 | margin-bottom: 18px; 32 | border: 1px solid #e0e0e0; 33 | transition: border 0.2s; 34 | } 35 | 36 | .input-group:focus-within { 37 | border: 1.5px solid #646cff; 38 | } 39 | 40 | .input-icon { 41 | font-size: 1.2em; 42 | color: #646cff; 43 | margin-right: 10px; 44 | } 45 | 46 | .input-group input { 47 | border: none; 48 | background: transparent; 49 | outline: none; 50 | font-size: 1em; 51 | width: 100%; 52 | padding: 6px 0; 53 | } 54 | 55 | .submit-btn { 56 | width: 100%; 57 | background: linear-gradient(90deg, #646cff 60%, #61dafb 100%); 58 | color: #fff; 59 | border: none; 60 | border-radius: 8px; 61 | padding: 12px 0; 62 | font-size: 1.1em; 63 | font-weight: 600; 64 | cursor: pointer; 65 | transition: background 0.2s; 66 | margin-top: 10px; 67 | } 68 | 69 | .submit-btn:hover { 70 | background: linear-gradient(90deg, #4b50c7 60%, #21a1f3 100%); 71 | } 72 | 73 | .fetch-btn { 74 | background: #fff; 75 | color: #646cff; 76 | border: 2px solid #646cff; 77 | border-radius: 8px; 78 | padding: 10px 0; 79 | font-size: 1em; 80 | font-weight: 600; 81 | cursor: pointer; 82 | transition: background 0.2s, color 0.2s; 83 | } 84 | 85 | .fetch-btn:hover:enabled { 86 | background: #646cff; 87 | color: #fff; 88 | } 89 | 90 | .fetch-btn:disabled { 91 | opacity: 0.6; 92 | cursor: not-allowed; 93 | } 94 | 95 | .user-table { 96 | width: 100%; 97 | border-collapse: collapse; 98 | margin-top: 10px; 99 | background: #f5f6fa; 100 | border-radius: 8px; 101 | overflow: hidden; 102 | font-size: 0.98em; 103 | } 104 | 105 | .user-table th, .user-table td { 106 | padding: 10px 12px; 107 | border-bottom: 1px solid #e0e0e0; 108 | text-align: left; 109 | } 110 | 111 | .user-table th { 112 | background: #646cff; 113 | color: #fff; 114 | font-weight: 600; 115 | } 116 | 117 | .user-table tr:last-child td { 118 | border-bottom: none; 119 | } -------------------------------------------------------------------------------- /backend/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 3.4.6 9 | 10 | 11 | com.example 12 | demoforrohit 13 | 0.0.1-SNAPSHOT 14 | demoforrohit 15 | Demo project for Spring Boot 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 21 31 | 32 | 33 | 34 | org.springframework.boot 35 | spring-boot-starter-web 36 | 37 | 38 | 39 | org.projectlombok 40 | lombok 41 | true 42 | 43 | 44 | org.springframework.boot 45 | spring-boot-starter-data-jpa 46 | 47 | 48 | org.springframework.boot 49 | spring-boot-starter-test 50 | test 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | com.oracle.database.jdbc 59 | ojdbc8 60 | 19.3.0.0 61 | 62 | 63 | jakarta.persistence 64 | jakarta.persistence-api 65 | 3.1.0 66 | 67 | 68 | org.springframework.boot 69 | spring-boot-starter-data-jpa 70 | 71 | 72 | 73 | 74 | 75 | oracle 76 | https://maven.oracle.com 77 | 78 | 79 | 80 | 81 | 82 | 83 | org.springframework.boot 84 | spring-boot-maven-plugin 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /my-app/src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /my-app/src/App.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import { FaIdBadge, FaUser, FaUserTag } from 'react-icons/fa' 3 | import './App.css' 4 | 5 | function App() { 6 | const [formData, setFormData] = useState({ 7 | id: '', 8 | name: '', 9 | surname: '' 10 | }); 11 | const [users, setUsers] = useState([]); 12 | const [loading, setLoading] = useState(false); 13 | 14 | const handleChange = (e) => { 15 | const { name, value } = e.target; 16 | setFormData(prev => ({ 17 | ...prev, 18 | [name]: value 19 | })); 20 | }; 21 | 22 | const handleSubmit = (e) => { 23 | e.preventDefault(); 24 | fetch('http://localhost:8080/rohit', { 25 | method: 'POST', 26 | headers: { 'Content-Type': 'application/json' }, 27 | body: JSON.stringify(formData) 28 | }) 29 | .then((res) => res.json()) 30 | .then((data) => { 31 | console.log('API Response:', data); 32 | alert('Data submitted successfully!'); 33 | }) 34 | .catch((err) => { 35 | console.error('Error:', err); 36 | alert('Failed to submit data'); 37 | }); 38 | }; 39 | 40 | const fetchUsers = () => { 41 | setLoading(true); 42 | fetch('http://localhost:8080/rohit') // Adjust endpoint if needed 43 | .then(res => res.json()) 44 | .then(data => { 45 | setUsers(data); 46 | setLoading(false); 47 | }) 48 | .catch(err => { 49 | alert('Failed to fetch users'); 50 | setLoading(false); 51 | }); 52 | }; 53 | 54 | return ( 55 |
63 |

Add User

64 |
65 |
66 | 67 | 76 |
77 |
78 | 79 | 88 |
89 |
90 | 91 | 100 |
101 | 102 |
103 | 104 | 112 | 113 | {users.length > 0 && ( 114 |
115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | {users.map((u, idx) => ( 125 | 126 | 127 | 128 | 129 | 130 | ))} 131 | 132 |
User IDFirst NameSurname
{u.id}{u.name}{u.surname}
133 |
134 | )} 135 |
136 | ); 137 | } 138 | 139 | export default App -------------------------------------------------------------------------------- /backend/mvnw.cmd: -------------------------------------------------------------------------------- 1 | <# : batch portion 2 | @REM ---------------------------------------------------------------------------- 3 | @REM Licensed to the Apache Software Foundation (ASF) under one 4 | @REM or more contributor license agreements. See the NOTICE file 5 | @REM distributed with this work for additional information 6 | @REM regarding copyright ownership. The ASF licenses this file 7 | @REM to you under the Apache License, Version 2.0 (the 8 | @REM "License"); you may not use this file except in compliance 9 | @REM with the License. You may obtain a copy of the License at 10 | @REM 11 | @REM http://www.apache.org/licenses/LICENSE-2.0 12 | @REM 13 | @REM Unless required by applicable law or agreed to in writing, 14 | @REM software distributed under the License is distributed on an 15 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | @REM KIND, either express or implied. See the License for the 17 | @REM specific language governing permissions and limitations 18 | @REM under the License. 19 | @REM ---------------------------------------------------------------------------- 20 | 21 | @REM ---------------------------------------------------------------------------- 22 | @REM Apache Maven Wrapper startup batch script, version 3.3.2 23 | @REM 24 | @REM Optional ENV vars 25 | @REM MVNW_REPOURL - repo url base for downloading maven distribution 26 | @REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven 27 | @REM MVNW_VERBOSE - true: enable verbose log; others: silence the output 28 | @REM ---------------------------------------------------------------------------- 29 | 30 | @IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) 31 | @SET __MVNW_CMD__= 32 | @SET __MVNW_ERROR__= 33 | @SET __MVNW_PSMODULEP_SAVE=%PSModulePath% 34 | @SET PSModulePath= 35 | @FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( 36 | IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) 37 | ) 38 | @SET PSModulePath=%__MVNW_PSMODULEP_SAVE% 39 | @SET __MVNW_PSMODULEP_SAVE= 40 | @SET __MVNW_ARG0_NAME__= 41 | @SET MVNW_USERNAME= 42 | @SET MVNW_PASSWORD= 43 | @IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) 44 | @echo Cannot start maven from wrapper >&2 && exit /b 1 45 | @GOTO :EOF 46 | : end batch / begin powershell #> 47 | 48 | $ErrorActionPreference = "Stop" 49 | if ($env:MVNW_VERBOSE -eq "true") { 50 | $VerbosePreference = "Continue" 51 | } 52 | 53 | # calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties 54 | $distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl 55 | if (!$distributionUrl) { 56 | Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" 57 | } 58 | 59 | switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { 60 | "maven-mvnd-*" { 61 | $USE_MVND = $true 62 | $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" 63 | $MVN_CMD = "mvnd.cmd" 64 | break 65 | } 66 | default { 67 | $USE_MVND = $false 68 | $MVN_CMD = $script -replace '^mvnw','mvn' 69 | break 70 | } 71 | } 72 | 73 | # apply MVNW_REPOURL and calculate MAVEN_HOME 74 | # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ 75 | if ($env:MVNW_REPOURL) { 76 | $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } 77 | $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" 78 | } 79 | $distributionUrlName = $distributionUrl -replace '^.*/','' 80 | $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' 81 | $MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" 82 | if ($env:MAVEN_USER_HOME) { 83 | $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" 84 | } 85 | $MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' 86 | $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" 87 | 88 | if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { 89 | Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" 90 | Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" 91 | exit $? 92 | } 93 | 94 | if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { 95 | Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" 96 | } 97 | 98 | # prepare tmp dir 99 | $TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile 100 | $TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" 101 | $TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null 102 | trap { 103 | if ($TMP_DOWNLOAD_DIR.Exists) { 104 | try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } 105 | catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } 106 | } 107 | } 108 | 109 | New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null 110 | 111 | # Download and Install Apache Maven 112 | Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." 113 | Write-Verbose "Downloading from: $distributionUrl" 114 | Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" 115 | 116 | $webclient = New-Object System.Net.WebClient 117 | if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { 118 | $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) 119 | } 120 | [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 121 | $webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null 122 | 123 | # If specified, validate the SHA-256 sum of the Maven distribution zip file 124 | $distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum 125 | if ($distributionSha256Sum) { 126 | if ($USE_MVND) { 127 | Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." 128 | } 129 | Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash 130 | if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { 131 | Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." 132 | } 133 | } 134 | 135 | # unzip and move 136 | Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null 137 | Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null 138 | try { 139 | Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null 140 | } catch { 141 | if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { 142 | Write-Error "fail to move MAVEN_HOME" 143 | } 144 | } finally { 145 | try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } 146 | catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } 147 | } 148 | 149 | Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" 150 | -------------------------------------------------------------------------------- /backend/mvnw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # ---------------------------------------------------------------------------- 3 | # Licensed to the Apache Software Foundation (ASF) under one 4 | # or more contributor license agreements. See the NOTICE file 5 | # distributed with this work for additional information 6 | # regarding copyright ownership. The ASF licenses this file 7 | # to you under the Apache License, Version 2.0 (the 8 | # "License"); you may not use this file except in compliance 9 | # with the License. You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, 14 | # software distributed under the License is distributed on an 15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | # KIND, either express or implied. See the License for the 17 | # specific language governing permissions and limitations 18 | # under the License. 19 | # ---------------------------------------------------------------------------- 20 | 21 | # ---------------------------------------------------------------------------- 22 | # Apache Maven Wrapper startup batch script, version 3.3.2 23 | # 24 | # Optional ENV vars 25 | # ----------------- 26 | # JAVA_HOME - location of a JDK home dir, required when download maven via java source 27 | # MVNW_REPOURL - repo url base for downloading maven distribution 28 | # MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven 29 | # MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output 30 | # ---------------------------------------------------------------------------- 31 | 32 | set -euf 33 | [ "${MVNW_VERBOSE-}" != debug ] || set -x 34 | 35 | # OS specific support. 36 | native_path() { printf %s\\n "$1"; } 37 | case "$(uname)" in 38 | CYGWIN* | MINGW*) 39 | [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" 40 | native_path() { cygpath --path --windows "$1"; } 41 | ;; 42 | esac 43 | 44 | # set JAVACMD and JAVACCMD 45 | set_java_home() { 46 | # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched 47 | if [ -n "${JAVA_HOME-}" ]; then 48 | if [ -x "$JAVA_HOME/jre/sh/java" ]; then 49 | # IBM's JDK on AIX uses strange locations for the executables 50 | JAVACMD="$JAVA_HOME/jre/sh/java" 51 | JAVACCMD="$JAVA_HOME/jre/sh/javac" 52 | else 53 | JAVACMD="$JAVA_HOME/bin/java" 54 | JAVACCMD="$JAVA_HOME/bin/javac" 55 | 56 | if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then 57 | echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 58 | echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 59 | return 1 60 | fi 61 | fi 62 | else 63 | JAVACMD="$( 64 | 'set' +e 65 | 'unset' -f command 2>/dev/null 66 | 'command' -v java 67 | )" || : 68 | JAVACCMD="$( 69 | 'set' +e 70 | 'unset' -f command 2>/dev/null 71 | 'command' -v javac 72 | )" || : 73 | 74 | if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then 75 | echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 76 | return 1 77 | fi 78 | fi 79 | } 80 | 81 | # hash string like Java String::hashCode 82 | hash_string() { 83 | str="${1:-}" h=0 84 | while [ -n "$str" ]; do 85 | char="${str%"${str#?}"}" 86 | h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) 87 | str="${str#?}" 88 | done 89 | printf %x\\n $h 90 | } 91 | 92 | verbose() { :; } 93 | [ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } 94 | 95 | die() { 96 | printf %s\\n "$1" >&2 97 | exit 1 98 | } 99 | 100 | trim() { 101 | # MWRAPPER-139: 102 | # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. 103 | # Needed for removing poorly interpreted newline sequences when running in more 104 | # exotic environments such as mingw bash on Windows. 105 | printf "%s" "${1}" | tr -d '[:space:]' 106 | } 107 | 108 | # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties 109 | while IFS="=" read -r key value; do 110 | case "${key-}" in 111 | distributionUrl) distributionUrl=$(trim "${value-}") ;; 112 | distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; 113 | esac 114 | done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" 115 | [ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" 116 | 117 | case "${distributionUrl##*/}" in 118 | maven-mvnd-*bin.*) 119 | MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ 120 | case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in 121 | *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; 122 | :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; 123 | :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; 124 | :Linux*x86_64*) distributionPlatform=linux-amd64 ;; 125 | *) 126 | echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 127 | distributionPlatform=linux-amd64 128 | ;; 129 | esac 130 | distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" 131 | ;; 132 | maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; 133 | *) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; 134 | esac 135 | 136 | # apply MVNW_REPOURL and calculate MAVEN_HOME 137 | # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ 138 | [ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" 139 | distributionUrlName="${distributionUrl##*/}" 140 | distributionUrlNameMain="${distributionUrlName%.*}" 141 | distributionUrlNameMain="${distributionUrlNameMain%-bin}" 142 | MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" 143 | MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" 144 | 145 | exec_maven() { 146 | unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : 147 | exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" 148 | } 149 | 150 | if [ -d "$MAVEN_HOME" ]; then 151 | verbose "found existing MAVEN_HOME at $MAVEN_HOME" 152 | exec_maven "$@" 153 | fi 154 | 155 | case "${distributionUrl-}" in 156 | *?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; 157 | *) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; 158 | esac 159 | 160 | # prepare tmp dir 161 | if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then 162 | clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } 163 | trap clean HUP INT TERM EXIT 164 | else 165 | die "cannot create temp dir" 166 | fi 167 | 168 | mkdir -p -- "${MAVEN_HOME%/*}" 169 | 170 | # Download and Install Apache Maven 171 | verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." 172 | verbose "Downloading from: $distributionUrl" 173 | verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" 174 | 175 | # select .zip or .tar.gz 176 | if ! command -v unzip >/dev/null; then 177 | distributionUrl="${distributionUrl%.zip}.tar.gz" 178 | distributionUrlName="${distributionUrl##*/}" 179 | fi 180 | 181 | # verbose opt 182 | __MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' 183 | [ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v 184 | 185 | # normalize http auth 186 | case "${MVNW_PASSWORD:+has-password}" in 187 | '') MVNW_USERNAME='' MVNW_PASSWORD='' ;; 188 | has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; 189 | esac 190 | 191 | if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then 192 | verbose "Found wget ... using wget" 193 | wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" 194 | elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then 195 | verbose "Found curl ... using curl" 196 | curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" 197 | elif set_java_home; then 198 | verbose "Falling back to use Java to download" 199 | javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" 200 | targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" 201 | cat >"$javaSource" <<-END 202 | public class Downloader extends java.net.Authenticator 203 | { 204 | protected java.net.PasswordAuthentication getPasswordAuthentication() 205 | { 206 | return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); 207 | } 208 | public static void main( String[] args ) throws Exception 209 | { 210 | setDefault( new Downloader() ); 211 | java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); 212 | } 213 | } 214 | END 215 | # For Cygwin/MinGW, switch paths to Windows format before running javac and java 216 | verbose " - Compiling Downloader.java ..." 217 | "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" 218 | verbose " - Running Downloader.java ..." 219 | "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" 220 | fi 221 | 222 | # If specified, validate the SHA-256 sum of the Maven distribution zip file 223 | if [ -n "${distributionSha256Sum-}" ]; then 224 | distributionSha256Result=false 225 | if [ "$MVN_CMD" = mvnd.sh ]; then 226 | echo "Checksum validation is not supported for maven-mvnd." >&2 227 | echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 228 | exit 1 229 | elif command -v sha256sum >/dev/null; then 230 | if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then 231 | distributionSha256Result=true 232 | fi 233 | elif command -v shasum >/dev/null; then 234 | if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then 235 | distributionSha256Result=true 236 | fi 237 | else 238 | echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 239 | echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 240 | exit 1 241 | fi 242 | if [ $distributionSha256Result = false ]; then 243 | echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 244 | echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 245 | exit 1 246 | fi 247 | fi 248 | 249 | # unzip and move 250 | if command -v unzip >/dev/null; then 251 | unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" 252 | else 253 | tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" 254 | fi 255 | printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" 256 | mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" 257 | 258 | clean || : 259 | exec_maven "$@" 260 | -------------------------------------------------------------------------------- /my-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "my-app", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "react": "^19.1.0", 12 | "react-dom": "^19.1.0", 13 | "react-icons": "^5.5.0" 14 | }, 15 | "devDependencies": { 16 | "@eslint/js": "^9.25.0", 17 | "@types/react": "^19.1.2", 18 | "@types/react-dom": "^19.1.2", 19 | "@vitejs/plugin-react": "^4.4.1", 20 | "eslint": "^9.25.0", 21 | "eslint-plugin-react-hooks": "^5.2.0", 22 | "eslint-plugin-react-refresh": "^0.4.19", 23 | "globals": "^16.0.0", 24 | "nodemon": "^3.1.10", 25 | "vite": "^6.3.5" 26 | } 27 | }, 28 | "node_modules/@ampproject/remapping": { 29 | "version": "2.3.0", 30 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 31 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 32 | "dev": true, 33 | "license": "Apache-2.0", 34 | "dependencies": { 35 | "@jridgewell/gen-mapping": "^0.3.5", 36 | "@jridgewell/trace-mapping": "^0.3.24" 37 | }, 38 | "engines": { 39 | "node": ">=6.0.0" 40 | } 41 | }, 42 | "node_modules/@babel/code-frame": { 43 | "version": "7.27.1", 44 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", 45 | "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", 46 | "dev": true, 47 | "license": "MIT", 48 | "dependencies": { 49 | "@babel/helper-validator-identifier": "^7.27.1", 50 | "js-tokens": "^4.0.0", 51 | "picocolors": "^1.1.1" 52 | }, 53 | "engines": { 54 | "node": ">=6.9.0" 55 | } 56 | }, 57 | "node_modules/@babel/compat-data": { 58 | "version": "7.27.5", 59 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", 60 | "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", 61 | "dev": true, 62 | "license": "MIT", 63 | "engines": { 64 | "node": ">=6.9.0" 65 | } 66 | }, 67 | "node_modules/@babel/core": { 68 | "version": "7.27.4", 69 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", 70 | "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", 71 | "dev": true, 72 | "license": "MIT", 73 | "dependencies": { 74 | "@ampproject/remapping": "^2.2.0", 75 | "@babel/code-frame": "^7.27.1", 76 | "@babel/generator": "^7.27.3", 77 | "@babel/helper-compilation-targets": "^7.27.2", 78 | "@babel/helper-module-transforms": "^7.27.3", 79 | "@babel/helpers": "^7.27.4", 80 | "@babel/parser": "^7.27.4", 81 | "@babel/template": "^7.27.2", 82 | "@babel/traverse": "^7.27.4", 83 | "@babel/types": "^7.27.3", 84 | "convert-source-map": "^2.0.0", 85 | "debug": "^4.1.0", 86 | "gensync": "^1.0.0-beta.2", 87 | "json5": "^2.2.3", 88 | "semver": "^6.3.1" 89 | }, 90 | "engines": { 91 | "node": ">=6.9.0" 92 | }, 93 | "funding": { 94 | "type": "opencollective", 95 | "url": "https://opencollective.com/babel" 96 | } 97 | }, 98 | "node_modules/@babel/generator": { 99 | "version": "7.27.5", 100 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", 101 | "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", 102 | "dev": true, 103 | "license": "MIT", 104 | "dependencies": { 105 | "@babel/parser": "^7.27.5", 106 | "@babel/types": "^7.27.3", 107 | "@jridgewell/gen-mapping": "^0.3.5", 108 | "@jridgewell/trace-mapping": "^0.3.25", 109 | "jsesc": "^3.0.2" 110 | }, 111 | "engines": { 112 | "node": ">=6.9.0" 113 | } 114 | }, 115 | "node_modules/@babel/helper-compilation-targets": { 116 | "version": "7.27.2", 117 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", 118 | "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", 119 | "dev": true, 120 | "license": "MIT", 121 | "dependencies": { 122 | "@babel/compat-data": "^7.27.2", 123 | "@babel/helper-validator-option": "^7.27.1", 124 | "browserslist": "^4.24.0", 125 | "lru-cache": "^5.1.1", 126 | "semver": "^6.3.1" 127 | }, 128 | "engines": { 129 | "node": ">=6.9.0" 130 | } 131 | }, 132 | "node_modules/@babel/helper-module-imports": { 133 | "version": "7.27.1", 134 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", 135 | "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", 136 | "dev": true, 137 | "license": "MIT", 138 | "dependencies": { 139 | "@babel/traverse": "^7.27.1", 140 | "@babel/types": "^7.27.1" 141 | }, 142 | "engines": { 143 | "node": ">=6.9.0" 144 | } 145 | }, 146 | "node_modules/@babel/helper-module-transforms": { 147 | "version": "7.27.3", 148 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", 149 | "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", 150 | "dev": true, 151 | "license": "MIT", 152 | "dependencies": { 153 | "@babel/helper-module-imports": "^7.27.1", 154 | "@babel/helper-validator-identifier": "^7.27.1", 155 | "@babel/traverse": "^7.27.3" 156 | }, 157 | "engines": { 158 | "node": ">=6.9.0" 159 | }, 160 | "peerDependencies": { 161 | "@babel/core": "^7.0.0" 162 | } 163 | }, 164 | "node_modules/@babel/helper-plugin-utils": { 165 | "version": "7.27.1", 166 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", 167 | "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", 168 | "dev": true, 169 | "license": "MIT", 170 | "engines": { 171 | "node": ">=6.9.0" 172 | } 173 | }, 174 | "node_modules/@babel/helper-string-parser": { 175 | "version": "7.27.1", 176 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 177 | "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 178 | "dev": true, 179 | "license": "MIT", 180 | "engines": { 181 | "node": ">=6.9.0" 182 | } 183 | }, 184 | "node_modules/@babel/helper-validator-identifier": { 185 | "version": "7.27.1", 186 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", 187 | "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", 188 | "dev": true, 189 | "license": "MIT", 190 | "engines": { 191 | "node": ">=6.9.0" 192 | } 193 | }, 194 | "node_modules/@babel/helper-validator-option": { 195 | "version": "7.27.1", 196 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", 197 | "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", 198 | "dev": true, 199 | "license": "MIT", 200 | "engines": { 201 | "node": ">=6.9.0" 202 | } 203 | }, 204 | "node_modules/@babel/helpers": { 205 | "version": "7.27.6", 206 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", 207 | "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", 208 | "dev": true, 209 | "license": "MIT", 210 | "dependencies": { 211 | "@babel/template": "^7.27.2", 212 | "@babel/types": "^7.27.6" 213 | }, 214 | "engines": { 215 | "node": ">=6.9.0" 216 | } 217 | }, 218 | "node_modules/@babel/parser": { 219 | "version": "7.27.5", 220 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", 221 | "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", 222 | "dev": true, 223 | "license": "MIT", 224 | "dependencies": { 225 | "@babel/types": "^7.27.3" 226 | }, 227 | "bin": { 228 | "parser": "bin/babel-parser.js" 229 | }, 230 | "engines": { 231 | "node": ">=6.0.0" 232 | } 233 | }, 234 | "node_modules/@babel/plugin-transform-react-jsx-self": { 235 | "version": "7.27.1", 236 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", 237 | "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", 238 | "dev": true, 239 | "license": "MIT", 240 | "dependencies": { 241 | "@babel/helper-plugin-utils": "^7.27.1" 242 | }, 243 | "engines": { 244 | "node": ">=6.9.0" 245 | }, 246 | "peerDependencies": { 247 | "@babel/core": "^7.0.0-0" 248 | } 249 | }, 250 | "node_modules/@babel/plugin-transform-react-jsx-source": { 251 | "version": "7.27.1", 252 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", 253 | "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", 254 | "dev": true, 255 | "license": "MIT", 256 | "dependencies": { 257 | "@babel/helper-plugin-utils": "^7.27.1" 258 | }, 259 | "engines": { 260 | "node": ">=6.9.0" 261 | }, 262 | "peerDependencies": { 263 | "@babel/core": "^7.0.0-0" 264 | } 265 | }, 266 | "node_modules/@babel/template": { 267 | "version": "7.27.2", 268 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", 269 | "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", 270 | "dev": true, 271 | "license": "MIT", 272 | "dependencies": { 273 | "@babel/code-frame": "^7.27.1", 274 | "@babel/parser": "^7.27.2", 275 | "@babel/types": "^7.27.1" 276 | }, 277 | "engines": { 278 | "node": ">=6.9.0" 279 | } 280 | }, 281 | "node_modules/@babel/traverse": { 282 | "version": "7.27.4", 283 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", 284 | "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", 285 | "dev": true, 286 | "license": "MIT", 287 | "dependencies": { 288 | "@babel/code-frame": "^7.27.1", 289 | "@babel/generator": "^7.27.3", 290 | "@babel/parser": "^7.27.4", 291 | "@babel/template": "^7.27.2", 292 | "@babel/types": "^7.27.3", 293 | "debug": "^4.3.1", 294 | "globals": "^11.1.0" 295 | }, 296 | "engines": { 297 | "node": ">=6.9.0" 298 | } 299 | }, 300 | "node_modules/@babel/traverse/node_modules/globals": { 301 | "version": "11.12.0", 302 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 303 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 304 | "dev": true, 305 | "license": "MIT", 306 | "engines": { 307 | "node": ">=4" 308 | } 309 | }, 310 | "node_modules/@babel/types": { 311 | "version": "7.27.6", 312 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", 313 | "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", 314 | "dev": true, 315 | "license": "MIT", 316 | "dependencies": { 317 | "@babel/helper-string-parser": "^7.27.1", 318 | "@babel/helper-validator-identifier": "^7.27.1" 319 | }, 320 | "engines": { 321 | "node": ">=6.9.0" 322 | } 323 | }, 324 | "node_modules/@esbuild/aix-ppc64": { 325 | "version": "0.25.5", 326 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", 327 | "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", 328 | "cpu": [ 329 | "ppc64" 330 | ], 331 | "dev": true, 332 | "license": "MIT", 333 | "optional": true, 334 | "os": [ 335 | "aix" 336 | ], 337 | "engines": { 338 | "node": ">=18" 339 | } 340 | }, 341 | "node_modules/@esbuild/android-arm": { 342 | "version": "0.25.5", 343 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", 344 | "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", 345 | "cpu": [ 346 | "arm" 347 | ], 348 | "dev": true, 349 | "license": "MIT", 350 | "optional": true, 351 | "os": [ 352 | "android" 353 | ], 354 | "engines": { 355 | "node": ">=18" 356 | } 357 | }, 358 | "node_modules/@esbuild/android-arm64": { 359 | "version": "0.25.5", 360 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", 361 | "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", 362 | "cpu": [ 363 | "arm64" 364 | ], 365 | "dev": true, 366 | "license": "MIT", 367 | "optional": true, 368 | "os": [ 369 | "android" 370 | ], 371 | "engines": { 372 | "node": ">=18" 373 | } 374 | }, 375 | "node_modules/@esbuild/android-x64": { 376 | "version": "0.25.5", 377 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", 378 | "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", 379 | "cpu": [ 380 | "x64" 381 | ], 382 | "dev": true, 383 | "license": "MIT", 384 | "optional": true, 385 | "os": [ 386 | "android" 387 | ], 388 | "engines": { 389 | "node": ">=18" 390 | } 391 | }, 392 | "node_modules/@esbuild/darwin-arm64": { 393 | "version": "0.25.5", 394 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", 395 | "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", 396 | "cpu": [ 397 | "arm64" 398 | ], 399 | "dev": true, 400 | "license": "MIT", 401 | "optional": true, 402 | "os": [ 403 | "darwin" 404 | ], 405 | "engines": { 406 | "node": ">=18" 407 | } 408 | }, 409 | "node_modules/@esbuild/darwin-x64": { 410 | "version": "0.25.5", 411 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", 412 | "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", 413 | "cpu": [ 414 | "x64" 415 | ], 416 | "dev": true, 417 | "license": "MIT", 418 | "optional": true, 419 | "os": [ 420 | "darwin" 421 | ], 422 | "engines": { 423 | "node": ">=18" 424 | } 425 | }, 426 | "node_modules/@esbuild/freebsd-arm64": { 427 | "version": "0.25.5", 428 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", 429 | "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", 430 | "cpu": [ 431 | "arm64" 432 | ], 433 | "dev": true, 434 | "license": "MIT", 435 | "optional": true, 436 | "os": [ 437 | "freebsd" 438 | ], 439 | "engines": { 440 | "node": ">=18" 441 | } 442 | }, 443 | "node_modules/@esbuild/freebsd-x64": { 444 | "version": "0.25.5", 445 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", 446 | "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", 447 | "cpu": [ 448 | "x64" 449 | ], 450 | "dev": true, 451 | "license": "MIT", 452 | "optional": true, 453 | "os": [ 454 | "freebsd" 455 | ], 456 | "engines": { 457 | "node": ">=18" 458 | } 459 | }, 460 | "node_modules/@esbuild/linux-arm": { 461 | "version": "0.25.5", 462 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", 463 | "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", 464 | "cpu": [ 465 | "arm" 466 | ], 467 | "dev": true, 468 | "license": "MIT", 469 | "optional": true, 470 | "os": [ 471 | "linux" 472 | ], 473 | "engines": { 474 | "node": ">=18" 475 | } 476 | }, 477 | "node_modules/@esbuild/linux-arm64": { 478 | "version": "0.25.5", 479 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", 480 | "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", 481 | "cpu": [ 482 | "arm64" 483 | ], 484 | "dev": true, 485 | "license": "MIT", 486 | "optional": true, 487 | "os": [ 488 | "linux" 489 | ], 490 | "engines": { 491 | "node": ">=18" 492 | } 493 | }, 494 | "node_modules/@esbuild/linux-ia32": { 495 | "version": "0.25.5", 496 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", 497 | "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", 498 | "cpu": [ 499 | "ia32" 500 | ], 501 | "dev": true, 502 | "license": "MIT", 503 | "optional": true, 504 | "os": [ 505 | "linux" 506 | ], 507 | "engines": { 508 | "node": ">=18" 509 | } 510 | }, 511 | "node_modules/@esbuild/linux-loong64": { 512 | "version": "0.25.5", 513 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", 514 | "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", 515 | "cpu": [ 516 | "loong64" 517 | ], 518 | "dev": true, 519 | "license": "MIT", 520 | "optional": true, 521 | "os": [ 522 | "linux" 523 | ], 524 | "engines": { 525 | "node": ">=18" 526 | } 527 | }, 528 | "node_modules/@esbuild/linux-mips64el": { 529 | "version": "0.25.5", 530 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", 531 | "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", 532 | "cpu": [ 533 | "mips64el" 534 | ], 535 | "dev": true, 536 | "license": "MIT", 537 | "optional": true, 538 | "os": [ 539 | "linux" 540 | ], 541 | "engines": { 542 | "node": ">=18" 543 | } 544 | }, 545 | "node_modules/@esbuild/linux-ppc64": { 546 | "version": "0.25.5", 547 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", 548 | "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", 549 | "cpu": [ 550 | "ppc64" 551 | ], 552 | "dev": true, 553 | "license": "MIT", 554 | "optional": true, 555 | "os": [ 556 | "linux" 557 | ], 558 | "engines": { 559 | "node": ">=18" 560 | } 561 | }, 562 | "node_modules/@esbuild/linux-riscv64": { 563 | "version": "0.25.5", 564 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", 565 | "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", 566 | "cpu": [ 567 | "riscv64" 568 | ], 569 | "dev": true, 570 | "license": "MIT", 571 | "optional": true, 572 | "os": [ 573 | "linux" 574 | ], 575 | "engines": { 576 | "node": ">=18" 577 | } 578 | }, 579 | "node_modules/@esbuild/linux-s390x": { 580 | "version": "0.25.5", 581 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", 582 | "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", 583 | "cpu": [ 584 | "s390x" 585 | ], 586 | "dev": true, 587 | "license": "MIT", 588 | "optional": true, 589 | "os": [ 590 | "linux" 591 | ], 592 | "engines": { 593 | "node": ">=18" 594 | } 595 | }, 596 | "node_modules/@esbuild/linux-x64": { 597 | "version": "0.25.5", 598 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", 599 | "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", 600 | "cpu": [ 601 | "x64" 602 | ], 603 | "dev": true, 604 | "license": "MIT", 605 | "optional": true, 606 | "os": [ 607 | "linux" 608 | ], 609 | "engines": { 610 | "node": ">=18" 611 | } 612 | }, 613 | "node_modules/@esbuild/netbsd-arm64": { 614 | "version": "0.25.5", 615 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", 616 | "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", 617 | "cpu": [ 618 | "arm64" 619 | ], 620 | "dev": true, 621 | "license": "MIT", 622 | "optional": true, 623 | "os": [ 624 | "netbsd" 625 | ], 626 | "engines": { 627 | "node": ">=18" 628 | } 629 | }, 630 | "node_modules/@esbuild/netbsd-x64": { 631 | "version": "0.25.5", 632 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", 633 | "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", 634 | "cpu": [ 635 | "x64" 636 | ], 637 | "dev": true, 638 | "license": "MIT", 639 | "optional": true, 640 | "os": [ 641 | "netbsd" 642 | ], 643 | "engines": { 644 | "node": ">=18" 645 | } 646 | }, 647 | "node_modules/@esbuild/openbsd-arm64": { 648 | "version": "0.25.5", 649 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", 650 | "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", 651 | "cpu": [ 652 | "arm64" 653 | ], 654 | "dev": true, 655 | "license": "MIT", 656 | "optional": true, 657 | "os": [ 658 | "openbsd" 659 | ], 660 | "engines": { 661 | "node": ">=18" 662 | } 663 | }, 664 | "node_modules/@esbuild/openbsd-x64": { 665 | "version": "0.25.5", 666 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", 667 | "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", 668 | "cpu": [ 669 | "x64" 670 | ], 671 | "dev": true, 672 | "license": "MIT", 673 | "optional": true, 674 | "os": [ 675 | "openbsd" 676 | ], 677 | "engines": { 678 | "node": ">=18" 679 | } 680 | }, 681 | "node_modules/@esbuild/sunos-x64": { 682 | "version": "0.25.5", 683 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", 684 | "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", 685 | "cpu": [ 686 | "x64" 687 | ], 688 | "dev": true, 689 | "license": "MIT", 690 | "optional": true, 691 | "os": [ 692 | "sunos" 693 | ], 694 | "engines": { 695 | "node": ">=18" 696 | } 697 | }, 698 | "node_modules/@esbuild/win32-arm64": { 699 | "version": "0.25.5", 700 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", 701 | "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", 702 | "cpu": [ 703 | "arm64" 704 | ], 705 | "dev": true, 706 | "license": "MIT", 707 | "optional": true, 708 | "os": [ 709 | "win32" 710 | ], 711 | "engines": { 712 | "node": ">=18" 713 | } 714 | }, 715 | "node_modules/@esbuild/win32-ia32": { 716 | "version": "0.25.5", 717 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", 718 | "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", 719 | "cpu": [ 720 | "ia32" 721 | ], 722 | "dev": true, 723 | "license": "MIT", 724 | "optional": true, 725 | "os": [ 726 | "win32" 727 | ], 728 | "engines": { 729 | "node": ">=18" 730 | } 731 | }, 732 | "node_modules/@esbuild/win32-x64": { 733 | "version": "0.25.5", 734 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", 735 | "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", 736 | "cpu": [ 737 | "x64" 738 | ], 739 | "dev": true, 740 | "license": "MIT", 741 | "optional": true, 742 | "os": [ 743 | "win32" 744 | ], 745 | "engines": { 746 | "node": ">=18" 747 | } 748 | }, 749 | "node_modules/@eslint-community/eslint-utils": { 750 | "version": "4.7.0", 751 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", 752 | "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", 753 | "dev": true, 754 | "license": "MIT", 755 | "dependencies": { 756 | "eslint-visitor-keys": "^3.4.3" 757 | }, 758 | "engines": { 759 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 760 | }, 761 | "funding": { 762 | "url": "https://opencollective.com/eslint" 763 | }, 764 | "peerDependencies": { 765 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 766 | } 767 | }, 768 | "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 769 | "version": "3.4.3", 770 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 771 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 772 | "dev": true, 773 | "license": "Apache-2.0", 774 | "engines": { 775 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 776 | }, 777 | "funding": { 778 | "url": "https://opencollective.com/eslint" 779 | } 780 | }, 781 | "node_modules/@eslint-community/regexpp": { 782 | "version": "4.12.1", 783 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 784 | "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 785 | "dev": true, 786 | "license": "MIT", 787 | "engines": { 788 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 789 | } 790 | }, 791 | "node_modules/@eslint/config-array": { 792 | "version": "0.20.0", 793 | "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", 794 | "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", 795 | "dev": true, 796 | "license": "Apache-2.0", 797 | "dependencies": { 798 | "@eslint/object-schema": "^2.1.6", 799 | "debug": "^4.3.1", 800 | "minimatch": "^3.1.2" 801 | }, 802 | "engines": { 803 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 804 | } 805 | }, 806 | "node_modules/@eslint/config-helpers": { 807 | "version": "0.2.2", 808 | "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", 809 | "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", 810 | "dev": true, 811 | "license": "Apache-2.0", 812 | "engines": { 813 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 814 | } 815 | }, 816 | "node_modules/@eslint/core": { 817 | "version": "0.14.0", 818 | "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", 819 | "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", 820 | "dev": true, 821 | "license": "Apache-2.0", 822 | "dependencies": { 823 | "@types/json-schema": "^7.0.15" 824 | }, 825 | "engines": { 826 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 827 | } 828 | }, 829 | "node_modules/@eslint/eslintrc": { 830 | "version": "3.3.1", 831 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", 832 | "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", 833 | "dev": true, 834 | "license": "MIT", 835 | "dependencies": { 836 | "ajv": "^6.12.4", 837 | "debug": "^4.3.2", 838 | "espree": "^10.0.1", 839 | "globals": "^14.0.0", 840 | "ignore": "^5.2.0", 841 | "import-fresh": "^3.2.1", 842 | "js-yaml": "^4.1.0", 843 | "minimatch": "^3.1.2", 844 | "strip-json-comments": "^3.1.1" 845 | }, 846 | "engines": { 847 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 848 | }, 849 | "funding": { 850 | "url": "https://opencollective.com/eslint" 851 | } 852 | }, 853 | "node_modules/@eslint/eslintrc/node_modules/globals": { 854 | "version": "14.0.0", 855 | "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 856 | "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 857 | "dev": true, 858 | "license": "MIT", 859 | "engines": { 860 | "node": ">=18" 861 | }, 862 | "funding": { 863 | "url": "https://github.com/sponsors/sindresorhus" 864 | } 865 | }, 866 | "node_modules/@eslint/js": { 867 | "version": "9.28.0", 868 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", 869 | "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", 870 | "dev": true, 871 | "license": "MIT", 872 | "engines": { 873 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 874 | }, 875 | "funding": { 876 | "url": "https://eslint.org/donate" 877 | } 878 | }, 879 | "node_modules/@eslint/object-schema": { 880 | "version": "2.1.6", 881 | "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 882 | "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 883 | "dev": true, 884 | "license": "Apache-2.0", 885 | "engines": { 886 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 887 | } 888 | }, 889 | "node_modules/@eslint/plugin-kit": { 890 | "version": "0.3.1", 891 | "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", 892 | "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", 893 | "dev": true, 894 | "license": "Apache-2.0", 895 | "dependencies": { 896 | "@eslint/core": "^0.14.0", 897 | "levn": "^0.4.1" 898 | }, 899 | "engines": { 900 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 901 | } 902 | }, 903 | "node_modules/@humanfs/core": { 904 | "version": "0.19.1", 905 | "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 906 | "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 907 | "dev": true, 908 | "license": "Apache-2.0", 909 | "engines": { 910 | "node": ">=18.18.0" 911 | } 912 | }, 913 | "node_modules/@humanfs/node": { 914 | "version": "0.16.6", 915 | "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 916 | "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 917 | "dev": true, 918 | "license": "Apache-2.0", 919 | "dependencies": { 920 | "@humanfs/core": "^0.19.1", 921 | "@humanwhocodes/retry": "^0.3.0" 922 | }, 923 | "engines": { 924 | "node": ">=18.18.0" 925 | } 926 | }, 927 | "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 928 | "version": "0.3.1", 929 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 930 | "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 931 | "dev": true, 932 | "license": "Apache-2.0", 933 | "engines": { 934 | "node": ">=18.18" 935 | }, 936 | "funding": { 937 | "type": "github", 938 | "url": "https://github.com/sponsors/nzakas" 939 | } 940 | }, 941 | "node_modules/@humanwhocodes/module-importer": { 942 | "version": "1.0.1", 943 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 944 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 945 | "dev": true, 946 | "license": "Apache-2.0", 947 | "engines": { 948 | "node": ">=12.22" 949 | }, 950 | "funding": { 951 | "type": "github", 952 | "url": "https://github.com/sponsors/nzakas" 953 | } 954 | }, 955 | "node_modules/@humanwhocodes/retry": { 956 | "version": "0.4.3", 957 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", 958 | "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", 959 | "dev": true, 960 | "license": "Apache-2.0", 961 | "engines": { 962 | "node": ">=18.18" 963 | }, 964 | "funding": { 965 | "type": "github", 966 | "url": "https://github.com/sponsors/nzakas" 967 | } 968 | }, 969 | "node_modules/@jridgewell/gen-mapping": { 970 | "version": "0.3.8", 971 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 972 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 973 | "dev": true, 974 | "license": "MIT", 975 | "dependencies": { 976 | "@jridgewell/set-array": "^1.2.1", 977 | "@jridgewell/sourcemap-codec": "^1.4.10", 978 | "@jridgewell/trace-mapping": "^0.3.24" 979 | }, 980 | "engines": { 981 | "node": ">=6.0.0" 982 | } 983 | }, 984 | "node_modules/@jridgewell/resolve-uri": { 985 | "version": "3.1.2", 986 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 987 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 988 | "dev": true, 989 | "license": "MIT", 990 | "engines": { 991 | "node": ">=6.0.0" 992 | } 993 | }, 994 | "node_modules/@jridgewell/set-array": { 995 | "version": "1.2.1", 996 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 997 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 998 | "dev": true, 999 | "license": "MIT", 1000 | "engines": { 1001 | "node": ">=6.0.0" 1002 | } 1003 | }, 1004 | "node_modules/@jridgewell/sourcemap-codec": { 1005 | "version": "1.5.0", 1006 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 1007 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 1008 | "dev": true, 1009 | "license": "MIT" 1010 | }, 1011 | "node_modules/@jridgewell/trace-mapping": { 1012 | "version": "0.3.25", 1013 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 1014 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 1015 | "dev": true, 1016 | "license": "MIT", 1017 | "dependencies": { 1018 | "@jridgewell/resolve-uri": "^3.1.0", 1019 | "@jridgewell/sourcemap-codec": "^1.4.14" 1020 | } 1021 | }, 1022 | "node_modules/@rolldown/pluginutils": { 1023 | "version": "1.0.0-beta.9", 1024 | "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", 1025 | "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", 1026 | "dev": true, 1027 | "license": "MIT" 1028 | }, 1029 | "node_modules/@rollup/rollup-android-arm-eabi": { 1030 | "version": "4.42.0", 1031 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz", 1032 | "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==", 1033 | "cpu": [ 1034 | "arm" 1035 | ], 1036 | "dev": true, 1037 | "license": "MIT", 1038 | "optional": true, 1039 | "os": [ 1040 | "android" 1041 | ] 1042 | }, 1043 | "node_modules/@rollup/rollup-android-arm64": { 1044 | "version": "4.42.0", 1045 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz", 1046 | "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==", 1047 | "cpu": [ 1048 | "arm64" 1049 | ], 1050 | "dev": true, 1051 | "license": "MIT", 1052 | "optional": true, 1053 | "os": [ 1054 | "android" 1055 | ] 1056 | }, 1057 | "node_modules/@rollup/rollup-darwin-arm64": { 1058 | "version": "4.42.0", 1059 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz", 1060 | "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==", 1061 | "cpu": [ 1062 | "arm64" 1063 | ], 1064 | "dev": true, 1065 | "license": "MIT", 1066 | "optional": true, 1067 | "os": [ 1068 | "darwin" 1069 | ] 1070 | }, 1071 | "node_modules/@rollup/rollup-darwin-x64": { 1072 | "version": "4.42.0", 1073 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz", 1074 | "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==", 1075 | "cpu": [ 1076 | "x64" 1077 | ], 1078 | "dev": true, 1079 | "license": "MIT", 1080 | "optional": true, 1081 | "os": [ 1082 | "darwin" 1083 | ] 1084 | }, 1085 | "node_modules/@rollup/rollup-freebsd-arm64": { 1086 | "version": "4.42.0", 1087 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz", 1088 | "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==", 1089 | "cpu": [ 1090 | "arm64" 1091 | ], 1092 | "dev": true, 1093 | "license": "MIT", 1094 | "optional": true, 1095 | "os": [ 1096 | "freebsd" 1097 | ] 1098 | }, 1099 | "node_modules/@rollup/rollup-freebsd-x64": { 1100 | "version": "4.42.0", 1101 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz", 1102 | "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==", 1103 | "cpu": [ 1104 | "x64" 1105 | ], 1106 | "dev": true, 1107 | "license": "MIT", 1108 | "optional": true, 1109 | "os": [ 1110 | "freebsd" 1111 | ] 1112 | }, 1113 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1114 | "version": "4.42.0", 1115 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz", 1116 | "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==", 1117 | "cpu": [ 1118 | "arm" 1119 | ], 1120 | "dev": true, 1121 | "license": "MIT", 1122 | "optional": true, 1123 | "os": [ 1124 | "linux" 1125 | ] 1126 | }, 1127 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1128 | "version": "4.42.0", 1129 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz", 1130 | "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==", 1131 | "cpu": [ 1132 | "arm" 1133 | ], 1134 | "dev": true, 1135 | "license": "MIT", 1136 | "optional": true, 1137 | "os": [ 1138 | "linux" 1139 | ] 1140 | }, 1141 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 1142 | "version": "4.42.0", 1143 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz", 1144 | "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==", 1145 | "cpu": [ 1146 | "arm64" 1147 | ], 1148 | "dev": true, 1149 | "license": "MIT", 1150 | "optional": true, 1151 | "os": [ 1152 | "linux" 1153 | ] 1154 | }, 1155 | "node_modules/@rollup/rollup-linux-arm64-musl": { 1156 | "version": "4.42.0", 1157 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz", 1158 | "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==", 1159 | "cpu": [ 1160 | "arm64" 1161 | ], 1162 | "dev": true, 1163 | "license": "MIT", 1164 | "optional": true, 1165 | "os": [ 1166 | "linux" 1167 | ] 1168 | }, 1169 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 1170 | "version": "4.42.0", 1171 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz", 1172 | "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==", 1173 | "cpu": [ 1174 | "loong64" 1175 | ], 1176 | "dev": true, 1177 | "license": "MIT", 1178 | "optional": true, 1179 | "os": [ 1180 | "linux" 1181 | ] 1182 | }, 1183 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1184 | "version": "4.42.0", 1185 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz", 1186 | "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==", 1187 | "cpu": [ 1188 | "ppc64" 1189 | ], 1190 | "dev": true, 1191 | "license": "MIT", 1192 | "optional": true, 1193 | "os": [ 1194 | "linux" 1195 | ] 1196 | }, 1197 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1198 | "version": "4.42.0", 1199 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz", 1200 | "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==", 1201 | "cpu": [ 1202 | "riscv64" 1203 | ], 1204 | "dev": true, 1205 | "license": "MIT", 1206 | "optional": true, 1207 | "os": [ 1208 | "linux" 1209 | ] 1210 | }, 1211 | "node_modules/@rollup/rollup-linux-riscv64-musl": { 1212 | "version": "4.42.0", 1213 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz", 1214 | "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==", 1215 | "cpu": [ 1216 | "riscv64" 1217 | ], 1218 | "dev": true, 1219 | "license": "MIT", 1220 | "optional": true, 1221 | "os": [ 1222 | "linux" 1223 | ] 1224 | }, 1225 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 1226 | "version": "4.42.0", 1227 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz", 1228 | "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==", 1229 | "cpu": [ 1230 | "s390x" 1231 | ], 1232 | "dev": true, 1233 | "license": "MIT", 1234 | "optional": true, 1235 | "os": [ 1236 | "linux" 1237 | ] 1238 | }, 1239 | "node_modules/@rollup/rollup-linux-x64-gnu": { 1240 | "version": "4.42.0", 1241 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz", 1242 | "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==", 1243 | "cpu": [ 1244 | "x64" 1245 | ], 1246 | "dev": true, 1247 | "license": "MIT", 1248 | "optional": true, 1249 | "os": [ 1250 | "linux" 1251 | ] 1252 | }, 1253 | "node_modules/@rollup/rollup-linux-x64-musl": { 1254 | "version": "4.42.0", 1255 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz", 1256 | "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==", 1257 | "cpu": [ 1258 | "x64" 1259 | ], 1260 | "dev": true, 1261 | "license": "MIT", 1262 | "optional": true, 1263 | "os": [ 1264 | "linux" 1265 | ] 1266 | }, 1267 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 1268 | "version": "4.42.0", 1269 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz", 1270 | "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==", 1271 | "cpu": [ 1272 | "arm64" 1273 | ], 1274 | "dev": true, 1275 | "license": "MIT", 1276 | "optional": true, 1277 | "os": [ 1278 | "win32" 1279 | ] 1280 | }, 1281 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 1282 | "version": "4.42.0", 1283 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz", 1284 | "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==", 1285 | "cpu": [ 1286 | "ia32" 1287 | ], 1288 | "dev": true, 1289 | "license": "MIT", 1290 | "optional": true, 1291 | "os": [ 1292 | "win32" 1293 | ] 1294 | }, 1295 | "node_modules/@rollup/rollup-win32-x64-msvc": { 1296 | "version": "4.42.0", 1297 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz", 1298 | "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==", 1299 | "cpu": [ 1300 | "x64" 1301 | ], 1302 | "dev": true, 1303 | "license": "MIT", 1304 | "optional": true, 1305 | "os": [ 1306 | "win32" 1307 | ] 1308 | }, 1309 | "node_modules/@types/babel__core": { 1310 | "version": "7.20.5", 1311 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1312 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1313 | "dev": true, 1314 | "license": "MIT", 1315 | "dependencies": { 1316 | "@babel/parser": "^7.20.7", 1317 | "@babel/types": "^7.20.7", 1318 | "@types/babel__generator": "*", 1319 | "@types/babel__template": "*", 1320 | "@types/babel__traverse": "*" 1321 | } 1322 | }, 1323 | "node_modules/@types/babel__generator": { 1324 | "version": "7.27.0", 1325 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", 1326 | "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", 1327 | "dev": true, 1328 | "license": "MIT", 1329 | "dependencies": { 1330 | "@babel/types": "^7.0.0" 1331 | } 1332 | }, 1333 | "node_modules/@types/babel__template": { 1334 | "version": "7.4.4", 1335 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1336 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1337 | "dev": true, 1338 | "license": "MIT", 1339 | "dependencies": { 1340 | "@babel/parser": "^7.1.0", 1341 | "@babel/types": "^7.0.0" 1342 | } 1343 | }, 1344 | "node_modules/@types/babel__traverse": { 1345 | "version": "7.20.7", 1346 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", 1347 | "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", 1348 | "dev": true, 1349 | "license": "MIT", 1350 | "dependencies": { 1351 | "@babel/types": "^7.20.7" 1352 | } 1353 | }, 1354 | "node_modules/@types/estree": { 1355 | "version": "1.0.8", 1356 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1357 | "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1358 | "dev": true, 1359 | "license": "MIT" 1360 | }, 1361 | "node_modules/@types/json-schema": { 1362 | "version": "7.0.15", 1363 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1364 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1365 | "dev": true, 1366 | "license": "MIT" 1367 | }, 1368 | "node_modules/@types/react": { 1369 | "version": "19.1.6", 1370 | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", 1371 | "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", 1372 | "dev": true, 1373 | "license": "MIT", 1374 | "dependencies": { 1375 | "csstype": "^3.0.2" 1376 | } 1377 | }, 1378 | "node_modules/@types/react-dom": { 1379 | "version": "19.1.6", 1380 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", 1381 | "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", 1382 | "dev": true, 1383 | "license": "MIT", 1384 | "peerDependencies": { 1385 | "@types/react": "^19.0.0" 1386 | } 1387 | }, 1388 | "node_modules/@vitejs/plugin-react": { 1389 | "version": "4.5.1", 1390 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.1.tgz", 1391 | "integrity": "sha512-uPZBqSI0YD4lpkIru6M35sIfylLGTyhGHvDZbNLuMA73lMlwJKz5xweH7FajfcCAc2HnINciejA9qTz0dr0M7A==", 1392 | "dev": true, 1393 | "license": "MIT", 1394 | "dependencies": { 1395 | "@babel/core": "^7.26.10", 1396 | "@babel/plugin-transform-react-jsx-self": "^7.25.9", 1397 | "@babel/plugin-transform-react-jsx-source": "^7.25.9", 1398 | "@rolldown/pluginutils": "1.0.0-beta.9", 1399 | "@types/babel__core": "^7.20.5", 1400 | "react-refresh": "^0.17.0" 1401 | }, 1402 | "engines": { 1403 | "node": "^14.18.0 || >=16.0.0" 1404 | }, 1405 | "peerDependencies": { 1406 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" 1407 | } 1408 | }, 1409 | "node_modules/acorn": { 1410 | "version": "8.15.0", 1411 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 1412 | "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 1413 | "dev": true, 1414 | "license": "MIT", 1415 | "bin": { 1416 | "acorn": "bin/acorn" 1417 | }, 1418 | "engines": { 1419 | "node": ">=0.4.0" 1420 | } 1421 | }, 1422 | "node_modules/acorn-jsx": { 1423 | "version": "5.3.2", 1424 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1425 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1426 | "dev": true, 1427 | "license": "MIT", 1428 | "peerDependencies": { 1429 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1430 | } 1431 | }, 1432 | "node_modules/ajv": { 1433 | "version": "6.12.6", 1434 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1435 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1436 | "dev": true, 1437 | "license": "MIT", 1438 | "dependencies": { 1439 | "fast-deep-equal": "^3.1.1", 1440 | "fast-json-stable-stringify": "^2.0.0", 1441 | "json-schema-traverse": "^0.4.1", 1442 | "uri-js": "^4.2.2" 1443 | }, 1444 | "funding": { 1445 | "type": "github", 1446 | "url": "https://github.com/sponsors/epoberezkin" 1447 | } 1448 | }, 1449 | "node_modules/ansi-styles": { 1450 | "version": "4.3.0", 1451 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1452 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1453 | "dev": true, 1454 | "license": "MIT", 1455 | "dependencies": { 1456 | "color-convert": "^2.0.1" 1457 | }, 1458 | "engines": { 1459 | "node": ">=8" 1460 | }, 1461 | "funding": { 1462 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1463 | } 1464 | }, 1465 | "node_modules/anymatch": { 1466 | "version": "3.1.3", 1467 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1468 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1469 | "dev": true, 1470 | "license": "ISC", 1471 | "dependencies": { 1472 | "normalize-path": "^3.0.0", 1473 | "picomatch": "^2.0.4" 1474 | }, 1475 | "engines": { 1476 | "node": ">= 8" 1477 | } 1478 | }, 1479 | "node_modules/anymatch/node_modules/picomatch": { 1480 | "version": "2.3.1", 1481 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1482 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1483 | "dev": true, 1484 | "license": "MIT", 1485 | "engines": { 1486 | "node": ">=8.6" 1487 | }, 1488 | "funding": { 1489 | "url": "https://github.com/sponsors/jonschlinkert" 1490 | } 1491 | }, 1492 | "node_modules/argparse": { 1493 | "version": "2.0.1", 1494 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1495 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1496 | "dev": true, 1497 | "license": "Python-2.0" 1498 | }, 1499 | "node_modules/balanced-match": { 1500 | "version": "1.0.2", 1501 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1502 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1503 | "dev": true, 1504 | "license": "MIT" 1505 | }, 1506 | "node_modules/binary-extensions": { 1507 | "version": "2.3.0", 1508 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1509 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1510 | "dev": true, 1511 | "license": "MIT", 1512 | "engines": { 1513 | "node": ">=8" 1514 | }, 1515 | "funding": { 1516 | "url": "https://github.com/sponsors/sindresorhus" 1517 | } 1518 | }, 1519 | "node_modules/brace-expansion": { 1520 | "version": "1.1.11", 1521 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1522 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1523 | "dev": true, 1524 | "license": "MIT", 1525 | "dependencies": { 1526 | "balanced-match": "^1.0.0", 1527 | "concat-map": "0.0.1" 1528 | } 1529 | }, 1530 | "node_modules/braces": { 1531 | "version": "3.0.3", 1532 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1533 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1534 | "dev": true, 1535 | "license": "MIT", 1536 | "dependencies": { 1537 | "fill-range": "^7.1.1" 1538 | }, 1539 | "engines": { 1540 | "node": ">=8" 1541 | } 1542 | }, 1543 | "node_modules/browserslist": { 1544 | "version": "4.25.0", 1545 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", 1546 | "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", 1547 | "dev": true, 1548 | "funding": [ 1549 | { 1550 | "type": "opencollective", 1551 | "url": "https://opencollective.com/browserslist" 1552 | }, 1553 | { 1554 | "type": "tidelift", 1555 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1556 | }, 1557 | { 1558 | "type": "github", 1559 | "url": "https://github.com/sponsors/ai" 1560 | } 1561 | ], 1562 | "license": "MIT", 1563 | "dependencies": { 1564 | "caniuse-lite": "^1.0.30001718", 1565 | "electron-to-chromium": "^1.5.160", 1566 | "node-releases": "^2.0.19", 1567 | "update-browserslist-db": "^1.1.3" 1568 | }, 1569 | "bin": { 1570 | "browserslist": "cli.js" 1571 | }, 1572 | "engines": { 1573 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1574 | } 1575 | }, 1576 | "node_modules/callsites": { 1577 | "version": "3.1.0", 1578 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1579 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1580 | "dev": true, 1581 | "license": "MIT", 1582 | "engines": { 1583 | "node": ">=6" 1584 | } 1585 | }, 1586 | "node_modules/caniuse-lite": { 1587 | "version": "1.0.30001721", 1588 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz", 1589 | "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==", 1590 | "dev": true, 1591 | "funding": [ 1592 | { 1593 | "type": "opencollective", 1594 | "url": "https://opencollective.com/browserslist" 1595 | }, 1596 | { 1597 | "type": "tidelift", 1598 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1599 | }, 1600 | { 1601 | "type": "github", 1602 | "url": "https://github.com/sponsors/ai" 1603 | } 1604 | ], 1605 | "license": "CC-BY-4.0" 1606 | }, 1607 | "node_modules/chalk": { 1608 | "version": "4.1.2", 1609 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1610 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1611 | "dev": true, 1612 | "license": "MIT", 1613 | "dependencies": { 1614 | "ansi-styles": "^4.1.0", 1615 | "supports-color": "^7.1.0" 1616 | }, 1617 | "engines": { 1618 | "node": ">=10" 1619 | }, 1620 | "funding": { 1621 | "url": "https://github.com/chalk/chalk?sponsor=1" 1622 | } 1623 | }, 1624 | "node_modules/chokidar": { 1625 | "version": "3.6.0", 1626 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1627 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1628 | "dev": true, 1629 | "license": "MIT", 1630 | "dependencies": { 1631 | "anymatch": "~3.1.2", 1632 | "braces": "~3.0.2", 1633 | "glob-parent": "~5.1.2", 1634 | "is-binary-path": "~2.1.0", 1635 | "is-glob": "~4.0.1", 1636 | "normalize-path": "~3.0.0", 1637 | "readdirp": "~3.6.0" 1638 | }, 1639 | "engines": { 1640 | "node": ">= 8.10.0" 1641 | }, 1642 | "funding": { 1643 | "url": "https://paulmillr.com/funding/" 1644 | }, 1645 | "optionalDependencies": { 1646 | "fsevents": "~2.3.2" 1647 | } 1648 | }, 1649 | "node_modules/chokidar/node_modules/glob-parent": { 1650 | "version": "5.1.2", 1651 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1652 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1653 | "dev": true, 1654 | "license": "ISC", 1655 | "dependencies": { 1656 | "is-glob": "^4.0.1" 1657 | }, 1658 | "engines": { 1659 | "node": ">= 6" 1660 | } 1661 | }, 1662 | "node_modules/color-convert": { 1663 | "version": "2.0.1", 1664 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1665 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1666 | "dev": true, 1667 | "license": "MIT", 1668 | "dependencies": { 1669 | "color-name": "~1.1.4" 1670 | }, 1671 | "engines": { 1672 | "node": ">=7.0.0" 1673 | } 1674 | }, 1675 | "node_modules/color-name": { 1676 | "version": "1.1.4", 1677 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1678 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1679 | "dev": true, 1680 | "license": "MIT" 1681 | }, 1682 | "node_modules/concat-map": { 1683 | "version": "0.0.1", 1684 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1685 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1686 | "dev": true, 1687 | "license": "MIT" 1688 | }, 1689 | "node_modules/convert-source-map": { 1690 | "version": "2.0.0", 1691 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1692 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1693 | "dev": true, 1694 | "license": "MIT" 1695 | }, 1696 | "node_modules/cross-spawn": { 1697 | "version": "7.0.6", 1698 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1699 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1700 | "dev": true, 1701 | "license": "MIT", 1702 | "dependencies": { 1703 | "path-key": "^3.1.0", 1704 | "shebang-command": "^2.0.0", 1705 | "which": "^2.0.1" 1706 | }, 1707 | "engines": { 1708 | "node": ">= 8" 1709 | } 1710 | }, 1711 | "node_modules/csstype": { 1712 | "version": "3.1.3", 1713 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1714 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1715 | "dev": true, 1716 | "license": "MIT" 1717 | }, 1718 | "node_modules/debug": { 1719 | "version": "4.4.1", 1720 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", 1721 | "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 1722 | "dev": true, 1723 | "license": "MIT", 1724 | "dependencies": { 1725 | "ms": "^2.1.3" 1726 | }, 1727 | "engines": { 1728 | "node": ">=6.0" 1729 | }, 1730 | "peerDependenciesMeta": { 1731 | "supports-color": { 1732 | "optional": true 1733 | } 1734 | } 1735 | }, 1736 | "node_modules/deep-is": { 1737 | "version": "0.1.4", 1738 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1739 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1740 | "dev": true, 1741 | "license": "MIT" 1742 | }, 1743 | "node_modules/electron-to-chromium": { 1744 | "version": "1.5.165", 1745 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz", 1746 | "integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==", 1747 | "dev": true, 1748 | "license": "ISC" 1749 | }, 1750 | "node_modules/esbuild": { 1751 | "version": "0.25.5", 1752 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", 1753 | "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", 1754 | "dev": true, 1755 | "hasInstallScript": true, 1756 | "license": "MIT", 1757 | "bin": { 1758 | "esbuild": "bin/esbuild" 1759 | }, 1760 | "engines": { 1761 | "node": ">=18" 1762 | }, 1763 | "optionalDependencies": { 1764 | "@esbuild/aix-ppc64": "0.25.5", 1765 | "@esbuild/android-arm": "0.25.5", 1766 | "@esbuild/android-arm64": "0.25.5", 1767 | "@esbuild/android-x64": "0.25.5", 1768 | "@esbuild/darwin-arm64": "0.25.5", 1769 | "@esbuild/darwin-x64": "0.25.5", 1770 | "@esbuild/freebsd-arm64": "0.25.5", 1771 | "@esbuild/freebsd-x64": "0.25.5", 1772 | "@esbuild/linux-arm": "0.25.5", 1773 | "@esbuild/linux-arm64": "0.25.5", 1774 | "@esbuild/linux-ia32": "0.25.5", 1775 | "@esbuild/linux-loong64": "0.25.5", 1776 | "@esbuild/linux-mips64el": "0.25.5", 1777 | "@esbuild/linux-ppc64": "0.25.5", 1778 | "@esbuild/linux-riscv64": "0.25.5", 1779 | "@esbuild/linux-s390x": "0.25.5", 1780 | "@esbuild/linux-x64": "0.25.5", 1781 | "@esbuild/netbsd-arm64": "0.25.5", 1782 | "@esbuild/netbsd-x64": "0.25.5", 1783 | "@esbuild/openbsd-arm64": "0.25.5", 1784 | "@esbuild/openbsd-x64": "0.25.5", 1785 | "@esbuild/sunos-x64": "0.25.5", 1786 | "@esbuild/win32-arm64": "0.25.5", 1787 | "@esbuild/win32-ia32": "0.25.5", 1788 | "@esbuild/win32-x64": "0.25.5" 1789 | } 1790 | }, 1791 | "node_modules/escalade": { 1792 | "version": "3.2.0", 1793 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1794 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1795 | "dev": true, 1796 | "license": "MIT", 1797 | "engines": { 1798 | "node": ">=6" 1799 | } 1800 | }, 1801 | "node_modules/escape-string-regexp": { 1802 | "version": "4.0.0", 1803 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1804 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1805 | "dev": true, 1806 | "license": "MIT", 1807 | "engines": { 1808 | "node": ">=10" 1809 | }, 1810 | "funding": { 1811 | "url": "https://github.com/sponsors/sindresorhus" 1812 | } 1813 | }, 1814 | "node_modules/eslint": { 1815 | "version": "9.28.0", 1816 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", 1817 | "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", 1818 | "dev": true, 1819 | "license": "MIT", 1820 | "dependencies": { 1821 | "@eslint-community/eslint-utils": "^4.2.0", 1822 | "@eslint-community/regexpp": "^4.12.1", 1823 | "@eslint/config-array": "^0.20.0", 1824 | "@eslint/config-helpers": "^0.2.1", 1825 | "@eslint/core": "^0.14.0", 1826 | "@eslint/eslintrc": "^3.3.1", 1827 | "@eslint/js": "9.28.0", 1828 | "@eslint/plugin-kit": "^0.3.1", 1829 | "@humanfs/node": "^0.16.6", 1830 | "@humanwhocodes/module-importer": "^1.0.1", 1831 | "@humanwhocodes/retry": "^0.4.2", 1832 | "@types/estree": "^1.0.6", 1833 | "@types/json-schema": "^7.0.15", 1834 | "ajv": "^6.12.4", 1835 | "chalk": "^4.0.0", 1836 | "cross-spawn": "^7.0.6", 1837 | "debug": "^4.3.2", 1838 | "escape-string-regexp": "^4.0.0", 1839 | "eslint-scope": "^8.3.0", 1840 | "eslint-visitor-keys": "^4.2.0", 1841 | "espree": "^10.3.0", 1842 | "esquery": "^1.5.0", 1843 | "esutils": "^2.0.2", 1844 | "fast-deep-equal": "^3.1.3", 1845 | "file-entry-cache": "^8.0.0", 1846 | "find-up": "^5.0.0", 1847 | "glob-parent": "^6.0.2", 1848 | "ignore": "^5.2.0", 1849 | "imurmurhash": "^0.1.4", 1850 | "is-glob": "^4.0.0", 1851 | "json-stable-stringify-without-jsonify": "^1.0.1", 1852 | "lodash.merge": "^4.6.2", 1853 | "minimatch": "^3.1.2", 1854 | "natural-compare": "^1.4.0", 1855 | "optionator": "^0.9.3" 1856 | }, 1857 | "bin": { 1858 | "eslint": "bin/eslint.js" 1859 | }, 1860 | "engines": { 1861 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1862 | }, 1863 | "funding": { 1864 | "url": "https://eslint.org/donate" 1865 | }, 1866 | "peerDependencies": { 1867 | "jiti": "*" 1868 | }, 1869 | "peerDependenciesMeta": { 1870 | "jiti": { 1871 | "optional": true 1872 | } 1873 | } 1874 | }, 1875 | "node_modules/eslint-plugin-react-hooks": { 1876 | "version": "5.2.0", 1877 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", 1878 | "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", 1879 | "dev": true, 1880 | "license": "MIT", 1881 | "engines": { 1882 | "node": ">=10" 1883 | }, 1884 | "peerDependencies": { 1885 | "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" 1886 | } 1887 | }, 1888 | "node_modules/eslint-plugin-react-refresh": { 1889 | "version": "0.4.20", 1890 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", 1891 | "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", 1892 | "dev": true, 1893 | "license": "MIT", 1894 | "peerDependencies": { 1895 | "eslint": ">=8.40" 1896 | } 1897 | }, 1898 | "node_modules/eslint-scope": { 1899 | "version": "8.4.0", 1900 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", 1901 | "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", 1902 | "dev": true, 1903 | "license": "BSD-2-Clause", 1904 | "dependencies": { 1905 | "esrecurse": "^4.3.0", 1906 | "estraverse": "^5.2.0" 1907 | }, 1908 | "engines": { 1909 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1910 | }, 1911 | "funding": { 1912 | "url": "https://opencollective.com/eslint" 1913 | } 1914 | }, 1915 | "node_modules/eslint-visitor-keys": { 1916 | "version": "4.2.1", 1917 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 1918 | "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 1919 | "dev": true, 1920 | "license": "Apache-2.0", 1921 | "engines": { 1922 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1923 | }, 1924 | "funding": { 1925 | "url": "https://opencollective.com/eslint" 1926 | } 1927 | }, 1928 | "node_modules/espree": { 1929 | "version": "10.4.0", 1930 | "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", 1931 | "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", 1932 | "dev": true, 1933 | "license": "BSD-2-Clause", 1934 | "dependencies": { 1935 | "acorn": "^8.15.0", 1936 | "acorn-jsx": "^5.3.2", 1937 | "eslint-visitor-keys": "^4.2.1" 1938 | }, 1939 | "engines": { 1940 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1941 | }, 1942 | "funding": { 1943 | "url": "https://opencollective.com/eslint" 1944 | } 1945 | }, 1946 | "node_modules/esquery": { 1947 | "version": "1.6.0", 1948 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1949 | "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1950 | "dev": true, 1951 | "license": "BSD-3-Clause", 1952 | "dependencies": { 1953 | "estraverse": "^5.1.0" 1954 | }, 1955 | "engines": { 1956 | "node": ">=0.10" 1957 | } 1958 | }, 1959 | "node_modules/esrecurse": { 1960 | "version": "4.3.0", 1961 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1962 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1963 | "dev": true, 1964 | "license": "BSD-2-Clause", 1965 | "dependencies": { 1966 | "estraverse": "^5.2.0" 1967 | }, 1968 | "engines": { 1969 | "node": ">=4.0" 1970 | } 1971 | }, 1972 | "node_modules/estraverse": { 1973 | "version": "5.3.0", 1974 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1975 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1976 | "dev": true, 1977 | "license": "BSD-2-Clause", 1978 | "engines": { 1979 | "node": ">=4.0" 1980 | } 1981 | }, 1982 | "node_modules/esutils": { 1983 | "version": "2.0.3", 1984 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1985 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1986 | "dev": true, 1987 | "license": "BSD-2-Clause", 1988 | "engines": { 1989 | "node": ">=0.10.0" 1990 | } 1991 | }, 1992 | "node_modules/fast-deep-equal": { 1993 | "version": "3.1.3", 1994 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1995 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1996 | "dev": true, 1997 | "license": "MIT" 1998 | }, 1999 | "node_modules/fast-json-stable-stringify": { 2000 | "version": "2.1.0", 2001 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2002 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2003 | "dev": true, 2004 | "license": "MIT" 2005 | }, 2006 | "node_modules/fast-levenshtein": { 2007 | "version": "2.0.6", 2008 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2009 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2010 | "dev": true, 2011 | "license": "MIT" 2012 | }, 2013 | "node_modules/fdir": { 2014 | "version": "6.4.5", 2015 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", 2016 | "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", 2017 | "dev": true, 2018 | "license": "MIT", 2019 | "peerDependencies": { 2020 | "picomatch": "^3 || ^4" 2021 | }, 2022 | "peerDependenciesMeta": { 2023 | "picomatch": { 2024 | "optional": true 2025 | } 2026 | } 2027 | }, 2028 | "node_modules/file-entry-cache": { 2029 | "version": "8.0.0", 2030 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 2031 | "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 2032 | "dev": true, 2033 | "license": "MIT", 2034 | "dependencies": { 2035 | "flat-cache": "^4.0.0" 2036 | }, 2037 | "engines": { 2038 | "node": ">=16.0.0" 2039 | } 2040 | }, 2041 | "node_modules/fill-range": { 2042 | "version": "7.1.1", 2043 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2044 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2045 | "dev": true, 2046 | "license": "MIT", 2047 | "dependencies": { 2048 | "to-regex-range": "^5.0.1" 2049 | }, 2050 | "engines": { 2051 | "node": ">=8" 2052 | } 2053 | }, 2054 | "node_modules/find-up": { 2055 | "version": "5.0.0", 2056 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2057 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2058 | "dev": true, 2059 | "license": "MIT", 2060 | "dependencies": { 2061 | "locate-path": "^6.0.0", 2062 | "path-exists": "^4.0.0" 2063 | }, 2064 | "engines": { 2065 | "node": ">=10" 2066 | }, 2067 | "funding": { 2068 | "url": "https://github.com/sponsors/sindresorhus" 2069 | } 2070 | }, 2071 | "node_modules/flat-cache": { 2072 | "version": "4.0.1", 2073 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2074 | "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2075 | "dev": true, 2076 | "license": "MIT", 2077 | "dependencies": { 2078 | "flatted": "^3.2.9", 2079 | "keyv": "^4.5.4" 2080 | }, 2081 | "engines": { 2082 | "node": ">=16" 2083 | } 2084 | }, 2085 | "node_modules/flatted": { 2086 | "version": "3.3.3", 2087 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 2088 | "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 2089 | "dev": true, 2090 | "license": "ISC" 2091 | }, 2092 | "node_modules/fsevents": { 2093 | "version": "2.3.3", 2094 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2095 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2096 | "dev": true, 2097 | "hasInstallScript": true, 2098 | "license": "MIT", 2099 | "optional": true, 2100 | "os": [ 2101 | "darwin" 2102 | ], 2103 | "engines": { 2104 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2105 | } 2106 | }, 2107 | "node_modules/gensync": { 2108 | "version": "1.0.0-beta.2", 2109 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2110 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2111 | "dev": true, 2112 | "license": "MIT", 2113 | "engines": { 2114 | "node": ">=6.9.0" 2115 | } 2116 | }, 2117 | "node_modules/glob-parent": { 2118 | "version": "6.0.2", 2119 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2120 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2121 | "dev": true, 2122 | "license": "ISC", 2123 | "dependencies": { 2124 | "is-glob": "^4.0.3" 2125 | }, 2126 | "engines": { 2127 | "node": ">=10.13.0" 2128 | } 2129 | }, 2130 | "node_modules/globals": { 2131 | "version": "16.2.0", 2132 | "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", 2133 | "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", 2134 | "dev": true, 2135 | "license": "MIT", 2136 | "engines": { 2137 | "node": ">=18" 2138 | }, 2139 | "funding": { 2140 | "url": "https://github.com/sponsors/sindresorhus" 2141 | } 2142 | }, 2143 | "node_modules/has-flag": { 2144 | "version": "4.0.0", 2145 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2146 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2147 | "dev": true, 2148 | "license": "MIT", 2149 | "engines": { 2150 | "node": ">=8" 2151 | } 2152 | }, 2153 | "node_modules/ignore": { 2154 | "version": "5.3.2", 2155 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2156 | "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2157 | "dev": true, 2158 | "license": "MIT", 2159 | "engines": { 2160 | "node": ">= 4" 2161 | } 2162 | }, 2163 | "node_modules/ignore-by-default": { 2164 | "version": "1.0.1", 2165 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 2166 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", 2167 | "dev": true, 2168 | "license": "ISC" 2169 | }, 2170 | "node_modules/import-fresh": { 2171 | "version": "3.3.1", 2172 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 2173 | "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 2174 | "dev": true, 2175 | "license": "MIT", 2176 | "dependencies": { 2177 | "parent-module": "^1.0.0", 2178 | "resolve-from": "^4.0.0" 2179 | }, 2180 | "engines": { 2181 | "node": ">=6" 2182 | }, 2183 | "funding": { 2184 | "url": "https://github.com/sponsors/sindresorhus" 2185 | } 2186 | }, 2187 | "node_modules/imurmurhash": { 2188 | "version": "0.1.4", 2189 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2190 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2191 | "dev": true, 2192 | "license": "MIT", 2193 | "engines": { 2194 | "node": ">=0.8.19" 2195 | } 2196 | }, 2197 | "node_modules/is-binary-path": { 2198 | "version": "2.1.0", 2199 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2200 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2201 | "dev": true, 2202 | "license": "MIT", 2203 | "dependencies": { 2204 | "binary-extensions": "^2.0.0" 2205 | }, 2206 | "engines": { 2207 | "node": ">=8" 2208 | } 2209 | }, 2210 | "node_modules/is-extglob": { 2211 | "version": "2.1.1", 2212 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2213 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2214 | "dev": true, 2215 | "license": "MIT", 2216 | "engines": { 2217 | "node": ">=0.10.0" 2218 | } 2219 | }, 2220 | "node_modules/is-glob": { 2221 | "version": "4.0.3", 2222 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2223 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2224 | "dev": true, 2225 | "license": "MIT", 2226 | "dependencies": { 2227 | "is-extglob": "^2.1.1" 2228 | }, 2229 | "engines": { 2230 | "node": ">=0.10.0" 2231 | } 2232 | }, 2233 | "node_modules/is-number": { 2234 | "version": "7.0.0", 2235 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2236 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2237 | "dev": true, 2238 | "license": "MIT", 2239 | "engines": { 2240 | "node": ">=0.12.0" 2241 | } 2242 | }, 2243 | "node_modules/isexe": { 2244 | "version": "2.0.0", 2245 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2246 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2247 | "dev": true, 2248 | "license": "ISC" 2249 | }, 2250 | "node_modules/js-tokens": { 2251 | "version": "4.0.0", 2252 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2253 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2254 | "dev": true, 2255 | "license": "MIT" 2256 | }, 2257 | "node_modules/js-yaml": { 2258 | "version": "4.1.0", 2259 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2260 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2261 | "dev": true, 2262 | "license": "MIT", 2263 | "dependencies": { 2264 | "argparse": "^2.0.1" 2265 | }, 2266 | "bin": { 2267 | "js-yaml": "bin/js-yaml.js" 2268 | } 2269 | }, 2270 | "node_modules/jsesc": { 2271 | "version": "3.1.0", 2272 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 2273 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 2274 | "dev": true, 2275 | "license": "MIT", 2276 | "bin": { 2277 | "jsesc": "bin/jsesc" 2278 | }, 2279 | "engines": { 2280 | "node": ">=6" 2281 | } 2282 | }, 2283 | "node_modules/json-buffer": { 2284 | "version": "3.0.1", 2285 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2286 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2287 | "dev": true, 2288 | "license": "MIT" 2289 | }, 2290 | "node_modules/json-schema-traverse": { 2291 | "version": "0.4.1", 2292 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2293 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2294 | "dev": true, 2295 | "license": "MIT" 2296 | }, 2297 | "node_modules/json-stable-stringify-without-jsonify": { 2298 | "version": "1.0.1", 2299 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2300 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2301 | "dev": true, 2302 | "license": "MIT" 2303 | }, 2304 | "node_modules/json5": { 2305 | "version": "2.2.3", 2306 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 2307 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 2308 | "dev": true, 2309 | "license": "MIT", 2310 | "bin": { 2311 | "json5": "lib/cli.js" 2312 | }, 2313 | "engines": { 2314 | "node": ">=6" 2315 | } 2316 | }, 2317 | "node_modules/keyv": { 2318 | "version": "4.5.4", 2319 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2320 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2321 | "dev": true, 2322 | "license": "MIT", 2323 | "dependencies": { 2324 | "json-buffer": "3.0.1" 2325 | } 2326 | }, 2327 | "node_modules/levn": { 2328 | "version": "0.4.1", 2329 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2330 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2331 | "dev": true, 2332 | "license": "MIT", 2333 | "dependencies": { 2334 | "prelude-ls": "^1.2.1", 2335 | "type-check": "~0.4.0" 2336 | }, 2337 | "engines": { 2338 | "node": ">= 0.8.0" 2339 | } 2340 | }, 2341 | "node_modules/locate-path": { 2342 | "version": "6.0.0", 2343 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2344 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2345 | "dev": true, 2346 | "license": "MIT", 2347 | "dependencies": { 2348 | "p-locate": "^5.0.0" 2349 | }, 2350 | "engines": { 2351 | "node": ">=10" 2352 | }, 2353 | "funding": { 2354 | "url": "https://github.com/sponsors/sindresorhus" 2355 | } 2356 | }, 2357 | "node_modules/lodash.merge": { 2358 | "version": "4.6.2", 2359 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2360 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2361 | "dev": true, 2362 | "license": "MIT" 2363 | }, 2364 | "node_modules/lru-cache": { 2365 | "version": "5.1.1", 2366 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 2367 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2368 | "dev": true, 2369 | "license": "ISC", 2370 | "dependencies": { 2371 | "yallist": "^3.0.2" 2372 | } 2373 | }, 2374 | "node_modules/minimatch": { 2375 | "version": "3.1.2", 2376 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2377 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2378 | "dev": true, 2379 | "license": "ISC", 2380 | "dependencies": { 2381 | "brace-expansion": "^1.1.7" 2382 | }, 2383 | "engines": { 2384 | "node": "*" 2385 | } 2386 | }, 2387 | "node_modules/ms": { 2388 | "version": "2.1.3", 2389 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2390 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2391 | "dev": true, 2392 | "license": "MIT" 2393 | }, 2394 | "node_modules/nanoid": { 2395 | "version": "3.3.11", 2396 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 2397 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2398 | "dev": true, 2399 | "funding": [ 2400 | { 2401 | "type": "github", 2402 | "url": "https://github.com/sponsors/ai" 2403 | } 2404 | ], 2405 | "license": "MIT", 2406 | "bin": { 2407 | "nanoid": "bin/nanoid.cjs" 2408 | }, 2409 | "engines": { 2410 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2411 | } 2412 | }, 2413 | "node_modules/natural-compare": { 2414 | "version": "1.4.0", 2415 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2416 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2417 | "dev": true, 2418 | "license": "MIT" 2419 | }, 2420 | "node_modules/node-releases": { 2421 | "version": "2.0.19", 2422 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 2423 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 2424 | "dev": true, 2425 | "license": "MIT" 2426 | }, 2427 | "node_modules/nodemon": { 2428 | "version": "3.1.10", 2429 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", 2430 | "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", 2431 | "dev": true, 2432 | "license": "MIT", 2433 | "dependencies": { 2434 | "chokidar": "^3.5.2", 2435 | "debug": "^4", 2436 | "ignore-by-default": "^1.0.1", 2437 | "minimatch": "^3.1.2", 2438 | "pstree.remy": "^1.1.8", 2439 | "semver": "^7.5.3", 2440 | "simple-update-notifier": "^2.0.0", 2441 | "supports-color": "^5.5.0", 2442 | "touch": "^3.1.0", 2443 | "undefsafe": "^2.0.5" 2444 | }, 2445 | "bin": { 2446 | "nodemon": "bin/nodemon.js" 2447 | }, 2448 | "engines": { 2449 | "node": ">=10" 2450 | }, 2451 | "funding": { 2452 | "type": "opencollective", 2453 | "url": "https://opencollective.com/nodemon" 2454 | } 2455 | }, 2456 | "node_modules/nodemon/node_modules/has-flag": { 2457 | "version": "3.0.0", 2458 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2459 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2460 | "dev": true, 2461 | "license": "MIT", 2462 | "engines": { 2463 | "node": ">=4" 2464 | } 2465 | }, 2466 | "node_modules/nodemon/node_modules/semver": { 2467 | "version": "7.7.2", 2468 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", 2469 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", 2470 | "dev": true, 2471 | "license": "ISC", 2472 | "bin": { 2473 | "semver": "bin/semver.js" 2474 | }, 2475 | "engines": { 2476 | "node": ">=10" 2477 | } 2478 | }, 2479 | "node_modules/nodemon/node_modules/supports-color": { 2480 | "version": "5.5.0", 2481 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2482 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2483 | "dev": true, 2484 | "license": "MIT", 2485 | "dependencies": { 2486 | "has-flag": "^3.0.0" 2487 | }, 2488 | "engines": { 2489 | "node": ">=4" 2490 | } 2491 | }, 2492 | "node_modules/normalize-path": { 2493 | "version": "3.0.0", 2494 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2495 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2496 | "dev": true, 2497 | "license": "MIT", 2498 | "engines": { 2499 | "node": ">=0.10.0" 2500 | } 2501 | }, 2502 | "node_modules/optionator": { 2503 | "version": "0.9.4", 2504 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 2505 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2506 | "dev": true, 2507 | "license": "MIT", 2508 | "dependencies": { 2509 | "deep-is": "^0.1.3", 2510 | "fast-levenshtein": "^2.0.6", 2511 | "levn": "^0.4.1", 2512 | "prelude-ls": "^1.2.1", 2513 | "type-check": "^0.4.0", 2514 | "word-wrap": "^1.2.5" 2515 | }, 2516 | "engines": { 2517 | "node": ">= 0.8.0" 2518 | } 2519 | }, 2520 | "node_modules/p-limit": { 2521 | "version": "3.1.0", 2522 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2523 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2524 | "dev": true, 2525 | "license": "MIT", 2526 | "dependencies": { 2527 | "yocto-queue": "^0.1.0" 2528 | }, 2529 | "engines": { 2530 | "node": ">=10" 2531 | }, 2532 | "funding": { 2533 | "url": "https://github.com/sponsors/sindresorhus" 2534 | } 2535 | }, 2536 | "node_modules/p-locate": { 2537 | "version": "5.0.0", 2538 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2539 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2540 | "dev": true, 2541 | "license": "MIT", 2542 | "dependencies": { 2543 | "p-limit": "^3.0.2" 2544 | }, 2545 | "engines": { 2546 | "node": ">=10" 2547 | }, 2548 | "funding": { 2549 | "url": "https://github.com/sponsors/sindresorhus" 2550 | } 2551 | }, 2552 | "node_modules/parent-module": { 2553 | "version": "1.0.1", 2554 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2555 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2556 | "dev": true, 2557 | "license": "MIT", 2558 | "dependencies": { 2559 | "callsites": "^3.0.0" 2560 | }, 2561 | "engines": { 2562 | "node": ">=6" 2563 | } 2564 | }, 2565 | "node_modules/path-exists": { 2566 | "version": "4.0.0", 2567 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2568 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2569 | "dev": true, 2570 | "license": "MIT", 2571 | "engines": { 2572 | "node": ">=8" 2573 | } 2574 | }, 2575 | "node_modules/path-key": { 2576 | "version": "3.1.1", 2577 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2578 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2579 | "dev": true, 2580 | "license": "MIT", 2581 | "engines": { 2582 | "node": ">=8" 2583 | } 2584 | }, 2585 | "node_modules/picocolors": { 2586 | "version": "1.1.1", 2587 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2588 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2589 | "dev": true, 2590 | "license": "ISC" 2591 | }, 2592 | "node_modules/picomatch": { 2593 | "version": "4.0.2", 2594 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 2595 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 2596 | "dev": true, 2597 | "license": "MIT", 2598 | "engines": { 2599 | "node": ">=12" 2600 | }, 2601 | "funding": { 2602 | "url": "https://github.com/sponsors/jonschlinkert" 2603 | } 2604 | }, 2605 | "node_modules/postcss": { 2606 | "version": "8.5.4", 2607 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", 2608 | "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", 2609 | "dev": true, 2610 | "funding": [ 2611 | { 2612 | "type": "opencollective", 2613 | "url": "https://opencollective.com/postcss/" 2614 | }, 2615 | { 2616 | "type": "tidelift", 2617 | "url": "https://tidelift.com/funding/github/npm/postcss" 2618 | }, 2619 | { 2620 | "type": "github", 2621 | "url": "https://github.com/sponsors/ai" 2622 | } 2623 | ], 2624 | "license": "MIT", 2625 | "dependencies": { 2626 | "nanoid": "^3.3.11", 2627 | "picocolors": "^1.1.1", 2628 | "source-map-js": "^1.2.1" 2629 | }, 2630 | "engines": { 2631 | "node": "^10 || ^12 || >=14" 2632 | } 2633 | }, 2634 | "node_modules/prelude-ls": { 2635 | "version": "1.2.1", 2636 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2637 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2638 | "dev": true, 2639 | "license": "MIT", 2640 | "engines": { 2641 | "node": ">= 0.8.0" 2642 | } 2643 | }, 2644 | "node_modules/pstree.remy": { 2645 | "version": "1.1.8", 2646 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 2647 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 2648 | "dev": true, 2649 | "license": "MIT" 2650 | }, 2651 | "node_modules/punycode": { 2652 | "version": "2.3.1", 2653 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2654 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2655 | "dev": true, 2656 | "license": "MIT", 2657 | "engines": { 2658 | "node": ">=6" 2659 | } 2660 | }, 2661 | "node_modules/react": { 2662 | "version": "19.1.0", 2663 | "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", 2664 | "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", 2665 | "license": "MIT", 2666 | "engines": { 2667 | "node": ">=0.10.0" 2668 | } 2669 | }, 2670 | "node_modules/react-dom": { 2671 | "version": "19.1.0", 2672 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", 2673 | "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", 2674 | "license": "MIT", 2675 | "dependencies": { 2676 | "scheduler": "^0.26.0" 2677 | }, 2678 | "peerDependencies": { 2679 | "react": "^19.1.0" 2680 | } 2681 | }, 2682 | "node_modules/react-icons": { 2683 | "version": "5.5.0", 2684 | "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", 2685 | "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", 2686 | "license": "MIT", 2687 | "peerDependencies": { 2688 | "react": "*" 2689 | } 2690 | }, 2691 | "node_modules/react-refresh": { 2692 | "version": "0.17.0", 2693 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", 2694 | "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", 2695 | "dev": true, 2696 | "license": "MIT", 2697 | "engines": { 2698 | "node": ">=0.10.0" 2699 | } 2700 | }, 2701 | "node_modules/readdirp": { 2702 | "version": "3.6.0", 2703 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2704 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2705 | "dev": true, 2706 | "license": "MIT", 2707 | "dependencies": { 2708 | "picomatch": "^2.2.1" 2709 | }, 2710 | "engines": { 2711 | "node": ">=8.10.0" 2712 | } 2713 | }, 2714 | "node_modules/readdirp/node_modules/picomatch": { 2715 | "version": "2.3.1", 2716 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2717 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2718 | "dev": true, 2719 | "license": "MIT", 2720 | "engines": { 2721 | "node": ">=8.6" 2722 | }, 2723 | "funding": { 2724 | "url": "https://github.com/sponsors/jonschlinkert" 2725 | } 2726 | }, 2727 | "node_modules/resolve-from": { 2728 | "version": "4.0.0", 2729 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2730 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2731 | "dev": true, 2732 | "license": "MIT", 2733 | "engines": { 2734 | "node": ">=4" 2735 | } 2736 | }, 2737 | "node_modules/rollup": { 2738 | "version": "4.42.0", 2739 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz", 2740 | "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==", 2741 | "dev": true, 2742 | "license": "MIT", 2743 | "dependencies": { 2744 | "@types/estree": "1.0.7" 2745 | }, 2746 | "bin": { 2747 | "rollup": "dist/bin/rollup" 2748 | }, 2749 | "engines": { 2750 | "node": ">=18.0.0", 2751 | "npm": ">=8.0.0" 2752 | }, 2753 | "optionalDependencies": { 2754 | "@rollup/rollup-android-arm-eabi": "4.42.0", 2755 | "@rollup/rollup-android-arm64": "4.42.0", 2756 | "@rollup/rollup-darwin-arm64": "4.42.0", 2757 | "@rollup/rollup-darwin-x64": "4.42.0", 2758 | "@rollup/rollup-freebsd-arm64": "4.42.0", 2759 | "@rollup/rollup-freebsd-x64": "4.42.0", 2760 | "@rollup/rollup-linux-arm-gnueabihf": "4.42.0", 2761 | "@rollup/rollup-linux-arm-musleabihf": "4.42.0", 2762 | "@rollup/rollup-linux-arm64-gnu": "4.42.0", 2763 | "@rollup/rollup-linux-arm64-musl": "4.42.0", 2764 | "@rollup/rollup-linux-loongarch64-gnu": "4.42.0", 2765 | "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0", 2766 | "@rollup/rollup-linux-riscv64-gnu": "4.42.0", 2767 | "@rollup/rollup-linux-riscv64-musl": "4.42.0", 2768 | "@rollup/rollup-linux-s390x-gnu": "4.42.0", 2769 | "@rollup/rollup-linux-x64-gnu": "4.42.0", 2770 | "@rollup/rollup-linux-x64-musl": "4.42.0", 2771 | "@rollup/rollup-win32-arm64-msvc": "4.42.0", 2772 | "@rollup/rollup-win32-ia32-msvc": "4.42.0", 2773 | "@rollup/rollup-win32-x64-msvc": "4.42.0", 2774 | "fsevents": "~2.3.2" 2775 | } 2776 | }, 2777 | "node_modules/rollup/node_modules/@types/estree": { 2778 | "version": "1.0.7", 2779 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 2780 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 2781 | "dev": true, 2782 | "license": "MIT" 2783 | }, 2784 | "node_modules/scheduler": { 2785 | "version": "0.26.0", 2786 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", 2787 | "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", 2788 | "license": "MIT" 2789 | }, 2790 | "node_modules/semver": { 2791 | "version": "6.3.1", 2792 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 2793 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2794 | "dev": true, 2795 | "license": "ISC", 2796 | "bin": { 2797 | "semver": "bin/semver.js" 2798 | } 2799 | }, 2800 | "node_modules/shebang-command": { 2801 | "version": "2.0.0", 2802 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2803 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2804 | "dev": true, 2805 | "license": "MIT", 2806 | "dependencies": { 2807 | "shebang-regex": "^3.0.0" 2808 | }, 2809 | "engines": { 2810 | "node": ">=8" 2811 | } 2812 | }, 2813 | "node_modules/shebang-regex": { 2814 | "version": "3.0.0", 2815 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2816 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2817 | "dev": true, 2818 | "license": "MIT", 2819 | "engines": { 2820 | "node": ">=8" 2821 | } 2822 | }, 2823 | "node_modules/simple-update-notifier": { 2824 | "version": "2.0.0", 2825 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", 2826 | "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", 2827 | "dev": true, 2828 | "license": "MIT", 2829 | "dependencies": { 2830 | "semver": "^7.5.3" 2831 | }, 2832 | "engines": { 2833 | "node": ">=10" 2834 | } 2835 | }, 2836 | "node_modules/simple-update-notifier/node_modules/semver": { 2837 | "version": "7.7.2", 2838 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", 2839 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", 2840 | "dev": true, 2841 | "license": "ISC", 2842 | "bin": { 2843 | "semver": "bin/semver.js" 2844 | }, 2845 | "engines": { 2846 | "node": ">=10" 2847 | } 2848 | }, 2849 | "node_modules/source-map-js": { 2850 | "version": "1.2.1", 2851 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2852 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2853 | "dev": true, 2854 | "license": "BSD-3-Clause", 2855 | "engines": { 2856 | "node": ">=0.10.0" 2857 | } 2858 | }, 2859 | "node_modules/strip-json-comments": { 2860 | "version": "3.1.1", 2861 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2862 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2863 | "dev": true, 2864 | "license": "MIT", 2865 | "engines": { 2866 | "node": ">=8" 2867 | }, 2868 | "funding": { 2869 | "url": "https://github.com/sponsors/sindresorhus" 2870 | } 2871 | }, 2872 | "node_modules/supports-color": { 2873 | "version": "7.2.0", 2874 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2875 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2876 | "dev": true, 2877 | "license": "MIT", 2878 | "dependencies": { 2879 | "has-flag": "^4.0.0" 2880 | }, 2881 | "engines": { 2882 | "node": ">=8" 2883 | } 2884 | }, 2885 | "node_modules/tinyglobby": { 2886 | "version": "0.2.14", 2887 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", 2888 | "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", 2889 | "dev": true, 2890 | "license": "MIT", 2891 | "dependencies": { 2892 | "fdir": "^6.4.4", 2893 | "picomatch": "^4.0.2" 2894 | }, 2895 | "engines": { 2896 | "node": ">=12.0.0" 2897 | }, 2898 | "funding": { 2899 | "url": "https://github.com/sponsors/SuperchupuDev" 2900 | } 2901 | }, 2902 | "node_modules/to-regex-range": { 2903 | "version": "5.0.1", 2904 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2905 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2906 | "dev": true, 2907 | "license": "MIT", 2908 | "dependencies": { 2909 | "is-number": "^7.0.0" 2910 | }, 2911 | "engines": { 2912 | "node": ">=8.0" 2913 | } 2914 | }, 2915 | "node_modules/touch": { 2916 | "version": "3.1.1", 2917 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", 2918 | "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", 2919 | "dev": true, 2920 | "license": "ISC", 2921 | "bin": { 2922 | "nodetouch": "bin/nodetouch.js" 2923 | } 2924 | }, 2925 | "node_modules/type-check": { 2926 | "version": "0.4.0", 2927 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2928 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2929 | "dev": true, 2930 | "license": "MIT", 2931 | "dependencies": { 2932 | "prelude-ls": "^1.2.1" 2933 | }, 2934 | "engines": { 2935 | "node": ">= 0.8.0" 2936 | } 2937 | }, 2938 | "node_modules/undefsafe": { 2939 | "version": "2.0.5", 2940 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 2941 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", 2942 | "dev": true, 2943 | "license": "MIT" 2944 | }, 2945 | "node_modules/update-browserslist-db": { 2946 | "version": "1.1.3", 2947 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", 2948 | "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", 2949 | "dev": true, 2950 | "funding": [ 2951 | { 2952 | "type": "opencollective", 2953 | "url": "https://opencollective.com/browserslist" 2954 | }, 2955 | { 2956 | "type": "tidelift", 2957 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2958 | }, 2959 | { 2960 | "type": "github", 2961 | "url": "https://github.com/sponsors/ai" 2962 | } 2963 | ], 2964 | "license": "MIT", 2965 | "dependencies": { 2966 | "escalade": "^3.2.0", 2967 | "picocolors": "^1.1.1" 2968 | }, 2969 | "bin": { 2970 | "update-browserslist-db": "cli.js" 2971 | }, 2972 | "peerDependencies": { 2973 | "browserslist": ">= 4.21.0" 2974 | } 2975 | }, 2976 | "node_modules/uri-js": { 2977 | "version": "4.4.1", 2978 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2979 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2980 | "dev": true, 2981 | "license": "BSD-2-Clause", 2982 | "dependencies": { 2983 | "punycode": "^2.1.0" 2984 | } 2985 | }, 2986 | "node_modules/vite": { 2987 | "version": "6.3.5", 2988 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", 2989 | "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", 2990 | "dev": true, 2991 | "license": "MIT", 2992 | "dependencies": { 2993 | "esbuild": "^0.25.0", 2994 | "fdir": "^6.4.4", 2995 | "picomatch": "^4.0.2", 2996 | "postcss": "^8.5.3", 2997 | "rollup": "^4.34.9", 2998 | "tinyglobby": "^0.2.13" 2999 | }, 3000 | "bin": { 3001 | "vite": "bin/vite.js" 3002 | }, 3003 | "engines": { 3004 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3005 | }, 3006 | "funding": { 3007 | "url": "https://github.com/vitejs/vite?sponsor=1" 3008 | }, 3009 | "optionalDependencies": { 3010 | "fsevents": "~2.3.3" 3011 | }, 3012 | "peerDependencies": { 3013 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3014 | "jiti": ">=1.21.0", 3015 | "less": "*", 3016 | "lightningcss": "^1.21.0", 3017 | "sass": "*", 3018 | "sass-embedded": "*", 3019 | "stylus": "*", 3020 | "sugarss": "*", 3021 | "terser": "^5.16.0", 3022 | "tsx": "^4.8.1", 3023 | "yaml": "^2.4.2" 3024 | }, 3025 | "peerDependenciesMeta": { 3026 | "@types/node": { 3027 | "optional": true 3028 | }, 3029 | "jiti": { 3030 | "optional": true 3031 | }, 3032 | "less": { 3033 | "optional": true 3034 | }, 3035 | "lightningcss": { 3036 | "optional": true 3037 | }, 3038 | "sass": { 3039 | "optional": true 3040 | }, 3041 | "sass-embedded": { 3042 | "optional": true 3043 | }, 3044 | "stylus": { 3045 | "optional": true 3046 | }, 3047 | "sugarss": { 3048 | "optional": true 3049 | }, 3050 | "terser": { 3051 | "optional": true 3052 | }, 3053 | "tsx": { 3054 | "optional": true 3055 | }, 3056 | "yaml": { 3057 | "optional": true 3058 | } 3059 | } 3060 | }, 3061 | "node_modules/which": { 3062 | "version": "2.0.2", 3063 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3064 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3065 | "dev": true, 3066 | "license": "ISC", 3067 | "dependencies": { 3068 | "isexe": "^2.0.0" 3069 | }, 3070 | "bin": { 3071 | "node-which": "bin/node-which" 3072 | }, 3073 | "engines": { 3074 | "node": ">= 8" 3075 | } 3076 | }, 3077 | "node_modules/word-wrap": { 3078 | "version": "1.2.5", 3079 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3080 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3081 | "dev": true, 3082 | "license": "MIT", 3083 | "engines": { 3084 | "node": ">=0.10.0" 3085 | } 3086 | }, 3087 | "node_modules/yallist": { 3088 | "version": "3.1.1", 3089 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 3090 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 3091 | "dev": true, 3092 | "license": "ISC" 3093 | }, 3094 | "node_modules/yocto-queue": { 3095 | "version": "0.1.0", 3096 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3097 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3098 | "dev": true, 3099 | "license": "MIT", 3100 | "engines": { 3101 | "node": ">=10" 3102 | }, 3103 | "funding": { 3104 | "url": "https://github.com/sponsors/sindresorhus" 3105 | } 3106 | } 3107 | } 3108 | } 3109 | --------------------------------------------------------------------------------