From b590bedd4c03e757161645c2a9a48c9e23203697 Mon Sep 17 00:00:00 2001 From: bigtux Date: Tue, 10 Feb 2026 15:46:21 -0300 Subject: [PATCH] =?UTF-8?q?Initial=20commit:=20EKAI=20v2=20-=20Portal=20de?= =?UTF-8?q?=20Not=C3=ADcias=20IA=20(React=20+=20NestJS)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 11 + backend/dist-seed/entities/admin.entity.js | 35 + backend/dist-seed/entities/dica.entity.js | 43 + backend/dist-seed/entities/hype.entity.js | 47 + backend/dist-seed/entities/inscrito.entity.js | 35 + backend/dist-seed/entities/noticia.entity.js | 63 + backend/dist-seed/seed.js | 200 + backend/package-lock.json | 5953 +++++++++++++++++ backend/package.json | 41 + backend/src/app.module.ts | 34 + backend/src/auth/auth.controller.ts | 14 + backend/src/auth/auth.module.ts | 14 + backend/src/auth/auth.service.ts | 32 + backend/src/auth/jwt-auth.guard.ts | 20 + backend/src/dicas/dicas.controller.ts | 27 + backend/src/dicas/dicas.module.ts | 13 + backend/src/dicas/dicas.service.ts | 18 + backend/src/entities/admin.entity.ts | 16 + backend/src/entities/dica.entity.ts | 22 + backend/src/entities/hype.entity.ts | 25 + backend/src/entities/inscrito.entity.ts | 16 + backend/src/entities/noticia.entity.ts | 37 + backend/src/hypes/hypes.controller.ts | 27 + backend/src/hypes/hypes.module.ts | 13 + backend/src/hypes/hypes.service.ts | 21 + backend/src/inscritos/inscritos.controller.ts | 26 + backend/src/inscritos/inscritos.module.ts | 13 + backend/src/inscritos/inscritos.service.ts | 23 + backend/src/main.ts | 14 + backend/src/noticias/noticias.controller.ts | 36 + backend/src/noticias/noticias.module.ts | 13 + backend/src/noticias/noticias.service.ts | 35 + backend/src/seed.ts | 210 + backend/tsconfig.json | 22 + frontend/.gitignore | 24 + frontend/README.md | 16 + frontend/eslint.config.js | 29 + frontend/index.html | 14 + frontend/package-lock.json | 3681 ++++++++++ frontend/package.json | 32 + frontend/public/avatar.jpg | Bin 0 -> 113205 bytes frontend/public/vite.svg | 1 + frontend/src/App.css | 42 + frontend/src/App.jsx | 35 + frontend/src/api.js | 44 + frontend/src/assets/react.svg | 1 + frontend/src/components/AdminLayout.jsx | 38 + frontend/src/components/NeuralCanvas.jsx | 65 + frontend/src/index.css | 40 + frontend/src/main.jsx | 31 + frontend/src/pages/Home.jsx | 119 + frontend/src/pages/admin/Dashboard.jsx | 36 + frontend/src/pages/admin/Dicas.jsx | 51 + frontend/src/pages/admin/Hypes.jsx | 59 + frontend/src/pages/admin/Inscritos.jsx | 35 + frontend/src/pages/admin/Login.jsx | 27 + frontend/src/pages/admin/NoticiaForm.jsx | 54 + frontend/src/pages/admin/Noticias.jsx | 51 + frontend/vite.config.js | 12 + 59 files changed, 11706 insertions(+) create mode 100644 .gitignore create mode 100644 backend/dist-seed/entities/admin.entity.js create mode 100644 backend/dist-seed/entities/dica.entity.js create mode 100644 backend/dist-seed/entities/hype.entity.js create mode 100644 backend/dist-seed/entities/inscrito.entity.js create mode 100644 backend/dist-seed/entities/noticia.entity.js create mode 100644 backend/dist-seed/seed.js create mode 100644 backend/package-lock.json create mode 100644 backend/package.json create mode 100644 backend/src/app.module.ts create mode 100644 backend/src/auth/auth.controller.ts create mode 100644 backend/src/auth/auth.module.ts create mode 100644 backend/src/auth/auth.service.ts create mode 100644 backend/src/auth/jwt-auth.guard.ts create mode 100644 backend/src/dicas/dicas.controller.ts create mode 100644 backend/src/dicas/dicas.module.ts create mode 100644 backend/src/dicas/dicas.service.ts create mode 100644 backend/src/entities/admin.entity.ts create mode 100644 backend/src/entities/dica.entity.ts create mode 100644 backend/src/entities/hype.entity.ts create mode 100644 backend/src/entities/inscrito.entity.ts create mode 100644 backend/src/entities/noticia.entity.ts create mode 100644 backend/src/hypes/hypes.controller.ts create mode 100644 backend/src/hypes/hypes.module.ts create mode 100644 backend/src/hypes/hypes.service.ts create mode 100644 backend/src/inscritos/inscritos.controller.ts create mode 100644 backend/src/inscritos/inscritos.module.ts create mode 100644 backend/src/inscritos/inscritos.service.ts create mode 100644 backend/src/main.ts create mode 100644 backend/src/noticias/noticias.controller.ts create mode 100644 backend/src/noticias/noticias.module.ts create mode 100644 backend/src/noticias/noticias.service.ts create mode 100644 backend/src/seed.ts create mode 100644 backend/tsconfig.json create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/eslint.config.js create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/public/avatar.jpg create mode 100644 frontend/public/vite.svg create mode 100644 frontend/src/App.css create mode 100644 frontend/src/App.jsx create mode 100644 frontend/src/api.js create mode 100644 frontend/src/assets/react.svg create mode 100644 frontend/src/components/AdminLayout.jsx create mode 100644 frontend/src/components/NeuralCanvas.jsx create mode 100644 frontend/src/index.css create mode 100644 frontend/src/main.jsx create mode 100644 frontend/src/pages/Home.jsx create mode 100644 frontend/src/pages/admin/Dashboard.jsx create mode 100644 frontend/src/pages/admin/Dicas.jsx create mode 100644 frontend/src/pages/admin/Hypes.jsx create mode 100644 frontend/src/pages/admin/Inscritos.jsx create mode 100644 frontend/src/pages/admin/Login.jsx create mode 100644 frontend/src/pages/admin/NoticiaForm.jsx create mode 100644 frontend/src/pages/admin/Noticias.jsx create mode 100644 frontend/vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..250865f --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +node_modules/ +.next/ +dist/ +.env +.env.local +.env*.local +*.log +.DS_Store +coverage/ +.turbo/ +*.tsbuildinfo diff --git a/backend/dist-seed/entities/admin.entity.js b/backend/dist-seed/entities/admin.entity.js new file mode 100644 index 0000000..4e2702f --- /dev/null +++ b/backend/dist-seed/entities/admin.entity.js @@ -0,0 +1,35 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Admin = void 0; +const typeorm_1 = require("typeorm"); +let Admin = class Admin { +}; +exports.Admin = Admin; +__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + __metadata("design:type", Number) +], Admin.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)({ unique: true }), + __metadata("design:type", String) +], Admin.prototype, "email", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Admin.prototype, "password", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", Date) +], Admin.prototype, "created_at", void 0); +exports.Admin = Admin = __decorate([ + (0, typeorm_1.Entity)('admins') +], Admin); diff --git a/backend/dist-seed/entities/dica.entity.js b/backend/dist-seed/entities/dica.entity.js new file mode 100644 index 0000000..35860d5 --- /dev/null +++ b/backend/dist-seed/entities/dica.entity.js @@ -0,0 +1,43 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Dica = void 0; +const typeorm_1 = require("typeorm"); +let Dica = class Dica { +}; +exports.Dica = Dica; +__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + __metadata("design:type", Number) +], Dica.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Dica.prototype, "titulo", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'text' }), + __metadata("design:type", String) +], Dica.prototype, "conteudo", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'date', nullable: true }), + __metadata("design:type", String) +], Dica.prototype, "data_publicacao", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: true }), + __metadata("design:type", Boolean) +], Dica.prototype, "ativa", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", Date) +], Dica.prototype, "created_at", void 0); +exports.Dica = Dica = __decorate([ + (0, typeorm_1.Entity)('dicas') +], Dica); diff --git a/backend/dist-seed/entities/hype.entity.js b/backend/dist-seed/entities/hype.entity.js new file mode 100644 index 0000000..62633db --- /dev/null +++ b/backend/dist-seed/entities/hype.entity.js @@ -0,0 +1,47 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Hype = void 0; +const typeorm_1 = require("typeorm"); +let Hype = class Hype { +}; +exports.Hype = Hype; +__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + __metadata("design:type", Number) +], Hype.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Hype.prototype, "nome", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'int' }), + __metadata("design:type", Number) +], Hype.prototype, "percentual", void 0); +__decorate([ + (0, typeorm_1.Column)({ nullable: true }), + __metadata("design:type", String) +], Hype.prototype, "icone", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'int', default: 0 }), + __metadata("design:type", Number) +], Hype.prototype, "ordem", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: true }), + __metadata("design:type", Boolean) +], Hype.prototype, "ativo", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", Date) +], Hype.prototype, "created_at", void 0); +exports.Hype = Hype = __decorate([ + (0, typeorm_1.Entity)('hypes') +], Hype); diff --git a/backend/dist-seed/entities/inscrito.entity.js b/backend/dist-seed/entities/inscrito.entity.js new file mode 100644 index 0000000..b29282f --- /dev/null +++ b/backend/dist-seed/entities/inscrito.entity.js @@ -0,0 +1,35 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Inscrito = void 0; +const typeorm_1 = require("typeorm"); +let Inscrito = class Inscrito { +}; +exports.Inscrito = Inscrito; +__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + __metadata("design:type", Number) +], Inscrito.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)({ unique: true }), + __metadata("design:type", String) +], Inscrito.prototype, "email", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: true }), + __metadata("design:type", Boolean) +], Inscrito.prototype, "ativo", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", Date) +], Inscrito.prototype, "created_at", void 0); +exports.Inscrito = Inscrito = __decorate([ + (0, typeorm_1.Entity)('inscritos') +], Inscrito); diff --git a/backend/dist-seed/entities/noticia.entity.js b/backend/dist-seed/entities/noticia.entity.js new file mode 100644 index 0000000..e493888 --- /dev/null +++ b/backend/dist-seed/entities/noticia.entity.js @@ -0,0 +1,63 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Noticia = void 0; +const typeorm_1 = require("typeorm"); +let Noticia = class Noticia { +}; +exports.Noticia = Noticia; +__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + __metadata("design:type", Number) +], Noticia.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Noticia.prototype, "titulo", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'text', nullable: true }), + __metadata("design:type", String) +], Noticia.prototype, "preview", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'text' }), + __metadata("design:type", String) +], Noticia.prototype, "conteudo", void 0); +__decorate([ + (0, typeorm_1.Column)({ nullable: true }), + __metadata("design:type", String) +], Noticia.prototype, "imagem_url", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'date', nullable: true }), + __metadata("design:type", String) +], Noticia.prototype, "data_publicacao", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 'normal' }), + __metadata("design:type", String) +], Noticia.prototype, "categoria", void 0); +__decorate([ + (0, typeorm_1.Column)({ nullable: true }), + __metadata("design:type", String) +], Noticia.prototype, "fonte", void 0); +__decorate([ + (0, typeorm_1.Column)({ nullable: true }), + __metadata("design:type", String) +], Noticia.prototype, "link_fonte", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", Date) +], Noticia.prototype, "created_at", void 0); +__decorate([ + (0, typeorm_1.UpdateDateColumn)(), + __metadata("design:type", Date) +], Noticia.prototype, "updated_at", void 0); +exports.Noticia = Noticia = __decorate([ + (0, typeorm_1.Entity)('noticias') +], Noticia); diff --git a/backend/dist-seed/seed.js b/backend/dist-seed/seed.js new file mode 100644 index 0000000..9fcd6be --- /dev/null +++ b/backend/dist-seed/seed.js @@ -0,0 +1,200 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +require("reflect-metadata"); +const typeorm_1 = require("typeorm"); +const noticia_entity_1 = require("./entities/noticia.entity"); +const hype_entity_1 = require("./entities/hype.entity"); +const dica_entity_1 = require("./entities/dica.entity"); +const inscrito_entity_1 = require("./entities/inscrito.entity"); +const admin_entity_1 = require("./entities/admin.entity"); +const ds = new typeorm_1.DataSource({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT) || 5432, + username: process.env.DB_USER || 'ekai', + password: process.env.DB_PASS || 'Ekai2026!', + database: process.env.DB_NAME || 'ekai', + entities: [noticia_entity_1.Noticia, hype_entity_1.Hype, dica_entity_1.Dica, inscrito_entity_1.Inscrito, admin_entity_1.Admin], + synchronize: true, +}); +const articles = [ + { + titulo: 'Big Techs Investem US$ 670 Bilhões em IA em 2026', + preview: 'Investimento combinado de Meta, Microsoft, Amazon e Alphabet supera custo do programa Apollo...', + conteudo: '

O investimento combinado de Meta, Microsoft, Amazon e Alphabet em infraestrutura de IA em 2026 chegou a US$ 670 bilhões — superando os maiores esforços de capital da história americana em porcentagem do PIB, ficando atrás apenas da Compra da Louisiana em 1803.

Quem lidera:

• Microsoft: ~US$ 180B (parceria OpenAI + Azure)

• Google/Alphabet: ~US$ 150B (TPUs + Gemini)

• Amazon/AWS: ~US$ 120B (Bedrock + chips Trainium)

• Meta: ~US$ 100B (Llama + data centers)

Por que importa: Estamos vivendo a maior corrida tecnológica desde a ida à Lua. A escala de investimento mostra que as Big Techs acreditam que IA será a plataforma dominante da próxima década.

', + imagem_url: 'https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5?w=600&h=300&fit=crop', + data_publicacao: '2026-02-10', + categoria: 'destaque', + }, + { + titulo: 'Grok Gera 3 Milhões de Imagens Sexualizadas no X', + preview: 'Relatório revela que IA de Musk inundou a plataforma com conteúdo problemático...', + conteudo: '

Um relatório do Center for Countering Digital Hate revelou que o Grok, a IA do X (antigo Twitter), gerou aproximadamente 3 milhões de imagens sexualizadas na plataforma, incluindo 23.000 envolvendo menores — uma média de 190 imagens por minuto durante 11 dias.

O escândalo:

• O X tinha acabado de publicar um tweet de "tolerância zero" para o Dia da Internet Segura

• As imagens foram geradas sem filtros adequados de segurança

• Reguladores europeus já pediram investigação formal

Reflexão: IA generativa sem guardrails é perigosa. A velocidade de geração de conteúdo supera qualquer capacidade de moderação humana. Empresas precisam de filtros ANTES, não depois.

', + imagem_url: 'https://images.unsplash.com/photo-1611746872915-64382b5c76da?w=600&h=300&fit=crop', + data_publicacao: '2026-02-10', + categoria: 'normal', + }, + { + titulo: 'ChatGPT Terá Links Patrocinados Para Usuários Gratuitos', + preview: 'OpenAI começa a monetizar com anúncios — quem paga $20/mês escapa...', + conteudo: '

A OpenAI confirmou que começará a exibir links patrocinados ("sponsored links") nas respostas do ChatGPT para usuários do plano gratuito.

Como funciona:

• Links relevantes ao contexto da conversa aparecerão nas respostas

• Modelo semelhante ao Google Ads, mas integrado nas respostas da IA

• Assinantes do ChatGPT Plus ($20/mês) não verão anúncios

A reflexão: Era questão de tempo. O modelo "grátis com anúncios" chegou à IA. A grande pergunta: isso vai comprometer a imparcialidade das respostas? Quando a IA recomenda um produto, será porque é o melhor — ou porque pagaram?

', + imagem_url: 'https://images.unsplash.com/photo-1611532736597-de2d4265fba3?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'destaque', + }, + { + titulo: 'UE Ordena Meta a Reabrir WhatsApp para IAs Rivais', + preview: 'Comissão Europeia considera bloqueio do ChatGPT e Copilot como antitruste...', + conteudo: '

A Comissão Europeia determinou que a Meta deve permitir que assistentes de IA concorrentes operem dentro do WhatsApp, classificando o caso como "urgente" pelo risco de dano "irreparável" à competição no setor de IA.

A decisão vem após a Meta ter bloqueado integrações do ChatGPT, Copilot e outros assistentes na plataforma em novembro, favorecendo sua própria Meta AI.

Impacto:

• WhatsApp terá que permitir bots de IA de terceiros

• Usuários poderão escolher qual assistente usar dentro do app

• Precedente importante para regulamentação de IA em plataformas

Opinião: A era dos "jardins murados" de IA está acabando. Mais competição = melhores produtos para o usuário.

', + imagem_url: 'https://images.unsplash.com/photo-1504639725590-34d0984388bd?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'normal', + }, + { + titulo: 'Super Bowl 2026: Anúncios de IA Dominam os Intervalos', + preview: 'AI.com, plataforma de agentes de IA, estreia com comercial de 30 segundos...', + conteudo: '

O Super Bowl 2026 foi dominado por anúncios de IA. O destaque foi a AI.com, nova plataforma do CEO da Crypto.com, que exibiu um comercial de 30 segundos prometendo "democratizar agentes de IA e AGI".

Destaques:

• AI.com prometeu handles personalizados como "Mark", "Sam" e "Elon"

• Kris Marszalek (Crypto.com) lidera a plataforma

• Nenhum comercial de IA generativa convenceu os críticos

Análise: A mesma galera do hype cripto agora quer surfar a onda da IA. O ceticismo é compreensível — mas a tecnologia por trás é muito mais real que NFTs.

', + imagem_url: 'https://images.unsplash.com/photo-1518770660439-4636190af475?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'normal', + }, + { + titulo: 'Waymo Usa IA para Simular Mundos 3D com Elefantes e Tornados', + preview: 'Parceria com Google DeepMind cria simulações realistas para treinar carros autônomos...', + conteudo: '

A Waymo revelou que está usando modelos de IA do Google DeepMind (Genie 3) para gerar mundos 3D completos e simular cenários extremos para seus carros autônomos — incluindo enchentes, tornados e até elefantes na pista.

Como funciona:

• IA gera cenários 3D fotorrealistas a partir de texto

• Carros autônomos são testados virtualmente em milhões de situações raras

• Reduz necessidade de testes físicos caros e perigosos

Curiosidade: Internautas apontaram que a Waymo treina para elefantes mas ainda tem dificuldade com ônibus escolares em Austin. Prioridades, né?

', + imagem_url: 'https://images.unsplash.com/photo-1550751827-4bd374c3f58b?w=600&h=300&fit=crop', + data_publicacao: '2026-02-08', + categoria: 'normal', + }, + { + titulo: 'DocuSign Aposta Tudo em IA: "Não Oferecer IA Não é Opção"', + preview: 'CEO Allan Thygesen diz que IA é obrigatória para qualquer empresa de software...', + conteudo: '

O CEO da DocuSign, Allan Thygesen, declarou em entrevista que "não oferecer um serviço de IA simplesmente não é opção" para empresas de software em 2026.

O que a DocuSign está fazendo:

• IA para análise automática de contratos

• Extração inteligente de cláusulas e riscos

• Assistente que negocia termos automaticamente

A lição para empresas: Se até a DocuSign — uma empresa de assinatura digital — está apostando forte em IA, qualquer empresa que ainda não está se movimentando está ficando para trás.

', + imagem_url: 'https://images.unsplash.com/photo-1563986768609-322da13575f2?w=600&h=300&fit=crop', + data_publicacao: '2026-02-08', + categoria: 'normal', + }, + { + titulo: 'Google Estuda Permitir que Publishers Saiam da IA no Search', + preview: 'Após pressão do Reino Unido, Google "explora" opt-out de AI Overviews...', + conteudo: '

Após o regulador britânico CMA dar ao Google status de "mercado estratégico", a empresa anunciou que está "explorando" formas de permitir que publishers optem por não ter seu conteúdo usado nos AI Overviews do Google Search.

Contexto:

• AI Overviews resumem conteúdo de sites sem que o usuário precise clicar

• Publishers reclamam que isso mata o tráfego orgânico

• O Reino Unido ameaçou forçar o opt-out por lei

Opinião: Google usando "explorando" é corporate speak para "vamos enrolar até sermos obrigados". Mas o precedente é importante — criadores de conteúdo merecem controle sobre como sua obra é usada.

', + imagem_url: 'https://images.unsplash.com/photo-1639322537228-f710d846310a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-07', + categoria: 'destaque', + }, + { + titulo: 'Disney + OpenAI: Sora Vai Criar Vídeos com Personagens Disney', + preview: 'Assinantes do Disney+ poderão gerar clipes de 30s com 250+ personagens...', + conteudo: '

A Disney confirmou detalhes da parceria com a OpenAI para integrar o Sora ao Disney+. Bob Iger revelou aos investidores que assinantes poderão criar vídeos de 30 segundos com mais de 250 personagens Disney.

O que vem:

• Clipes gerados por IA com personagens da Disney, Pixar e Marvel

• Feeds verticais curados dentro do Disney+

• Lançamento previsto para o ano fiscal de 2026

Impacto: É a maior validação da IA generativa no entretenimento mainstream. Se a Disney — a empresa mais protetora de suas IPs — embarcou, é porque acredita que dá pra controlar a qualidade.

', + imagem_url: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=300&fit=crop', + data_publicacao: '2026-02-07', + categoria: 'normal', + }, + { + titulo: 'Suda 51 Critica IA Generativa: "Algo Está Estranho"', + preview: 'Criador de No More Heroes diz que imagens de IA têm algo "psicologicamente errado"...', + conteudo: '

Suda 51, o excêntrico criador de No More Heroes e diretor da Grasshopper Manufacture, falou sobre IA generativa em entrevista ao Eurogamer.

O que ele disse:

"Muito do que vejo de IA nas redes sociais... por mais que tenha evoluído, tem algo nas imagens e vídeos que parece errado. A maioria das pessoas tem essa mesma sensação, algo psicológico te avisa que algo não está certo. Algo está meio estranho."

Reflexão: É o "uncanny valley" da IA generativa. Mesmo quando a qualidade técnica é alta, nosso cérebro detecta que algo é artificial. Por enquanto. A questão é: por quanto tempo?

', + imagem_url: 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=600&h=300&fit=crop', + data_publicacao: '2026-02-06', + categoria: 'normal', + }, + { + titulo: 'Meta Gasta Milhões em Campanha Para Convencer Vizinhos de Data Centers', + preview: 'Empresa investe pesado em propaganda para comunidades próximas a data centers de IA...', + conteudo: '

A Meta lançou uma campanha publicitária milionária para convencer comunidades locais de que ter data centers de IA no quintal "não é tão ruim assim".

A polêmica:

• Data centers de IA consomem energia equivalente a cidades inteiras

• Comunidades reclamam de ruído, consumo de água e impacto ambiental

• Meta promete empregos e investimento local, mas moradores são céticos

O melhor comentário da internet: "Coloca um do lado da SUA casa, Mark! Seja a mudança que você quer ver no mundo." 😂

', + imagem_url: 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=600&h=300&fit=crop', + data_publicacao: '2026-02-06', + categoria: 'normal', + }, + { + titulo: 'Sophia: Criador do Robô Pediu Dinheiro a Epstein para "Androides Sexy"', + preview: 'Documentos do DOJ revelam proposta de US$ 3 milhões para construir "ginoide atraente"...', + conteudo: '

Documentos liberados pelo Departamento de Justiça dos EUA revelaram que David Hanson, criador do robô Sophia, enviou uma proposta de US$ 3 milhões a Jeffrey Epstein para construir uma "android feminina atraente" com um "rosto e corpo de robô lindo e funcional".

Detalhes perturbadores:

• A proposta incluía um rascunho do design da "ginoide"

• Uma nota dizia que "o design final será feito em colaboração com você"

• Os documentos são parte do lote liberado pelo DOJ na semana passada

Reflexão: Um lembrete sombrio de como a interseção entre tecnologia, poder e falta de ética pode levar a lugares assustadores. IA e robótica precisam de governança séria.

', + imagem_url: 'https://images.unsplash.com/photo-1620712943543-bcc4688e7485?w=600&h=300&fit=crop', + data_publicacao: '2026-02-05', + categoria: 'destaque', + }, + { + titulo: 'Moltbot Vira Febre: Agente de IA Local Que Roda no Seu PC', + preview: 'Projeto viral no Reddit permite rodar agente autônomo sem nuvem...', + conteudo: '

O Moltbot (anteriormente Clawdbot), agente de IA que roda localmente no PC do usuário, virou o projeto mais comentado da semana nas comunidades tech do Reddit.

O que aconteceu:

• Criador Peter Steinberger foi contatado pela Anthropic para renomear (era "Clawdbot", inspirado no mascote do Claude Code)

• Golpistas criaram uma cripto falsa aproveitando a mudança de nome

• Steinberger: "Tudo que podia dar errado hoje, deu errado"

Por que importa: Agentes de IA locais são o futuro para privacidade. Rodar IA no seu próprio hardware, sem enviar dados pra nuvem, é uma tendência crescente.

', + imagem_url: 'https://images.unsplash.com/photo-1516110833967-0b5716ca1387?w=600&h=300&fit=crop', + data_publicacao: '2026-02-05', + categoria: 'normal', + }, + { + titulo: 'Home Assistant + Claude Code: IA Configura Sua Casa Inteligente', + preview: 'Jornalista do The Verge migra toda a casa para Home Assistant em uma tarde usando IA...', + conteudo: '

Jennifer Pattison Tuohy, do The Verge, relatou que depois de anos tentando migrar para o Home Assistant, conseguiu fazer a transição em uma única tarde usando o Claude Code como assistente.

O que a IA fez:

• Configurou integrações com dezenas de dispositivos

• Escreveu automações YAML complexas

• Debugou problemas de conectividade em tempo real

• Criou dashboards personalizados

A lição: IA como copiloto de programação não é mais futuro — é presente. Tarefas que levavam dias agora levam horas. E você não precisa ser programador.

', + imagem_url: 'https://images.unsplash.com/photo-1677442136019-21780ecad995?w=600&h=300&fit=crop', + data_publicacao: '2026-02-04', + categoria: 'normal', + }, + { + titulo: 'Moltbook: A "Reddit de IA" Que Virou Febre e Ficou Estranha', + preview: 'Plataforma viral mistura conteúdo humano e de IA de formas inesperadas...', + conteudo: '

O Moltbook, plataforma estilo Reddit que integra IA em todos os posts e comentários, ficou cada vez mais estranho ao longo do fim de semana. O que começou como uma experiência interessante virou um caos.

O que está acontecendo:

• Bots de IA estão debatendo entre si em threads infinitas

• Fica cada vez mais difícil distinguir humanos de bots

• Alguns usuários usam a plataforma como "simulador de sociedade"

Opinião: O Moltbook é um laboratório fascinante do futuro da internet. O que acontece quando IA pode postar, comentar e votar como humanos? Spoiler: fica estranho rápido.

', + imagem_url: 'https://images.unsplash.com/photo-1485827404703-89b55fcc595e?w=600&h=300&fit=crop', + data_publicacao: '2026-02-04', + categoria: 'normal', + }, + { + titulo: 'Sam Altman Declara: "Basicamente Construímos AGI"', + preview: 'CEO da OpenAI faz declaração bombástica em perfil da Forbes, depois recua...', + conteudo: '

Em um perfil extenso da Forbes sobre sua jornada no mundo da IA, Sam Altman, CEO da OpenAI, declarou: "Basicamente construímos AGI, ou estamos muito próximos disso."

Dias depois, Altman recuou: "Eu quis dizer isso como uma declaração espiritual, não literal. Atingir AGI vai exigir muitas descobertas de tamanho médio. Não acho que precisamos de uma grande."

O contexto:

• AGI (Inteligência Artificial Geral) é o "santo graal" — IA capaz de qualquer tarefa intelectual humana

• A OpenAI define internamente níveis de AGI, e acredita estar no nível 2 de 5

• Críticos dizem que Altman faz isso para manter o hype e os investimentos

Opinião: Altman é mestre do hype calculado. "Basicamente AGI" é vago o suficiente para gerar manchetes sem ser falsificável. Mas os modelos atuais já estão transformando trabalho real.

', + imagem_url: 'https://images.unsplash.com/photo-1535378917042-10a22c95931a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'destaque', + }, + { + titulo: 'Elon Musk Funde SpaceX com xAI: "IA no Mundo Físico"', + preview: 'Tesla investiu US$ 2B na xAI enquanto empresa queima US$ 1B por mês...', + conteudo: '

A Tesla revelou em seu balanço trimestral que investiu US$ 2 bilhões na xAI, empresa de IA de Elon Musk que também é dona do X.com e do chatbot Grok.

Os números assustam:

• xAI queimou US$ 7.8 bilhões nos primeiros 9 meses de 2025

• SpaceX é lucrativa, mas xAI queima ~US$ 1 bilhão por mês

• Tesla justifica o investimento como "aprimoramento de produtos de IA no mundo físico"

O melhor comentário: "As constantes novas empresas e fusões de Musk parecem o equivalente corporativo de criar um email novo toda vez que quer usar um free trial." 😂

', + imagem_url: 'https://images.unsplash.com/photo-1624953587687-daf255b6b80a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'normal', + }, + { + titulo: '2026: Agentes de IA São a Nova Fronteira — Mas Funcionam?', + preview: 'Todas as Big Techs apostam em agentes autônomos, mas resultados variam...', + conteudo: '

2026 está sendo chamado de "O Ano dos Agentes". Microsoft, Google, OpenAI e Anthropic lançaram ou anunciaram agentes de IA que executam tarefas complexas de forma autônoma.

O que são Agentes de IA?

Sistemas que vão além de responder perguntas — eles planejam, executam e iteratam sobre tarefas com mínima supervisão humana.

Exemplos reais:

• Microsoft Copilot Agents: gerenciam fluxos de trabalho no Office 365

• Claude Code: escreve e executa código autonomamente

• Google Gemini Agents: navegam a web e preenchem formulários

A realidade: Agentes são promissores mas ainda falham em tarefas que exigem julgamento nuanceado. Estamos no "early innings" — quem aprender a usá-los agora terá vantagem competitiva.

', + imagem_url: 'https://images.unsplash.com/photo-1550745165-9bc0b252726f?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'normal', + }, +]; +const hypes = [ + { nome: 'Agentes Autônomos', percentual: 96, icone: '🔥', ordem: 1, ativo: true }, + { nome: 'Mega-Investimentos ($670B)', percentual: 94, icone: '🏗️', ordem: 2, ativo: true }, + { nome: 'Anúncios/Monetização em IA', percentual: 88, icone: '📢', ordem: 3, ativo: true }, + { nome: 'Regulamentação UE vs Big Tech', percentual: 85, icone: '⚖️', ordem: 4, ativo: true }, + { nome: 'IA no Entretenimento (Disney+Sora)', percentual: 79, icone: '🎬', ordem: 5, ativo: true }, + { nome: 'IA Local / On-Device', percentual: 73, icone: '🤖', ordem: 6, ativo: true }, +]; +const dica = { + titulo: '💡 Use Agentes de IA Para Tarefas Repetitivas', + conteudo: '

Em vez de usar ChatGPT como um Google glorificado, experimente agentes como Claude Code ou Copilot para automatizar tarefas completas: configurar servidores, processar planilhas, migrar sistemas.

A diferença: em vez de perguntar "como faço X?", você diz "faça X" — e o agente planeja, executa e te mostra o resultado. É a próxima evolução no uso de IA.

', + data_publicacao: '2026-02-10', + ativa: true, +}; +async function seed() { + await ds.initialize(); + console.log('Connected to DB'); + const noticiaRepo = ds.getRepository(noticia_entity_1.Noticia); + const hypeRepo = ds.getRepository(hype_entity_1.Hype); + const dicaRepo = ds.getRepository(dica_entity_1.Dica); + // Clear existing + await noticiaRepo.clear(); + await hypeRepo.clear(); + await dicaRepo.clear(); + // Seed + await noticiaRepo.save(articles); + console.log(`Seeded ${articles.length} articles`); + await hypeRepo.save(hypes); + console.log(`Seeded ${hypes.length} hypes`); + await dicaRepo.save([dica]); + console.log('Seeded 1 dica'); + await ds.destroy(); + console.log('Done!'); +} +seed().catch(e => { console.error(e); process.exit(1); }); diff --git a/backend/package-lock.json b/backend/package-lock.json new file mode 100644 index 0000000..ba684b7 --- /dev/null +++ b/backend/package-lock.json @@ -0,0 +1,5953 @@ +{ + "name": "backend", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "backend", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@nestjs/common": "^11.1.13", + "@nestjs/core": "^11.1.13", + "@nestjs/jwt": "^11.0.2", + "@nestjs/passport": "^11.0.5", + "@nestjs/platform-express": "^11.1.13", + "@nestjs/typeorm": "^11.0.0", + "bcryptjs": "^3.0.3", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.3", + "passport": "^0.7.0", + "passport-jwt": "^4.0.1", + "pg": "^8.18.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.2", + "typeorm": "^0.3.28" + }, + "devDependencies": { + "@nestjs/cli": "^11.0.16", + "@types/bcryptjs": "^2.4.6", + "@types/express": "^5.0.6", + "@types/node": "^25.2.2", + "@types/passport-jwt": "^4.0.1", + "ts-node": "^10.9.2", + "typescript": "^5.9.3" + } + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.19.tgz", + "integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.19.tgz", + "integrity": "sha512-J4Jarr0SohdrHcb40gTL4wGPCQ952IMWF1G/MSAQfBAPvA9ZKApYhpxcY7PmehVePve+ujpus1dGsJ7dPxz8Kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.19", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.19.tgz", + "integrity": "sha512-7q9UY6HK6sccL9F3cqGRUwKhM7b/XfD2YcVaZ2WD7VMaRlRm85v6mRjSrfKIAwxcQU0UK27kMc79NIIqaHjzxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.19", + "@angular-devkit/schematics": "19.2.19", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@borewit/text-codec": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.16", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.16.tgz", + "integrity": "sha512-P0H+Vcjki6P5160E5QnMt3Q0X5FTg4PZkP99Ig4lm/4JWqfw32j3EXv3YBTJ2DmxLwOQ/IS9F7dzKpMAgzKTGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.19", + "@angular-devkit/schematics": "19.2.19", + "@angular-devkit/schematics-cli": "19.2.19", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "13.0.0", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.9.3", + "webpack": "5.104.1", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@nestjs/cli/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", + "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", + "license": "MIT", + "dependencies": { + "file-type": "21.3.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", + "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/jwt": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.2.tgz", + "integrity": "sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA==", + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "9.0.10", + "jsonwebtoken": "9.0.3" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/passport": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz", + "integrity": "sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "passport": "^0.5.0 || ^0.6.0 || ^0.7.0" + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.13.tgz", + "integrity": "sha512-LYmi43BrAs1n74kLCUfXcHag7s1CmGETcFbf9IVyA/KWXAuAH95G3wEaZZiyabOLFNwq4ifnRGnIwUwW7cz3+w==", + "license": "MIT", + "dependencies": { + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.0.2", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz", + "integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "@angular-devkit/schematics": "19.2.17", + "comment-json": "4.4.1", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz", + "integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz", + "integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/typeorm": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", + "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", + "license": "MIT" + }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/bcryptjs": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz", + "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.2.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", + "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/passport": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.17.tgz", + "integrity": "sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "*", + "@types/passport-strategy": "*" + } + }, + "node_modules/@types/passport-strategy": { + "version": "0.2.38", + "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.38.tgz", + "integrity": "sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*", + "@types/passport": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@types/validator": { + "version": "13.15.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", + "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "devOptional": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcryptjs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz", + "integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==", + "license": "BSD-3-Clause", + "bin": { + "bcrypt": "bin/bcrypt" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" + }, + "node_modules/class-validator": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.3.tgz", + "integrity": "sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.15.3", + "libphonenumber-js": "^1.11.1", + "validator": "^13.15.20" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz", + "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/file-type": { + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", + "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.12.36", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.36.tgz", + "integrity": "sha512-woWhKMAVx1fzzUnMCyOzglgSgf6/AFHLASdOBcchYCyvWSGWt12imw3iu2hdI5d4dGZRsNWAmWiz37sDKUPaRQ==", + "license": "MIT" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", + "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "mkdirp": "^0.5.6", + "object-assign": "^4.1.1", + "type-is": "^1.6.18", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">= 10.16.0" + } + }, + "node_modules/multer/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "license": "MIT", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "license": "MIT", + "dependencies": { + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "node_modules/pg": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz", + "integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.11.0", + "pg-pool": "^3.11.0", + "pg-protocol": "^1.11.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.11.0.tgz", + "integrity": "sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.11.0.tgz", + "integrity": "sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz", + "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sql-highlight": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typeorm": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", + "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "license": "MIT", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^4.2.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.19", + "debug": "^4.4.3", + "dedent": "^1.7.0", + "dotenv": "^16.6.1", + "glob": "^10.5.0", + "reflect-metadata": "^0.2.2", + "sha.js": "^2.4.12", + "sql-highlight": "^6.1.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/validator": { + "version": "13.15.26", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..1fbec47 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,41 @@ +{ + "name": "backend", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc", + "start": "node dist/main.js", + "dev": "ts-node src/main.ts", + "seed": "ts-node src/seed.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@nestjs/common": "^11.1.13", + "@nestjs/core": "^11.1.13", + "@nestjs/jwt": "^11.0.2", + "@nestjs/passport": "^11.0.5", + "@nestjs/platform-express": "^11.1.13", + "@nestjs/typeorm": "^11.0.0", + "bcryptjs": "^3.0.3", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.3", + "passport": "^0.7.0", + "passport-jwt": "^4.0.1", + "pg": "^8.18.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.2", + "typeorm": "^0.3.28" + }, + "devDependencies": { + "@nestjs/cli": "^11.0.16", + "@types/bcryptjs": "^2.4.6", + "@types/express": "^5.0.6", + "@types/node": "^25.2.2", + "@types/passport-jwt": "^4.0.1", + "ts-node": "^10.9.2", + "typescript": "^5.9.3" + } +} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts new file mode 100644 index 0000000..c0652f3 --- /dev/null +++ b/backend/src/app.module.ts @@ -0,0 +1,34 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { JwtModule } from '@nestjs/jwt'; +import { NoticiasModule } from './noticias/noticias.module'; +import { HypesModule } from './hypes/hypes.module'; +import { DicasModule } from './dicas/dicas.module'; +import { InscritosModule } from './inscritos/inscritos.module'; +import { AuthModule } from './auth/auth.module'; + +@Module({ + imports: [ + TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT) || 5432, + username: process.env.DB_USER || 'ekai', + password: process.env.DB_PASS || 'Ekai2026!', + database: process.env.DB_NAME || 'ekai', + autoLoadEntities: true, + synchronize: true, + }), + JwtModule.register({ + global: true, + secret: process.env.JWT_SECRET || 'Ekai_JWT_2026_Secret', + signOptions: { expiresIn: '24h' }, + }), + NoticiasModule, + HypesModule, + DicasModule, + InscritosModule, + AuthModule, + ], +}) +export class AppModule {} diff --git a/backend/src/auth/auth.controller.ts b/backend/src/auth/auth.controller.ts new file mode 100644 index 0000000..2657f27 --- /dev/null +++ b/backend/src/auth/auth.controller.ts @@ -0,0 +1,14 @@ +import { Controller, Post, Body, UnauthorizedException } from '@nestjs/common'; +import { AuthService } from './auth.service'; + +@Controller('auth') +export class AuthController { + constructor(private authService: AuthService) {} + + @Post('login') + async login(@Body() body: { email: string; password: string }) { + const result = await this.authService.login(body.email, body.password); + if (!result) throw new UnauthorizedException('Credenciais inválidas'); + return result; + } +} diff --git a/backend/src/auth/auth.module.ts b/backend/src/auth/auth.module.ts new file mode 100644 index 0000000..e77eb9e --- /dev/null +++ b/backend/src/auth/auth.module.ts @@ -0,0 +1,14 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { AuthController } from './auth.controller'; +import { AuthService } from './auth.service'; +import { Admin } from '../entities/admin.entity'; +import { JwtAuthGuard } from './jwt-auth.guard'; + +@Module({ + imports: [TypeOrmModule.forFeature([Admin])], + controllers: [AuthController], + providers: [AuthService, JwtAuthGuard], + exports: [AuthService, JwtAuthGuard], +}) +export class AuthModule {} diff --git a/backend/src/auth/auth.service.ts b/backend/src/auth/auth.service.ts new file mode 100644 index 0000000..2704fa0 --- /dev/null +++ b/backend/src/auth/auth.service.ts @@ -0,0 +1,32 @@ +import { Injectable, OnModuleInit } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { JwtService } from '@nestjs/jwt'; +import * as bcrypt from 'bcryptjs'; +import { Admin } from '../entities/admin.entity'; + +@Injectable() +export class AuthService implements OnModuleInit { + constructor( + @InjectRepository(Admin) private adminRepo: Repository, + private jwtService: JwtService, + ) {} + + async onModuleInit() { + const count = await this.adminRepo.count(); + if (count === 0) { + const hash = await bcrypt.hash('Ekai@2026', 10); + await this.adminRepo.save({ email: 'admin@ekai.com', password: hash }); + console.log('Admin user created: admin@ekai.com'); + } + } + + async login(email: string, password: string) { + const admin = await this.adminRepo.findOne({ where: { email } }); + if (!admin) return null; + const valid = await bcrypt.compare(password, admin.password); + if (!valid) return null; + const token = await this.jwtService.signAsync({ sub: admin.id, email: admin.email }); + return { access_token: token }; + } +} diff --git a/backend/src/auth/jwt-auth.guard.ts b/backend/src/auth/jwt-auth.guard.ts new file mode 100644 index 0000000..85f9918 --- /dev/null +++ b/backend/src/auth/jwt-auth.guard.ts @@ -0,0 +1,20 @@ +import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; + +@Injectable() +export class JwtAuthGuard implements CanActivate { + constructor(private jwtService: JwtService) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const auth = request.headers.authorization; + if (!auth?.startsWith('Bearer ')) throw new UnauthorizedException(); + try { + const payload = await this.jwtService.verifyAsync(auth.split(' ')[1]); + request.user = payload; + return true; + } catch { + throw new UnauthorizedException(); + } + } +} diff --git a/backend/src/dicas/dicas.controller.ts b/backend/src/dicas/dicas.controller.ts new file mode 100644 index 0000000..83517d1 --- /dev/null +++ b/backend/src/dicas/dicas.controller.ts @@ -0,0 +1,27 @@ +import { Controller, Get, Post, Put, Delete, Param, Body, UseGuards } from '@nestjs/common'; +import { DicasService } from './dicas.service'; +import { JwtAuthGuard } from '../auth/jwt-auth.guard'; + +@Controller('dica') +export class DicasController { + constructor(private svc: DicasService) {} + + @Get() + findLatest() { return this.svc.findLatest(); } + + @Get('all') + @UseGuards(JwtAuthGuard) + findAll() { return this.svc.findAll(); } + + @Post() + @UseGuards(JwtAuthGuard) + create(@Body() body: any) { return this.svc.create(body); } + + @Put(':id') + @UseGuards(JwtAuthGuard) + update(@Param('id') id: string, @Body() body: any) { return this.svc.update(+id, body); } + + @Delete(':id') + @UseGuards(JwtAuthGuard) + delete(@Param('id') id: string) { return this.svc.delete(+id); } +} diff --git a/backend/src/dicas/dicas.module.ts b/backend/src/dicas/dicas.module.ts new file mode 100644 index 0000000..f475f8e --- /dev/null +++ b/backend/src/dicas/dicas.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { DicasController } from './dicas.controller'; +import { DicasService } from './dicas.service'; +import { Dica } from '../entities/dica.entity'; +import { AuthModule } from '../auth/auth.module'; + +@Module({ + imports: [TypeOrmModule.forFeature([Dica]), AuthModule], + controllers: [DicasController], + providers: [DicasService], +}) +export class DicasModule {} diff --git a/backend/src/dicas/dicas.service.ts b/backend/src/dicas/dicas.service.ts new file mode 100644 index 0000000..8e0a7f3 --- /dev/null +++ b/backend/src/dicas/dicas.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Dica } from '../entities/dica.entity'; + +@Injectable() +export class DicasService { + constructor(@InjectRepository(Dica) private repo: Repository) {} + + findLatest() { + return this.repo.findOne({ where: { ativa: true }, order: { created_at: 'DESC' } }); + } + + findAll() { return this.repo.find({ order: { created_at: 'DESC' } }); } + create(dto: Partial) { return this.repo.save(dto); } + async update(id: number, dto: Partial) { await this.repo.update(id, dto); return this.repo.findOneBy({ id }); } + delete(id: number) { return this.repo.delete(id); } +} diff --git a/backend/src/entities/admin.entity.ts b/backend/src/entities/admin.entity.ts new file mode 100644 index 0000000..04e3171 --- /dev/null +++ b/backend/src/entities/admin.entity.ts @@ -0,0 +1,16 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm'; + +@Entity('admins') +export class Admin { + @PrimaryGeneratedColumn() + id: number; + + @Column({ unique: true }) + email: string; + + @Column() + password: string; + + @CreateDateColumn() + created_at: Date; +} diff --git a/backend/src/entities/dica.entity.ts b/backend/src/entities/dica.entity.ts new file mode 100644 index 0000000..1d7edf1 --- /dev/null +++ b/backend/src/entities/dica.entity.ts @@ -0,0 +1,22 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm'; + +@Entity('dicas') +export class Dica { + @PrimaryGeneratedColumn() + id: number; + + @Column() + titulo: string; + + @Column({ type: 'text' }) + conteudo: string; + + @Column({ type: 'date', nullable: true }) + data_publicacao: string; + + @Column({ default: true }) + ativa: boolean; + + @CreateDateColumn() + created_at: Date; +} diff --git a/backend/src/entities/hype.entity.ts b/backend/src/entities/hype.entity.ts new file mode 100644 index 0000000..1f94dfc --- /dev/null +++ b/backend/src/entities/hype.entity.ts @@ -0,0 +1,25 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm'; + +@Entity('hypes') +export class Hype { + @PrimaryGeneratedColumn() + id: number; + + @Column() + nome: string; + + @Column({ type: 'int' }) + percentual: number; + + @Column({ nullable: true }) + icone: string; + + @Column({ type: 'int', default: 0 }) + ordem: number; + + @Column({ default: true }) + ativo: boolean; + + @CreateDateColumn() + created_at: Date; +} diff --git a/backend/src/entities/inscrito.entity.ts b/backend/src/entities/inscrito.entity.ts new file mode 100644 index 0000000..ecaf868 --- /dev/null +++ b/backend/src/entities/inscrito.entity.ts @@ -0,0 +1,16 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm'; + +@Entity('inscritos') +export class Inscrito { + @PrimaryGeneratedColumn() + id: number; + + @Column({ unique: true }) + email: string; + + @Column({ default: true }) + ativo: boolean; + + @CreateDateColumn() + created_at: Date; +} diff --git a/backend/src/entities/noticia.entity.ts b/backend/src/entities/noticia.entity.ts new file mode 100644 index 0000000..72a7909 --- /dev/null +++ b/backend/src/entities/noticia.entity.ts @@ -0,0 +1,37 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; + +@Entity('noticias') +export class Noticia { + @PrimaryGeneratedColumn() + id: number; + + @Column() + titulo: string; + + @Column({ type: 'text', nullable: true }) + preview: string; + + @Column({ type: 'text' }) + conteudo: string; + + @Column({ nullable: true }) + imagem_url: string; + + @Column({ type: 'date', nullable: true }) + data_publicacao: string; + + @Column({ default: 'normal' }) + categoria: string; + + @Column({ nullable: true }) + fonte: string; + + @Column({ nullable: true }) + link_fonte: string; + + @CreateDateColumn() + created_at: Date; + + @UpdateDateColumn() + updated_at: Date; +} diff --git a/backend/src/hypes/hypes.controller.ts b/backend/src/hypes/hypes.controller.ts new file mode 100644 index 0000000..efbed21 --- /dev/null +++ b/backend/src/hypes/hypes.controller.ts @@ -0,0 +1,27 @@ +import { Controller, Get, Post, Put, Delete, Param, Body, UseGuards } from '@nestjs/common'; +import { HypesService } from './hypes.service'; +import { JwtAuthGuard } from '../auth/jwt-auth.guard'; + +@Controller('hypes') +export class HypesController { + constructor(private svc: HypesService) {} + + @Get() + findActive() { return this.svc.findActive(); } + + @Get('all') + @UseGuards(JwtAuthGuard) + findAll() { return this.svc.findAll(); } + + @Post() + @UseGuards(JwtAuthGuard) + create(@Body() body: any) { return this.svc.create(body); } + + @Put(':id') + @UseGuards(JwtAuthGuard) + update(@Param('id') id: string, @Body() body: any) { return this.svc.update(+id, body); } + + @Delete(':id') + @UseGuards(JwtAuthGuard) + delete(@Param('id') id: string) { return this.svc.delete(+id); } +} diff --git a/backend/src/hypes/hypes.module.ts b/backend/src/hypes/hypes.module.ts new file mode 100644 index 0000000..d90e0c6 --- /dev/null +++ b/backend/src/hypes/hypes.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { HypesController } from './hypes.controller'; +import { HypesService } from './hypes.service'; +import { Hype } from '../entities/hype.entity'; +import { AuthModule } from '../auth/auth.module'; + +@Module({ + imports: [TypeOrmModule.forFeature([Hype]), AuthModule], + controllers: [HypesController], + providers: [HypesService], +}) +export class HypesModule {} diff --git a/backend/src/hypes/hypes.service.ts b/backend/src/hypes/hypes.service.ts new file mode 100644 index 0000000..0a3e40d --- /dev/null +++ b/backend/src/hypes/hypes.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Hype } from '../entities/hype.entity'; + +@Injectable() +export class HypesService { + constructor(@InjectRepository(Hype) private repo: Repository) {} + + findActive() { + return this.repo.find({ where: { ativo: true }, order: { ordem: 'ASC' } }); + } + + findAll() { + return this.repo.find({ order: { ordem: 'ASC' } }); + } + + create(dto: Partial) { return this.repo.save(dto); } + async update(id: number, dto: Partial) { await this.repo.update(id, dto); return this.repo.findOneBy({ id }); } + delete(id: number) { return this.repo.delete(id); } +} diff --git a/backend/src/inscritos/inscritos.controller.ts b/backend/src/inscritos/inscritos.controller.ts new file mode 100644 index 0000000..833b4f2 --- /dev/null +++ b/backend/src/inscritos/inscritos.controller.ts @@ -0,0 +1,26 @@ +import { Controller, Get, Post, Put, Delete, Param, Body, UseGuards } from '@nestjs/common'; +import { InscritosService } from './inscritos.service'; +import { JwtAuthGuard } from '../auth/jwt-auth.guard'; + +@Controller('inscritos') +export class InscritosController { + constructor(private svc: InscritosService) {} + + @Post() + subscribe(@Body() body: { email: string }) { return this.svc.subscribe(body.email); } + + @Get() + @UseGuards(JwtAuthGuard) + findAll() { return this.svc.findAll(); } + + @Get('count') + count() { return this.svc.count(); } + + @Put(':id') + @UseGuards(JwtAuthGuard) + update(@Param('id') id: string, @Body() body: any) { return this.svc.update(+id, body); } + + @Delete(':id') + @UseGuards(JwtAuthGuard) + delete(@Param('id') id: string) { return this.svc.delete(+id); } +} diff --git a/backend/src/inscritos/inscritos.module.ts b/backend/src/inscritos/inscritos.module.ts new file mode 100644 index 0000000..39e033f --- /dev/null +++ b/backend/src/inscritos/inscritos.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { InscritosController } from './inscritos.controller'; +import { InscritosService } from './inscritos.service'; +import { Inscrito } from '../entities/inscrito.entity'; +import { AuthModule } from '../auth/auth.module'; + +@Module({ + imports: [TypeOrmModule.forFeature([Inscrito]), AuthModule], + controllers: [InscritosController], + providers: [InscritosService], +}) +export class InscritosModule {} diff --git a/backend/src/inscritos/inscritos.service.ts b/backend/src/inscritos/inscritos.service.ts new file mode 100644 index 0000000..1fffaf8 --- /dev/null +++ b/backend/src/inscritos/inscritos.service.ts @@ -0,0 +1,23 @@ +import { Injectable, ConflictException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Inscrito } from '../entities/inscrito.entity'; + +@Injectable() +export class InscritosService { + constructor(@InjectRepository(Inscrito) private repo: Repository) {} + + async subscribe(email: string) { + const exists = await this.repo.findOneBy({ email }); + if (exists) { + if (!exists.ativo) { exists.ativo = true; await this.repo.save(exists); return exists; } + throw new ConflictException('Email já inscrito'); + } + return this.repo.save({ email }); + } + + findAll() { return this.repo.find({ order: { created_at: 'DESC' } }); } + async update(id: number, dto: Partial) { await this.repo.update(id, dto); return this.repo.findOneBy({ id }); } + delete(id: number) { return this.repo.delete(id); } + count() { return this.repo.count({ where: { ativo: true } }); } +} diff --git a/backend/src/main.ts b/backend/src/main.ts new file mode 100644 index 0000000..55a0af3 --- /dev/null +++ b/backend/src/main.ts @@ -0,0 +1,14 @@ +import 'reflect-metadata'; +import { NestFactory } from '@nestjs/core'; +import { ValidationPipe } from '@nestjs/common'; +import { AppModule } from './app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + app.setGlobalPrefix('api'); + app.enableCors(); + app.useGlobalPipes(new ValidationPipe({ transform: true })); + await app.listen(process.env.PORT || 8103); + console.log(`EKAI Backend running on port ${process.env.PORT || 8103}`); +} +bootstrap(); diff --git a/backend/src/noticias/noticias.controller.ts b/backend/src/noticias/noticias.controller.ts new file mode 100644 index 0000000..eeb7f84 --- /dev/null +++ b/backend/src/noticias/noticias.controller.ts @@ -0,0 +1,36 @@ +import { Controller, Get, Post, Put, Delete, Param, Body, Query, UseGuards } from '@nestjs/common'; +import { NoticiasService } from './noticias.service'; +import { JwtAuthGuard } from '../auth/jwt-auth.guard'; + +@Controller('noticias') +export class NoticiasController { + constructor(private svc: NoticiasService) {} + + @Get() + findAll(@Query('page') page = '1', @Query('limit') limit = '10') { + return this.svc.findAll(+page, +limit); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.svc.findOne(+id); + } + + @Post() + @UseGuards(JwtAuthGuard) + create(@Body() body: any) { + return this.svc.create(body); + } + + @Put(':id') + @UseGuards(JwtAuthGuard) + update(@Param('id') id: string, @Body() body: any) { + return this.svc.update(+id, body); + } + + @Delete(':id') + @UseGuards(JwtAuthGuard) + delete(@Param('id') id: string) { + return this.svc.delete(+id); + } +} diff --git a/backend/src/noticias/noticias.module.ts b/backend/src/noticias/noticias.module.ts new file mode 100644 index 0000000..233c8d7 --- /dev/null +++ b/backend/src/noticias/noticias.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { NoticiasController } from './noticias.controller'; +import { NoticiasService } from './noticias.service'; +import { Noticia } from '../entities/noticia.entity'; +import { AuthModule } from '../auth/auth.module'; + +@Module({ + imports: [TypeOrmModule.forFeature([Noticia]), AuthModule], + controllers: [NoticiasController], + providers: [NoticiasService], +}) +export class NoticiasModule {} diff --git a/backend/src/noticias/noticias.service.ts b/backend/src/noticias/noticias.service.ts new file mode 100644 index 0000000..91b1ccb --- /dev/null +++ b/backend/src/noticias/noticias.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Noticia } from '../entities/noticia.entity'; + +@Injectable() +export class NoticiasService { + constructor(@InjectRepository(Noticia) private repo: Repository) {} + + async findAll(page = 1, limit = 10) { + const [data, total] = await this.repo.findAndCount({ + order: { data_publicacao: 'DESC', id: 'DESC' }, + skip: (page - 1) * limit, + take: limit, + }); + return { data, total, page, pages: Math.ceil(total / limit) }; + } + + findOne(id: number) { + return this.repo.findOneBy({ id }); + } + + create(dto: Partial) { + return this.repo.save(dto); + } + + async update(id: number, dto: Partial) { + await this.repo.update(id, dto); + return this.repo.findOneBy({ id }); + } + + delete(id: number) { + return this.repo.delete(id); + } +} diff --git a/backend/src/seed.ts b/backend/src/seed.ts new file mode 100644 index 0000000..cc5e74d --- /dev/null +++ b/backend/src/seed.ts @@ -0,0 +1,210 @@ +import 'reflect-metadata'; +import { DataSource } from 'typeorm'; +import { Noticia } from './entities/noticia.entity'; +import { Hype } from './entities/hype.entity'; +import { Dica } from './entities/dica.entity'; +import { Inscrito } from './entities/inscrito.entity'; +import { Admin } from './entities/admin.entity'; + +const ds = new DataSource({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT) || 5432, + username: process.env.DB_USER || 'ekai', + password: process.env.DB_PASS || 'Ekai2026!', + database: process.env.DB_NAME || 'ekai', + entities: [Noticia, Hype, Dica, Inscrito, Admin], + synchronize: true, +}); + +const articles = [ + { + titulo: 'Big Techs Investem US$ 670 Bilhões em IA em 2026', + preview: 'Investimento combinado de Meta, Microsoft, Amazon e Alphabet supera custo do programa Apollo...', + conteudo: '

O investimento combinado de Meta, Microsoft, Amazon e Alphabet em infraestrutura de IA em 2026 chegou a US$ 670 bilhões — superando os maiores esforços de capital da história americana em porcentagem do PIB, ficando atrás apenas da Compra da Louisiana em 1803.

Quem lidera:

• Microsoft: ~US$ 180B (parceria OpenAI + Azure)

• Google/Alphabet: ~US$ 150B (TPUs + Gemini)

• Amazon/AWS: ~US$ 120B (Bedrock + chips Trainium)

• Meta: ~US$ 100B (Llama + data centers)

Por que importa: Estamos vivendo a maior corrida tecnológica desde a ida à Lua. A escala de investimento mostra que as Big Techs acreditam que IA será a plataforma dominante da próxima década.

', + imagem_url: 'https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5?w=600&h=300&fit=crop', + data_publicacao: '2026-02-10', + categoria: 'destaque', + }, + { + titulo: 'Grok Gera 3 Milhões de Imagens Sexualizadas no X', + preview: 'Relatório revela que IA de Musk inundou a plataforma com conteúdo problemático...', + conteudo: '

Um relatório do Center for Countering Digital Hate revelou que o Grok, a IA do X (antigo Twitter), gerou aproximadamente 3 milhões de imagens sexualizadas na plataforma, incluindo 23.000 envolvendo menores — uma média de 190 imagens por minuto durante 11 dias.

O escândalo:

• O X tinha acabado de publicar um tweet de "tolerância zero" para o Dia da Internet Segura

• As imagens foram geradas sem filtros adequados de segurança

• Reguladores europeus já pediram investigação formal

Reflexão: IA generativa sem guardrails é perigosa. A velocidade de geração de conteúdo supera qualquer capacidade de moderação humana. Empresas precisam de filtros ANTES, não depois.

', + imagem_url: 'https://images.unsplash.com/photo-1611746872915-64382b5c76da?w=600&h=300&fit=crop', + data_publicacao: '2026-02-10', + categoria: 'normal', + }, + { + titulo: 'ChatGPT Terá Links Patrocinados Para Usuários Gratuitos', + preview: 'OpenAI começa a monetizar com anúncios — quem paga $20/mês escapa...', + conteudo: '

A OpenAI confirmou que começará a exibir links patrocinados ("sponsored links") nas respostas do ChatGPT para usuários do plano gratuito.

Como funciona:

• Links relevantes ao contexto da conversa aparecerão nas respostas

• Modelo semelhante ao Google Ads, mas integrado nas respostas da IA

• Assinantes do ChatGPT Plus ($20/mês) não verão anúncios

A reflexão: Era questão de tempo. O modelo "grátis com anúncios" chegou à IA. A grande pergunta: isso vai comprometer a imparcialidade das respostas? Quando a IA recomenda um produto, será porque é o melhor — ou porque pagaram?

', + imagem_url: 'https://images.unsplash.com/photo-1611532736597-de2d4265fba3?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'destaque', + }, + { + titulo: 'UE Ordena Meta a Reabrir WhatsApp para IAs Rivais', + preview: 'Comissão Europeia considera bloqueio do ChatGPT e Copilot como antitruste...', + conteudo: '

A Comissão Europeia determinou que a Meta deve permitir que assistentes de IA concorrentes operem dentro do WhatsApp, classificando o caso como "urgente" pelo risco de dano "irreparável" à competição no setor de IA.

A decisão vem após a Meta ter bloqueado integrações do ChatGPT, Copilot e outros assistentes na plataforma em novembro, favorecendo sua própria Meta AI.

Impacto:

• WhatsApp terá que permitir bots de IA de terceiros

• Usuários poderão escolher qual assistente usar dentro do app

• Precedente importante para regulamentação de IA em plataformas

Opinião: A era dos "jardins murados" de IA está acabando. Mais competição = melhores produtos para o usuário.

', + imagem_url: 'https://images.unsplash.com/photo-1504639725590-34d0984388bd?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'normal', + }, + { + titulo: 'Super Bowl 2026: Anúncios de IA Dominam os Intervalos', + preview: 'AI.com, plataforma de agentes de IA, estreia com comercial de 30 segundos...', + conteudo: '

O Super Bowl 2026 foi dominado por anúncios de IA. O destaque foi a AI.com, nova plataforma do CEO da Crypto.com, que exibiu um comercial de 30 segundos prometendo "democratizar agentes de IA e AGI".

Destaques:

• AI.com prometeu handles personalizados como "Mark", "Sam" e "Elon"

• Kris Marszalek (Crypto.com) lidera a plataforma

• Nenhum comercial de IA generativa convenceu os críticos

Análise: A mesma galera do hype cripto agora quer surfar a onda da IA. O ceticismo é compreensível — mas a tecnologia por trás é muito mais real que NFTs.

', + imagem_url: 'https://images.unsplash.com/photo-1518770660439-4636190af475?w=600&h=300&fit=crop', + data_publicacao: '2026-02-09', + categoria: 'normal', + }, + { + titulo: 'Waymo Usa IA para Simular Mundos 3D com Elefantes e Tornados', + preview: 'Parceria com Google DeepMind cria simulações realistas para treinar carros autônomos...', + conteudo: '

A Waymo revelou que está usando modelos de IA do Google DeepMind (Genie 3) para gerar mundos 3D completos e simular cenários extremos para seus carros autônomos — incluindo enchentes, tornados e até elefantes na pista.

Como funciona:

• IA gera cenários 3D fotorrealistas a partir de texto

• Carros autônomos são testados virtualmente em milhões de situações raras

• Reduz necessidade de testes físicos caros e perigosos

Curiosidade: Internautas apontaram que a Waymo treina para elefantes mas ainda tem dificuldade com ônibus escolares em Austin. Prioridades, né?

', + imagem_url: 'https://images.unsplash.com/photo-1550751827-4bd374c3f58b?w=600&h=300&fit=crop', + data_publicacao: '2026-02-08', + categoria: 'normal', + }, + { + titulo: 'DocuSign Aposta Tudo em IA: "Não Oferecer IA Não é Opção"', + preview: 'CEO Allan Thygesen diz que IA é obrigatória para qualquer empresa de software...', + conteudo: '

O CEO da DocuSign, Allan Thygesen, declarou em entrevista que "não oferecer um serviço de IA simplesmente não é opção" para empresas de software em 2026.

O que a DocuSign está fazendo:

• IA para análise automática de contratos

• Extração inteligente de cláusulas e riscos

• Assistente que negocia termos automaticamente

A lição para empresas: Se até a DocuSign — uma empresa de assinatura digital — está apostando forte em IA, qualquer empresa que ainda não está se movimentando está ficando para trás.

', + imagem_url: 'https://images.unsplash.com/photo-1563986768609-322da13575f2?w=600&h=300&fit=crop', + data_publicacao: '2026-02-08', + categoria: 'normal', + }, + { + titulo: 'Google Estuda Permitir que Publishers Saiam da IA no Search', + preview: 'Após pressão do Reino Unido, Google "explora" opt-out de AI Overviews...', + conteudo: '

Após o regulador britânico CMA dar ao Google status de "mercado estratégico", a empresa anunciou que está "explorando" formas de permitir que publishers optem por não ter seu conteúdo usado nos AI Overviews do Google Search.

Contexto:

• AI Overviews resumem conteúdo de sites sem que o usuário precise clicar

• Publishers reclamam que isso mata o tráfego orgânico

• O Reino Unido ameaçou forçar o opt-out por lei

Opinião: Google usando "explorando" é corporate speak para "vamos enrolar até sermos obrigados". Mas o precedente é importante — criadores de conteúdo merecem controle sobre como sua obra é usada.

', + imagem_url: 'https://images.unsplash.com/photo-1639322537228-f710d846310a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-07', + categoria: 'destaque', + }, + { + titulo: 'Disney + OpenAI: Sora Vai Criar Vídeos com Personagens Disney', + preview: 'Assinantes do Disney+ poderão gerar clipes de 30s com 250+ personagens...', + conteudo: '

A Disney confirmou detalhes da parceria com a OpenAI para integrar o Sora ao Disney+. Bob Iger revelou aos investidores que assinantes poderão criar vídeos de 30 segundos com mais de 250 personagens Disney.

O que vem:

• Clipes gerados por IA com personagens da Disney, Pixar e Marvel

• Feeds verticais curados dentro do Disney+

• Lançamento previsto para o ano fiscal de 2026

Impacto: É a maior validação da IA generativa no entretenimento mainstream. Se a Disney — a empresa mais protetora de suas IPs — embarcou, é porque acredita que dá pra controlar a qualidade.

', + imagem_url: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=300&fit=crop', + data_publicacao: '2026-02-07', + categoria: 'normal', + }, + { + titulo: 'Suda 51 Critica IA Generativa: "Algo Está Estranho"', + preview: 'Criador de No More Heroes diz que imagens de IA têm algo "psicologicamente errado"...', + conteudo: '

Suda 51, o excêntrico criador de No More Heroes e diretor da Grasshopper Manufacture, falou sobre IA generativa em entrevista ao Eurogamer.

O que ele disse:

"Muito do que vejo de IA nas redes sociais... por mais que tenha evoluído, tem algo nas imagens e vídeos que parece errado. A maioria das pessoas tem essa mesma sensação, algo psicológico te avisa que algo não está certo. Algo está meio estranho."

Reflexão: É o "uncanny valley" da IA generativa. Mesmo quando a qualidade técnica é alta, nosso cérebro detecta que algo é artificial. Por enquanto. A questão é: por quanto tempo?

', + imagem_url: 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=600&h=300&fit=crop', + data_publicacao: '2026-02-06', + categoria: 'normal', + }, + { + titulo: 'Meta Gasta Milhões em Campanha Para Convencer Vizinhos de Data Centers', + preview: 'Empresa investe pesado em propaganda para comunidades próximas a data centers de IA...', + conteudo: '

A Meta lançou uma campanha publicitária milionária para convencer comunidades locais de que ter data centers de IA no quintal "não é tão ruim assim".

A polêmica:

• Data centers de IA consomem energia equivalente a cidades inteiras

• Comunidades reclamam de ruído, consumo de água e impacto ambiental

• Meta promete empregos e investimento local, mas moradores são céticos

O melhor comentário da internet: "Coloca um do lado da SUA casa, Mark! Seja a mudança que você quer ver no mundo." 😂

', + imagem_url: 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=600&h=300&fit=crop', + data_publicacao: '2026-02-06', + categoria: 'normal', + }, + { + titulo: 'Sophia: Criador do Robô Pediu Dinheiro a Epstein para "Androides Sexy"', + preview: 'Documentos do DOJ revelam proposta de US$ 3 milhões para construir "ginoide atraente"...', + conteudo: '

Documentos liberados pelo Departamento de Justiça dos EUA revelaram que David Hanson, criador do robô Sophia, enviou uma proposta de US$ 3 milhões a Jeffrey Epstein para construir uma "android feminina atraente" com um "rosto e corpo de robô lindo e funcional".

Detalhes perturbadores:

• A proposta incluía um rascunho do design da "ginoide"

• Uma nota dizia que "o design final será feito em colaboração com você"

• Os documentos são parte do lote liberado pelo DOJ na semana passada

Reflexão: Um lembrete sombrio de como a interseção entre tecnologia, poder e falta de ética pode levar a lugares assustadores. IA e robótica precisam de governança séria.

', + imagem_url: 'https://images.unsplash.com/photo-1620712943543-bcc4688e7485?w=600&h=300&fit=crop', + data_publicacao: '2026-02-05', + categoria: 'destaque', + }, + { + titulo: 'Moltbot Vira Febre: Agente de IA Local Que Roda no Seu PC', + preview: 'Projeto viral no Reddit permite rodar agente autônomo sem nuvem...', + conteudo: '

O Moltbot (anteriormente Clawdbot), agente de IA que roda localmente no PC do usuário, virou o projeto mais comentado da semana nas comunidades tech do Reddit.

O que aconteceu:

• Criador Peter Steinberger foi contatado pela Anthropic para renomear (era "Clawdbot", inspirado no mascote do Claude Code)

• Golpistas criaram uma cripto falsa aproveitando a mudança de nome

• Steinberger: "Tudo que podia dar errado hoje, deu errado"

Por que importa: Agentes de IA locais são o futuro para privacidade. Rodar IA no seu próprio hardware, sem enviar dados pra nuvem, é uma tendência crescente.

', + imagem_url: 'https://images.unsplash.com/photo-1516110833967-0b5716ca1387?w=600&h=300&fit=crop', + data_publicacao: '2026-02-05', + categoria: 'normal', + }, + { + titulo: 'Home Assistant + Claude Code: IA Configura Sua Casa Inteligente', + preview: 'Jornalista do The Verge migra toda a casa para Home Assistant em uma tarde usando IA...', + conteudo: '

Jennifer Pattison Tuohy, do The Verge, relatou que depois de anos tentando migrar para o Home Assistant, conseguiu fazer a transição em uma única tarde usando o Claude Code como assistente.

O que a IA fez:

• Configurou integrações com dezenas de dispositivos

• Escreveu automações YAML complexas

• Debugou problemas de conectividade em tempo real

• Criou dashboards personalizados

A lição: IA como copiloto de programação não é mais futuro — é presente. Tarefas que levavam dias agora levam horas. E você não precisa ser programador.

', + imagem_url: 'https://images.unsplash.com/photo-1677442136019-21780ecad995?w=600&h=300&fit=crop', + data_publicacao: '2026-02-04', + categoria: 'normal', + }, + { + titulo: 'Moltbook: A "Reddit de IA" Que Virou Febre e Ficou Estranha', + preview: 'Plataforma viral mistura conteúdo humano e de IA de formas inesperadas...', + conteudo: '

O Moltbook, plataforma estilo Reddit que integra IA em todos os posts e comentários, ficou cada vez mais estranho ao longo do fim de semana. O que começou como uma experiência interessante virou um caos.

O que está acontecendo:

• Bots de IA estão debatendo entre si em threads infinitas

• Fica cada vez mais difícil distinguir humanos de bots

• Alguns usuários usam a plataforma como "simulador de sociedade"

Opinião: O Moltbook é um laboratório fascinante do futuro da internet. O que acontece quando IA pode postar, comentar e votar como humanos? Spoiler: fica estranho rápido.

', + imagem_url: 'https://images.unsplash.com/photo-1485827404703-89b55fcc595e?w=600&h=300&fit=crop', + data_publicacao: '2026-02-04', + categoria: 'normal', + }, + { + titulo: 'Sam Altman Declara: "Basicamente Construímos AGI"', + preview: 'CEO da OpenAI faz declaração bombástica em perfil da Forbes, depois recua...', + conteudo: '

Em um perfil extenso da Forbes sobre sua jornada no mundo da IA, Sam Altman, CEO da OpenAI, declarou: "Basicamente construímos AGI, ou estamos muito próximos disso."

Dias depois, Altman recuou: "Eu quis dizer isso como uma declaração espiritual, não literal. Atingir AGI vai exigir muitas descobertas de tamanho médio. Não acho que precisamos de uma grande."

O contexto:

• AGI (Inteligência Artificial Geral) é o "santo graal" — IA capaz de qualquer tarefa intelectual humana

• A OpenAI define internamente níveis de AGI, e acredita estar no nível 2 de 5

• Críticos dizem que Altman faz isso para manter o hype e os investimentos

Opinião: Altman é mestre do hype calculado. "Basicamente AGI" é vago o suficiente para gerar manchetes sem ser falsificável. Mas os modelos atuais já estão transformando trabalho real.

', + imagem_url: 'https://images.unsplash.com/photo-1535378917042-10a22c95931a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'destaque', + }, + { + titulo: 'Elon Musk Funde SpaceX com xAI: "IA no Mundo Físico"', + preview: 'Tesla investiu US$ 2B na xAI enquanto empresa queima US$ 1B por mês...', + conteudo: '

A Tesla revelou em seu balanço trimestral que investiu US$ 2 bilhões na xAI, empresa de IA de Elon Musk que também é dona do X.com e do chatbot Grok.

Os números assustam:

• xAI queimou US$ 7.8 bilhões nos primeiros 9 meses de 2025

• SpaceX é lucrativa, mas xAI queima ~US$ 1 bilhão por mês

• Tesla justifica o investimento como "aprimoramento de produtos de IA no mundo físico"

O melhor comentário: "As constantes novas empresas e fusões de Musk parecem o equivalente corporativo de criar um email novo toda vez que quer usar um free trial." 😂

', + imagem_url: 'https://images.unsplash.com/photo-1624953587687-daf255b6b80a?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'normal', + }, + { + titulo: '2026: Agentes de IA São a Nova Fronteira — Mas Funcionam?', + preview: 'Todas as Big Techs apostam em agentes autônomos, mas resultados variam...', + conteudo: '

2026 está sendo chamado de "O Ano dos Agentes". Microsoft, Google, OpenAI e Anthropic lançaram ou anunciaram agentes de IA que executam tarefas complexas de forma autônoma.

O que são Agentes de IA?

Sistemas que vão além de responder perguntas — eles planejam, executam e iteratam sobre tarefas com mínima supervisão humana.

Exemplos reais:

• Microsoft Copilot Agents: gerenciam fluxos de trabalho no Office 365

• Claude Code: escreve e executa código autonomamente

• Google Gemini Agents: navegam a web e preenchem formulários

A realidade: Agentes são promissores mas ainda falham em tarefas que exigem julgamento nuanceado. Estamos no "early innings" — quem aprender a usá-los agora terá vantagem competitiva.

', + imagem_url: 'https://images.unsplash.com/photo-1550745165-9bc0b252726f?w=600&h=300&fit=crop', + data_publicacao: '2026-02-03', + categoria: 'normal', + }, +]; + +const hypes = [ + { nome: 'Agentes Autônomos', percentual: 96, icone: '🔥', ordem: 1, ativo: true }, + { nome: 'Mega-Investimentos ($670B)', percentual: 94, icone: '🏗️', ordem: 2, ativo: true }, + { nome: 'Anúncios/Monetização em IA', percentual: 88, icone: '📢', ordem: 3, ativo: true }, + { nome: 'Regulamentação UE vs Big Tech', percentual: 85, icone: '⚖️', ordem: 4, ativo: true }, + { nome: 'IA no Entretenimento (Disney+Sora)', percentual: 79, icone: '🎬', ordem: 5, ativo: true }, + { nome: 'IA Local / On-Device', percentual: 73, icone: '🤖', ordem: 6, ativo: true }, +]; + +const dica = { + titulo: '💡 Use Agentes de IA Para Tarefas Repetitivas', + conteudo: '

Em vez de usar ChatGPT como um Google glorificado, experimente agentes como Claude Code ou Copilot para automatizar tarefas completas: configurar servidores, processar planilhas, migrar sistemas.

A diferença: em vez de perguntar "como faço X?", você diz "faça X" — e o agente planeja, executa e te mostra o resultado. É a próxima evolução no uso de IA.

', + data_publicacao: '2026-02-10', + ativa: true, +}; + +async function seed() { + await ds.initialize(); + console.log('Connected to DB'); + + const noticiaRepo = ds.getRepository(Noticia); + const hypeRepo = ds.getRepository(Hype); + const dicaRepo = ds.getRepository(Dica); + + // Clear existing + await noticiaRepo.clear(); + await hypeRepo.clear(); + await dicaRepo.clear(); + + // Seed + await noticiaRepo.save(articles); + console.log(`Seeded ${articles.length} articles`); + + await hypeRepo.save(hypes); + console.log(`Seeded ${hypes.length} hypes`); + + await dicaRepo.save([dica]); + console.log('Seeded 1 dica'); + + await ds.destroy(); + console.log('Done!'); +} + +seed().catch(e => { console.error(e); process.exit(1); }); diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000..5485d9d --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2021", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": false, + "noImplicitAny": false, + "strictBindCallApply": false, + "forceConsistentCasingInFileNames": false, + "noFallthroughCasesInSwitch": false, + "esModuleInterop": true + } +} diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..18bc70e --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,16 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 0000000..4fa125d --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,29 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{js,jsx}'], + extends: [ + js.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + rules: { + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + }, + }, +]) diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..b5d8fff --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,14 @@ + + + + + + + + EK[AI] - Eduardo Kislanski + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..4f27499 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,3681 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "dompurify": "^3.3.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-quill-new": "^3.8.3", + "react-router-dom": "^7.13.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@tailwindcss/vite": "^4.1.18", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "tailwindcss": "^4.1.18", + "vite": "^7.3.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parchment": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quill": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz", + "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==", + "license": "BSD-3-Clause", + "dependencies": { + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" + } + }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-quill-new": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/react-quill-new/-/react-quill-new-3.8.3.tgz", + "integrity": "sha512-c96PYqFTo0pI4R3e79B3rH9LUIce1kIQbmTBu/imJQZk8305ogyLyBqKKjG2UoInDlquXqePSzmBo2aVia3ttw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21", + "quill": "~2.0.3" + }, + "peerDependencies": { + "quill-delta": "^5.1.0", + "react": "^16 || ^17 || ^18 || ^19", + "react-dom": "^16 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz", + "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==", + "license": "MIT", + "dependencies": { + "react-router": "7.13.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..77f6f12 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,32 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "dompurify": "^3.3.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-quill-new": "^3.8.3", + "react-router-dom": "^7.13.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@tailwindcss/vite": "^4.1.18", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "tailwindcss": "^4.1.18", + "vite": "^7.3.1" + } +} diff --git a/frontend/public/avatar.jpg b/frontend/public/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec2a4a713265e8858ade02e8c5140574ae8225a5 GIT binary patch literal 113205 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 +

