├── README.md
├── backend
├── .gitignore
├── .vscode
│ └── settings.json
├── README.md
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── lista
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ └── views.py
├── manage.py
├── pdm.lock
├── pyproject.toml
├── requirements.txt
├── src
│ └── backend
│ │ └── __init__.py
└── tests
│ └── __init__.py
└── frontend
├── .gitignore
├── .vscode
└── extensions.json
├── README.md
├── env.d.ts
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
└── favicon.ico
├── src
├── App.vue
├── assets
│ ├── base.css
│ ├── logo.svg
│ └── main.css
├── components
│ ├── InputBar.vue
│ └── ItemList.vue
└── main.ts
├── tailwind.config.js
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/README.md:
--------------------------------------------------------------------------------
1 | # Docker-101
2 |
3 | ## Instalando Docker
4 |
5 | - [Docker Engine](https://docs.docker.com/engine/install/)
6 |
7 | ## O que é o Docker?
8 |
9 | Docker é uma plataforma que permite criar, implantar e gerenciar aplicações em containers. Containers são pacotes leves e portáteis que incluem tudo o que é necessário para executar uma aplicação: código, bibliotecas, dependências e configurações. Isso garante que a aplicação funcione de maneira consistente em diferentes ambientes, desde o desenvolvimento até a produção.
10 |
11 | Além disso, Docker utiliza o conceito de imagens. Uma imagem Docker é um modelo imutável que contém o sistema de arquivos completo necessário para rodar uma aplicação, incluindo o código, bibliotecas e outras dependências. A partir de uma única imagem Docker, é possível criar múltiplos containers, que são instâncias em execução dessa imagem. Isso permite que a aplicação seja replicada facilmente e executada de forma isolada e consistente em qualquer ambiente.
12 |
13 | #### Benefícios do Docker:
14 |
15 | - **Portabilidade:** Containers podem ser executados em qualquer sistema que suporte Docker, garantindo consistência entre ambientes.
16 |
17 | - **Isolamento:** Cada container é isolado do sistema host e de outros containers, aumentando a segurança e a estabilidade.
18 |
19 | - **Eficiência:** Containers compartilham o kernel do sistema operacional, o que os torna mais leves e rápidos para iniciar em comparação com máquinas virtuais.
20 |
21 | #### Repositórios de Imagens
22 |
23 | As imagens Docker são armazenadas em repositórios, que podem ser públicos ou privados. O [Docker Hub](https://hub.docker.com/explore) é o repositório público padrão onde você pode encontrar milhares de imagens compartilhadas pela comunidade Docker. Pense no Docker Hub como se fosse um Github de Docker Images.
24 |
25 | ## Comandos Básicos
26 |
27 | ```bash
28 | # Mostrando a versão do Docker
29 | gabriel@lspr:~$ docker --version
30 |
31 | # Rodando um container
32 | gabriel@lspr:~$ docker run hello-world
33 |
34 | # Baixando uma imagem
35 | gabriel@lspr:~$ docker pull ubuntu
36 |
37 | # Listando imagens
38 | gabriel@lspr:~$ docker images ls
39 |
40 | # Listando containers
41 | gabriel@lspr:~$ docker ps # ou docker ps -a para mostrar todos os containers(até mesmo os que estão parados)
42 |
43 | # Para listar todos os containers (incluindo os parados)
44 | gabriel@lspr:~$ docker ps -a
45 | ```
46 |
47 | ## O que é o Dockerfile?
48 |
49 | Um Dockerfile é um script de texto simples que contém um conjunto de instruções para construir uma imagem Docker. Cada instrução no Dockerfile cria uma camada na imagem, e quando você executa o Dockerfile, ele gera uma imagem que pode ser usada para criar containers.
50 |
51 | #### Principais Instruções do Dockerfile:
52 |
53 | - **FROM:** Define a imagem base a partir da qual a nova imagem será construída.
54 |
55 | - **RUN:** Executa comandos no shell dentro do container.
56 |
57 | - **COPY:** Copia arquivos ou diretórios do host para o sistema de arquivos do container.
58 |
59 | - **CMD:** Especifica o comando que será executado quando um container é iniciado a partir da imagem.
60 |
61 | - **EXPOSE:** Informa ao Docker que a aplicação no container escuta em portas específicas.
62 |
63 | #### Exemplo de um Dockerfile Simples:
64 |
65 | ```dockerfle
66 | # Usando uma imagem base oficial do Node.js
67 | FROM node:14
68 |
69 | # Definindo o diretório de trabalho dentro do container
70 | WORKDIR /app
71 |
72 | # Copiando package.json e package-lock.json para o diretório de trabalho
73 | COPY package*.json ./
74 |
75 | # Instalando dependências
76 | RUN npm install
77 |
78 | # Copiando o restante do código da aplicação
79 | COPY . .
80 |
81 | # Expondo a porta em que a aplicação será executada
82 | EXPOSE 3000
83 |
84 | # Definindo o comando para rodar a aplicação
85 | CMD ["node", "app.js"]
86 | ```
87 |
88 | #### O que é o Docker Compose?
89 |
90 | Docker Compose é uma ferramenta que permite definir e gerenciar multi-containers Docker applications. Com o Docker Compose, você pode usar um arquivo YAML para configurar os serviços da sua aplicação, e depois iniciar todos eles com um único comando.
91 |
92 | #### Principais Componentes do Docker Compose:
93 |
94 | - **services:** Define os serviços que compõem a sua aplicação. Cada serviço é executado em um container separado.
95 |
96 | - **volumes:** Permite que você monte diretórios do host dentro dos containers para persistência de dados.
97 |
98 | - **networks:** Define redes customizadas para permitir a comunicação entre containers.
99 |
100 | #### Exemplo de um Arquivo docker-compose.yml:
101 |
102 | ```yaml
103 | version: '3'
104 | services:
105 | web:
106 | image: my-web-app:latest
107 | build: .
108 | ports:
109 | - "80:80"
110 | volumes:
111 | - .:/app
112 | depends_on:
113 | - db
114 |
115 | db:
116 | image: postgres:13
117 | environment:
118 | POSTGRES_USER: user
119 | POSTGRES_PASSWORD: password
120 | POSTGRES_DB: mydatabase
121 | volumes:
122 | - db-data:/var/lib/postgresql/data
123 |
124 | volumes:
125 | db-data:
126 | ```
127 |
128 | #### Usando o Docker Compose:
129 |
130 | - Usando o Docker Compose:
131 | Iniciar serviços definidos no docker-compose.yml:
132 |
133 | ```bash
134 | gabriel@lspr:~$ docker-compose up
135 | ```
136 |
137 | - Parar serviços:
138 |
139 | ```bash
140 | gabriel@lspr:~$ docker-compose down
141 | ```
142 |
143 | ## Docker Compose que Será Utilizado no Projeto
144 |
145 | ```yaml
146 | version: '3.8'
147 |
148 | services:
149 | backend:
150 | image: backend:latest
151 | build:
152 | context: ./backend
153 | dockerfile: Dockerfile
154 | volumes:
155 | - ./backend:/app
156 | ports:
157 | - "8000:8000"
158 | networks:
159 | - app-network
160 |
161 | frontend:
162 | image: frontend:latest
163 | build:
164 | context: ./frontend
165 | dockerfile: Dockerfile
166 | volumes:
167 | - ./frontend:/app
168 | ports:
169 | - "3000:3000"
170 | networks:
171 | - app-network
172 |
173 | networks:
174 | app-network:
175 | driver: bridge
176 | ```
177 |
178 | ### Explicando o docker-compose.yml
179 |
180 | - **version:** Define a versão do Docker Compose que está sendo usada.
181 |
182 | - **services:** Define os serviços que compõem a aplicação. Neste caso, temos dois serviços: backend e frontend.
183 |
184 | - **backend:** e **frontend:** Define as configurações do serviço backend e frontend. Isso inclui a imagem a ser usada, o Dockerfile a ser usado para construir a imagem, os volumes a serem montados, as portas a serem expostas e a rede a ser usada.
185 |
186 | - **volume:** Define os volumes a serem montados pelos serviços. Neste caso, estamos montando o diretório do host no diretório de trabalho do container.
187 |
188 | - **ports:** Define as portas a serem expostas pelos serviços. Neste caso, estamos expondo a porta 8000 para o backend e a porta 3000 para o frontend.
189 |
190 | - **networks:** Define as redes a serem usadas pelos serviços. Neste caso, temos uma rede chamada app-network.
191 |
192 | ## Referências
193 |
194 | - [Docker Documentation](https://docs.docker.com/)
195 | - [Docker Hub](https://hub.docker.com/)
196 | - [Docker Compose Documentation](https://docs.docker.com/compose/)
197 | - [Dockerfile Reference](https://docs.docker.com/engine/reference/builder/)
198 | - [Docker Compose File Reference](https://docs.docker.com/compose/compose-file/)
199 |
200 |
--------------------------------------------------------------------------------
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 | Dockerfile
6 |
7 | # C extensions
8 | *.so
9 |
10 | # Distribution / packaging
11 | .Python
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | wheels/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 | cover/
54 |
55 | # Translations
56 | *.mo
57 | *.pot
58 |
59 | # Django stuff:
60 | *.log
61 | local_settings.py
62 | db.sqlite3
63 | db.sqlite3-journal
64 |
65 | # Flask stuff:
66 | instance/
67 | .webassets-cache
68 |
69 | # Scrapy stuff:
70 | .scrapy
71 |
72 | # Sphinx documentation
73 | docs/_build/
74 |
75 | # PyBuilder
76 | .pybuilder/
77 | target/
78 |
79 | # Jupyter Notebook
80 | .ipynb_checkpoints
81 |
82 | # IPython
83 | profile_default/
84 | ipython_config.py
85 |
86 | # pyenv
87 | # For a library or package, you might want to ignore these files since the code is
88 | # intended to run in multiple environments; otherwise, check them in:
89 | # .python-version
90 |
91 | # pipenv
92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
95 | # install all needed dependencies.
96 | #Pipfile.lock
97 |
98 | # poetry
99 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
100 | # This is especially recommended for binary packages to ensure reproducibility, and is more
101 | # commonly ignored for libraries.
102 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
103 | #poetry.lock
104 |
105 | # pdm
106 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
107 | #pdm.lock
108 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
109 | # in version control.
110 | # https://pdm-project.org/#use-with-ide
111 | .pdm.toml
112 | .pdm-python
113 | .pdm-build/
114 |
115 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116 | __pypackages__/
117 |
118 | # Celery stuff
119 | celerybeat-schedule
120 | celerybeat.pid
121 |
122 | # SageMath parsed files
123 | *.sage.py
124 |
125 | # Environments
126 | .env
127 | .venv
128 | env/
129 | venv/
130 | ENV/
131 | env.bak/
132 | venv.bak/
133 |
134 | # Spyder project settings
135 | .spyderproject
136 | .spyproject
137 |
138 | # Rope project settings
139 | .ropeproject
140 |
141 | # mkdocs documentation
142 | /site
143 |
144 | # mypy
145 | .mypy_cache/
146 | .dmypy.json
147 | dmypy.json
148 |
149 | # Pyre type checker
150 | .pyre/
151 |
152 | # pytype static type analyzer
153 | .pytype/
154 |
155 | # Cython debug symbols
156 | cython_debug/
157 |
158 | # PyCharm
159 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161 | # and can be added to the global gitignore or merged into this file. For a more nuclear
162 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163 | #.idea/
164 |
--------------------------------------------------------------------------------
/backend/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "python.analysis.extraPaths": [
3 | "${workspaceFolder}/__pypackages__/3.11/lib"
4 | ],
5 | "python.autoComplete.extraPaths": [
6 | "${workspaceFolder}/__pypackages__/3.11/lib"
7 | ]
8 | }
--------------------------------------------------------------------------------
/backend/README.md:
--------------------------------------------------------------------------------
1 | ## Dockerfile do Backend:
2 |
3 | #### O Dockerfile do backend é responsável por criar a imagem do backend da aplicação, para isso é necessário instalar as dependências do projeto e copiar o código fonte para a imagem.
4 |
5 | ```dockerfile
6 | FROM python:3.11
7 |
8 | WORKDIR /app
9 |
10 | COPY requirements.txt .
11 |
12 | RUN pip install --no-cache-dir -r requirements.txt
13 |
14 | COPY . .
15 |
16 | EXPOSE 8000
17 |
18 | CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
19 | ```
20 |
21 | #### Copie o conteúdo acima para um arquivo chamado `Dockerfile` na raiz do projeto backend.
22 |
23 | #### Para construir a imagem do backend, execute o comando abaixo:
24 |
25 | ```bash
26 | docker build -t backend .
27 | ```
--------------------------------------------------------------------------------
/backend/config/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/backend/config/__init__.py
--------------------------------------------------------------------------------
/backend/config/asgi.py:
--------------------------------------------------------------------------------
1 | """
2 | ASGI config for config project.
3 |
4 | It exposes the ASGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.asgi import get_asgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
15 |
16 | application = get_asgi_application()
17 |
--------------------------------------------------------------------------------
/backend/config/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for config project.
3 |
4 | Generated by 'django-admin startproject' using Django 5.0.6.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/5.0/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/5.0/ref/settings/
11 | """
12 |
13 | from pathlib import Path
14 |
15 | # Build paths inside the project like this: BASE_DIR / 'subdir'.
16 | BASE_DIR = Path(__file__).resolve().parent.parent
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = 'django-insecure-42u7f1)58t6io($bk+4=wr%^dw@f3fh(@#qd3%%w@)y%0$63o*'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'django.contrib.admin',
35 | 'django.contrib.auth',
36 | 'django.contrib.contenttypes',
37 | 'django.contrib.sessions',
38 | 'django.contrib.messages',
39 | 'django.contrib.staticfiles',
40 | "corsheaders",
41 | 'rest_framework',
42 | 'lista'
43 | ]
44 |
45 | MIDDLEWARE = [
46 | 'django.middleware.security.SecurityMiddleware',
47 | 'django.contrib.sessions.middleware.SessionMiddleware',
48 | 'django.middleware.common.CommonMiddleware',
49 | 'django.middleware.csrf.CsrfViewMiddleware',
50 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
51 | 'django.contrib.messages.middleware.MessageMiddleware',
52 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
53 | "corsheaders.middleware.CorsMiddleware",
54 | "django.middleware.common.CommonMiddleware"
55 | ]
56 |
57 | ROOT_URLCONF = 'config.urls'
58 |
59 | TEMPLATES = [
60 | {
61 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
62 | 'DIRS': [],
63 | 'APP_DIRS': True,
64 | 'OPTIONS': {
65 | 'context_processors': [
66 | 'django.template.context_processors.debug',
67 | 'django.template.context_processors.request',
68 | 'django.contrib.auth.context_processors.auth',
69 | 'django.contrib.messages.context_processors.messages',
70 | ],
71 | },
72 | },
73 | ]
74 |
75 | WSGI_APPLICATION = 'config.wsgi.application'
76 |
77 |
78 | # Database
79 | # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
80 |
81 | DATABASES = {
82 | 'default': {
83 | 'ENGINE': 'django.db.backends.sqlite3',
84 | 'NAME': BASE_DIR / 'db.sqlite3',
85 | }
86 | }
87 |
88 |
89 | # Password validation
90 | # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
91 |
92 | AUTH_PASSWORD_VALIDATORS = [
93 | {
94 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
95 | },
96 | {
97 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
98 | },
99 | {
100 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
101 | },
102 | {
103 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
104 | },
105 | ]
106 |
107 |
108 | # Internationalization
109 | # https://docs.djangoproject.com/en/5.0/topics/i18n/
110 |
111 | LANGUAGE_CODE = "pt-br"
112 |
113 | TIME_ZONE = "America/Sao_Paulo"
114 |
115 | USE_I18N = True
116 |
117 | USE_TZ = True
118 |
119 |
120 | # Static files (CSS, JavaScript, Images)
121 | # https://docs.djangoproject.com/en/5.0/howto/static-files/
122 |
123 | STATIC_URL = 'static/'
124 |
125 | # Default primary key field type
126 | # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
127 |
128 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
129 |
130 | CORS_ALLOW_ALL_ORIGINS = True
--------------------------------------------------------------------------------
/backend/config/urls.py:
--------------------------------------------------------------------------------
1 | """
2 | URL configuration for config project.
3 |
4 | The `urlpatterns` list routes URLs to views. For more information please see:
5 | https://docs.djangoproject.com/en/5.0/topics/http/urls/
6 | Examples:
7 | Function views
8 | 1. Add an import: from my_app import views
9 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
10 | Class-based views
11 | 1. Add an import: from other_app.views import Home
12 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
13 | Including another URLconf
14 | 1. Import the include() function: from django.urls import include, path
15 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
16 | """
17 | from django.contrib import admin
18 | from django.urls import include, path
19 |
20 | from rest_framework.routers import DefaultRouter
21 |
22 | from lista.views import ItemViewSet
23 |
24 | router = DefaultRouter()
25 | router.register(r"itens", ItemViewSet)
26 |
27 | urlpatterns = [
28 | path('admin/', admin.site.urls),
29 | path("", include(router.urls)),
30 | ]
31 |
--------------------------------------------------------------------------------
/backend/config/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for config project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/backend/lista/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/backend/lista/__init__.py
--------------------------------------------------------------------------------
/backend/lista/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from .models import Item
3 |
4 | admin.site.register(Item)
--------------------------------------------------------------------------------
/backend/lista/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class ListaConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'lista'
7 |
--------------------------------------------------------------------------------
/backend/lista/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.6 on 2024-07-05 12:51
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | initial = True
9 |
10 | dependencies = [
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Item',
16 | fields=[
17 | ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('name', models.CharField(max_length=100)),
19 | ],
20 | ),
21 | ]
22 |
--------------------------------------------------------------------------------
/backend/lista/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/backend/lista/migrations/__init__.py
--------------------------------------------------------------------------------
/backend/lista/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | class Item(models.Model):
4 | name = models.CharField(max_length=100)
5 |
6 | def __str__(self):
7 | return self.name
--------------------------------------------------------------------------------
/backend/lista/serializers.py:
--------------------------------------------------------------------------------
1 | from rest_framework.serializers import ModelSerializer
2 |
3 | from lista.models import Item
4 |
5 | class ItemSerializer(ModelSerializer):
6 | class Meta:
7 | model = Item
8 | fields = "__all__"
--------------------------------------------------------------------------------
/backend/lista/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/backend/lista/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | from rest_framework.viewsets import ModelViewSet
4 |
5 | from lista.models import Item
6 | from lista.serializers import ItemSerializer
7 |
8 | class ItemViewSet(ModelViewSet):
9 | queryset = Item.objects.all()
10 | serializer_class = ItemSerializer
--------------------------------------------------------------------------------
/backend/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """Django's command-line utility for administrative tasks."""
3 | import os
4 | import sys
5 |
6 |
7 | def main():
8 | """Run administrative tasks."""
9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
10 | try:
11 | from django.core.management import execute_from_command_line
12 | except ImportError as exc:
13 | raise ImportError(
14 | "Couldn't import Django. Are you sure it's installed and "
15 | "available on your PYTHONPATH environment variable? Did you "
16 | "forget to activate a virtual environment?"
17 | ) from exc
18 | execute_from_command_line(sys.argv)
19 |
20 |
21 | if __name__ == '__main__':
22 | main()
23 |
--------------------------------------------------------------------------------
/backend/pdm.lock:
--------------------------------------------------------------------------------
1 | # This file is @generated by PDM.
2 | # It is not intended for manual editing.
3 |
4 | [metadata]
5 | groups = ["default"]
6 | strategy = ["cross_platform", "inherit_metadata"]
7 | lock_version = "4.4.2"
8 | content_hash = "sha256:03c1765dc1f8ed290162745d8393ebf53ad41acc1ce99a12c042135184d038dc"
9 |
10 | [[package]]
11 | name = "asgiref"
12 | version = "3.8.1"
13 | requires_python = ">=3.8"
14 | summary = "ASGI specs, helper code, and adapters"
15 | groups = ["default"]
16 | files = [
17 | {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"},
18 | {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"},
19 | ]
20 |
21 | [[package]]
22 | name = "django"
23 | version = "5.0.6"
24 | requires_python = ">=3.10"
25 | summary = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
26 | groups = ["default"]
27 | dependencies = [
28 | "asgiref<4,>=3.7.0",
29 | "sqlparse>=0.3.1",
30 | "tzdata; sys_platform == \"win32\"",
31 | ]
32 | files = [
33 | {file = "Django-5.0.6-py3-none-any.whl", hash = "sha256:8363ac062bb4ef7c3f12d078f6fa5d154031d129a15170a1066412af49d30905"},
34 | {file = "Django-5.0.6.tar.gz", hash = "sha256:ff1b61005004e476e0aeea47c7f79b85864c70124030e95146315396f1e7951f"},
35 | ]
36 |
37 | [[package]]
38 | name = "django-cors-headers"
39 | version = "4.4.0"
40 | requires_python = ">=3.8"
41 | summary = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)."
42 | groups = ["default"]
43 | dependencies = [
44 | "asgiref>=3.6",
45 | "django>=3.2",
46 | ]
47 | files = [
48 | {file = "django_cors_headers-4.4.0-py3-none-any.whl", hash = "sha256:5c6e3b7fe870876a1efdfeb4f433782c3524078fa0dc9e0195f6706ce7a242f6"},
49 | {file = "django_cors_headers-4.4.0.tar.gz", hash = "sha256:92cf4633e22af67a230a1456cb1b7a02bb213d6536d2dcb2a4a24092ea9cebc2"},
50 | ]
51 |
52 | [[package]]
53 | name = "djangorestframework"
54 | version = "3.15.2"
55 | requires_python = ">=3.8"
56 | summary = "Web APIs for Django, made easy."
57 | groups = ["default"]
58 | dependencies = [
59 | "django>=4.2",
60 | ]
61 | files = [
62 | {file = "djangorestframework-3.15.2-py3-none-any.whl", hash = "sha256:2b8871b062ba1aefc2de01f773875441a961fefbf79f5eed1e32b2f096944b20"},
63 | {file = "djangorestframework-3.15.2.tar.gz", hash = "sha256:36fe88cd2d6c6bec23dca9804bab2ba5517a8bb9d8f47ebc68981b56840107ad"},
64 | ]
65 |
66 | [[package]]
67 | name = "sqlparse"
68 | version = "0.5.0"
69 | requires_python = ">=3.8"
70 | summary = "A non-validating SQL parser."
71 | groups = ["default"]
72 | files = [
73 | {file = "sqlparse-0.5.0-py3-none-any.whl", hash = "sha256:c204494cd97479d0e39f28c93d46c0b2d5959c7b9ab904762ea6c7af211c8663"},
74 | {file = "sqlparse-0.5.0.tar.gz", hash = "sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93"},
75 | ]
76 |
77 | [[package]]
78 | name = "tzdata"
79 | version = "2024.1"
80 | requires_python = ">=2"
81 | summary = "Provider of IANA time zone data"
82 | groups = ["default"]
83 | marker = "sys_platform == \"win32\""
84 | files = [
85 | {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
86 | {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
87 | ]
88 |
--------------------------------------------------------------------------------
/backend/pyproject.toml:
--------------------------------------------------------------------------------
1 |
2 | [tool.pdm]
3 | distribution = false
4 | [[tool.pdm.autoexport]]
5 | filename = "requirements.txt"
6 | without-hashes = "true"
7 |
8 |
9 | [project]
10 | name = "backend"
11 | version = "0.1.0"
12 | description = "Default template for PDM package"
13 | authors = [
14 | {name = "lsprdev", email = "github@lspr.dev"},
15 | ]
16 | dependencies = [
17 | "django>=5.0.6",
18 | "djangorestframework>=3.15.2",
19 | "django-cors-headers>=4.4.0",
20 | ]
21 | requires-python = "==3.11.*"
22 | readme = "README.md"
23 | license = {text = "MIT"}
24 |
25 |
--------------------------------------------------------------------------------
/backend/requirements.txt:
--------------------------------------------------------------------------------
1 | # This file is @generated by PDM.
2 | # Please do not edit it manually.
3 |
4 | asgiref==3.8.1
5 | django==5.0.6
6 | django-cors-headers==4.4.0
7 | djangorestframework==3.15.2
8 | sqlparse==0.5.0
9 | tzdata==2024.1; sys_platform == "win32"
10 |
--------------------------------------------------------------------------------
/backend/src/backend/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/backend/src/backend/__init__.py
--------------------------------------------------------------------------------
/backend/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/backend/tests/__init__.py
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | Dockerfile
11 |
12 | node_modules
13 | .DS_Store
14 | dist
15 | dist-ssr
16 | coverage
17 | *.local
18 |
19 | /cypress/videos/
20 | /cypress/screenshots/
21 |
22 | # Editor directories and files
23 | .vscode/*
24 | !.vscode/extensions.json
25 | .idea
26 | *.suo
27 | *.ntvs*
28 | *.njsproj
29 | *.sln
30 | *.sw?
31 |
32 | *.tsbuildinfo
33 |
--------------------------------------------------------------------------------
/frontend/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar"]
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | ## Dockerfile do Frontend:
2 |
3 | #### O Dockerfile do frontend é responsável por criar a imagem do frontend da aplicação, para isso é necessário instalar as dependências do projeto e copiar o código fonte para a imagem.
4 |
5 | ```dockerfile
6 | FROM node:16
7 |
8 | WORKDIR /app
9 |
10 | RUN npm install -g vite
11 |
12 | COPY package*.json ./
13 |
14 | RUN npm install
15 |
16 | COPY . .
17 |
18 | EXPOSE 3000
19 |
20 | CMD ["npm", "run", "dev"]
21 | ```
22 |
23 | #### Copie o conteúdo acima para um arquivo chamado `Dockerfile` na raiz do projeto frontend.
24 |
25 | #### Para construir a imagem do frontend, execute o comando abaixo:
26 |
27 | ```bash
28 | docker build -t frontend .
29 | ```
--------------------------------------------------------------------------------
/frontend/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/frontend/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/frontend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "frontend",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "vue": "^3.4.29"
12 | },
13 | "devDependencies": {
14 | "@tsconfig/node20": "^20.1.4",
15 | "@types/node": "^20.14.5",
16 | "@vitejs/plugin-vue": "^5.0.5",
17 | "@vue/tsconfig": "^0.5.1",
18 | "autoprefixer": "^10.4.19",
19 | "npm-run-all2": "^6.2.0",
20 | "postcss": "^8.4.39",
21 | "tailwindcss": "^3.4.4",
22 | "typescript": "~5.4.0",
23 | "vite": "^5.3.1",
24 | "vue-tsc": "^2.0.21"
25 | }
26 | },
27 | "node_modules/@alloc/quick-lru": {
28 | "version": "5.2.0",
29 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
30 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
31 | "dev": true,
32 | "license": "MIT",
33 | "engines": {
34 | "node": ">=10"
35 | },
36 | "funding": {
37 | "url": "https://github.com/sponsors/sindresorhus"
38 | }
39 | },
40 | "node_modules/@babel/parser": {
41 | "version": "7.24.7",
42 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
43 | "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
44 | "license": "MIT",
45 | "bin": {
46 | "parser": "bin/babel-parser.js"
47 | },
48 | "engines": {
49 | "node": ">=6.0.0"
50 | }
51 | },
52 | "node_modules/@esbuild/aix-ppc64": {
53 | "version": "0.21.5",
54 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
55 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
56 | "cpu": [
57 | "ppc64"
58 | ],
59 | "dev": true,
60 | "license": "MIT",
61 | "optional": true,
62 | "os": [
63 | "aix"
64 | ],
65 | "engines": {
66 | "node": ">=12"
67 | }
68 | },
69 | "node_modules/@esbuild/android-arm": {
70 | "version": "0.21.5",
71 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
72 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
73 | "cpu": [
74 | "arm"
75 | ],
76 | "dev": true,
77 | "license": "MIT",
78 | "optional": true,
79 | "os": [
80 | "android"
81 | ],
82 | "engines": {
83 | "node": ">=12"
84 | }
85 | },
86 | "node_modules/@esbuild/android-arm64": {
87 | "version": "0.21.5",
88 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
89 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
90 | "cpu": [
91 | "arm64"
92 | ],
93 | "dev": true,
94 | "license": "MIT",
95 | "optional": true,
96 | "os": [
97 | "android"
98 | ],
99 | "engines": {
100 | "node": ">=12"
101 | }
102 | },
103 | "node_modules/@esbuild/android-x64": {
104 | "version": "0.21.5",
105 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
106 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
107 | "cpu": [
108 | "x64"
109 | ],
110 | "dev": true,
111 | "license": "MIT",
112 | "optional": true,
113 | "os": [
114 | "android"
115 | ],
116 | "engines": {
117 | "node": ">=12"
118 | }
119 | },
120 | "node_modules/@esbuild/darwin-arm64": {
121 | "version": "0.21.5",
122 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
123 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
124 | "cpu": [
125 | "arm64"
126 | ],
127 | "dev": true,
128 | "license": "MIT",
129 | "optional": true,
130 | "os": [
131 | "darwin"
132 | ],
133 | "engines": {
134 | "node": ">=12"
135 | }
136 | },
137 | "node_modules/@esbuild/darwin-x64": {
138 | "version": "0.21.5",
139 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
140 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
141 | "cpu": [
142 | "x64"
143 | ],
144 | "dev": true,
145 | "license": "MIT",
146 | "optional": true,
147 | "os": [
148 | "darwin"
149 | ],
150 | "engines": {
151 | "node": ">=12"
152 | }
153 | },
154 | "node_modules/@esbuild/freebsd-arm64": {
155 | "version": "0.21.5",
156 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
157 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
158 | "cpu": [
159 | "arm64"
160 | ],
161 | "dev": true,
162 | "license": "MIT",
163 | "optional": true,
164 | "os": [
165 | "freebsd"
166 | ],
167 | "engines": {
168 | "node": ">=12"
169 | }
170 | },
171 | "node_modules/@esbuild/freebsd-x64": {
172 | "version": "0.21.5",
173 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
174 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
175 | "cpu": [
176 | "x64"
177 | ],
178 | "dev": true,
179 | "license": "MIT",
180 | "optional": true,
181 | "os": [
182 | "freebsd"
183 | ],
184 | "engines": {
185 | "node": ">=12"
186 | }
187 | },
188 | "node_modules/@esbuild/linux-arm": {
189 | "version": "0.21.5",
190 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
191 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
192 | "cpu": [
193 | "arm"
194 | ],
195 | "dev": true,
196 | "license": "MIT",
197 | "optional": true,
198 | "os": [
199 | "linux"
200 | ],
201 | "engines": {
202 | "node": ">=12"
203 | }
204 | },
205 | "node_modules/@esbuild/linux-arm64": {
206 | "version": "0.21.5",
207 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
208 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
209 | "cpu": [
210 | "arm64"
211 | ],
212 | "dev": true,
213 | "license": "MIT",
214 | "optional": true,
215 | "os": [
216 | "linux"
217 | ],
218 | "engines": {
219 | "node": ">=12"
220 | }
221 | },
222 | "node_modules/@esbuild/linux-ia32": {
223 | "version": "0.21.5",
224 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
225 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
226 | "cpu": [
227 | "ia32"
228 | ],
229 | "dev": true,
230 | "license": "MIT",
231 | "optional": true,
232 | "os": [
233 | "linux"
234 | ],
235 | "engines": {
236 | "node": ">=12"
237 | }
238 | },
239 | "node_modules/@esbuild/linux-loong64": {
240 | "version": "0.21.5",
241 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
242 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
243 | "cpu": [
244 | "loong64"
245 | ],
246 | "dev": true,
247 | "license": "MIT",
248 | "optional": true,
249 | "os": [
250 | "linux"
251 | ],
252 | "engines": {
253 | "node": ">=12"
254 | }
255 | },
256 | "node_modules/@esbuild/linux-mips64el": {
257 | "version": "0.21.5",
258 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
259 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
260 | "cpu": [
261 | "mips64el"
262 | ],
263 | "dev": true,
264 | "license": "MIT",
265 | "optional": true,
266 | "os": [
267 | "linux"
268 | ],
269 | "engines": {
270 | "node": ">=12"
271 | }
272 | },
273 | "node_modules/@esbuild/linux-ppc64": {
274 | "version": "0.21.5",
275 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
276 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
277 | "cpu": [
278 | "ppc64"
279 | ],
280 | "dev": true,
281 | "license": "MIT",
282 | "optional": true,
283 | "os": [
284 | "linux"
285 | ],
286 | "engines": {
287 | "node": ">=12"
288 | }
289 | },
290 | "node_modules/@esbuild/linux-riscv64": {
291 | "version": "0.21.5",
292 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
293 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
294 | "cpu": [
295 | "riscv64"
296 | ],
297 | "dev": true,
298 | "license": "MIT",
299 | "optional": true,
300 | "os": [
301 | "linux"
302 | ],
303 | "engines": {
304 | "node": ">=12"
305 | }
306 | },
307 | "node_modules/@esbuild/linux-s390x": {
308 | "version": "0.21.5",
309 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
310 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
311 | "cpu": [
312 | "s390x"
313 | ],
314 | "dev": true,
315 | "license": "MIT",
316 | "optional": true,
317 | "os": [
318 | "linux"
319 | ],
320 | "engines": {
321 | "node": ">=12"
322 | }
323 | },
324 | "node_modules/@esbuild/linux-x64": {
325 | "version": "0.21.5",
326 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
327 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
328 | "cpu": [
329 | "x64"
330 | ],
331 | "dev": true,
332 | "license": "MIT",
333 | "optional": true,
334 | "os": [
335 | "linux"
336 | ],
337 | "engines": {
338 | "node": ">=12"
339 | }
340 | },
341 | "node_modules/@esbuild/netbsd-x64": {
342 | "version": "0.21.5",
343 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
344 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
345 | "cpu": [
346 | "x64"
347 | ],
348 | "dev": true,
349 | "license": "MIT",
350 | "optional": true,
351 | "os": [
352 | "netbsd"
353 | ],
354 | "engines": {
355 | "node": ">=12"
356 | }
357 | },
358 | "node_modules/@esbuild/openbsd-x64": {
359 | "version": "0.21.5",
360 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
361 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
362 | "cpu": [
363 | "x64"
364 | ],
365 | "dev": true,
366 | "license": "MIT",
367 | "optional": true,
368 | "os": [
369 | "openbsd"
370 | ],
371 | "engines": {
372 | "node": ">=12"
373 | }
374 | },
375 | "node_modules/@esbuild/sunos-x64": {
376 | "version": "0.21.5",
377 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
378 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
379 | "cpu": [
380 | "x64"
381 | ],
382 | "dev": true,
383 | "license": "MIT",
384 | "optional": true,
385 | "os": [
386 | "sunos"
387 | ],
388 | "engines": {
389 | "node": ">=12"
390 | }
391 | },
392 | "node_modules/@esbuild/win32-arm64": {
393 | "version": "0.21.5",
394 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
395 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
396 | "cpu": [
397 | "arm64"
398 | ],
399 | "dev": true,
400 | "license": "MIT",
401 | "optional": true,
402 | "os": [
403 | "win32"
404 | ],
405 | "engines": {
406 | "node": ">=12"
407 | }
408 | },
409 | "node_modules/@esbuild/win32-ia32": {
410 | "version": "0.21.5",
411 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
412 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
413 | "cpu": [
414 | "ia32"
415 | ],
416 | "dev": true,
417 | "license": "MIT",
418 | "optional": true,
419 | "os": [
420 | "win32"
421 | ],
422 | "engines": {
423 | "node": ">=12"
424 | }
425 | },
426 | "node_modules/@esbuild/win32-x64": {
427 | "version": "0.21.5",
428 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
429 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
430 | "cpu": [
431 | "x64"
432 | ],
433 | "dev": true,
434 | "license": "MIT",
435 | "optional": true,
436 | "os": [
437 | "win32"
438 | ],
439 | "engines": {
440 | "node": ">=12"
441 | }
442 | },
443 | "node_modules/@isaacs/cliui": {
444 | "version": "8.0.2",
445 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
446 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
447 | "dev": true,
448 | "license": "ISC",
449 | "dependencies": {
450 | "string-width": "^5.1.2",
451 | "string-width-cjs": "npm:string-width@^4.2.0",
452 | "strip-ansi": "^7.0.1",
453 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
454 | "wrap-ansi": "^8.1.0",
455 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
456 | },
457 | "engines": {
458 | "node": ">=12"
459 | }
460 | },
461 | "node_modules/@jridgewell/gen-mapping": {
462 | "version": "0.3.5",
463 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
464 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
465 | "dev": true,
466 | "license": "MIT",
467 | "dependencies": {
468 | "@jridgewell/set-array": "^1.2.1",
469 | "@jridgewell/sourcemap-codec": "^1.4.10",
470 | "@jridgewell/trace-mapping": "^0.3.24"
471 | },
472 | "engines": {
473 | "node": ">=6.0.0"
474 | }
475 | },
476 | "node_modules/@jridgewell/resolve-uri": {
477 | "version": "3.1.2",
478 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
479 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
480 | "dev": true,
481 | "license": "MIT",
482 | "engines": {
483 | "node": ">=6.0.0"
484 | }
485 | },
486 | "node_modules/@jridgewell/set-array": {
487 | "version": "1.2.1",
488 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
489 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
490 | "dev": true,
491 | "license": "MIT",
492 | "engines": {
493 | "node": ">=6.0.0"
494 | }
495 | },
496 | "node_modules/@jridgewell/sourcemap-codec": {
497 | "version": "1.4.15",
498 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
499 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
500 | "license": "MIT"
501 | },
502 | "node_modules/@jridgewell/trace-mapping": {
503 | "version": "0.3.25",
504 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
505 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
506 | "dev": true,
507 | "license": "MIT",
508 | "dependencies": {
509 | "@jridgewell/resolve-uri": "^3.1.0",
510 | "@jridgewell/sourcemap-codec": "^1.4.14"
511 | }
512 | },
513 | "node_modules/@nodelib/fs.scandir": {
514 | "version": "2.1.5",
515 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
516 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
517 | "dev": true,
518 | "license": "MIT",
519 | "dependencies": {
520 | "@nodelib/fs.stat": "2.0.5",
521 | "run-parallel": "^1.1.9"
522 | },
523 | "engines": {
524 | "node": ">= 8"
525 | }
526 | },
527 | "node_modules/@nodelib/fs.stat": {
528 | "version": "2.0.5",
529 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
530 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
531 | "dev": true,
532 | "license": "MIT",
533 | "engines": {
534 | "node": ">= 8"
535 | }
536 | },
537 | "node_modules/@nodelib/fs.walk": {
538 | "version": "1.2.8",
539 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
540 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
541 | "dev": true,
542 | "license": "MIT",
543 | "dependencies": {
544 | "@nodelib/fs.scandir": "2.1.5",
545 | "fastq": "^1.6.0"
546 | },
547 | "engines": {
548 | "node": ">= 8"
549 | }
550 | },
551 | "node_modules/@pkgjs/parseargs": {
552 | "version": "0.11.0",
553 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
554 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
555 | "dev": true,
556 | "license": "MIT",
557 | "optional": true,
558 | "engines": {
559 | "node": ">=14"
560 | }
561 | },
562 | "node_modules/@rollup/rollup-android-arm-eabi": {
563 | "version": "4.18.0",
564 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
565 | "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
566 | "cpu": [
567 | "arm"
568 | ],
569 | "dev": true,
570 | "license": "MIT",
571 | "optional": true,
572 | "os": [
573 | "android"
574 | ]
575 | },
576 | "node_modules/@rollup/rollup-android-arm64": {
577 | "version": "4.18.0",
578 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
579 | "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
580 | "cpu": [
581 | "arm64"
582 | ],
583 | "dev": true,
584 | "license": "MIT",
585 | "optional": true,
586 | "os": [
587 | "android"
588 | ]
589 | },
590 | "node_modules/@rollup/rollup-darwin-arm64": {
591 | "version": "4.18.0",
592 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
593 | "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
594 | "cpu": [
595 | "arm64"
596 | ],
597 | "dev": true,
598 | "license": "MIT",
599 | "optional": true,
600 | "os": [
601 | "darwin"
602 | ]
603 | },
604 | "node_modules/@rollup/rollup-darwin-x64": {
605 | "version": "4.18.0",
606 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
607 | "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
608 | "cpu": [
609 | "x64"
610 | ],
611 | "dev": true,
612 | "license": "MIT",
613 | "optional": true,
614 | "os": [
615 | "darwin"
616 | ]
617 | },
618 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
619 | "version": "4.18.0",
620 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
621 | "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
622 | "cpu": [
623 | "arm"
624 | ],
625 | "dev": true,
626 | "license": "MIT",
627 | "optional": true,
628 | "os": [
629 | "linux"
630 | ]
631 | },
632 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
633 | "version": "4.18.0",
634 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
635 | "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
636 | "cpu": [
637 | "arm"
638 | ],
639 | "dev": true,
640 | "license": "MIT",
641 | "optional": true,
642 | "os": [
643 | "linux"
644 | ]
645 | },
646 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
647 | "version": "4.18.0",
648 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
649 | "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
650 | "cpu": [
651 | "arm64"
652 | ],
653 | "dev": true,
654 | "license": "MIT",
655 | "optional": true,
656 | "os": [
657 | "linux"
658 | ]
659 | },
660 | "node_modules/@rollup/rollup-linux-arm64-musl": {
661 | "version": "4.18.0",
662 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
663 | "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
664 | "cpu": [
665 | "arm64"
666 | ],
667 | "dev": true,
668 | "license": "MIT",
669 | "optional": true,
670 | "os": [
671 | "linux"
672 | ]
673 | },
674 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
675 | "version": "4.18.0",
676 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
677 | "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
678 | "cpu": [
679 | "ppc64"
680 | ],
681 | "dev": true,
682 | "license": "MIT",
683 | "optional": true,
684 | "os": [
685 | "linux"
686 | ]
687 | },
688 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
689 | "version": "4.18.0",
690 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
691 | "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
692 | "cpu": [
693 | "riscv64"
694 | ],
695 | "dev": true,
696 | "license": "MIT",
697 | "optional": true,
698 | "os": [
699 | "linux"
700 | ]
701 | },
702 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
703 | "version": "4.18.0",
704 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
705 | "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
706 | "cpu": [
707 | "s390x"
708 | ],
709 | "dev": true,
710 | "license": "MIT",
711 | "optional": true,
712 | "os": [
713 | "linux"
714 | ]
715 | },
716 | "node_modules/@rollup/rollup-linux-x64-gnu": {
717 | "version": "4.18.0",
718 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
719 | "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
720 | "cpu": [
721 | "x64"
722 | ],
723 | "dev": true,
724 | "license": "MIT",
725 | "optional": true,
726 | "os": [
727 | "linux"
728 | ]
729 | },
730 | "node_modules/@rollup/rollup-linux-x64-musl": {
731 | "version": "4.18.0",
732 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
733 | "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
734 | "cpu": [
735 | "x64"
736 | ],
737 | "dev": true,
738 | "license": "MIT",
739 | "optional": true,
740 | "os": [
741 | "linux"
742 | ]
743 | },
744 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
745 | "version": "4.18.0",
746 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
747 | "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
748 | "cpu": [
749 | "arm64"
750 | ],
751 | "dev": true,
752 | "license": "MIT",
753 | "optional": true,
754 | "os": [
755 | "win32"
756 | ]
757 | },
758 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
759 | "version": "4.18.0",
760 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
761 | "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
762 | "cpu": [
763 | "ia32"
764 | ],
765 | "dev": true,
766 | "license": "MIT",
767 | "optional": true,
768 | "os": [
769 | "win32"
770 | ]
771 | },
772 | "node_modules/@rollup/rollup-win32-x64-msvc": {
773 | "version": "4.18.0",
774 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
775 | "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
776 | "cpu": [
777 | "x64"
778 | ],
779 | "dev": true,
780 | "license": "MIT",
781 | "optional": true,
782 | "os": [
783 | "win32"
784 | ]
785 | },
786 | "node_modules/@tsconfig/node20": {
787 | "version": "20.1.4",
788 | "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz",
789 | "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==",
790 | "dev": true,
791 | "license": "MIT"
792 | },
793 | "node_modules/@types/estree": {
794 | "version": "1.0.5",
795 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
796 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
797 | "dev": true,
798 | "license": "MIT"
799 | },
800 | "node_modules/@types/node": {
801 | "version": "20.14.9",
802 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
803 | "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
804 | "dev": true,
805 | "license": "MIT",
806 | "dependencies": {
807 | "undici-types": "~5.26.4"
808 | }
809 | },
810 | "node_modules/@vitejs/plugin-vue": {
811 | "version": "5.0.5",
812 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz",
813 | "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==",
814 | "dev": true,
815 | "license": "MIT",
816 | "engines": {
817 | "node": "^18.0.0 || >=20.0.0"
818 | },
819 | "peerDependencies": {
820 | "vite": "^5.0.0",
821 | "vue": "^3.2.25"
822 | }
823 | },
824 | "node_modules/@volar/language-core": {
825 | "version": "2.4.0-alpha.15",
826 | "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.15.tgz",
827 | "integrity": "sha512-mt8z4Fm2WxfQYoQHPcKVjLQV6PgPqyKLbkCVY2cr5RSaamqCHjhKEpsFX66aL4D/7oYguuaUw9Bx03Vt0TpIIA==",
828 | "dev": true,
829 | "license": "MIT",
830 | "dependencies": {
831 | "@volar/source-map": "2.4.0-alpha.15"
832 | }
833 | },
834 | "node_modules/@volar/source-map": {
835 | "version": "2.4.0-alpha.15",
836 | "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.15.tgz",
837 | "integrity": "sha512-8Htngw5TmBY4L3ClDqBGyfLhsB8EmoEXUH1xydyEtEoK0O6NX5ur4Jw8jgvscTlwzizyl/wsN1vn0cQXVbbXYg==",
838 | "dev": true,
839 | "license": "MIT"
840 | },
841 | "node_modules/@volar/typescript": {
842 | "version": "2.4.0-alpha.15",
843 | "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.15.tgz",
844 | "integrity": "sha512-U3StRBbDuxV6Woa4hvGS4kz3XcOzrWUKgFdEFN+ba1x3eaYg7+ytau8ul05xgA+UNGLXXsKur7fTUhDFyISk0w==",
845 | "dev": true,
846 | "license": "MIT",
847 | "dependencies": {
848 | "@volar/language-core": "2.4.0-alpha.15",
849 | "path-browserify": "^1.0.1",
850 | "vscode-uri": "^3.0.8"
851 | }
852 | },
853 | "node_modules/@vue/compiler-core": {
854 | "version": "3.4.31",
855 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz",
856 | "integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==",
857 | "license": "MIT",
858 | "dependencies": {
859 | "@babel/parser": "^7.24.7",
860 | "@vue/shared": "3.4.31",
861 | "entities": "^4.5.0",
862 | "estree-walker": "^2.0.2",
863 | "source-map-js": "^1.2.0"
864 | }
865 | },
866 | "node_modules/@vue/compiler-dom": {
867 | "version": "3.4.31",
868 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz",
869 | "integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==",
870 | "license": "MIT",
871 | "dependencies": {
872 | "@vue/compiler-core": "3.4.31",
873 | "@vue/shared": "3.4.31"
874 | }
875 | },
876 | "node_modules/@vue/compiler-sfc": {
877 | "version": "3.4.31",
878 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz",
879 | "integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==",
880 | "license": "MIT",
881 | "dependencies": {
882 | "@babel/parser": "^7.24.7",
883 | "@vue/compiler-core": "3.4.31",
884 | "@vue/compiler-dom": "3.4.31",
885 | "@vue/compiler-ssr": "3.4.31",
886 | "@vue/shared": "3.4.31",
887 | "estree-walker": "^2.0.2",
888 | "magic-string": "^0.30.10",
889 | "postcss": "^8.4.38",
890 | "source-map-js": "^1.2.0"
891 | }
892 | },
893 | "node_modules/@vue/compiler-ssr": {
894 | "version": "3.4.31",
895 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz",
896 | "integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==",
897 | "license": "MIT",
898 | "dependencies": {
899 | "@vue/compiler-dom": "3.4.31",
900 | "@vue/shared": "3.4.31"
901 | }
902 | },
903 | "node_modules/@vue/language-core": {
904 | "version": "2.0.26",
905 | "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.26.tgz",
906 | "integrity": "sha512-/lt6SfQ3O1yDAhPsnLv9iSUgXd1dMHqUm/t3RctfqjuwQf1LnftZ414X3UBn6aXT4MiwXWtbNJ4Z0NZWwDWgJQ==",
907 | "dev": true,
908 | "license": "MIT",
909 | "dependencies": {
910 | "@volar/language-core": "~2.4.0-alpha.15",
911 | "@vue/compiler-dom": "^3.4.0",
912 | "@vue/shared": "^3.4.0",
913 | "computeds": "^0.0.1",
914 | "minimatch": "^9.0.3",
915 | "muggle-string": "^0.4.1",
916 | "path-browserify": "^1.0.1",
917 | "vue-template-compiler": "^2.7.14"
918 | },
919 | "peerDependencies": {
920 | "typescript": "*"
921 | },
922 | "peerDependenciesMeta": {
923 | "typescript": {
924 | "optional": true
925 | }
926 | }
927 | },
928 | "node_modules/@vue/reactivity": {
929 | "version": "3.4.31",
930 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.31.tgz",
931 | "integrity": "sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==",
932 | "license": "MIT",
933 | "dependencies": {
934 | "@vue/shared": "3.4.31"
935 | }
936 | },
937 | "node_modules/@vue/runtime-core": {
938 | "version": "3.4.31",
939 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.31.tgz",
940 | "integrity": "sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==",
941 | "license": "MIT",
942 | "dependencies": {
943 | "@vue/reactivity": "3.4.31",
944 | "@vue/shared": "3.4.31"
945 | }
946 | },
947 | "node_modules/@vue/runtime-dom": {
948 | "version": "3.4.31",
949 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.31.tgz",
950 | "integrity": "sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==",
951 | "license": "MIT",
952 | "dependencies": {
953 | "@vue/reactivity": "3.4.31",
954 | "@vue/runtime-core": "3.4.31",
955 | "@vue/shared": "3.4.31",
956 | "csstype": "^3.1.3"
957 | }
958 | },
959 | "node_modules/@vue/server-renderer": {
960 | "version": "3.4.31",
961 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.31.tgz",
962 | "integrity": "sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==",
963 | "license": "MIT",
964 | "dependencies": {
965 | "@vue/compiler-ssr": "3.4.31",
966 | "@vue/shared": "3.4.31"
967 | },
968 | "peerDependencies": {
969 | "vue": "3.4.31"
970 | }
971 | },
972 | "node_modules/@vue/shared": {
973 | "version": "3.4.31",
974 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz",
975 | "integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==",
976 | "license": "MIT"
977 | },
978 | "node_modules/@vue/tsconfig": {
979 | "version": "0.5.1",
980 | "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz",
981 | "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==",
982 | "dev": true,
983 | "license": "MIT"
984 | },
985 | "node_modules/ansi-regex": {
986 | "version": "6.0.1",
987 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
988 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
989 | "dev": true,
990 | "license": "MIT",
991 | "engines": {
992 | "node": ">=12"
993 | },
994 | "funding": {
995 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
996 | }
997 | },
998 | "node_modules/ansi-styles": {
999 | "version": "6.2.1",
1000 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
1001 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
1002 | "dev": true,
1003 | "license": "MIT",
1004 | "engines": {
1005 | "node": ">=12"
1006 | },
1007 | "funding": {
1008 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1009 | }
1010 | },
1011 | "node_modules/any-promise": {
1012 | "version": "1.3.0",
1013 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
1014 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
1015 | "dev": true,
1016 | "license": "MIT"
1017 | },
1018 | "node_modules/anymatch": {
1019 | "version": "3.1.3",
1020 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1021 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1022 | "dev": true,
1023 | "license": "ISC",
1024 | "dependencies": {
1025 | "normalize-path": "^3.0.0",
1026 | "picomatch": "^2.0.4"
1027 | },
1028 | "engines": {
1029 | "node": ">= 8"
1030 | }
1031 | },
1032 | "node_modules/arg": {
1033 | "version": "5.0.2",
1034 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1035 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1036 | "dev": true,
1037 | "license": "MIT"
1038 | },
1039 | "node_modules/autoprefixer": {
1040 | "version": "10.4.19",
1041 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
1042 | "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
1043 | "dev": true,
1044 | "funding": [
1045 | {
1046 | "type": "opencollective",
1047 | "url": "https://opencollective.com/postcss/"
1048 | },
1049 | {
1050 | "type": "tidelift",
1051 | "url": "https://tidelift.com/funding/github/npm/autoprefixer"
1052 | },
1053 | {
1054 | "type": "github",
1055 | "url": "https://github.com/sponsors/ai"
1056 | }
1057 | ],
1058 | "license": "MIT",
1059 | "dependencies": {
1060 | "browserslist": "^4.23.0",
1061 | "caniuse-lite": "^1.0.30001599",
1062 | "fraction.js": "^4.3.7",
1063 | "normalize-range": "^0.1.2",
1064 | "picocolors": "^1.0.0",
1065 | "postcss-value-parser": "^4.2.0"
1066 | },
1067 | "bin": {
1068 | "autoprefixer": "bin/autoprefixer"
1069 | },
1070 | "engines": {
1071 | "node": "^10 || ^12 || >=14"
1072 | },
1073 | "peerDependencies": {
1074 | "postcss": "^8.1.0"
1075 | }
1076 | },
1077 | "node_modules/balanced-match": {
1078 | "version": "1.0.2",
1079 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1080 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1081 | "dev": true,
1082 | "license": "MIT"
1083 | },
1084 | "node_modules/binary-extensions": {
1085 | "version": "2.3.0",
1086 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1087 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1088 | "dev": true,
1089 | "license": "MIT",
1090 | "engines": {
1091 | "node": ">=8"
1092 | },
1093 | "funding": {
1094 | "url": "https://github.com/sponsors/sindresorhus"
1095 | }
1096 | },
1097 | "node_modules/brace-expansion": {
1098 | "version": "2.0.1",
1099 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1100 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1101 | "dev": true,
1102 | "license": "MIT",
1103 | "dependencies": {
1104 | "balanced-match": "^1.0.0"
1105 | }
1106 | },
1107 | "node_modules/braces": {
1108 | "version": "3.0.3",
1109 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1110 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1111 | "dev": true,
1112 | "license": "MIT",
1113 | "dependencies": {
1114 | "fill-range": "^7.1.1"
1115 | },
1116 | "engines": {
1117 | "node": ">=8"
1118 | }
1119 | },
1120 | "node_modules/browserslist": {
1121 | "version": "4.23.1",
1122 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
1123 | "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
1124 | "dev": true,
1125 | "funding": [
1126 | {
1127 | "type": "opencollective",
1128 | "url": "https://opencollective.com/browserslist"
1129 | },
1130 | {
1131 | "type": "tidelift",
1132 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1133 | },
1134 | {
1135 | "type": "github",
1136 | "url": "https://github.com/sponsors/ai"
1137 | }
1138 | ],
1139 | "license": "MIT",
1140 | "dependencies": {
1141 | "caniuse-lite": "^1.0.30001629",
1142 | "electron-to-chromium": "^1.4.796",
1143 | "node-releases": "^2.0.14",
1144 | "update-browserslist-db": "^1.0.16"
1145 | },
1146 | "bin": {
1147 | "browserslist": "cli.js"
1148 | },
1149 | "engines": {
1150 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1151 | }
1152 | },
1153 | "node_modules/camelcase-css": {
1154 | "version": "2.0.1",
1155 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1156 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1157 | "dev": true,
1158 | "license": "MIT",
1159 | "engines": {
1160 | "node": ">= 6"
1161 | }
1162 | },
1163 | "node_modules/caniuse-lite": {
1164 | "version": "1.0.30001640",
1165 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz",
1166 | "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==",
1167 | "dev": true,
1168 | "funding": [
1169 | {
1170 | "type": "opencollective",
1171 | "url": "https://opencollective.com/browserslist"
1172 | },
1173 | {
1174 | "type": "tidelift",
1175 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1176 | },
1177 | {
1178 | "type": "github",
1179 | "url": "https://github.com/sponsors/ai"
1180 | }
1181 | ],
1182 | "license": "CC-BY-4.0"
1183 | },
1184 | "node_modules/chokidar": {
1185 | "version": "3.6.0",
1186 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1187 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1188 | "dev": true,
1189 | "license": "MIT",
1190 | "dependencies": {
1191 | "anymatch": "~3.1.2",
1192 | "braces": "~3.0.2",
1193 | "glob-parent": "~5.1.2",
1194 | "is-binary-path": "~2.1.0",
1195 | "is-glob": "~4.0.1",
1196 | "normalize-path": "~3.0.0",
1197 | "readdirp": "~3.6.0"
1198 | },
1199 | "engines": {
1200 | "node": ">= 8.10.0"
1201 | },
1202 | "funding": {
1203 | "url": "https://paulmillr.com/funding/"
1204 | },
1205 | "optionalDependencies": {
1206 | "fsevents": "~2.3.2"
1207 | }
1208 | },
1209 | "node_modules/chokidar/node_modules/glob-parent": {
1210 | "version": "5.1.2",
1211 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1212 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1213 | "dev": true,
1214 | "license": "ISC",
1215 | "dependencies": {
1216 | "is-glob": "^4.0.1"
1217 | },
1218 | "engines": {
1219 | "node": ">= 6"
1220 | }
1221 | },
1222 | "node_modules/color-convert": {
1223 | "version": "2.0.1",
1224 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1225 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1226 | "dev": true,
1227 | "license": "MIT",
1228 | "dependencies": {
1229 | "color-name": "~1.1.4"
1230 | },
1231 | "engines": {
1232 | "node": ">=7.0.0"
1233 | }
1234 | },
1235 | "node_modules/color-name": {
1236 | "version": "1.1.4",
1237 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1238 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1239 | "dev": true,
1240 | "license": "MIT"
1241 | },
1242 | "node_modules/commander": {
1243 | "version": "4.1.1",
1244 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1245 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1246 | "dev": true,
1247 | "license": "MIT",
1248 | "engines": {
1249 | "node": ">= 6"
1250 | }
1251 | },
1252 | "node_modules/computeds": {
1253 | "version": "0.0.1",
1254 | "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
1255 | "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
1256 | "dev": true,
1257 | "license": "MIT"
1258 | },
1259 | "node_modules/cross-spawn": {
1260 | "version": "7.0.3",
1261 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1262 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1263 | "dev": true,
1264 | "license": "MIT",
1265 | "dependencies": {
1266 | "path-key": "^3.1.0",
1267 | "shebang-command": "^2.0.0",
1268 | "which": "^2.0.1"
1269 | },
1270 | "engines": {
1271 | "node": ">= 8"
1272 | }
1273 | },
1274 | "node_modules/cssesc": {
1275 | "version": "3.0.0",
1276 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1277 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1278 | "dev": true,
1279 | "license": "MIT",
1280 | "bin": {
1281 | "cssesc": "bin/cssesc"
1282 | },
1283 | "engines": {
1284 | "node": ">=4"
1285 | }
1286 | },
1287 | "node_modules/csstype": {
1288 | "version": "3.1.3",
1289 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1290 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1291 | "license": "MIT"
1292 | },
1293 | "node_modules/de-indent": {
1294 | "version": "1.0.2",
1295 | "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
1296 | "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
1297 | "dev": true,
1298 | "license": "MIT"
1299 | },
1300 | "node_modules/didyoumean": {
1301 | "version": "1.2.2",
1302 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1303 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1304 | "dev": true,
1305 | "license": "Apache-2.0"
1306 | },
1307 | "node_modules/dlv": {
1308 | "version": "1.1.3",
1309 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1310 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1311 | "dev": true,
1312 | "license": "MIT"
1313 | },
1314 | "node_modules/eastasianwidth": {
1315 | "version": "0.2.0",
1316 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1317 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1318 | "dev": true,
1319 | "license": "MIT"
1320 | },
1321 | "node_modules/electron-to-chromium": {
1322 | "version": "1.4.816",
1323 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz",
1324 | "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==",
1325 | "dev": true,
1326 | "license": "ISC"
1327 | },
1328 | "node_modules/emoji-regex": {
1329 | "version": "9.2.2",
1330 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1331 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1332 | "dev": true,
1333 | "license": "MIT"
1334 | },
1335 | "node_modules/entities": {
1336 | "version": "4.5.0",
1337 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
1338 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
1339 | "license": "BSD-2-Clause",
1340 | "engines": {
1341 | "node": ">=0.12"
1342 | },
1343 | "funding": {
1344 | "url": "https://github.com/fb55/entities?sponsor=1"
1345 | }
1346 | },
1347 | "node_modules/esbuild": {
1348 | "version": "0.21.5",
1349 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
1350 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
1351 | "dev": true,
1352 | "hasInstallScript": true,
1353 | "license": "MIT",
1354 | "bin": {
1355 | "esbuild": "bin/esbuild"
1356 | },
1357 | "engines": {
1358 | "node": ">=12"
1359 | },
1360 | "optionalDependencies": {
1361 | "@esbuild/aix-ppc64": "0.21.5",
1362 | "@esbuild/android-arm": "0.21.5",
1363 | "@esbuild/android-arm64": "0.21.5",
1364 | "@esbuild/android-x64": "0.21.5",
1365 | "@esbuild/darwin-arm64": "0.21.5",
1366 | "@esbuild/darwin-x64": "0.21.5",
1367 | "@esbuild/freebsd-arm64": "0.21.5",
1368 | "@esbuild/freebsd-x64": "0.21.5",
1369 | "@esbuild/linux-arm": "0.21.5",
1370 | "@esbuild/linux-arm64": "0.21.5",
1371 | "@esbuild/linux-ia32": "0.21.5",
1372 | "@esbuild/linux-loong64": "0.21.5",
1373 | "@esbuild/linux-mips64el": "0.21.5",
1374 | "@esbuild/linux-ppc64": "0.21.5",
1375 | "@esbuild/linux-riscv64": "0.21.5",
1376 | "@esbuild/linux-s390x": "0.21.5",
1377 | "@esbuild/linux-x64": "0.21.5",
1378 | "@esbuild/netbsd-x64": "0.21.5",
1379 | "@esbuild/openbsd-x64": "0.21.5",
1380 | "@esbuild/sunos-x64": "0.21.5",
1381 | "@esbuild/win32-arm64": "0.21.5",
1382 | "@esbuild/win32-ia32": "0.21.5",
1383 | "@esbuild/win32-x64": "0.21.5"
1384 | }
1385 | },
1386 | "node_modules/escalade": {
1387 | "version": "3.1.2",
1388 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
1389 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
1390 | "dev": true,
1391 | "license": "MIT",
1392 | "engines": {
1393 | "node": ">=6"
1394 | }
1395 | },
1396 | "node_modules/estree-walker": {
1397 | "version": "2.0.2",
1398 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1399 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1400 | "license": "MIT"
1401 | },
1402 | "node_modules/fast-glob": {
1403 | "version": "3.3.2",
1404 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
1405 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
1406 | "dev": true,
1407 | "license": "MIT",
1408 | "dependencies": {
1409 | "@nodelib/fs.stat": "^2.0.2",
1410 | "@nodelib/fs.walk": "^1.2.3",
1411 | "glob-parent": "^5.1.2",
1412 | "merge2": "^1.3.0",
1413 | "micromatch": "^4.0.4"
1414 | },
1415 | "engines": {
1416 | "node": ">=8.6.0"
1417 | }
1418 | },
1419 | "node_modules/fast-glob/node_modules/glob-parent": {
1420 | "version": "5.1.2",
1421 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1422 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1423 | "dev": true,
1424 | "license": "ISC",
1425 | "dependencies": {
1426 | "is-glob": "^4.0.1"
1427 | },
1428 | "engines": {
1429 | "node": ">= 6"
1430 | }
1431 | },
1432 | "node_modules/fastq": {
1433 | "version": "1.17.1",
1434 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
1435 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
1436 | "dev": true,
1437 | "license": "ISC",
1438 | "dependencies": {
1439 | "reusify": "^1.0.4"
1440 | }
1441 | },
1442 | "node_modules/fill-range": {
1443 | "version": "7.1.1",
1444 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1445 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1446 | "dev": true,
1447 | "license": "MIT",
1448 | "dependencies": {
1449 | "to-regex-range": "^5.0.1"
1450 | },
1451 | "engines": {
1452 | "node": ">=8"
1453 | }
1454 | },
1455 | "node_modules/foreground-child": {
1456 | "version": "3.2.1",
1457 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
1458 | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
1459 | "dev": true,
1460 | "license": "ISC",
1461 | "dependencies": {
1462 | "cross-spawn": "^7.0.0",
1463 | "signal-exit": "^4.0.1"
1464 | },
1465 | "engines": {
1466 | "node": ">=14"
1467 | },
1468 | "funding": {
1469 | "url": "https://github.com/sponsors/isaacs"
1470 | }
1471 | },
1472 | "node_modules/fraction.js": {
1473 | "version": "4.3.7",
1474 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
1475 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
1476 | "dev": true,
1477 | "license": "MIT",
1478 | "engines": {
1479 | "node": "*"
1480 | },
1481 | "funding": {
1482 | "type": "patreon",
1483 | "url": "https://github.com/sponsors/rawify"
1484 | }
1485 | },
1486 | "node_modules/fsevents": {
1487 | "version": "2.3.3",
1488 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1489 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1490 | "dev": true,
1491 | "hasInstallScript": true,
1492 | "license": "MIT",
1493 | "optional": true,
1494 | "os": [
1495 | "darwin"
1496 | ],
1497 | "engines": {
1498 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1499 | }
1500 | },
1501 | "node_modules/function-bind": {
1502 | "version": "1.1.2",
1503 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1504 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1505 | "dev": true,
1506 | "license": "MIT",
1507 | "funding": {
1508 | "url": "https://github.com/sponsors/ljharb"
1509 | }
1510 | },
1511 | "node_modules/glob": {
1512 | "version": "10.4.2",
1513 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
1514 | "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
1515 | "dev": true,
1516 | "license": "ISC",
1517 | "dependencies": {
1518 | "foreground-child": "^3.1.0",
1519 | "jackspeak": "^3.1.2",
1520 | "minimatch": "^9.0.4",
1521 | "minipass": "^7.1.2",
1522 | "package-json-from-dist": "^1.0.0",
1523 | "path-scurry": "^1.11.1"
1524 | },
1525 | "bin": {
1526 | "glob": "dist/esm/bin.mjs"
1527 | },
1528 | "engines": {
1529 | "node": ">=16 || 14 >=14.18"
1530 | },
1531 | "funding": {
1532 | "url": "https://github.com/sponsors/isaacs"
1533 | }
1534 | },
1535 | "node_modules/glob-parent": {
1536 | "version": "6.0.2",
1537 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1538 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1539 | "dev": true,
1540 | "license": "ISC",
1541 | "dependencies": {
1542 | "is-glob": "^4.0.3"
1543 | },
1544 | "engines": {
1545 | "node": ">=10.13.0"
1546 | }
1547 | },
1548 | "node_modules/hasown": {
1549 | "version": "2.0.2",
1550 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1551 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1552 | "dev": true,
1553 | "license": "MIT",
1554 | "dependencies": {
1555 | "function-bind": "^1.1.2"
1556 | },
1557 | "engines": {
1558 | "node": ">= 0.4"
1559 | }
1560 | },
1561 | "node_modules/he": {
1562 | "version": "1.2.0",
1563 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1564 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1565 | "dev": true,
1566 | "license": "MIT",
1567 | "bin": {
1568 | "he": "bin/he"
1569 | }
1570 | },
1571 | "node_modules/is-binary-path": {
1572 | "version": "2.1.0",
1573 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1574 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1575 | "dev": true,
1576 | "license": "MIT",
1577 | "dependencies": {
1578 | "binary-extensions": "^2.0.0"
1579 | },
1580 | "engines": {
1581 | "node": ">=8"
1582 | }
1583 | },
1584 | "node_modules/is-core-module": {
1585 | "version": "2.14.0",
1586 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
1587 | "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
1588 | "dev": true,
1589 | "license": "MIT",
1590 | "dependencies": {
1591 | "hasown": "^2.0.2"
1592 | },
1593 | "engines": {
1594 | "node": ">= 0.4"
1595 | },
1596 | "funding": {
1597 | "url": "https://github.com/sponsors/ljharb"
1598 | }
1599 | },
1600 | "node_modules/is-extglob": {
1601 | "version": "2.1.1",
1602 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1603 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1604 | "dev": true,
1605 | "license": "MIT",
1606 | "engines": {
1607 | "node": ">=0.10.0"
1608 | }
1609 | },
1610 | "node_modules/is-fullwidth-code-point": {
1611 | "version": "3.0.0",
1612 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1613 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1614 | "dev": true,
1615 | "license": "MIT",
1616 | "engines": {
1617 | "node": ">=8"
1618 | }
1619 | },
1620 | "node_modules/is-glob": {
1621 | "version": "4.0.3",
1622 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1623 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1624 | "dev": true,
1625 | "license": "MIT",
1626 | "dependencies": {
1627 | "is-extglob": "^2.1.1"
1628 | },
1629 | "engines": {
1630 | "node": ">=0.10.0"
1631 | }
1632 | },
1633 | "node_modules/is-number": {
1634 | "version": "7.0.0",
1635 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1636 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1637 | "dev": true,
1638 | "license": "MIT",
1639 | "engines": {
1640 | "node": ">=0.12.0"
1641 | }
1642 | },
1643 | "node_modules/isexe": {
1644 | "version": "2.0.0",
1645 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1646 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1647 | "dev": true,
1648 | "license": "ISC"
1649 | },
1650 | "node_modules/jackspeak": {
1651 | "version": "3.4.0",
1652 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
1653 | "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
1654 | "dev": true,
1655 | "license": "BlueOak-1.0.0",
1656 | "dependencies": {
1657 | "@isaacs/cliui": "^8.0.2"
1658 | },
1659 | "engines": {
1660 | "node": ">=14"
1661 | },
1662 | "funding": {
1663 | "url": "https://github.com/sponsors/isaacs"
1664 | },
1665 | "optionalDependencies": {
1666 | "@pkgjs/parseargs": "^0.11.0"
1667 | }
1668 | },
1669 | "node_modules/jiti": {
1670 | "version": "1.21.6",
1671 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
1672 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
1673 | "dev": true,
1674 | "license": "MIT",
1675 | "bin": {
1676 | "jiti": "bin/jiti.js"
1677 | }
1678 | },
1679 | "node_modules/json-parse-even-better-errors": {
1680 | "version": "3.0.2",
1681 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
1682 | "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
1683 | "dev": true,
1684 | "license": "MIT",
1685 | "engines": {
1686 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
1687 | }
1688 | },
1689 | "node_modules/lilconfig": {
1690 | "version": "2.1.0",
1691 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
1692 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
1693 | "dev": true,
1694 | "license": "MIT",
1695 | "engines": {
1696 | "node": ">=10"
1697 | }
1698 | },
1699 | "node_modules/lines-and-columns": {
1700 | "version": "1.2.4",
1701 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1702 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1703 | "dev": true,
1704 | "license": "MIT"
1705 | },
1706 | "node_modules/lru-cache": {
1707 | "version": "10.3.0",
1708 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
1709 | "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
1710 | "dev": true,
1711 | "license": "ISC",
1712 | "engines": {
1713 | "node": "14 || >=16.14"
1714 | }
1715 | },
1716 | "node_modules/magic-string": {
1717 | "version": "0.30.10",
1718 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
1719 | "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
1720 | "license": "MIT",
1721 | "dependencies": {
1722 | "@jridgewell/sourcemap-codec": "^1.4.15"
1723 | }
1724 | },
1725 | "node_modules/memorystream": {
1726 | "version": "0.3.1",
1727 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
1728 | "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
1729 | "dev": true,
1730 | "engines": {
1731 | "node": ">= 0.10.0"
1732 | }
1733 | },
1734 | "node_modules/merge2": {
1735 | "version": "1.4.1",
1736 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1737 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1738 | "dev": true,
1739 | "license": "MIT",
1740 | "engines": {
1741 | "node": ">= 8"
1742 | }
1743 | },
1744 | "node_modules/micromatch": {
1745 | "version": "4.0.7",
1746 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
1747 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
1748 | "dev": true,
1749 | "license": "MIT",
1750 | "dependencies": {
1751 | "braces": "^3.0.3",
1752 | "picomatch": "^2.3.1"
1753 | },
1754 | "engines": {
1755 | "node": ">=8.6"
1756 | }
1757 | },
1758 | "node_modules/minimatch": {
1759 | "version": "9.0.5",
1760 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1761 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1762 | "dev": true,
1763 | "license": "ISC",
1764 | "dependencies": {
1765 | "brace-expansion": "^2.0.1"
1766 | },
1767 | "engines": {
1768 | "node": ">=16 || 14 >=14.17"
1769 | },
1770 | "funding": {
1771 | "url": "https://github.com/sponsors/isaacs"
1772 | }
1773 | },
1774 | "node_modules/minipass": {
1775 | "version": "7.1.2",
1776 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1777 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1778 | "dev": true,
1779 | "license": "ISC",
1780 | "engines": {
1781 | "node": ">=16 || 14 >=14.17"
1782 | }
1783 | },
1784 | "node_modules/muggle-string": {
1785 | "version": "0.4.1",
1786 | "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
1787 | "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
1788 | "dev": true,
1789 | "license": "MIT"
1790 | },
1791 | "node_modules/mz": {
1792 | "version": "2.7.0",
1793 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1794 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1795 | "dev": true,
1796 | "license": "MIT",
1797 | "dependencies": {
1798 | "any-promise": "^1.0.0",
1799 | "object-assign": "^4.0.1",
1800 | "thenify-all": "^1.0.0"
1801 | }
1802 | },
1803 | "node_modules/nanoid": {
1804 | "version": "3.3.7",
1805 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1806 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
1807 | "funding": [
1808 | {
1809 | "type": "github",
1810 | "url": "https://github.com/sponsors/ai"
1811 | }
1812 | ],
1813 | "license": "MIT",
1814 | "bin": {
1815 | "nanoid": "bin/nanoid.cjs"
1816 | },
1817 | "engines": {
1818 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1819 | }
1820 | },
1821 | "node_modules/node-releases": {
1822 | "version": "2.0.14",
1823 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
1824 | "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
1825 | "dev": true,
1826 | "license": "MIT"
1827 | },
1828 | "node_modules/normalize-path": {
1829 | "version": "3.0.0",
1830 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1831 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1832 | "dev": true,
1833 | "license": "MIT",
1834 | "engines": {
1835 | "node": ">=0.10.0"
1836 | }
1837 | },
1838 | "node_modules/normalize-range": {
1839 | "version": "0.1.2",
1840 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1841 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
1842 | "dev": true,
1843 | "license": "MIT",
1844 | "engines": {
1845 | "node": ">=0.10.0"
1846 | }
1847 | },
1848 | "node_modules/npm-normalize-package-bin": {
1849 | "version": "3.0.1",
1850 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
1851 | "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
1852 | "dev": true,
1853 | "license": "ISC",
1854 | "engines": {
1855 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
1856 | }
1857 | },
1858 | "node_modules/npm-run-all2": {
1859 | "version": "6.2.2",
1860 | "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz",
1861 | "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==",
1862 | "dev": true,
1863 | "license": "MIT",
1864 | "dependencies": {
1865 | "ansi-styles": "^6.2.1",
1866 | "cross-spawn": "^7.0.3",
1867 | "memorystream": "^0.3.1",
1868 | "minimatch": "^9.0.0",
1869 | "pidtree": "^0.6.0",
1870 | "read-package-json-fast": "^3.0.2",
1871 | "shell-quote": "^1.7.3"
1872 | },
1873 | "bin": {
1874 | "npm-run-all": "bin/npm-run-all/index.js",
1875 | "npm-run-all2": "bin/npm-run-all/index.js",
1876 | "run-p": "bin/run-p/index.js",
1877 | "run-s": "bin/run-s/index.js"
1878 | },
1879 | "engines": {
1880 | "node": "^14.18.0 || ^16.13.0 || >=18.0.0",
1881 | "npm": ">= 8"
1882 | }
1883 | },
1884 | "node_modules/object-assign": {
1885 | "version": "4.1.1",
1886 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1887 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1888 | "dev": true,
1889 | "license": "MIT",
1890 | "engines": {
1891 | "node": ">=0.10.0"
1892 | }
1893 | },
1894 | "node_modules/object-hash": {
1895 | "version": "3.0.0",
1896 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1897 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1898 | "dev": true,
1899 | "license": "MIT",
1900 | "engines": {
1901 | "node": ">= 6"
1902 | }
1903 | },
1904 | "node_modules/package-json-from-dist": {
1905 | "version": "1.0.0",
1906 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
1907 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
1908 | "dev": true,
1909 | "license": "BlueOak-1.0.0"
1910 | },
1911 | "node_modules/path-browserify": {
1912 | "version": "1.0.1",
1913 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
1914 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
1915 | "dev": true,
1916 | "license": "MIT"
1917 | },
1918 | "node_modules/path-key": {
1919 | "version": "3.1.1",
1920 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1921 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1922 | "dev": true,
1923 | "license": "MIT",
1924 | "engines": {
1925 | "node": ">=8"
1926 | }
1927 | },
1928 | "node_modules/path-parse": {
1929 | "version": "1.0.7",
1930 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1931 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1932 | "dev": true,
1933 | "license": "MIT"
1934 | },
1935 | "node_modules/path-scurry": {
1936 | "version": "1.11.1",
1937 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1938 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1939 | "dev": true,
1940 | "license": "BlueOak-1.0.0",
1941 | "dependencies": {
1942 | "lru-cache": "^10.2.0",
1943 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1944 | },
1945 | "engines": {
1946 | "node": ">=16 || 14 >=14.18"
1947 | },
1948 | "funding": {
1949 | "url": "https://github.com/sponsors/isaacs"
1950 | }
1951 | },
1952 | "node_modules/picocolors": {
1953 | "version": "1.0.1",
1954 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
1955 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
1956 | "license": "ISC"
1957 | },
1958 | "node_modules/picomatch": {
1959 | "version": "2.3.1",
1960 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1961 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1962 | "dev": true,
1963 | "license": "MIT",
1964 | "engines": {
1965 | "node": ">=8.6"
1966 | },
1967 | "funding": {
1968 | "url": "https://github.com/sponsors/jonschlinkert"
1969 | }
1970 | },
1971 | "node_modules/pidtree": {
1972 | "version": "0.6.0",
1973 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
1974 | "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
1975 | "dev": true,
1976 | "license": "MIT",
1977 | "bin": {
1978 | "pidtree": "bin/pidtree.js"
1979 | },
1980 | "engines": {
1981 | "node": ">=0.10"
1982 | }
1983 | },
1984 | "node_modules/pify": {
1985 | "version": "2.3.0",
1986 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1987 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1988 | "dev": true,
1989 | "license": "MIT",
1990 | "engines": {
1991 | "node": ">=0.10.0"
1992 | }
1993 | },
1994 | "node_modules/pirates": {
1995 | "version": "4.0.6",
1996 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1997 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1998 | "dev": true,
1999 | "license": "MIT",
2000 | "engines": {
2001 | "node": ">= 6"
2002 | }
2003 | },
2004 | "node_modules/postcss": {
2005 | "version": "8.4.39",
2006 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
2007 | "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
2008 | "funding": [
2009 | {
2010 | "type": "opencollective",
2011 | "url": "https://opencollective.com/postcss/"
2012 | },
2013 | {
2014 | "type": "tidelift",
2015 | "url": "https://tidelift.com/funding/github/npm/postcss"
2016 | },
2017 | {
2018 | "type": "github",
2019 | "url": "https://github.com/sponsors/ai"
2020 | }
2021 | ],
2022 | "license": "MIT",
2023 | "dependencies": {
2024 | "nanoid": "^3.3.7",
2025 | "picocolors": "^1.0.1",
2026 | "source-map-js": "^1.2.0"
2027 | },
2028 | "engines": {
2029 | "node": "^10 || ^12 || >=14"
2030 | }
2031 | },
2032 | "node_modules/postcss-import": {
2033 | "version": "15.1.0",
2034 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
2035 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
2036 | "dev": true,
2037 | "license": "MIT",
2038 | "dependencies": {
2039 | "postcss-value-parser": "^4.0.0",
2040 | "read-cache": "^1.0.0",
2041 | "resolve": "^1.1.7"
2042 | },
2043 | "engines": {
2044 | "node": ">=14.0.0"
2045 | },
2046 | "peerDependencies": {
2047 | "postcss": "^8.0.0"
2048 | }
2049 | },
2050 | "node_modules/postcss-js": {
2051 | "version": "4.0.1",
2052 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
2053 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
2054 | "dev": true,
2055 | "license": "MIT",
2056 | "dependencies": {
2057 | "camelcase-css": "^2.0.1"
2058 | },
2059 | "engines": {
2060 | "node": "^12 || ^14 || >= 16"
2061 | },
2062 | "funding": {
2063 | "type": "opencollective",
2064 | "url": "https://opencollective.com/postcss/"
2065 | },
2066 | "peerDependencies": {
2067 | "postcss": "^8.4.21"
2068 | }
2069 | },
2070 | "node_modules/postcss-load-config": {
2071 | "version": "4.0.2",
2072 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
2073 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
2074 | "dev": true,
2075 | "funding": [
2076 | {
2077 | "type": "opencollective",
2078 | "url": "https://opencollective.com/postcss/"
2079 | },
2080 | {
2081 | "type": "github",
2082 | "url": "https://github.com/sponsors/ai"
2083 | }
2084 | ],
2085 | "license": "MIT",
2086 | "dependencies": {
2087 | "lilconfig": "^3.0.0",
2088 | "yaml": "^2.3.4"
2089 | },
2090 | "engines": {
2091 | "node": ">= 14"
2092 | },
2093 | "peerDependencies": {
2094 | "postcss": ">=8.0.9",
2095 | "ts-node": ">=9.0.0"
2096 | },
2097 | "peerDependenciesMeta": {
2098 | "postcss": {
2099 | "optional": true
2100 | },
2101 | "ts-node": {
2102 | "optional": true
2103 | }
2104 | }
2105 | },
2106 | "node_modules/postcss-load-config/node_modules/lilconfig": {
2107 | "version": "3.1.2",
2108 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
2109 | "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
2110 | "dev": true,
2111 | "license": "MIT",
2112 | "engines": {
2113 | "node": ">=14"
2114 | },
2115 | "funding": {
2116 | "url": "https://github.com/sponsors/antonk52"
2117 | }
2118 | },
2119 | "node_modules/postcss-nested": {
2120 | "version": "6.0.1",
2121 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
2122 | "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
2123 | "dev": true,
2124 | "license": "MIT",
2125 | "dependencies": {
2126 | "postcss-selector-parser": "^6.0.11"
2127 | },
2128 | "engines": {
2129 | "node": ">=12.0"
2130 | },
2131 | "funding": {
2132 | "type": "opencollective",
2133 | "url": "https://opencollective.com/postcss/"
2134 | },
2135 | "peerDependencies": {
2136 | "postcss": "^8.2.14"
2137 | }
2138 | },
2139 | "node_modules/postcss-selector-parser": {
2140 | "version": "6.1.0",
2141 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
2142 | "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
2143 | "dev": true,
2144 | "license": "MIT",
2145 | "dependencies": {
2146 | "cssesc": "^3.0.0",
2147 | "util-deprecate": "^1.0.2"
2148 | },
2149 | "engines": {
2150 | "node": ">=4"
2151 | }
2152 | },
2153 | "node_modules/postcss-value-parser": {
2154 | "version": "4.2.0",
2155 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2156 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2157 | "dev": true,
2158 | "license": "MIT"
2159 | },
2160 | "node_modules/queue-microtask": {
2161 | "version": "1.2.3",
2162 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2163 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2164 | "dev": true,
2165 | "funding": [
2166 | {
2167 | "type": "github",
2168 | "url": "https://github.com/sponsors/feross"
2169 | },
2170 | {
2171 | "type": "patreon",
2172 | "url": "https://www.patreon.com/feross"
2173 | },
2174 | {
2175 | "type": "consulting",
2176 | "url": "https://feross.org/support"
2177 | }
2178 | ],
2179 | "license": "MIT"
2180 | },
2181 | "node_modules/read-cache": {
2182 | "version": "1.0.0",
2183 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2184 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2185 | "dev": true,
2186 | "license": "MIT",
2187 | "dependencies": {
2188 | "pify": "^2.3.0"
2189 | }
2190 | },
2191 | "node_modules/read-package-json-fast": {
2192 | "version": "3.0.2",
2193 | "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
2194 | "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
2195 | "dev": true,
2196 | "license": "ISC",
2197 | "dependencies": {
2198 | "json-parse-even-better-errors": "^3.0.0",
2199 | "npm-normalize-package-bin": "^3.0.0"
2200 | },
2201 | "engines": {
2202 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
2203 | }
2204 | },
2205 | "node_modules/readdirp": {
2206 | "version": "3.6.0",
2207 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2208 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2209 | "dev": true,
2210 | "license": "MIT",
2211 | "dependencies": {
2212 | "picomatch": "^2.2.1"
2213 | },
2214 | "engines": {
2215 | "node": ">=8.10.0"
2216 | }
2217 | },
2218 | "node_modules/resolve": {
2219 | "version": "1.22.8",
2220 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
2221 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
2222 | "dev": true,
2223 | "license": "MIT",
2224 | "dependencies": {
2225 | "is-core-module": "^2.13.0",
2226 | "path-parse": "^1.0.7",
2227 | "supports-preserve-symlinks-flag": "^1.0.0"
2228 | },
2229 | "bin": {
2230 | "resolve": "bin/resolve"
2231 | },
2232 | "funding": {
2233 | "url": "https://github.com/sponsors/ljharb"
2234 | }
2235 | },
2236 | "node_modules/reusify": {
2237 | "version": "1.0.4",
2238 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2239 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2240 | "dev": true,
2241 | "license": "MIT",
2242 | "engines": {
2243 | "iojs": ">=1.0.0",
2244 | "node": ">=0.10.0"
2245 | }
2246 | },
2247 | "node_modules/rollup": {
2248 | "version": "4.18.0",
2249 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
2250 | "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
2251 | "dev": true,
2252 | "license": "MIT",
2253 | "dependencies": {
2254 | "@types/estree": "1.0.5"
2255 | },
2256 | "bin": {
2257 | "rollup": "dist/bin/rollup"
2258 | },
2259 | "engines": {
2260 | "node": ">=18.0.0",
2261 | "npm": ">=8.0.0"
2262 | },
2263 | "optionalDependencies": {
2264 | "@rollup/rollup-android-arm-eabi": "4.18.0",
2265 | "@rollup/rollup-android-arm64": "4.18.0",
2266 | "@rollup/rollup-darwin-arm64": "4.18.0",
2267 | "@rollup/rollup-darwin-x64": "4.18.0",
2268 | "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
2269 | "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
2270 | "@rollup/rollup-linux-arm64-gnu": "4.18.0",
2271 | "@rollup/rollup-linux-arm64-musl": "4.18.0",
2272 | "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
2273 | "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
2274 | "@rollup/rollup-linux-s390x-gnu": "4.18.0",
2275 | "@rollup/rollup-linux-x64-gnu": "4.18.0",
2276 | "@rollup/rollup-linux-x64-musl": "4.18.0",
2277 | "@rollup/rollup-win32-arm64-msvc": "4.18.0",
2278 | "@rollup/rollup-win32-ia32-msvc": "4.18.0",
2279 | "@rollup/rollup-win32-x64-msvc": "4.18.0",
2280 | "fsevents": "~2.3.2"
2281 | }
2282 | },
2283 | "node_modules/run-parallel": {
2284 | "version": "1.2.0",
2285 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2286 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2287 | "dev": true,
2288 | "funding": [
2289 | {
2290 | "type": "github",
2291 | "url": "https://github.com/sponsors/feross"
2292 | },
2293 | {
2294 | "type": "patreon",
2295 | "url": "https://www.patreon.com/feross"
2296 | },
2297 | {
2298 | "type": "consulting",
2299 | "url": "https://feross.org/support"
2300 | }
2301 | ],
2302 | "license": "MIT",
2303 | "dependencies": {
2304 | "queue-microtask": "^1.2.2"
2305 | }
2306 | },
2307 | "node_modules/semver": {
2308 | "version": "7.6.2",
2309 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
2310 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
2311 | "dev": true,
2312 | "license": "ISC",
2313 | "bin": {
2314 | "semver": "bin/semver.js"
2315 | },
2316 | "engines": {
2317 | "node": ">=10"
2318 | }
2319 | },
2320 | "node_modules/shebang-command": {
2321 | "version": "2.0.0",
2322 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2323 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2324 | "dev": true,
2325 | "license": "MIT",
2326 | "dependencies": {
2327 | "shebang-regex": "^3.0.0"
2328 | },
2329 | "engines": {
2330 | "node": ">=8"
2331 | }
2332 | },
2333 | "node_modules/shebang-regex": {
2334 | "version": "3.0.0",
2335 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2336 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2337 | "dev": true,
2338 | "license": "MIT",
2339 | "engines": {
2340 | "node": ">=8"
2341 | }
2342 | },
2343 | "node_modules/shell-quote": {
2344 | "version": "1.8.1",
2345 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
2346 | "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
2347 | "dev": true,
2348 | "license": "MIT",
2349 | "funding": {
2350 | "url": "https://github.com/sponsors/ljharb"
2351 | }
2352 | },
2353 | "node_modules/signal-exit": {
2354 | "version": "4.1.0",
2355 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2356 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2357 | "dev": true,
2358 | "license": "ISC",
2359 | "engines": {
2360 | "node": ">=14"
2361 | },
2362 | "funding": {
2363 | "url": "https://github.com/sponsors/isaacs"
2364 | }
2365 | },
2366 | "node_modules/source-map-js": {
2367 | "version": "1.2.0",
2368 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
2369 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
2370 | "license": "BSD-3-Clause",
2371 | "engines": {
2372 | "node": ">=0.10.0"
2373 | }
2374 | },
2375 | "node_modules/string-width": {
2376 | "version": "5.1.2",
2377 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2378 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2379 | "dev": true,
2380 | "license": "MIT",
2381 | "dependencies": {
2382 | "eastasianwidth": "^0.2.0",
2383 | "emoji-regex": "^9.2.2",
2384 | "strip-ansi": "^7.0.1"
2385 | },
2386 | "engines": {
2387 | "node": ">=12"
2388 | },
2389 | "funding": {
2390 | "url": "https://github.com/sponsors/sindresorhus"
2391 | }
2392 | },
2393 | "node_modules/string-width-cjs": {
2394 | "name": "string-width",
2395 | "version": "4.2.3",
2396 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2397 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2398 | "dev": true,
2399 | "license": "MIT",
2400 | "dependencies": {
2401 | "emoji-regex": "^8.0.0",
2402 | "is-fullwidth-code-point": "^3.0.0",
2403 | "strip-ansi": "^6.0.1"
2404 | },
2405 | "engines": {
2406 | "node": ">=8"
2407 | }
2408 | },
2409 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
2410 | "version": "5.0.1",
2411 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2412 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2413 | "dev": true,
2414 | "license": "MIT",
2415 | "engines": {
2416 | "node": ">=8"
2417 | }
2418 | },
2419 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
2420 | "version": "8.0.0",
2421 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2422 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2423 | "dev": true,
2424 | "license": "MIT"
2425 | },
2426 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
2427 | "version": "6.0.1",
2428 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2429 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2430 | "dev": true,
2431 | "license": "MIT",
2432 | "dependencies": {
2433 | "ansi-regex": "^5.0.1"
2434 | },
2435 | "engines": {
2436 | "node": ">=8"
2437 | }
2438 | },
2439 | "node_modules/strip-ansi": {
2440 | "version": "7.1.0",
2441 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2442 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2443 | "dev": true,
2444 | "license": "MIT",
2445 | "dependencies": {
2446 | "ansi-regex": "^6.0.1"
2447 | },
2448 | "engines": {
2449 | "node": ">=12"
2450 | },
2451 | "funding": {
2452 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2453 | }
2454 | },
2455 | "node_modules/strip-ansi-cjs": {
2456 | "name": "strip-ansi",
2457 | "version": "6.0.1",
2458 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2459 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2460 | "dev": true,
2461 | "license": "MIT",
2462 | "dependencies": {
2463 | "ansi-regex": "^5.0.1"
2464 | },
2465 | "engines": {
2466 | "node": ">=8"
2467 | }
2468 | },
2469 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
2470 | "version": "5.0.1",
2471 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2472 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2473 | "dev": true,
2474 | "license": "MIT",
2475 | "engines": {
2476 | "node": ">=8"
2477 | }
2478 | },
2479 | "node_modules/sucrase": {
2480 | "version": "3.35.0",
2481 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2482 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2483 | "dev": true,
2484 | "license": "MIT",
2485 | "dependencies": {
2486 | "@jridgewell/gen-mapping": "^0.3.2",
2487 | "commander": "^4.0.0",
2488 | "glob": "^10.3.10",
2489 | "lines-and-columns": "^1.1.6",
2490 | "mz": "^2.7.0",
2491 | "pirates": "^4.0.1",
2492 | "ts-interface-checker": "^0.1.9"
2493 | },
2494 | "bin": {
2495 | "sucrase": "bin/sucrase",
2496 | "sucrase-node": "bin/sucrase-node"
2497 | },
2498 | "engines": {
2499 | "node": ">=16 || 14 >=14.17"
2500 | }
2501 | },
2502 | "node_modules/supports-preserve-symlinks-flag": {
2503 | "version": "1.0.0",
2504 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2505 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2506 | "dev": true,
2507 | "license": "MIT",
2508 | "engines": {
2509 | "node": ">= 0.4"
2510 | },
2511 | "funding": {
2512 | "url": "https://github.com/sponsors/ljharb"
2513 | }
2514 | },
2515 | "node_modules/tailwindcss": {
2516 | "version": "3.4.4",
2517 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz",
2518 | "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==",
2519 | "dev": true,
2520 | "license": "MIT",
2521 | "dependencies": {
2522 | "@alloc/quick-lru": "^5.2.0",
2523 | "arg": "^5.0.2",
2524 | "chokidar": "^3.5.3",
2525 | "didyoumean": "^1.2.2",
2526 | "dlv": "^1.1.3",
2527 | "fast-glob": "^3.3.0",
2528 | "glob-parent": "^6.0.2",
2529 | "is-glob": "^4.0.3",
2530 | "jiti": "^1.21.0",
2531 | "lilconfig": "^2.1.0",
2532 | "micromatch": "^4.0.5",
2533 | "normalize-path": "^3.0.0",
2534 | "object-hash": "^3.0.0",
2535 | "picocolors": "^1.0.0",
2536 | "postcss": "^8.4.23",
2537 | "postcss-import": "^15.1.0",
2538 | "postcss-js": "^4.0.1",
2539 | "postcss-load-config": "^4.0.1",
2540 | "postcss-nested": "^6.0.1",
2541 | "postcss-selector-parser": "^6.0.11",
2542 | "resolve": "^1.22.2",
2543 | "sucrase": "^3.32.0"
2544 | },
2545 | "bin": {
2546 | "tailwind": "lib/cli.js",
2547 | "tailwindcss": "lib/cli.js"
2548 | },
2549 | "engines": {
2550 | "node": ">=14.0.0"
2551 | }
2552 | },
2553 | "node_modules/thenify": {
2554 | "version": "3.3.1",
2555 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2556 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2557 | "dev": true,
2558 | "license": "MIT",
2559 | "dependencies": {
2560 | "any-promise": "^1.0.0"
2561 | }
2562 | },
2563 | "node_modules/thenify-all": {
2564 | "version": "1.6.0",
2565 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2566 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2567 | "dev": true,
2568 | "license": "MIT",
2569 | "dependencies": {
2570 | "thenify": ">= 3.1.0 < 4"
2571 | },
2572 | "engines": {
2573 | "node": ">=0.8"
2574 | }
2575 | },
2576 | "node_modules/to-regex-range": {
2577 | "version": "5.0.1",
2578 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2579 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2580 | "dev": true,
2581 | "license": "MIT",
2582 | "dependencies": {
2583 | "is-number": "^7.0.0"
2584 | },
2585 | "engines": {
2586 | "node": ">=8.0"
2587 | }
2588 | },
2589 | "node_modules/ts-interface-checker": {
2590 | "version": "0.1.13",
2591 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2592 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2593 | "dev": true,
2594 | "license": "Apache-2.0"
2595 | },
2596 | "node_modules/typescript": {
2597 | "version": "5.4.5",
2598 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
2599 | "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
2600 | "devOptional": true,
2601 | "license": "Apache-2.0",
2602 | "bin": {
2603 | "tsc": "bin/tsc",
2604 | "tsserver": "bin/tsserver"
2605 | },
2606 | "engines": {
2607 | "node": ">=14.17"
2608 | }
2609 | },
2610 | "node_modules/undici-types": {
2611 | "version": "5.26.5",
2612 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
2613 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
2614 | "dev": true,
2615 | "license": "MIT"
2616 | },
2617 | "node_modules/update-browserslist-db": {
2618 | "version": "1.1.0",
2619 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
2620 | "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
2621 | "dev": true,
2622 | "funding": [
2623 | {
2624 | "type": "opencollective",
2625 | "url": "https://opencollective.com/browserslist"
2626 | },
2627 | {
2628 | "type": "tidelift",
2629 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2630 | },
2631 | {
2632 | "type": "github",
2633 | "url": "https://github.com/sponsors/ai"
2634 | }
2635 | ],
2636 | "license": "MIT",
2637 | "dependencies": {
2638 | "escalade": "^3.1.2",
2639 | "picocolors": "^1.0.1"
2640 | },
2641 | "bin": {
2642 | "update-browserslist-db": "cli.js"
2643 | },
2644 | "peerDependencies": {
2645 | "browserslist": ">= 4.21.0"
2646 | }
2647 | },
2648 | "node_modules/util-deprecate": {
2649 | "version": "1.0.2",
2650 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2651 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2652 | "dev": true,
2653 | "license": "MIT"
2654 | },
2655 | "node_modules/vite": {
2656 | "version": "5.3.3",
2657 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz",
2658 | "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==",
2659 | "dev": true,
2660 | "license": "MIT",
2661 | "dependencies": {
2662 | "esbuild": "^0.21.3",
2663 | "postcss": "^8.4.39",
2664 | "rollup": "^4.13.0"
2665 | },
2666 | "bin": {
2667 | "vite": "bin/vite.js"
2668 | },
2669 | "engines": {
2670 | "node": "^18.0.0 || >=20.0.0"
2671 | },
2672 | "funding": {
2673 | "url": "https://github.com/vitejs/vite?sponsor=1"
2674 | },
2675 | "optionalDependencies": {
2676 | "fsevents": "~2.3.3"
2677 | },
2678 | "peerDependencies": {
2679 | "@types/node": "^18.0.0 || >=20.0.0",
2680 | "less": "*",
2681 | "lightningcss": "^1.21.0",
2682 | "sass": "*",
2683 | "stylus": "*",
2684 | "sugarss": "*",
2685 | "terser": "^5.4.0"
2686 | },
2687 | "peerDependenciesMeta": {
2688 | "@types/node": {
2689 | "optional": true
2690 | },
2691 | "less": {
2692 | "optional": true
2693 | },
2694 | "lightningcss": {
2695 | "optional": true
2696 | },
2697 | "sass": {
2698 | "optional": true
2699 | },
2700 | "stylus": {
2701 | "optional": true
2702 | },
2703 | "sugarss": {
2704 | "optional": true
2705 | },
2706 | "terser": {
2707 | "optional": true
2708 | }
2709 | }
2710 | },
2711 | "node_modules/vscode-uri": {
2712 | "version": "3.0.8",
2713 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
2714 | "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
2715 | "dev": true,
2716 | "license": "MIT"
2717 | },
2718 | "node_modules/vue": {
2719 | "version": "3.4.31",
2720 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.31.tgz",
2721 | "integrity": "sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==",
2722 | "license": "MIT",
2723 | "dependencies": {
2724 | "@vue/compiler-dom": "3.4.31",
2725 | "@vue/compiler-sfc": "3.4.31",
2726 | "@vue/runtime-dom": "3.4.31",
2727 | "@vue/server-renderer": "3.4.31",
2728 | "@vue/shared": "3.4.31"
2729 | },
2730 | "peerDependencies": {
2731 | "typescript": "*"
2732 | },
2733 | "peerDependenciesMeta": {
2734 | "typescript": {
2735 | "optional": true
2736 | }
2737 | }
2738 | },
2739 | "node_modules/vue-template-compiler": {
2740 | "version": "2.7.16",
2741 | "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
2742 | "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
2743 | "dev": true,
2744 | "license": "MIT",
2745 | "dependencies": {
2746 | "de-indent": "^1.0.2",
2747 | "he": "^1.2.0"
2748 | }
2749 | },
2750 | "node_modules/vue-tsc": {
2751 | "version": "2.0.26",
2752 | "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.26.tgz",
2753 | "integrity": "sha512-tOhuwy2bIXbMhz82ef37qeiaQHMXKQkD6mOF6CCPl3/uYtST3l6fdNyfMxipudrQTxTfXVPlgJdMENBFfC1CfQ==",
2754 | "dev": true,
2755 | "license": "MIT",
2756 | "dependencies": {
2757 | "@volar/typescript": "~2.4.0-alpha.15",
2758 | "@vue/language-core": "2.0.26",
2759 | "semver": "^7.5.4"
2760 | },
2761 | "bin": {
2762 | "vue-tsc": "bin/vue-tsc.js"
2763 | },
2764 | "peerDependencies": {
2765 | "typescript": ">=5.0.0"
2766 | }
2767 | },
2768 | "node_modules/which": {
2769 | "version": "2.0.2",
2770 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2771 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2772 | "dev": true,
2773 | "license": "ISC",
2774 | "dependencies": {
2775 | "isexe": "^2.0.0"
2776 | },
2777 | "bin": {
2778 | "node-which": "bin/node-which"
2779 | },
2780 | "engines": {
2781 | "node": ">= 8"
2782 | }
2783 | },
2784 | "node_modules/wrap-ansi": {
2785 | "version": "8.1.0",
2786 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2787 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2788 | "dev": true,
2789 | "license": "MIT",
2790 | "dependencies": {
2791 | "ansi-styles": "^6.1.0",
2792 | "string-width": "^5.0.1",
2793 | "strip-ansi": "^7.0.1"
2794 | },
2795 | "engines": {
2796 | "node": ">=12"
2797 | },
2798 | "funding": {
2799 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2800 | }
2801 | },
2802 | "node_modules/wrap-ansi-cjs": {
2803 | "name": "wrap-ansi",
2804 | "version": "7.0.0",
2805 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2806 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2807 | "dev": true,
2808 | "license": "MIT",
2809 | "dependencies": {
2810 | "ansi-styles": "^4.0.0",
2811 | "string-width": "^4.1.0",
2812 | "strip-ansi": "^6.0.0"
2813 | },
2814 | "engines": {
2815 | "node": ">=10"
2816 | },
2817 | "funding": {
2818 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2819 | }
2820 | },
2821 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2822 | "version": "5.0.1",
2823 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2824 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2825 | "dev": true,
2826 | "license": "MIT",
2827 | "engines": {
2828 | "node": ">=8"
2829 | }
2830 | },
2831 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2832 | "version": "4.3.0",
2833 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2834 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2835 | "dev": true,
2836 | "license": "MIT",
2837 | "dependencies": {
2838 | "color-convert": "^2.0.1"
2839 | },
2840 | "engines": {
2841 | "node": ">=8"
2842 | },
2843 | "funding": {
2844 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2845 | }
2846 | },
2847 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2848 | "version": "8.0.0",
2849 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2850 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2851 | "dev": true,
2852 | "license": "MIT"
2853 | },
2854 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2855 | "version": "4.2.3",
2856 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2857 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2858 | "dev": true,
2859 | "license": "MIT",
2860 | "dependencies": {
2861 | "emoji-regex": "^8.0.0",
2862 | "is-fullwidth-code-point": "^3.0.0",
2863 | "strip-ansi": "^6.0.1"
2864 | },
2865 | "engines": {
2866 | "node": ">=8"
2867 | }
2868 | },
2869 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2870 | "version": "6.0.1",
2871 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2872 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2873 | "dev": true,
2874 | "license": "MIT",
2875 | "dependencies": {
2876 | "ansi-regex": "^5.0.1"
2877 | },
2878 | "engines": {
2879 | "node": ">=8"
2880 | }
2881 | },
2882 | "node_modules/yaml": {
2883 | "version": "2.4.5",
2884 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
2885 | "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
2886 | "dev": true,
2887 | "license": "ISC",
2888 | "bin": {
2889 | "yaml": "bin.mjs"
2890 | },
2891 | "engines": {
2892 | "node": ">= 14"
2893 | }
2894 | }
2895 | }
2896 | }
2897 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.0.0",
4 | "private": true,
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "run-p type-check \"build-only {@}\" --",
9 | "preview": "vite preview",
10 | "build-only": "vite build",
11 | "type-check": "vue-tsc --build --force"
12 | },
13 | "dependencies": {
14 | "vue": "^3.4.29"
15 | },
16 | "devDependencies": {
17 | "@tsconfig/node20": "^20.1.4",
18 | "@types/node": "^20.14.5",
19 | "@vitejs/plugin-vue": "^5.0.5",
20 | "@vue/tsconfig": "^0.5.1",
21 | "autoprefixer": "^10.4.19",
22 | "npm-run-all2": "^6.2.0",
23 | "postcss": "^8.4.39",
24 | "tailwindcss": "^3.4.4",
25 | "typescript": "~5.4.0",
26 | "vite": "^5.3.1",
27 | "vue-tsc": "^2.0.21"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/frontend/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsprdev/Docker-101/7d9aa9e1ad03a5bf95e6d1ad4d8000a8ccd2025d/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
96 |
--------------------------------------------------------------------------------
/frontend/src/assets/base.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/frontend/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/frontend/src/assets/main.css:
--------------------------------------------------------------------------------
1 | @import './base.css';
2 |
3 |
--------------------------------------------------------------------------------
/frontend/src/components/InputBar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
16 |
17 |
18 |
19 |
73 |
74 |
--------------------------------------------------------------------------------
/frontend/src/components/ItemList.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Listagem de Itens:
4 |
5 | -
6 | {{ item.name }}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
29 |
30 |
33 |
--------------------------------------------------------------------------------
/frontend/src/main.ts:
--------------------------------------------------------------------------------
1 | import './assets/main.css'
2 |
3 | import { createApp } from 'vue'
4 | import App from './App.vue'
5 |
6 | createApp(App).mount('#app')
7 |
--------------------------------------------------------------------------------
/frontend/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{vue,js,ts,jsx,tsx}",
6 | ],
7 | theme: {
8 | extend: {},
9 | },
10 | plugins: [],
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/frontend/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.dom.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4 | "exclude": ["src/**/__tests__/*"],
5 | "compilerOptions": {
6 | "composite": true,
7 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
8 |
9 | "baseUrl": ".",
10 | "paths": {
11 | "@/*": ["./src/*"]
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./tsconfig.node.json"
6 | },
7 | {
8 | "path": "./tsconfig.app.json"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node20/tsconfig.json",
3 | "include": [
4 | "vite.config.*",
5 | "vitest.config.*",
6 | "cypress.config.*",
7 | "nightwatch.conf.*",
8 | "playwright.config.*"
9 | ],
10 | "compilerOptions": {
11 | "composite": true,
12 | "noEmit": true,
13 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
14 |
15 | "module": "ESNext",
16 | "moduleResolution": "Bundler",
17 | "types": ["node"]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/frontend/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | plugins: [
9 | vue(),
10 | ],
11 | resolve: {
12 | alias: {
13 | '@': fileURLToPath(new URL('./src', import.meta.url))
14 | }
15 | },
16 | server: {
17 | host: true,
18 | port: 3000,
19 | watch: {
20 | usePolling: true
21 | }
22 | }
23 | })
24 |
--------------------------------------------------------------------------------