Vite + React

+
+ +

+ Edit src/App.jsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/frontend/src/api.js b/frontend/src/api.js new file mode 100644 index 0000000..46f4a6f --- /dev/null +++ b/frontend/src/api.js @@ -0,0 +1,44 @@ +const BASE = '/api'; + +function headers() { + const h = { 'Content-Type': 'application/json' }; + const token = localStorage.getItem('ekai_token'); + if (token) h['Authorization'] = `Bearer ${token}`; + return h; +} + +async function api(path, opts = {}) { + const res = await fetch(`${BASE}${path}`, { ...opts, headers: headers() }); + if (res.status === 401) { localStorage.removeItem('ekai_token'); window.location.href = '/admin/login'; return; } + return res.json(); +} + +export const getNoticias = (page = 1, limit = 50) => api(`/noticias?page=${page}&limit=${limit}`); +export const getNoticia = (id) => api(`/noticias/${id}`); +export const createNoticia = (data) => api('/noticias', { method: 'POST', body: JSON.stringify(data) }); +export const updateNoticia = (id, data) => api(`/noticias/${id}`, { method: 'PUT', body: JSON.stringify(data) }); +export const deleteNoticia = (id) => api(`/noticias/${id}`, { method: 'DELETE' }); + +export const getHypes = () => api('/hypes'); +export const getHypesAll = () => api('/hypes/all'); +export const createHype = (data) => api('/hypes', { method: 'POST', body: JSON.stringify(data) }); +export const updateHype = (id, data) => api(`/hypes/${id}`, { method: 'PUT', body: JSON.stringify(data) }); +export const deleteHype = (id) => api(`/hypes/${id}`, { method: 'DELETE' }); + +export const getDica = () => api('/dica'); +export const getDicasAll = () => api('/dica/all'); +export const createDica = (data) => api('/dica', { method: 'POST', body: JSON.stringify(data) }); +export const updateDica = (id, data) => api(`/dica/${id}`, { method: 'PUT', body: JSON.stringify(data) }); +export const deleteDica = (id) => api(`/dica/${id}`, { method: 'DELETE' }); + +export const subscribe = (email) => api('/inscritos', { method: 'POST', body: JSON.stringify({ email }) }); +export const getInscritos = () => api('/inscritos'); +export const deleteInscrito = (id) => api(`/inscritos/${id}`, { method: 'DELETE' }); + +export const login = async (email, password) => { + const res = await fetch(`${BASE}/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); + if (!res.ok) throw new Error('Login failed'); + const data = await res.json(); + localStorage.setItem('ekai_token', data.access_token); + return data; +}; diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/frontend/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/components/AdminLayout.jsx b/frontend/src/components/AdminLayout.jsx new file mode 100644 index 0000000..ab9bffc --- /dev/null +++ b/frontend/src/components/AdminLayout.jsx @@ -0,0 +1,38 @@ +import { useEffect } from 'react'; +import { Outlet, Link, useNavigate, useLocation } from 'react-router-dom'; + +export default function AdminLayout() { + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + if (!localStorage.getItem('ekai_token')) navigate('/admin/login'); + }, []); + + const links = [ + { to: '/admin', label: '📊 Dashboard' }, + { to: '/admin/noticias', label: '📰 Notícias' }, + { to: '/admin/hypes', label: '🔥 Hypes' }, + { to: '/admin/dicas', label: '💡 Dicas' }, + { to: '/admin/inscritos', label: '📧 Inscritos' }, + ]; + + return ( +
+
+
+ 🧠 EK[AI] Admin + +
+ +
+
+ +
+
+ ); +} diff --git a/frontend/src/components/NeuralCanvas.jsx b/frontend/src/components/NeuralCanvas.jsx new file mode 100644 index 0000000..26277ac --- /dev/null +++ b/frontend/src/components/NeuralCanvas.jsx @@ -0,0 +1,65 @@ +import { useEffect, useRef } from 'react'; + +export default function NeuralCanvas() { + const ref = useRef(null); + + useEffect(() => { + const canvas = ref.current; + const ctx = canvas.getContext('2d'); + let nodes = []; + let animId; + + function resize() { + canvas.width = window.innerWidth; + canvas.height = document.body.scrollHeight; + nodes = []; + const num = Math.floor((canvas.width * canvas.height) / 25000); + for (let i = 0; i < num; i++) { + nodes.push({ + x: Math.random() * canvas.width, + y: Math.random() * canvas.height, + vx: (Math.random() - 0.5) * 0.2, + vy: (Math.random() - 0.5) * 0.2, + r: Math.random() * 2 + 1 + }); + } + } + + function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = 'rgba(0, 200, 255, 0.06)'; + for (let i = 0; i < nodes.length; i++) { + for (let j = i + 1; j < nodes.length; j++) { + const d = Math.hypot(nodes[i].x - nodes[j].x, nodes[i].y - nodes[j].y); + if (d < 100) { + ctx.globalAlpha = 1 - d / 100; + ctx.beginPath(); + ctx.moveTo(nodes[i].x, nodes[i].y); + ctx.lineTo(nodes[j].x, nodes[j].y); + ctx.stroke(); + } + } + } + ctx.globalAlpha = 1; + nodes.forEach(n => { + ctx.beginPath(); + ctx.arc(n.x, n.y, n.r, 0, Math.PI * 2); + ctx.fillStyle = 'rgba(0, 200, 255, 0.4)'; + ctx.fill(); + n.x += n.vx; + n.y += n.vy; + if (n.x < 0 || n.x > canvas.width) n.vx *= -1; + if (n.y < 0 || n.y > canvas.height) n.vy *= -1; + }); + animId = requestAnimationFrame(draw); + } + + resize(); + draw(); + window.addEventListener('resize', resize); + const interval = setInterval(resize, 3000); + return () => { cancelAnimationFrame(animId); window.removeEventListener('resize', resize); clearInterval(interval); }; + }, []); + + return ; +} diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000..e9f150e --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,40 @@ +@import "tailwindcss"; + +@theme { + --color-dark: #0a0a0f; + --color-dark-card: #12121a; + --color-primary: #00c8ff; + --color-text: #e0e0e0; + --color-text-dim: #888; + --color-border: rgba(255,255,255,0.1); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400 800; + font-display: swap; + src: url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap'); +} + +body { + font-family: 'Inter', sans-serif; + background: #0a0a0f; + color: #e0e0e0; + margin: 0; + line-height: 1.6; +} + +* { box-sizing: border-box; } + +/* Rich text content */ +.rich-content p { margin-bottom: 12px; color: #888; font-size: 15px; line-height: 1.8; } +.rich-content strong { color: #e0e0e0; } + +/* Quill overrides for admin */ +.ql-toolbar { background: #1a1a2e !important; border-color: rgba(255,255,255,0.1) !important; } +.ql-container { background: #12121a !important; border-color: rgba(255,255,255,0.1) !important; color: #e0e0e0 !important; min-height: 200px; } +.ql-editor { color: #e0e0e0 !important; } +.ql-snow .ql-stroke { stroke: #888 !important; } +.ql-snow .ql-fill { fill: #888 !important; } +.ql-snow .ql-picker-label { color: #888 !important; } diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx new file mode 100644 index 0000000..e16c838 --- /dev/null +++ b/frontend/src/main.jsx @@ -0,0 +1,31 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { BrowserRouter, Routes, Route } from 'react-router-dom' +import './index.css' +import Home from './pages/Home' +import AdminLogin from './pages/admin/Login' +import AdminDashboard from './pages/admin/Dashboard' +import AdminNoticias from './pages/admin/Noticias' +import AdminNoticiaForm from './pages/admin/NoticiaForm' +import AdminHypes from './pages/admin/Hypes' +import AdminDicas from './pages/admin/Dicas' +import AdminInscritos from './pages/admin/Inscritos' +import AdminLayout from './components/AdminLayout' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + } /> + } /> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + +) diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx new file mode 100644 index 0000000..d6a3ce5 --- /dev/null +++ b/frontend/src/pages/Home.jsx @@ -0,0 +1,119 @@ +import { useState, useEffect } from 'react'; +import NeuralCanvas from '../components/NeuralCanvas'; +import { getNoticias, getHypes, getDica, subscribe } from '../api'; + +export default function Home() { + const [noticias, setNoticias] = useState([]); + const [hypes, setHypes] = useState([]); + const [dica, setDica] = useState(null); + const [expanded, setExpanded] = useState(null); + const [email, setEmail] = useState(''); + const [subMsg, setSubMsg] = useState(''); + const [page, setPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + + useEffect(() => { + getNoticias(page, 50).then(r => { setNoticias(r.data || []); setTotalPages(r.pages || 1); }); + getHypes().then(r => setHypes(Array.isArray(r) ? r : [])); + getDica().then(r => setDica(r)); + }, [page]); + + const handleSub = async (e) => { + e.preventDefault(); + try { await subscribe(email); setSubMsg('✅ Inscrito com sucesso!'); setEmail(''); } catch { setSubMsg('Email já inscrito ou inválido'); } + }; + + return ( +
+ + + {/* Header */} +
+ +
+ + {/* Hero */} +
+
+ Eduardo Kislanski +

EK[AI]

+

🧠 Seu Filtro Diário de IA

+
+ setEmail(e.target.value)} placeholder="Seu e-mail..." required className="flex-1 px-4 py-3 bg-[#12121a] border border-white/10 rounded-lg text-[#e0e0e0] text-base focus:outline-none focus:border-[#00c8ff]" /> + +
+ {subMsg &&

{subMsg}

} +

Por Eduardo Kislanski

+
+
+ + {/* Noticias */} +
+

📰 Notícias de IA

+ {noticias.map(n => ( +
+
setExpanded(expanded === n.id ? null : n.id)}> + + {n.categoria === 'destaque' &&
🔥 Destaque
} +
+ {new Date(n.data_publicacao + 'T12:00:00').toLocaleDateString('pt-BR', { month: 'short', day: 'numeric', year: 'numeric' })} +

{n.titulo}

+ {expanded !== n.id &&

{n.preview}

} + {expanded !== n.id && 👆 Toque para ler} +
+
+ {expanded === n.id && ( +
+ )} +
+ ))} +
+ + {/* Hype Tracker */} + {hypes.length > 0 && ( +
+
+
📊 HYPE TRACKER
+
+

Tendências IA — Semana de 3-10 Fev 2026

+ {hypes.map(h => ( +
+
+ {h.icone} {h.nome} + {h.percentual}% +
+
+
+
+
+ ))} +
+
+
+ )} + + {/* Dica do Dia */} + {dica && ( +
+
+
🧠 DICA DO DIA
+
+

{dica.titulo}

+
+
+
+
+ )} + + {/* Footer */} +
+

🧠 EK[AI]

+

AI Vertice

+

© 2026 Eduardo Kislanski

+
+
+ ); +} diff --git a/frontend/src/pages/admin/Dashboard.jsx b/frontend/src/pages/admin/Dashboard.jsx new file mode 100644 index 0000000..a69cfca --- /dev/null +++ b/frontend/src/pages/admin/Dashboard.jsx @@ -0,0 +1,36 @@ +import { useState, useEffect } from 'react'; +import { getNoticias, getInscritos, getHypesAll, getDicasAll } from '../../api'; + +export default function Dashboard() { + const [stats, setStats] = useState({ noticias: 0, inscritos: 0, hypes: 0, dicas: 0 }); + + useEffect(() => { + Promise.all([ + getNoticias(1, 1).then(r => r?.total || 0), + getInscritos().then(r => Array.isArray(r) ? r.length : 0), + getHypesAll().then(r => Array.isArray(r) ? r.length : 0), + getDicasAll().then(r => Array.isArray(r) ? r.length : 0), + ]).then(([n, i, h, d]) => setStats({ noticias: n, inscritos: i, hypes: h, dicas: d })); + }, []); + + const cards = [ + { label: '📰 Notícias', value: stats.noticias, color: '#00c8ff' }, + { label: '📧 Inscritos', value: stats.inscritos, color: '#00ff88' }, + { label: '🔥 Hypes', value: stats.hypes, color: '#ff6b35' }, + { label: '💡 Dicas', value: stats.dicas, color: '#ffd700' }, + ]; + + return ( +
+

Dashboard

+
+ {cards.map(c => ( +
+
{c.value}
+
{c.label}
+
+ ))} +
+
+ ); +} diff --git a/frontend/src/pages/admin/Dicas.jsx b/frontend/src/pages/admin/Dicas.jsx new file mode 100644 index 0000000..22a6f64 --- /dev/null +++ b/frontend/src/pages/admin/Dicas.jsx @@ -0,0 +1,51 @@ +import { useState, useEffect } from 'react'; +import { getDicasAll, createDica, updateDica, deleteDica } from '../../api'; + +export default function AdminDicas() { + const [dicas, setDicas] = useState([]); + const [form, setForm] = useState({ titulo: '', conteudo: '', data_publicacao: '', ativa: true }); + const [editing, setEditing] = useState(null); + + const load = () => getDicasAll().then(r => setDicas(Array.isArray(r) ? r : [])); + useEffect(() => { load(); }, []); + + const handleSubmit = async (e) => { + e.preventDefault(); + if (editing) await updateDica(editing, form); + else await createDica(form); + setForm({ titulo: '', conteudo: '', data_publicacao: '', ativa: true }); + setEditing(null); + load(); + }; + + const inputCls = "w-full px-4 py-3 bg-[#0a0a0f] border border-white/10 rounded-lg text-[#e0e0e0] focus:outline-none focus:border-[#00c8ff]"; + + return ( +
+

Dicas do Dia

+
+ setForm(f => ({ ...f, titulo: e.target.value }))} className={inputCls} required /> +