diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 0000000..c607671 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,10 @@ +version = 1 + +[[analyzers]] +name = "shell" + +[[analyzers]] +name = "javascript" + + [analyzers.meta] + plugins = ["vue"] \ No newline at end of file diff --git a/.env b/.env new file mode 100644 index 0000000..3ca08c5 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_APP_DEFAULT_LANGUAGE = "es" \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a3454ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Git +.git + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +coverage + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +cypress/videos/* \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d9b354c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +# Choose the Image which has Node installed already +FROM node:lts-alpine + +# install simple http server for serving static content +RUN npm install -g http-server + +# Make the 'app' folder the current working directory +WORKDIR /app + +# Copy both 'package.json' and 'package-lock.json' (if available) +COPY package*.json ./ + +# Install project dependencies +RUN npm install + +# Copy project files and folders to the current working directory (i.e. 'app' folder) +COPY . . + +# Build app for production with minification +RUN npm run build + +EXPOSE 3000 +CMD [ "http-server", "dist" ] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f35ab5d --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +docker-up: + docker build -t danieljsaldana-dev . + docker-compose --env-file .env up -d + +test: + npm test \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..76c2b4a --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +# Daniel J. Saldaña - Portfolio + +## Deployment Guide + +For a step-by-step guide on deploying your code, check out [this deployment guide](https://danieljsaldana.dev/despliega-tu-web-facil-con-azure-static-web-apps). + +## Overview + +This is the repository for Daniel J. Saldaña's portfolio, showcasing his work and projects. The portfolio is built using Vue.js, Vuex for state management, and Sass for styling. The development environment is set up with Vite for fast and efficient development, and TypeScript for type-checking. + +## Features + +- **Vue.js 3**: Utilizes the latest version of Vue.js for building interactive user interfaces. +- **Vuex 4**: Manages state in the application to ensure a centralized and predictable state management. +- **Sass**: Enhances the styling capabilities with the power of Sass for maintainable and modular styles. +- **Vite**: The build tool for the project, ensuring fast and optimized development. +- **TypeScript**: Adds static typing to the project, catching errors during development. +- **Vitest**: Testing library for Vue.js applications, ensuring robust and reliable code. +- **Cypress**: End-to-end testing tool for a comprehensive testing strategy. + +## Getting Started + +1. Clone the repository: + +```bash +git clone https://dev.azure.com/danieljsaldana/labs-danieljsaldana/_git/portfolio-vitest +``` + +2. Install dependencies: + +```bash +npm install +``` + +2. Run the development server: + +```bash +npm run serve +``` + +3. Open your browser and navigate to http://localhost:3000 to view the portfolio. + +## Scripts + +Here are the available scripts for this project: + +- **npm run serve**: Starts the development server. Use this for local development. +- **npm run build**: Builds the project for production. The optimized files will be in the `dist/` directory. +- **npm run preview**: Previews the production build. This is useful for testing the optimized build locally. +- **npm test**: Runs tests using Vitest. Ensure your tests are in the `tests/` directory. +- **npm run coverage**: Generates test coverage using Vitest. The coverage report will be available in the `coverage/` directory. +- **npm run cypress:open**: Opens the Cypress test runner. Write end-to-end tests in the `cypress/` directory. +- **npm run cypress:run**: Runs Cypress tests in headless mode. + +## Folder Structure + +The project follows a standard Vue.js project structure. Here's a brief overview: + +- **`src/`**: Contains the main source code of the project. + - **`assets/`**: Images, fonts, and other static assets. + - **`components/`**: Vue components used in the project. + - **`views/`**: Top-level views or pages. + - **`styles/`**: Stylesheets, including Sass files. + - **`store/`**: Vuex store modules for state management. + - **`main.ts`**: Main entry file for the application. +- **`public/`**: Public assets and HTML files. + +Feel free to explore and customize the folder structure to fit your project needs. + +## Customization + +1. **Update Content**: Replace the existing content in the Vue components and styles to reflect your portfolio information. + +2. **Add Projects**: Add your projects to the `views/Projects.vue` component. + +3. **Modify Styles**: Customize the styles in the `styles/` folder to match your design preferences. + +## Testing + +To run tests using Vitest, use the following script: + +```bash +npm test +``` + +### Deployment + +To deploy the project, use the following script: + +```bash +npm run build +``` + +This will generate a production-ready build in the **dist/** directory. + +## License + +This portfolio is licensed under the [LGPL-3.0-or-later](LICENSE) license. For more details, please see the [LICENSE](LICENSE) file. + +## Author + +Daniel J. Saldaña | [https://danieljsaldana.dev](https://danieljsaldana.dev) + +## Demo + + [Demo web](https://wonderful-bush-0d50b8303.4.azurestaticapps.net) diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 0000000..3d5fce7 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,27 @@ +const { defineConfig } = require("cypress"); + +module.exports = defineConfig({ + defaultCommandTimeout: 3000, + projectId: 'yv2ztm', + retries: 3, + video: true, + videoCompression: false, + viewportWidth: 1920, + viewportHeight: 1080, + pageLoadTimeout: 100000, + chromeWebSecurity: false, + reporter: 'junit', + reporterOptions: { + mochaFile: 'cypress/report/results-[hash].xml', + toConsole: false, + }, + e2e: { + supportFile: false, + specPattern: 'cypress/integration', + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + setupNodeEvents(on, config) { + // implement node event listeners here + }, + }, +}) \ No newline at end of file diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 0000000..02e4254 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/integration/footer.cy.js b/cypress/integration/footer.cy.js new file mode 100644 index 0000000..b98361c --- /dev/null +++ b/cypress/integration/footer.cy.js @@ -0,0 +1,9 @@ +describe('Test footer button', () => { + it('finds the content "type"', () => { + cy.visit('https://wonderful-bush-0d50b8303.4.azurestaticapps.net') + cy.get('.footer > a').scrollIntoView() + cy.wait(2000) + cy.get('.footer > a').scrollIntoView().click() + cy.wait(2000) + }) +}) \ No newline at end of file diff --git a/cypress/integration/lang.cy.js b/cypress/integration/lang.cy.js new file mode 100644 index 0000000..43a1d9e --- /dev/null +++ b/cypress/integration/lang.cy.js @@ -0,0 +1,9 @@ +describe('Test button languages', () => { + it('finds the content "type"', () => { + cy.visit('https://wonderful-bush-0d50b8303.4.azurestaticapps.net') + cy.get('.js-change-lang-en').click() + cy.wait(2000) + cy.get('.net-and-lang > .switch > :nth-child(1)').click() + cy.wait(2000) + }) +}) \ No newline at end of file diff --git a/cypress/integration/menu.cy.js b/cypress/integration/menu.cy.js new file mode 100644 index 0000000..364990f --- /dev/null +++ b/cypress/integration/menu.cy.js @@ -0,0 +1,9 @@ +describe('Test menu', () => { + it('finds the content "type"', () => { + cy.visit('https://wonderful-bush-0d50b8303.4.azurestaticapps.net') + cy.get('.menu > :nth-child(2) > a').click() + cy.wait(2000) + cy.get('.menu > :nth-child(3) > a').click() + cy.wait(2000) + }) +}) \ No newline at end of file diff --git a/cypress/integration/professional_skills.cy.js b/cypress/integration/professional_skills.cy.js new file mode 100644 index 0000000..a496b65 --- /dev/null +++ b/cypress/integration/professional_skills.cy.js @@ -0,0 +1,13 @@ +describe('Test console professional skills', () => { + it('finds the content "type"', () => { + cy.visit('https://wonderful-bush-0d50b8303.4.azurestaticapps.net') + cy.get('.professional_skills').scrollIntoView() + cy.wait(1000) + cy.get('.terminal > .switch > :nth-child(2)').click() + cy.wait(1000) + cy.get('.terminal > .switch > :nth-child(3)').click() + cy.wait(1000) + cy.get('.terminal > .switch > :nth-child(4)').click() + cy.wait(1000) + }) +}) \ No newline at end of file diff --git a/cypress/integration/spec.cy.js b/cypress/integration/spec.cy.js new file mode 100644 index 0000000..0db8fad --- /dev/null +++ b/cypress/integration/spec.cy.js @@ -0,0 +1,12 @@ +describe('Test page reload', () => { + it('passes', () => { + cy.visit('https://wonderful-bush-0d50b8303.4.azurestaticapps.net') + }) + it('cy.reload() - reload the page', () => { + // https://on.cypress.io/reload + cy.reload() + + // reload the page without using the cache + cy.reload(true) + }) +}) \ No newline at end of file diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts new file mode 100644 index 0000000..698b01a --- /dev/null +++ b/cypress/support/commands.ts @@ -0,0 +1,37 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } \ No newline at end of file diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts new file mode 100644 index 0000000..f80f74f --- /dev/null +++ b/cypress/support/e2e.ts @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') \ No newline at end of file diff --git a/diagram.svg b/diagram.svg new file mode 100644 index 0000000..834304e --- /dev/null +++ b/diagram.svg @@ -0,0 +1 @@ +srcsrck6k6cypresscypress.github.githubpublicpublicteststestssasssasslangslangsdatadatacomponentscomponentssupportsupportworkflowsworkflowsvideovideoimagesimagesfontsfontscertificatescertificatesutilsutilscomponentscomponentssettingssettingselementselementscomponentscomponentstechstechstechtechpackage-l...package-l...package-l...projects.tsprojects.tsprojects.tscertific...certific...certific....env.gitignore.html.js.json.md.sass.scss.svg.ts.vue.ymleach dot sized by file size \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b5dc639 --- /dev/null +++ b/index.html @@ -0,0 +1,39 @@ + + + + + + Daniel J. Saldaña 💾 | Product Onwer, Software Arquitect, DevOps, SRE + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/k6/load-test.js b/k6/load-test.js new file mode 100644 index 0000000..50e2c14 --- /dev/null +++ b/k6/load-test.js @@ -0,0 +1,21 @@ +import http from 'k6/http'; +import { check, group, sleep } from 'k6'; + +export const options = { + stages: [ + { duration: '20s', target: 150 }, // simulate ramp-up of traffic from 1 to 100 users over 5 minutes. + { duration: '30s', target: 300 }, // stay at 200 users for 10 minutes + { duration: '10s', target: 0 }, // ramp-down to 0 users + ], + thresholds: { + 'http_req_duration': ['p(99)<1500'], // 99% of requests must complete below 1.5s + }, +}; + +const BASE_URL = 'http://localhost:4173'; + +export default function () { + const res = http.get(`${BASE_URL}`); + check(res, { 'status was 200': (r) => r.status == 200 }); + sleep(1); +} diff --git a/k6/smoke-test.js b/k6/smoke-test.js new file mode 100644 index 0000000..6a9a931 --- /dev/null +++ b/k6/smoke-test.js @@ -0,0 +1,19 @@ +import http from 'k6/http'; +import { check, group, sleep, fail } from 'k6'; + +export const options = { + vus: 1, // 1 user looping for 1 minute + duration: '60s', + + thresholds: { + http_req_duration: ['p(99)<1500'], // 99% of requests must complete below 1.5s + }, +}; + +const BASE_URL = 'https://danieljsaldana.dev'; + +export default function () { + const res = http.get(`${BASE_URL}`); + check(res, { 'status was 200': (r) => r.status == 200 }); + sleep(1); +} \ No newline at end of file diff --git a/k6/stress-testing.js b/k6/stress-testing.js new file mode 100644 index 0000000..fddd588 --- /dev/null +++ b/k6/stress-testing.js @@ -0,0 +1,18 @@ +import http from 'k6/http'; +import { check, sleep } from 'k6'; + +export const options = { + stages: [ + { duration: '20s', target: 150 }, // below normal load + { duration: '30s', target: 300 }, // around the breaking point + { duration: '10s', target: 0 }, // scale down. Recovery stage. + ], +}; + +const BASE_URL = 'http://localhost:4173'; + +export default function () { + const res = http.get(`${BASE_URL}`); + check(res, { 'status was 200': (r) => r.status == 200 }); + sleep(1); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a25609c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7557 @@ +{ + "name": "danieljsaldana-portfolio", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "danieljsaldana-portfolio", + "version": "1.0.0", + "license": "LGPL-3.0-or-later", + "dependencies": { + "sass": "^1.52.3", + "vue": "^3.2.25", + "vuex": "^4.0.2" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^2.3.3", + "@vue/test-utils": "^2.0.0-rc.18", + "c8": "^7.11.3", + "cypress": "^13.6.1", + "happy-dom": "^5.2.0", + "typescript": "^4.5.4", + "vite": "^2.9.9", + "vitest": "^0.14.2", + "vue-tsc": "^0.34.7" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "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, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.10.4", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "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/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "dev": true + }, + "node_modules/@isaacs/cliui/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==", + "dev": true, + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", + "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "vite": "^2.5.10", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/code-gen": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.34.17.tgz", + "integrity": "sha512-rHR7BA71BJ/4S7xUOPMPiB7uk6iU9oTWpEMZxFi5VGC9iJmDncE82WzU5iYpcbOBCVHsOjMh0+5CGMgdO6SaPA==", + "dev": true, + "dependencies": { + "@volar/source-map": "0.34.17" + } + }, + "node_modules/@volar/source-map": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.34.17.tgz", + "integrity": "sha512-3yn1IMXJGGWB/G817/VFlFMi8oh5pmE7VzUqvgMZMrppaZpKj6/juvJIEiXNxRsgWc0RxIO8OSp4htdPUg1Raw==", + "dev": true + }, + "node_modules/@volar/vue-code-gen": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.34.17.tgz", + "integrity": "sha512-17pzcK29fyFWUc+C82J3JYSnA+jy3QNrIldb9kPaP9Itbik05ZjEIyEue9FjhgIAuHeYSn4LDM5s6nGjxyfhsQ==", + "deprecated": "WARNING: This project has been renamed to @vue/language-core. Install using @vue/language-core instead.", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.34.17", + "@volar/source-map": "0.34.17", + "@vue/compiler-core": "^3.2.36", + "@vue/compiler-dom": "^3.2.36", + "@vue/shared": "^3.2.36" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.34.17.tgz", + "integrity": "sha512-U0YSVIBPRWVPmgJHNa4nrfq88+oS+tmyZNxmnfajIw9A/GOGZQiKXHC0k09SVvbYXlsjgJ6NIjhm9NuAhGRQjg==", + "deprecated": "WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.34.17", + "@volar/source-map": "0.34.17", + "@volar/vue-code-gen": "0.34.17", + "@vue/compiler-sfc": "^3.2.36", + "@vue/reactivity": "^3.2.36" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz", + "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", + "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "dependencies": { + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", + "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-ssr": "3.3.13", + "@vue/reactivity-transform": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", + "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/reactivity": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz", + "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "dependencies": { + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", + "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz", + "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "dependencies": { + "@vue/reactivity": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", + "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "dependencies": { + "@vue/runtime-core": "3.3.13", + "@vue/shared": "3.3.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz", + "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "dependencies": { + "@vue/compiler-ssr": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "vue": "3.3.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz", + "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + }, + "node_modules/@vue/test-utils": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.3.tgz", + "integrity": "sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==", + "dev": true, + "dependencies": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^1.8.21" + }, + "peerDependencies": { + "@vue/server-renderer": "^3.0.1", + "vue": "^3.0.1" + }, + "peerDependenciesMeta": { + "@vue/server-renderer": { + "optional": true + } + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "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" + } + ] + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "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 + }, + "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==", + "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" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true + }, + "node_modules/c8": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "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, + "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 + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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 + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "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 + }, + "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 + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/cypress": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", + "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^18.17.5", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "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 + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/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==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "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 + }, + "node_modules/happy-dom": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-5.4.0.tgz", + "integrity": "sha512-JxXpBvEUdyCqfRHzHJKtiJ+6+WzTIL6kFCteAOEy13QEnHMD/D5uUIVVw3a4TmQroJriz0gnll4Uv1qZeSz/rA==", + "dev": true, + "dependencies": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "node-fetch": "^2.x.x", + "sync-request": "^6.1.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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" + } + ] + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-beautify": { + "version": "1.14.11", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.11.tgz", + "integrity": "sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^10.3.3", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "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/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "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, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "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 + }, + "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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "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, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "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, + "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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "dependencies": { + "throttleit": "^1.0.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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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, + "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==", + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "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, + "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": { + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.1.3.tgz", + "integrity": "sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.3.tgz", + "integrity": "sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "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, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/vite": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": ">=2.59.0 <2.78.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.14.2.tgz", + "integrity": "sha512-vXQUl8OUCqHmxKWscMGL+6Xl1pBJmYHZ8N85iNpLGrirAC2vhspu7b73ShRcLonmZT44BYZW+LBAVvn0L4jyVA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.1", + "@types/chai-subset": "^1.3.3", + "chai": "^4.3.6", + "debug": "^4.3.4", + "local-pkg": "^0.4.1", + "tinypool": "^0.1.3", + "tinyspy": "^0.3.2", + "vite": "^2.9.9" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vitest/ui": "*", + "c8": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@vitest/ui": { + "optional": true + }, + "c8": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz", + "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-sfc": "3.3.13", + "@vue/runtime-dom": "3.3.13", + "@vue/server-renderer": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-component-type-helpers": { + "version": "1.8.26", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-1.8.26.tgz", + "integrity": "sha512-CIwb7s8cqUuPpHDk+0DY8EJ/x8tzdzqw8ycX8hhw1GnbngTgSsIceHAqrrLjmv8zXi+j5XaiqYRQMw8sKyyjkw==", + "dev": true + }, + "node_modules/vue-tsc": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.34.17.tgz", + "integrity": "sha512-jzUXky44ZLHC4daaJag7FQr3idlPYN719/K1eObGljz5KaS2UnVGTU/XSYCd7d6ampYYg4OsyalbHyJIxV0aEQ==", + "dev": true, + "dependencies": { + "@volar/vue-typescript": "0.34.17" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": 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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "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/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==" + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@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, + "optional": true + }, + "@cypress/request": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.10.4", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/node": { + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@vitejs/plugin-vue": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", + "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", + "dev": true, + "requires": {} + }, + "@volar/code-gen": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.34.17.tgz", + "integrity": "sha512-rHR7BA71BJ/4S7xUOPMPiB7uk6iU9oTWpEMZxFi5VGC9iJmDncE82WzU5iYpcbOBCVHsOjMh0+5CGMgdO6SaPA==", + "dev": true, + "requires": { + "@volar/source-map": "0.34.17" + } + }, + "@volar/source-map": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.34.17.tgz", + "integrity": "sha512-3yn1IMXJGGWB/G817/VFlFMi8oh5pmE7VzUqvgMZMrppaZpKj6/juvJIEiXNxRsgWc0RxIO8OSp4htdPUg1Raw==", + "dev": true + }, + "@volar/vue-code-gen": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.34.17.tgz", + "integrity": "sha512-17pzcK29fyFWUc+C82J3JYSnA+jy3QNrIldb9kPaP9Itbik05ZjEIyEue9FjhgIAuHeYSn4LDM5s6nGjxyfhsQ==", + "dev": true, + "requires": { + "@volar/code-gen": "0.34.17", + "@volar/source-map": "0.34.17", + "@vue/compiler-core": "^3.2.36", + "@vue/compiler-dom": "^3.2.36", + "@vue/shared": "^3.2.36" + } + }, + "@volar/vue-typescript": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.34.17.tgz", + "integrity": "sha512-U0YSVIBPRWVPmgJHNa4nrfq88+oS+tmyZNxmnfajIw9A/GOGZQiKXHC0k09SVvbYXlsjgJ6NIjhm9NuAhGRQjg==", + "dev": true, + "requires": { + "@volar/code-gen": "0.34.17", + "@volar/source-map": "0.34.17", + "@volar/vue-code-gen": "0.34.17", + "@vue/compiler-sfc": "^3.2.36", + "@vue/reactivity": "^3.2.36" + } + }, + "@vue/compiler-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz", + "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "requires": { + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", + "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "requires": { + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "@vue/compiler-sfc": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", + "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", + "requires": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-ssr": "3.3.13", + "@vue/reactivity-transform": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", + "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "requires": { + "@vue/compiler-dom": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "@vue/reactivity": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz", + "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "requires": { + "@vue/shared": "3.3.13" + } + }, + "@vue/reactivity-transform": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", + "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", + "requires": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "@vue/runtime-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz", + "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "requires": { + "@vue/reactivity": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "@vue/runtime-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", + "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "requires": { + "@vue/runtime-core": "3.3.13", + "@vue/shared": "3.3.13", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz", + "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "requires": { + "@vue/compiler-ssr": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "@vue/shared": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz", + "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + }, + "@vue/test-utils": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.3.tgz", + "integrity": "sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==", + "dev": true, + "requires": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^1.8.21" + } + }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "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 + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "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 + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "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 + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "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==", + "dev": true + }, + "c8": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + } + }, + "cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "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, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + } + } + }, + "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 + }, + "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 + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "cypress": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", + "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", + "dev": true, + "requires": { + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^18.17.5", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "requires": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } + } + }, + "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 + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "dependencies": { + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "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 + }, + "happy-dom": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-5.4.0.tgz", + "integrity": "sha512-JxXpBvEUdyCqfRHzHJKtiJ+6+WzTIL6kFCteAOEy13QEnHMD/D5uUIVVw3a4TmQroJriz0gnll4Uv1qZeSz/rA==", + "dev": true, + "requires": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "node-fetch": "^2.x.x", + "sync-request": "^6.1.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "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 + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + } + } + }, + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "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==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "js-beautify": { + "version": "1.14.11", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.11.tgz", + "integrity": "sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^10.3.3", + "nopt": "^7.2.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "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, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.1" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true + }, + "magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "mime-db": "1.52.0" + } + }, + "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 + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "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 + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "requires": { + "asap": "~2.0.6" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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, + "requires": { + "tslib": "^2.1.0" + } + }, + "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==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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 + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "requires": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + } + }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "requires": { + "get-port": "^3.1.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "requires": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true + } + } + }, + "throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tinypool": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.1.3.tgz", + "integrity": "sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==", + "dev": true + }, + "tinyspy": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.3.tgz", + "integrity": "sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "vite": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", + "dev": true, + "requires": { + "esbuild": "^0.14.27", + "fsevents": "~2.3.2", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": ">=2.59.0 <2.78.0" + } + }, + "vitest": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.14.2.tgz", + "integrity": "sha512-vXQUl8OUCqHmxKWscMGL+6Xl1pBJmYHZ8N85iNpLGrirAC2vhspu7b73ShRcLonmZT44BYZW+LBAVvn0L4jyVA==", + "dev": true, + "requires": { + "@types/chai": "^4.3.1", + "@types/chai-subset": "^1.3.3", + "chai": "^4.3.6", + "debug": "^4.3.4", + "local-pkg": "^0.4.1", + "tinypool": "^0.1.3", + "tinyspy": "^0.3.2", + "vite": "^2.9.9" + } + }, + "vue": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz", + "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "requires": { + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-sfc": "3.3.13", + "@vue/runtime-dom": "3.3.13", + "@vue/server-renderer": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "vue-component-type-helpers": { + "version": "1.8.26", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-1.8.26.tgz", + "integrity": "sha512-CIwb7s8cqUuPpHDk+0DY8EJ/x8tzdzqw8ycX8hhw1GnbngTgSsIceHAqrrLjmv8zXi+j5XaiqYRQMw8sKyyjkw==", + "dev": true + }, + "vue-tsc": { + "version": "0.34.17", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.34.17.tgz", + "integrity": "sha512-jzUXky44ZLHC4daaJag7FQr3idlPYN719/K1eObGljz5KaS2UnVGTU/XSYCd7d6ampYYg4OsyalbHyJIxV0aEQ==", + "dev": true, + "requires": { + "@volar/vue-typescript": "0.34.17" + } + }, + "vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "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 + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..750ff31 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "danieljsaldana-portfolio", + "author": "Daniel J. Saldaña (https://danieljsaldana.dev)", + "private": true, + "version": "1.0.0", + "license": "LGPL-3.0-or-later", + "scripts": { + "serve": "vite --host", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview", + "test": "vitest --dom --run", + "coverage": "vitest run --coverage --dom", + "cypress:open": "cypress open", + "cypress:run": "cypress run" + }, + "dependencies": { + "sass": "^1.52.3", + "vue": "^3.2.25", + "vuex": "^4.0.2" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^2.3.3", + "@vue/test-utils": "^2.0.0-rc.18", + "c8": "^7.11.3", + "cypress": "^13.6.1", + "happy-dom": "^5.2.0", + "typescript": "^4.5.4", + "vite": "^2.9.9", + "vitest": "^0.14.2", + "vue-tsc": "^0.34.7" + } +} diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..fdc3067 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/favicon/.gitkeep b/public/favicon/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public/favicon/apple-touch-icon.png b/public/favicon/apple-touch-icon.png new file mode 100644 index 0000000..5b7a5d0 Binary files /dev/null and b/public/favicon/apple-touch-icon.png differ diff --git a/public/favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png new file mode 100644 index 0000000..ff0c2bd Binary files /dev/null and b/public/favicon/favicon-32x32.png differ diff --git a/public/favicon/favicon.png b/public/favicon/favicon.png new file mode 100644 index 0000000..4c4cf75 Binary files /dev/null and b/public/favicon/favicon.png differ diff --git a/public/fonts/CONSOLA.TTF b/public/fonts/CONSOLA.TTF new file mode 100644 index 0000000..556d2fd Binary files /dev/null and b/public/fonts/CONSOLA.TTF differ diff --git a/public/fonts/CONSOLAB.TTF b/public/fonts/CONSOLAB.TTF new file mode 100644 index 0000000..ef6d555 Binary files /dev/null and b/public/fonts/CONSOLAB.TTF differ diff --git a/public/fonts/Gilroy-Bold.ttf b/public/fonts/Gilroy-Bold.ttf new file mode 100644 index 0000000..1aea716 Binary files /dev/null and b/public/fonts/Gilroy-Bold.ttf differ diff --git a/public/fonts/Gilroy-Heavy.ttf b/public/fonts/Gilroy-Heavy.ttf new file mode 100644 index 0000000..726e371 Binary files /dev/null and b/public/fonts/Gilroy-Heavy.ttf differ diff --git a/public/fonts/Gilroy-Light.ttf b/public/fonts/Gilroy-Light.ttf new file mode 100644 index 0000000..b08db4e Binary files /dev/null and b/public/fonts/Gilroy-Light.ttf differ diff --git a/public/fonts/Gilroy-Regular.ttf b/public/fonts/Gilroy-Regular.ttf new file mode 100644 index 0000000..ad17f71 Binary files /dev/null and b/public/fonts/Gilroy-Regular.ttf differ diff --git a/public/fonts/Gilroy-SemiBold.ttf b/public/fonts/Gilroy-SemiBold.ttf new file mode 100644 index 0000000..cb3cbb6 Binary files /dev/null and b/public/fonts/Gilroy-SemiBold.ttf differ diff --git a/public/fonts/Gilroy-UltraLight.ttf b/public/fonts/Gilroy-UltraLight.ttf new file mode 100644 index 0000000..adc3e33 Binary files /dev/null and b/public/fonts/Gilroy-UltraLight.ttf differ diff --git a/public/images/apple.png b/public/images/apple.png new file mode 100644 index 0000000..6f879f1 Binary files /dev/null and b/public/images/apple.png differ diff --git a/public/images/apple.svg b/public/images/apple.svg new file mode 100644 index 0000000..dd55a30 --- /dev/null +++ b/public/images/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/bot.svg b/public/images/bot.svg new file mode 100644 index 0000000..24c3aa3 --- /dev/null +++ b/public/images/bot.svg @@ -0,0 +1,9 @@ + + bot + + + + + + \ No newline at end of file diff --git a/public/images/certifiers/codefresh.svg b/public/images/certifiers/codefresh.svg new file mode 100644 index 0000000..ddad6db --- /dev/null +++ b/public/images/certifiers/codefresh.svg @@ -0,0 +1,9 @@ + + codefreshio-icon-svg + + + + \ No newline at end of file diff --git a/public/images/certifiers/confluent.svg b/public/images/certifiers/confluent.svg new file mode 100644 index 0000000..bbe9f7d --- /dev/null +++ b/public/images/certifiers/confluent.svg @@ -0,0 +1,10 @@ + + confluent-logos-id1lzA85Oz-svg + + + + + + \ No newline at end of file diff --git a/public/images/certifiers/coursera.svg b/public/images/certifiers/coursera.svg new file mode 100644 index 0000000..e752bb0 --- /dev/null +++ b/public/images/certifiers/coursera.svg @@ -0,0 +1,20 @@ + + Coursera-Logo_600x600-svg + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/certifiers/gitlab.svg b/public/images/certifiers/gitlab.svg new file mode 100644 index 0000000..5d333b4 --- /dev/null +++ b/public/images/certifiers/gitlab.svg @@ -0,0 +1,14 @@ + + gitlab-logo-500-svg + + + \ No newline at end of file diff --git a/public/images/certifiers/openwebinars.svg b/public/images/certifiers/openwebinars.svg new file mode 100644 index 0000000..f14dada --- /dev/null +++ b/public/images/certifiers/openwebinars.svg @@ -0,0 +1,11 @@ + + ow-logo-secondary-svg + + + + + + \ No newline at end of file diff --git a/public/images/certifiers/platzi.svg b/public/images/certifiers/platzi.svg new file mode 100644 index 0000000..dcc0412 --- /dev/null +++ b/public/images/certifiers/platzi.svg @@ -0,0 +1,9 @@ + + logo-platzi-2 (1) + + + + + + \ No newline at end of file diff --git a/public/images/certifiers/redhat.svg b/public/images/certifiers/redhat.svg new file mode 100644 index 0000000..c4f21f2 --- /dev/null +++ b/public/images/certifiers/redhat.svg @@ -0,0 +1,9 @@ + + Red_Hat_logo-svg + + + + \ No newline at end of file diff --git a/public/images/certifiers/vmware.svg b/public/images/certifiers/vmware.svg new file mode 100644 index 0000000..0236db0 --- /dev/null +++ b/public/images/certifiers/vmware.svg @@ -0,0 +1,16 @@ + + vmware-svg + + + + + + + + + + \ No newline at end of file diff --git a/public/images/folder.svg b/public/images/folder.svg new file mode 100644 index 0000000..5e8f557 --- /dev/null +++ b/public/images/folder.svg @@ -0,0 +1,21 @@ + + card-index-dividers-svgrepo-com-svg + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/getmanfred.svg b/public/images/getmanfred.svg new file mode 100644 index 0000000..ec56db5 --- /dev/null +++ b/public/images/getmanfred.svg @@ -0,0 +1,9 @@ + + favicon + + + + + + \ No newline at end of file diff --git a/public/images/github.svg b/public/images/github.svg new file mode 100644 index 0000000..18e9450 --- /dev/null +++ b/public/images/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/instagram.svg b/public/images/instagram.svg new file mode 100644 index 0000000..04aeff8 --- /dev/null +++ b/public/images/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/linkedin.svg b/public/images/linkedin.svg new file mode 100644 index 0000000..7163524 --- /dev/null +++ b/public/images/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/microsoft.svg b/public/images/microsoft.svg new file mode 100644 index 0000000..13307b7 --- /dev/null +++ b/public/images/microsoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/noise.gif b/public/images/noise.gif new file mode 100644 index 0000000..8bcbe5b Binary files /dev/null and b/public/images/noise.gif differ diff --git a/public/images/shield_alibabacloud.svg b/public/images/shield_alibabacloud.svg new file mode 100644 index 0000000..b409782 --- /dev/null +++ b/public/images/shield_alibabacloud.svg @@ -0,0 +1,9 @@ + + alibabacloud-badges + + + + + + \ No newline at end of file diff --git a/public/images/shield_aws.svg b/public/images/shield_aws.svg new file mode 100644 index 0000000..4925d3c --- /dev/null +++ b/public/images/shield_aws.svg @@ -0,0 +1,9 @@ + + image (1) + + + + + + \ No newline at end of file diff --git a/public/images/shield_azure.svg b/public/images/shield_azure.svg new file mode 100644 index 0000000..8f10802 --- /dev/null +++ b/public/images/shield_azure.svg @@ -0,0 +1,9 @@ + + azure-badges + + + + + + \ No newline at end of file diff --git a/public/images/shield_gcp.svg b/public/images/shield_gcp.svg new file mode 100644 index 0000000..bf89d39 --- /dev/null +++ b/public/images/shield_gcp.svg @@ -0,0 +1,9 @@ + + gcp-badges + + + + + + \ No newline at end of file diff --git a/public/images/shield_oracle.svg b/public/images/shield_oracle.svg new file mode 100644 index 0000000..f221975 --- /dev/null +++ b/public/images/shield_oracle.svg @@ -0,0 +1,9 @@ + + OCI23MCCA + + + + + + \ No newline at end of file diff --git a/public/images/tech/alibaba.svg b/public/images/tech/alibaba.svg new file mode 100644 index 0000000..3645786 --- /dev/null +++ b/public/images/tech/alibaba.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/alibabacloud.svg b/public/images/tech/alibabacloud.svg new file mode 100644 index 0000000..6f51d5c --- /dev/null +++ b/public/images/tech/alibabacloud.svg @@ -0,0 +1,7 @@ + + alibabacloud-icon-svg + + + \ No newline at end of file diff --git a/public/images/tech/ansible.svg b/public/images/tech/ansible.svg new file mode 100644 index 0000000..d59f7e2 --- /dev/null +++ b/public/images/tech/ansible.svg @@ -0,0 +1,12 @@ + + ansible-svg + + + + + + + \ No newline at end of file diff --git a/public/images/tech/argocd.svg b/public/images/tech/argocd.svg new file mode 100644 index 0000000..846825c --- /dev/null +++ b/public/images/tech/argocd.svg @@ -0,0 +1,50 @@ + + argo-icon-color-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/aws.svg b/public/images/tech/aws.svg new file mode 100644 index 0000000..559401c --- /dev/null +++ b/public/images/tech/aws.svg @@ -0,0 +1,7 @@ + + aws-logo-svg + + + \ No newline at end of file diff --git a/public/images/tech/aws2.svg b/public/images/tech/aws2.svg new file mode 100644 index 0000000..a8143ce --- /dev/null +++ b/public/images/tech/aws2.svg @@ -0,0 +1,12 @@ + + aws-svg + + + + + + + \ No newline at end of file diff --git a/public/images/tech/azure.svg b/public/images/tech/azure.svg new file mode 100644 index 0000000..d1a75fe --- /dev/null +++ b/public/images/tech/azure.svg @@ -0,0 +1,7 @@ + + azure-svg + + + \ No newline at end of file diff --git a/public/images/tech/azure_devops.svg b/public/images/tech/azure_devops.svg new file mode 100644 index 0000000..d4ee79f --- /dev/null +++ b/public/images/tech/azure_devops.svg @@ -0,0 +1,16 @@ + + aaa-svg + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/bitbucket.svg b/public/images/tech/bitbucket.svg new file mode 100644 index 0000000..544d985 --- /dev/null +++ b/public/images/tech/bitbucket.svg @@ -0,0 +1,19 @@ + + bitbucket-icon-svg + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/bot.png b/public/images/tech/bot.png new file mode 100644 index 0000000..2602280 Binary files /dev/null and b/public/images/tech/bot.png differ diff --git a/public/images/tech/c.png b/public/images/tech/c.png new file mode 100644 index 0000000..7fa72a6 Binary files /dev/null and b/public/images/tech/c.png differ diff --git a/public/images/tech/certiprof.png b/public/images/tech/certiprof.png new file mode 100644 index 0000000..76efdc3 Binary files /dev/null and b/public/images/tech/certiprof.png differ diff --git a/public/images/tech/cisco.svg b/public/images/tech/cisco.svg new file mode 100644 index 0000000..7ab065d --- /dev/null +++ b/public/images/tech/cisco.svg @@ -0,0 +1,22 @@ + + cisco-2-svg + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/confluent.svg b/public/images/tech/confluent.svg new file mode 100644 index 0000000..c8ac68c --- /dev/null +++ b/public/images/tech/confluent.svg @@ -0,0 +1,10 @@ + + confluent-logos-id1lzA85Oz-svg + + + + + + \ No newline at end of file diff --git a/public/images/tech/cyberark.svg b/public/images/tech/cyberark.svg new file mode 100644 index 0000000..5688f11 --- /dev/null +++ b/public/images/tech/cyberark.svg @@ -0,0 +1,46 @@ + + cyberark-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/cypress.png b/public/images/tech/cypress.png new file mode 100644 index 0000000..f0d3d28 Binary files /dev/null and b/public/images/tech/cypress.png differ diff --git a/public/images/tech/cypress.svg b/public/images/tech/cypress.svg new file mode 100644 index 0000000..f55e7fd --- /dev/null +++ b/public/images/tech/cypress.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/digitalocean.svg b/public/images/tech/digitalocean.svg new file mode 100644 index 0000000..8fceb7c --- /dev/null +++ b/public/images/tech/digitalocean.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/docker.svg b/public/images/tech/docker.svg new file mode 100644 index 0000000..df3636f --- /dev/null +++ b/public/images/tech/docker.svg @@ -0,0 +1,33 @@ + + docker-moby-logo-sAMSSLCB_brandlogos + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/drone.svg b/public/images/tech/drone.svg new file mode 100644 index 0000000..ef5bd2c --- /dev/null +++ b/public/images/tech/drone.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/dynatrace.svg b/public/images/tech/dynatrace.svg new file mode 100644 index 0000000..af6e500 --- /dev/null +++ b/public/images/tech/dynatrace.svg @@ -0,0 +1,23 @@ + + DT-svg + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/echo.png b/public/images/tech/echo.png new file mode 100644 index 0000000..5ef9a36 Binary files /dev/null and b/public/images/tech/echo.png differ diff --git a/public/images/tech/elastic.svg b/public/images/tech/elastic.svg new file mode 100644 index 0000000..76c19f4 --- /dev/null +++ b/public/images/tech/elastic.svg @@ -0,0 +1,19 @@ + + elasticsearch-svg + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/figma.png b/public/images/tech/figma.png new file mode 100644 index 0000000..82d05ae Binary files /dev/null and b/public/images/tech/figma.png differ diff --git a/public/images/tech/gcp.svg b/public/images/tech/gcp.svg new file mode 100644 index 0000000..bebfece --- /dev/null +++ b/public/images/tech/gcp.svg @@ -0,0 +1,15 @@ + + gcp-svg + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/git.png b/public/images/tech/git.png new file mode 100644 index 0000000..b3f08c0 Binary files /dev/null and b/public/images/tech/git.png differ diff --git a/public/images/tech/git.svg b/public/images/tech/git.svg new file mode 100644 index 0000000..d2843a1 --- /dev/null +++ b/public/images/tech/git.svg @@ -0,0 +1,7 @@ + + git-icon-svg + + + \ No newline at end of file diff --git a/public/images/tech/github.svg b/public/images/tech/github.svg new file mode 100644 index 0000000..ac5ceef --- /dev/null +++ b/public/images/tech/github.svg @@ -0,0 +1,10 @@ + + github-svg + + + + + + \ No newline at end of file diff --git a/public/images/tech/gitlab.svg b/public/images/tech/gitlab.svg new file mode 100644 index 0000000..e9dc6e4 --- /dev/null +++ b/public/images/tech/gitlab.svg @@ -0,0 +1,15 @@ + + gitlab-svg + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/go.png b/public/images/tech/go.png new file mode 100644 index 0000000..2d6b8b4 Binary files /dev/null and b/public/images/tech/go.png differ diff --git a/public/images/tech/grafana.svg b/public/images/tech/grafana.svg new file mode 100644 index 0000000..98afc8f --- /dev/null +++ b/public/images/tech/grafana.svg @@ -0,0 +1,13 @@ + + grafana-svg + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/helm.svg b/public/images/tech/helm.svg new file mode 100644 index 0000000..20de882 --- /dev/null +++ b/public/images/tech/helm.svg @@ -0,0 +1,12 @@ + + helm-horizontal-color-svg + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/heroku.png b/public/images/tech/heroku.png new file mode 100644 index 0000000..19719c6 Binary files /dev/null and b/public/images/tech/heroku.png differ diff --git a/public/images/tech/ibm.svg b/public/images/tech/ibm.svg new file mode 100644 index 0000000..e585a50 --- /dev/null +++ b/public/images/tech/ibm.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/influxdata.svg b/public/images/tech/influxdata.svg new file mode 100644 index 0000000..c38fd25 --- /dev/null +++ b/public/images/tech/influxdata.svg @@ -0,0 +1,23 @@ + + + + + + + diff --git a/public/images/tech/istio.svg b/public/images/tech/istio.svg new file mode 100644 index 0000000..14b95ab --- /dev/null +++ b/public/images/tech/istio.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/jaeger.svg b/public/images/tech/jaeger.svg new file mode 100644 index 0000000..293d473 --- /dev/null +++ b/public/images/tech/jaeger.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/java.png b/public/images/tech/java.png new file mode 100644 index 0000000..98c7a44 Binary files /dev/null and b/public/images/tech/java.png differ diff --git a/public/images/tech/jenkins.svg b/public/images/tech/jenkins.svg new file mode 100644 index 0000000..65dcd04 --- /dev/null +++ b/public/images/tech/jenkins.svg @@ -0,0 +1,80 @@ + + Jenkins_logo-svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/jest.png b/public/images/tech/jest.png new file mode 100644 index 0000000..8544891 Binary files /dev/null and b/public/images/tech/jest.png differ diff --git a/public/images/tech/jira.png b/public/images/tech/jira.png new file mode 100644 index 0000000..eec6d07 Binary files /dev/null and b/public/images/tech/jira.png differ diff --git a/public/images/tech/js.png b/public/images/tech/js.png new file mode 100644 index 0000000..2111196 Binary files /dev/null and b/public/images/tech/js.png differ diff --git a/public/images/tech/k3s.svg b/public/images/tech/k3s.svg new file mode 100644 index 0000000..6667980 --- /dev/null +++ b/public/images/tech/k3s.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/kafka.svg b/public/images/tech/kafka.svg new file mode 100644 index 0000000..43d8843 --- /dev/null +++ b/public/images/tech/kafka.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/kibana.png b/public/images/tech/kibana.png new file mode 100644 index 0000000..d7d3ca2 Binary files /dev/null and b/public/images/tech/kibana.png differ diff --git a/public/images/tech/kibana.svg b/public/images/tech/kibana.svg new file mode 100644 index 0000000..088d105 --- /dev/null +++ b/public/images/tech/kibana.svg @@ -0,0 +1,15 @@ + + elastic-kibana-svg + + + + + + + \ No newline at end of file diff --git a/public/images/tech/kubernetes.svg b/public/images/tech/kubernetes.svg new file mode 100644 index 0000000..d13d0b7 --- /dev/null +++ b/public/images/tech/kubernetes.svg @@ -0,0 +1,10 @@ + + kubernets-svg + + + + + \ No newline at end of file diff --git a/public/images/tech/linux.png b/public/images/tech/linux.png new file mode 100644 index 0000000..9316185 Binary files /dev/null and b/public/images/tech/linux.png differ diff --git a/public/images/tech/linux_foundation.svg b/public/images/tech/linux_foundation.svg new file mode 100644 index 0000000..57318fa --- /dev/null +++ b/public/images/tech/linux_foundation.svg @@ -0,0 +1,14 @@ + + Linux_Foundation_Logo-svg + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/micro.png b/public/images/tech/micro.png new file mode 100644 index 0000000..6ff4490 Binary files /dev/null and b/public/images/tech/micro.png differ diff --git a/public/images/tech/mongodb.svg b/public/images/tech/mongodb.svg new file mode 100644 index 0000000..7dfdb43 --- /dev/null +++ b/public/images/tech/mongodb.svg @@ -0,0 +1,11 @@ + + mongodb-svg + + + + + \ No newline at end of file diff --git a/public/images/tech/mysql.svg b/public/images/tech/mysql.svg new file mode 100644 index 0000000..67afdfa --- /dev/null +++ b/public/images/tech/mysql.svg @@ -0,0 +1,8 @@ + + mysql-svg + + + + \ No newline at end of file diff --git a/public/images/tech/node.png b/public/images/tech/node.png new file mode 100644 index 0000000..a0f6926 Binary files /dev/null and b/public/images/tech/node.png differ diff --git a/public/images/tech/npm.png b/public/images/tech/npm.png new file mode 100644 index 0000000..fc0469e Binary files /dev/null and b/public/images/tech/npm.png differ diff --git a/public/images/tech/openshift.svg b/public/images/tech/openshift.svg new file mode 100644 index 0000000..329bc75 --- /dev/null +++ b/public/images/tech/openshift.svg @@ -0,0 +1,18 @@ + + openshift-svg + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/oracle.svg b/public/images/tech/oracle.svg new file mode 100644 index 0000000..537576b --- /dev/null +++ b/public/images/tech/oracle.svg @@ -0,0 +1,7 @@ + + oracle-svgrepo-com-svg + + + \ No newline at end of file diff --git a/public/images/tech/portainer.svg b/public/images/tech/portainer.svg new file mode 100644 index 0000000..946fd47 --- /dev/null +++ b/public/images/tech/portainer.svg @@ -0,0 +1,14 @@ + + portainer-svg + + + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/postgre.png b/public/images/tech/postgre.png new file mode 100644 index 0000000..a62f80f Binary files /dev/null and b/public/images/tech/postgre.png differ diff --git a/public/images/tech/prometheus.svg b/public/images/tech/prometheus.svg new file mode 100644 index 0000000..c969d7d --- /dev/null +++ b/public/images/tech/prometheus.svg @@ -0,0 +1,7 @@ + + prometheus-svg + + + \ No newline at end of file diff --git a/public/images/tech/python.png b/public/images/tech/python.png new file mode 100644 index 0000000..2c8c4e9 Binary files /dev/null and b/public/images/tech/python.png differ diff --git a/public/images/tech/rabbit.png b/public/images/tech/rabbit.png new file mode 100644 index 0000000..f00b7bc Binary files /dev/null and b/public/images/tech/rabbit.png differ diff --git a/public/images/tech/rancher.svg b/public/images/tech/rancher.svg new file mode 100644 index 0000000..f222f85 --- /dev/null +++ b/public/images/tech/rancher.svg @@ -0,0 +1,9 @@ + + rancher-icon-svgrepo-com-svg + + + + + \ No newline at end of file diff --git a/public/images/tech/redis.png b/public/images/tech/redis.png new file mode 100644 index 0000000..210853a Binary files /dev/null and b/public/images/tech/redis.png differ diff --git a/public/images/tech/selenium.png b/public/images/tech/selenium.png new file mode 100644 index 0000000..0f7e349 Binary files /dev/null and b/public/images/tech/selenium.png differ diff --git a/public/images/tech/terraform.svg b/public/images/tech/terraform.svg new file mode 100644 index 0000000..e074045 --- /dev/null +++ b/public/images/tech/terraform.svg @@ -0,0 +1,9 @@ + + terraform-svgrepo-com-svg + + + + \ No newline at end of file diff --git a/public/images/tech/traefik.svg b/public/images/tech/traefik.svg new file mode 100644 index 0000000..ed6b9a6 --- /dev/null +++ b/public/images/tech/traefik.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/tech/vault.svg b/public/images/tech/vault.svg new file mode 100644 index 0000000..95e810c --- /dev/null +++ b/public/images/tech/vault.svg @@ -0,0 +1,7 @@ + + vault-svg + + + \ No newline at end of file diff --git a/public/images/tech/vultr.svg b/public/images/tech/vultr.svg new file mode 100644 index 0000000..edd5885 --- /dev/null +++ b/public/images/tech/vultr.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/udemy.svg b/public/images/udemy.svg new file mode 100644 index 0000000..6fe9a71 --- /dev/null +++ b/public/images/udemy.svg @@ -0,0 +1,11 @@ + + Proyecto nuevo + + + + + + + + \ No newline at end of file diff --git a/public/images/unir.svg b/public/images/unir.svg new file mode 100644 index 0000000..cd63fee --- /dev/null +++ b/public/images/unir.svg @@ -0,0 +1,9 @@ + + Unir_2021_logo-svg + + + + \ No newline at end of file diff --git a/public/images/unir_logo.svg b/public/images/unir_logo.svg new file mode 100644 index 0000000..b1eb84d --- /dev/null +++ b/public/images/unir_logo.svg @@ -0,0 +1,9 @@ + + Unir_2021_logo-svg + + + + \ No newline at end of file diff --git a/public/images/unsplash.svg b/public/images/unsplash.svg new file mode 100644 index 0000000..8d22d39 --- /dev/null +++ b/public/images/unsplash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/video/dani_cover.webp b/public/video/dani_cover.webp new file mode 100644 index 0000000..1044eb0 Binary files /dev/null and b/public/video/dani_cover.webp differ diff --git a/public/video/dani_loop.mp4 b/public/video/dani_loop.mp4 new file mode 100644 index 0000000..d718b6d Binary files /dev/null and b/public/video/dani_loop.mp4 differ diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..c88d7ac --- /dev/null +++ b/src/App.vue @@ -0,0 +1,21 @@ + + + \ No newline at end of file diff --git a/src/components/AboutMe.vue b/src/components/AboutMe.vue new file mode 100644 index 0000000..300090f --- /dev/null +++ b/src/components/AboutMe.vue @@ -0,0 +1,175 @@ + + + \ No newline at end of file diff --git a/src/components/CertificatesList.vue b/src/components/CertificatesList.vue new file mode 100644 index 0000000..bf19839 --- /dev/null +++ b/src/components/CertificatesList.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/src/components/MyExperience.vue b/src/components/MyExperience.vue new file mode 100644 index 0000000..58460ea --- /dev/null +++ b/src/components/MyExperience.vue @@ -0,0 +1,65 @@ + + + \ No newline at end of file diff --git a/src/components/PageFooter.vue b/src/components/PageFooter.vue new file mode 100644 index 0000000..0dbb768 --- /dev/null +++ b/src/components/PageFooter.vue @@ -0,0 +1,29 @@ + + + \ No newline at end of file diff --git a/src/components/PostsLists.vue b/src/components/PostsLists.vue new file mode 100644 index 0000000..3e0dce8 --- /dev/null +++ b/src/components/PostsLists.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/src/components/ProfessionalSkills.vue b/src/components/ProfessionalSkills.vue new file mode 100644 index 0000000..3345904 --- /dev/null +++ b/src/components/ProfessionalSkills.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/components/ProjectsTimeLine.vue b/src/components/ProjectsTimeLine.vue new file mode 100644 index 0000000..1d7ef20 --- /dev/null +++ b/src/components/ProjectsTimeLine.vue @@ -0,0 +1,123 @@ + + + \ No newline at end of file diff --git a/src/components/SoftSkills.vue b/src/components/SoftSkills.vue new file mode 100644 index 0000000..05b4467 --- /dev/null +++ b/src/components/SoftSkills.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/src/components/TopNav.vue b/src/components/TopNav.vue new file mode 100644 index 0000000..840dd99 --- /dev/null +++ b/src/components/TopNav.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/components/projects/Project.vue b/src/components/projects/Project.vue new file mode 100644 index 0000000..19ffe58 --- /dev/null +++ b/src/components/projects/Project.vue @@ -0,0 +1,80 @@ + + + \ No newline at end of file diff --git a/src/components/techs/CloudPublicTab.vue b/src/components/techs/CloudPublicTab.vue new file mode 100644 index 0000000..4efffc3 --- /dev/null +++ b/src/components/techs/CloudPublicTab.vue @@ -0,0 +1,61 @@ + diff --git a/src/components/techs/DataBasesTab.vue b/src/components/techs/DataBasesTab.vue new file mode 100644 index 0000000..edbdad4 --- /dev/null +++ b/src/components/techs/DataBasesTab.vue @@ -0,0 +1,25 @@ + diff --git a/src/components/techs/TechTab.vue b/src/components/techs/TechTab.vue new file mode 100644 index 0000000..8b91160 --- /dev/null +++ b/src/components/techs/TechTab.vue @@ -0,0 +1,47 @@ + diff --git a/src/components/techs/TerminalText.vue b/src/components/techs/TerminalText.vue new file mode 100644 index 0000000..45f0f59 --- /dev/null +++ b/src/components/techs/TerminalText.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/src/components/techs/ToolsTab.vue b/src/components/techs/ToolsTab.vue new file mode 100644 index 0000000..d8c8827 --- /dev/null +++ b/src/components/techs/ToolsTab.vue @@ -0,0 +1,172 @@ + diff --git a/src/data/certificates.ts b/src/data/certificates.ts new file mode 100644 index 0000000..0b7bcc0 --- /dev/null +++ b/src/data/certificates.ts @@ -0,0 +1,481 @@ +interface Certificate { + title : string + image: string + certifier: string + file: string + date: string +} + +const certificates : Certificate[] = [ + { + title : 'Curso de FastAPI: Introducción, Operaciones, Validaciones y Autenticación', + image: 'platzi', + certifier: 'Platzi', + file: 'diploma-fastapi.pdf', + date: 'Mar 2023' + }, + { + title : 'GitLab 101', + image: 'gitlab', + certifier: 'Gitlab', + file: 'gitlab-101.pdf', + date: 'Jan 2023' + }, + { + title : 'Remote Foundations Certification', + image: 'gitlab', + certifier: 'Gitlab', + file: 'remote-foundations-certification.pdf', + date: 'Jan 2023' + }, + { + title : 'TeamOps Certification', + image: 'gitlab', + certifier: 'Gitlab', + file: 'teamops-certification.pdf', + date: 'Jan 2023' + }, + { + title : 'Curso de Azure Cache para Redis', + image: 'platzi', + certifier: 'Platzi', + file: 'diploma-azure-redis-cache.pdf', + date: 'Sep 2022' + }, + { + title : 'Stream Processing with Kafka', + image: 'confluent', + certifier: 'Confluent', + file: 'stream-processing-with-kafka.pdf', + date: 'Jul 2022' + }, + { + title : 'Apache Kafka® Architecture: Kafka Internal Components and How They Work', + image: 'confluent', + certifier: 'Confluent', + file: 'apache-kafka-architecture-kafka-internal-components-and-how-they-work.pdf', + date: 'Jul 2022' + }, + { + title : 'Build an Apache Kafka® Event Streaming Pipeline', + image: 'confluent', + certifier: 'Confluent', + file: 'build-an-apache-kafka-event-streaming-pipeline.pdf', + date: 'Jul 2022' + }, + { + title : 'GitOps Fundamentals', + image: 'codefresh', + certifier: 'GitOps Fundamentals', + file: 'gitops-fundamentals.pdf', + date: 'Mar 2022' + }, + { + title : 'Apache kafka fundamentals', + image: 'confluent', + certifier: 'Confluent', + file: 'apache-kafka-fundamentals.pdf', + date: 'Oct 2021' + }, + { + title : 'Red Hat Delivery Specialist - Container Platform (ISV)', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-delivery-specialist-container-platform.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Delivery Specialist - Container Platform Application Deployment', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-delivery-specialist-container-platform-application-deployment.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Delivery Specialist - Container Platform Deployment', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-delivery-specialist-containerp-latform-deployment.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Engineer Specialist - Container Platform', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-engineer-specialist-container-platform.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Specialist - Cloud-Native Development', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-specialist-cloud-native-development.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Specialist - Hybrid Cloud Infrastructure', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-specialist-hybrid-cloud-infrastructure.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Specialist - IT Automation and Management', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-specialist-it-automation-and-management.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Specialist - Red Hat Ansible Automation Platform', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-specialist-red-hat-ansible-automation-platform.pdf', + date: 'Apr 2021' + }, + { + title : 'Red Hat Sales Specialist - Red Hat OpenShift', + image: 'redhat', + certifier: 'Redhat', + file: 'red-hat-sales-specialist-red-hat-openshift.pdf', + date: 'Dec 2020' + }, + { + title : 'How to sell red hat openshift container storage', + image: 'redhat', + certifier: 'Redhat', + file: 'how-to-sell-red-hat-openshift-container-storage.pdf', + date: 'Dic 2020' + }, + { + title : 'Preparing for the google cloud associate cloud engineer', + image: 'coursera', + certifier: 'Coursera', + file: 'preparing-for-the-google-cloud-associate-cloud-engineer.pdf', + date: 'May 2020' + }, + { + title : 'Elastic google cloud infrastructure scaling and automation', + image: 'coursera', + certifier: 'Coursera', + file: 'elastic-google-cloud-infrastructure-scaling-and-automation.pdf', + date: 'May 2020' + }, + { + title : 'Essential google cloud infrastructure foundation', + image: 'coursera', + certifier: 'Coursera', + file: 'essential-google-cloud-infrastructure-foundation.pdf', + date: 'May 2020' + }, + { + title : 'Essential google cloud infrastructure core services', + image: 'coursera', + certifier: 'Coursera', + file: 'essential-google-cloud-infrastructure-core-services.pdf', + date: 'May 2020' + }, + { + title : 'Google cloud platform fundamentals core infrastructure', + image: 'coursera', + certifier: 'Coursera', + file: 'google-cloud-platform-fundamentals-core-infrastructure.pdf', + date: 'May 2020' + }, + { + title : 'VMware Server Virtualization Fundamentals', + image: 'vmware', + certifier: 'VMware', + file: 'vmware-server-virtualization-fundamentals.pdf', + date: 'Jun 2022' + }, + { + title : 'Curso de pruebas automatizadas en una web con docker', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-pruebas-automatizadas-en-una-web-con-docker.pdf', + date: 'May 2021' + }, + { + title : 'Curso de monitorización con grafana y prometheus', + image: 'openwebinars', + certifier: 'openwebinars', + file: 'curso-de-monitorizacion-con-grafana-y-prometheus.pdf', + date: 'Oct 2021' + }, + { + title : 'Introduccion a kubernetes', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'introduccion-a-kubernetes.pdf', + date: 'Feb 2020' + }, + { + title : 'Fundamentos generales orquestación y automatización IT', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'fundamentos-generales-orquestacion-y-automatizacion-it.pdf', + date: 'Jul 2020' + }, + { + title : 'Virtualización de servidores', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'virtualizacion-de-servidores.pdf', + date: 'Feb 2020' + }, + { + title : 'Fundamentos generales orquestación y automatización it', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'fundamentos-generales-orquestacion-y-automatizacion-it.pdf', + date: 'Jul 2020' + }, + + { + title : 'ElasticSearch, logStash y kibana - framework bigdata', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'elasticsearch-logstash-y-kibana-framework-bigdata.pdf', + date: 'May 2021' + }, + { + title : 'Curso de testing de apis con jmeter', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-testing-de-apis-con-jmeter.pdf', + date: 'Jun 2021' + }, + { + title : 'Curso de terraform', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-terraform.pdf', + date: 'Jul 2020' + }, + { + title : 'Introducción a cloud computing', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'introduccion-a-cloud-computing.pdf', + date: 'Jul 2020' + }, + { + title : 'Curso de serverless', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-serverless.pdf', + date: 'Jul 2021' + }, + { + title : 'Curso de product owner en la prácticar', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-product-owner-en-la-practica.pdf', + date: 'Abr 2021' + }, + { + title : 'Curso de openShift', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-openshift.pdf', + date: 'Feb 2020' + }, + { + title : 'Curso de maven', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-maven.pdf', + date: 'Ene 2021' + }, + { + title : 'Curso de loadrunner', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-loadrunner.pdf', + date: 'Dic 2020' + }, + { + title : 'Curso de jenkins usuarios y jobs', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-jenkins-usuarios-y-jobs.pdf', + date: 'Ago 2021' + }, + { + title : 'Curso de jenkins pipelines y herramientas', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-jenkins-pipelines-y-herramientas.pdf', + date: 'Ago 2021' + }, + { + title : 'Curso de jenkins para principiantes.pdf', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-jenkins-para-principiantes.pdf', + date: 'Ago 2021' + }, + { + title : 'Curso de liderazgo de equipos', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-liderazgo-de-equipos.pdf', + date: 'Mar 2021' + }, + { + title : 'Curso de kafka', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-kafka.pdff', + date: 'Ago 2021' + }, + { + title : 'Curso de jmeter para la implementación de pruebas de rendimiento', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-jmeter-para-la-implementacion-de-pruebas-de-rendimiento.pdf', + date: 'May 2021' + }, + { + title : 'Curso de istio', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-istio.pdf', + date: 'Nov 2020' + }, + { + title : 'Curso de introducción al testing', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-introduccion-al-testing.pdf', + date: 'Jun 2021' + }, + { + title : 'Curso de inteligencia emocional aplicada a equipos de alto rendimiento', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-Inteligencia-emocional-aplicada-a-equipos-de-alto-rendimiento.pdf', + date: 'Abr 2021' + }, + { + title : 'Curso de helm', + image: 'openwebinars', + certifier: 'Openwebinars', + file: 'curso-de-helm.pdf', + date: 'Nov 2019' + }, + { + title : 'Curso de gestión de equipos con management 3.0', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-gestion-de-equipos-con-management-3-0.pdf', + date: 'Mar 2021' + }, + { + title : 'Curso de fundamentos de lean change management', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-fundamentos-de-lean-change-management.pdf', + date: 'Abr 2021' + }, + { + title : 'Curso de big data', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-big-data.pdf', + date: 'Feb 2021' + }, + { + title : 'Curso de arquitecturas monolíticas basadas en microservicios', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-arquitecturas-monoliticas-basadas-en-microservicios.pdf', + date: 'Ago 2021' + }, + { + title : 'Curso de amazon web services para desarrolladores', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-amazon-web-services-para-desarrolladores.pdf', + date: 'May 2021' + }, + { + title : 'Curso de amazon web services para sysadmin', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-amazon-web-services-para-sysadmin.pdf', + date: 'Jun 2021' + }, + { + title : 'Curso de design thinking', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-design-thinking.pdf', + date: 'May 2022' + }, + { + title : 'Curso de ansible', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'ansible.pdf', + date: 'Feb 2020' + }, + { + title : 'Curso de arquitectura hexagonal', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'curso-de-arquitectura-hexagonal.pdf', + date: 'Abr 2021' + }, + { + title : 'Docker devops profesional', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'docker-devops-profesional.pdf', + date: 'Jul 2020' + }, + { + title : 'Docker para desarrolladores', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'docker-para-desarrolladores.pdf', + date: 'Jul 2020' + }, + { + title : 'Introducción a docker', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'introduccion-a-docker.pdf', + date: 'Jul 2020' + }, + { + title : 'SSH', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'ssh.pdf', + date: 'Jul 2020' + }, + { + title : 'Virtualización de servidores', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'virtualizacion-de-servidores.pdf', + date: 'Feb 2020' + }, + { + title : 'Linux desde cero', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'linux-desde-cero.pdf', + date: 'Feb 2020' + }, + { + title : 'Administración de sitios Web con WordPress', + image: 'openwebinars', + certifier: 'OpenWebinars', + file: 'administracion-de-sitios-web-con-wordpress.pdf', + date: 'Feb 2020' + }, +] +export default certificates \ No newline at end of file diff --git a/src/data/posts.ts b/src/data/posts.ts new file mode 100644 index 0000000..52d9186 --- /dev/null +++ b/src/data/posts.ts @@ -0,0 +1,19 @@ +interface Post { + title : string + content : string + image: string + url: string + date: string +} + +const posts : Post[] = [ + { + title : 'Daniel Saldaña, exalumno del EU en DevOps de UNIR: "Lo que se veía antes como futuro ya es el presente"', + content: 'Este ingeniero en DevOps eligió el programa por las posibilidades de mejorar sus habilidades y ampliar la visión global de una metodología que, desde su experiencia, define como "crucial en cualquier empresa que persigue o dispone ya de un modelo de CI/CD”.', + image: '/images/unir_logo.svg', + url: 'https://www.unir.net/actualidad/alumnos-unir/daniel-saldana-exalumno-del-eu-en-devops-de-unir-lo-que-se-veia-antes-como-futuro-ya-es-el-presente', + date: 'May 2021' + }, +] + +export default posts \ No newline at end of file diff --git a/src/data/projects.ts b/src/data/projects.ts new file mode 100644 index 0000000..6da1fd7 --- /dev/null +++ b/src/data/projects.ts @@ -0,0 +1,939 @@ +interface Project { + title : string + type: string + desc: string + from: string + to: string|null + techs: string[] + link: string|null +} +type Projects = { + [key in 'es' | 'en']: Project[] +} + +const projects : Projects = { + 'es' : [ + { + title: 'Microsoft Certified: Azure AI Engineer Associate', + type: 'Certificación', + from: 'Sep 2023', + to: 'Sep 2024', + desc: 'As a Microsoft Azure AI engineer, you will create AI solutions using Azure Cognitive Services and Applied AI Services, covering all development phases. Proficiency in Python and C#, utilizing SDK/REST APIs, and applying responsible AI principles are required.', + techs: ['azure'], + link: 'https://learn.microsoft.com/en-us/users/danieljsaldana/credentials/1655b468218af0a' + }, + { + title: 'Microsoft Certified: Azure Cosmos DB Developer Specialty', + type: 'Certificación', + from: 'Aug 2023', + to: 'Aug 2024', + desc: 'This certification signifies a profound grasp of crafting strategic technical solutions to meet specific business goals. Demonstrating an adept balance of best practices and contextual trade-offs, holders excel in designing cross-platform solutions, with a specialized emphasis on harnessing Microsoft Azure Cosmos DBs capabilities for cloud-native applications.', + techs: ['azure'], + link: 'https://learn.microsoft.com/en-us/users/danieljsaldana/credentials/e9d53a8fc378fb76' + }, + { + title: 'AWS Certified Solutions Architect – Professional', + type: 'Certificación', + from: 'Aug 2023', + to: 'Aug 2026', + desc: 'Earners of this certification have an extensive understanding of designing technical strategies to accomplish specific business goals. They demonstrated the ability to balance best practices and trade-offs based on business context. Badge owners are able to design solutions across multiple platforms and providers.', + techs: ['aws'], + link: 'https://www.credly.com/badges/872b2f1a-a56d-4351-a901-d6ca6904e11f' + }, + { + title: 'Oracle Cloud Infrastructure 2023 Multicloud Architect Certified Associate', + type: 'Certificación', + from: 'Abr 2023', + to: 'Jun 2025', + desc: 'The Oracle Cloud Infrastructure 2023 Multicloud Architect Associate certification is designed to test an individuals expertise in designing and implementing Oracle Cloud Infrastructure (OCI) multicloud solutions. This certification aims to evaluate the candidates ability to use a combination of cloud services to build a multicloud environment.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=CFE2F62ECAB9B9D9C63A6578116C6AF3546F990058223C6D66E9543E4645A7A0' + }, + { + title: 'Oracle Cloud Infrastructure 2023 Certified Foundations Associate', + type: 'Certificación', + from: 'Abr 2023', + to: 'Jun 2025', + desc: 'The Oracle Cloud Infrastructure (OCI) Foundations certification is for individuals who intend to demonstrate fundamental knowledge of public cloud services provided by Oracle Cloud Infrastructure (OCI). This certification is for candidates with non-technical backgrounds, such as those involved in selling or procuring cloud solutions, as well as those with a technical background who want to validate their foundational-level knowledge around core OCI services. This exam does not require any hands-on technical experience and is not a prerequisite for taking any other OCI certifications.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=524190EC86E8752386E9DB188282F849565A8A488AD6DD98C038FF6E2F88591A' + }, + { + title: 'Microsoft Certified: Cybersecurity Architect Expert', + type: 'Certificación', + from: 'Abr 2023', + to: 'Abr 2024', + desc: 'Earning Cybersecurity Architect Expert validates subject matter expertise in designing and evolving the cybersecurity strategy to protect an organization’s mission and business processes across all aspects of the enterprise architecture.', + techs: ['azure'], + link: 'https://www.credly.com/badges/1c2bfadf-23e9-4472-a76e-83844cddf5e3' + }, + { + title: 'SC-100: Microsoft Cybersecurity Architect', + type: 'Certificación', + from: 'Abr 2023', + to: null, + desc: 'Passing Exam SC-100: Microsoft Cybersecurity Architect validates the skills and advanced experience and knowledge in a wide range of security engineering areas, including identity and access, platform protection, security operations, securing data, and securing applications. Candidates have experience with hybrid and cloud implementations.', + techs: ['azure'], + link: 'https://www.credly.com/badges/0a508fed-e128-4e2b-b4e2-7940e0c07936' + }, + { + title: 'Intermediate Flux', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Flux is a data language used in the InfluxDB time series platform. This course provides a hands-on introduction to the Flux data language. Using an IoT use case, this intermediate course teaches more advanced principles and functions for working in Flux. Participants learn to write their own Flux queries, visualize data, and apply these principles to a real-world problem.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/efeab75b-818c-4ebb-a6fa-d0ec60885242' + }, + { + title: 'Data Collection with Telegraf', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Telegraf is an open source data collection agent that allows users to collect time series data from hundreds of different sources. This course covers the fundamentals of what Telegraf is, how to install and configure it, how to perform data transformations and finally some tips and tricks on how to avoid common mistakes.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/628395d3-ffd3-4373-852e-8b3db4fc0f7d' + }, + { + title: 'Beginner Flux', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Flux is a data language used in the InfluxDB time series platform. This course provides a hands-on introduction to the Flux data language. Using an IoT use case, this course teaches some of the basic principles and functions for working in Flux. Participants learn to write their own Flux queries, visualize data, and apply these principles to a real-world problem.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/f0d8e099-776e-421d-8d34-e86fa480346b' + }, + { + title: 'Exploring InfluxDB Cloud', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'This course covers the basics of the InfluxDB Cloud time series data platform including a tour of the user interface components and basic administration. It also teaches how to ingest and visualize data as well as how to replicate data from the edge. Learners must complete a hands-on assignment to show their comprehension of the skills presented in the course.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/26a84329-bd56-45e3-a1e6-4bc98a853f4a' + }, + { + title: 'InfluxDB Essentials', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'This course covers the fundamentals of InfluxDB. It walks through the various components of the platform, and introduces the InfluxDB data model and how to map raw data onto it. You will also learn about Flux, a scripting and querying language, and how to use it for basic transformation and analysis of time series data. Finally, it examines different methods for visualizing data in InfluxDB and how to use tasks to automate different workflows and processes.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/7dcc3341-1e9a-4fb7-b18e-b0a862c84bc8' + }, + { + title: 'Microsoft Certified: Azure Network Engineer Associate', + type: 'Certificación', + from: 'Abr 2023', + to: 'Abr 2024', + desc: 'Earning Azure Network Engineer Associate validates skills and subject matter expertise in planning, implementing, and maintaining Azure networking solutions, including hybrid networking, connectivity, routing, security, and private access to Azure services. Professionals in this role deploy networking solutions using Azure Portal and other methods, including PowerShell, Azure Command-Line Interface (CLI), and Azure Resource Manager templates (ARM templates).', + techs: ['azure'], + link: 'https://www.credly.com/badges/27d26914-5bf5-4b00-914d-2063240481ed' + }, + { + title: '(ISC)² Candidate', + type: 'Certificación', + from: 'Mar 2023', + to: 'Mar 2024', + desc: '(ISC)² Candidates are individuals pursuing or considering a cybersecurity certification. To become a Candidate, the individual must apply online and provide minimum identifying information, as well as affirm that they will abide by the (ISC)² Code of Ethics and Privacy Policy.', + techs: ['isc'], + link: 'https://www.credly.com/badges/15402b80-2c68-47c5-9ddb-365ad471b84d' + }, + { + title: 'Microsoft Certified: Information Protection Administrator Associate', + type: 'Certificación', + from: 'Mar 2023', + to: 'Mar 2023', + desc: 'Earning the Information Protection Administrator Associate certification validates the skills and knowledge to plan and implement controls that meet organizational compliance needs. Candidates are responsible for translating requirements and compliance controls into technical implementation. They are responsible for creating policies and rules for content classification, data loss prevention, governance, and protection.', + techs: ['azure'], + link: 'https://www.credly.com/badges/0d84a1b7-e11b-4378-a7c3-1d4cf777a21b' + }, + { + title: 'Microsoft Certified: Dynamics 365 Fundamentals (CRM)', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Earners of Dynamics 365 Fundamentals (CRM) demonstrate relevant work experience in an Information Technology (IT) environment. Candidates have a fundamental understanding of the customer engagement capabilities of Dynamics 365.', + techs: ['azure'], + link: 'https://www.credly.com/badges/44216d31-d4cc-404a-b6bc-e879553ff0dc' + }, + { + title: 'Microsoft 365 Certified: Fundamentals', + type: 'Certificación', + from: 'Ene 2024', + to: null, + desc: 'Earning the Microsoft 365 Fundamentals certification demonstrates an understanding of the options available in Microsoft 365 and the benefits of adopting cloud services, the Software as a Service (SaaS) cloud model, and implementing Microsoft 365 cloud service.', + techs: ['azure'], + link: 'https://www.credly.com/badges/c1cf03d4-a8cd-40c6-b81b-62ad58bee529' + }, + { + title: 'Achieve CI&CD With Jenkins', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2025', + desc: 'This course introduces the basic concepts, features and benifits of CI/CD compared with traditional software developing mode. Then we have a detailed introduction about the features and benefits of Jenkins software and also the installation of Jenkins based on Ubuntu operating system. Finally we introduced the detailed operations on Jenkins console with a brief demonstration.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/achieve-ci-cd-with-jenkins.png' + }, + { + title: 'Alibaba Cloud Analysis Architecture and Case Studies', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'Through this course, you will learn the core services of Alibaba Cloud Analysis Architecture (E-MapReduce, MaxCompute, Table Store). By studying some classic use cases, you can understand how to build an analysis architecture in Alibaba Cloud.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-cloud-analysis-architecture-and-case-studies.png' + }, + { + title: 'Alibaba Hybrid Cloud Solution', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'This course helps you undertsand the components and services in Alibaba Cloud that will help you build a Hybrid Cloud solution. The course will also introduce 4 Hybrid reference architectures.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-hybrid-cloud-solution.png' + }, + { + title: 'Alibaba Cloud Fundamental Architecture and Case Analysis', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'Through this course, you will learn the core services of Alibaba Cloud Fundamental Architecture (ECS, SLB, OSS and RDS). By studying some classic use cases, you can understand how to build a basic architecture in Alibaba Cloud.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-cloud-fundamental-architecture-and-case-analysis.png' + }, + { + title: 'Operate and Manage a Cloud Server', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'Understand the advantage of a cloud server. Learn how to purchase ECS on Alibaba Cloud, manage the server on our console, backup critical data and ensure your system can adjust according to business needs.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/operate-and-manage-a-cloud-server.png' + }, + { + title: 'An Introduction of DevOps', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'What is DevOps? Its a combination of cultural philosophies, practices, and tools that increases a team’s ability to rapidly deliver services. In this clouder course, you’ll learn the concept and history of DevOps, how it works compared with traditional methodology, tools that support DevOps and recap the ideas with some classic case studies.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/an-introduction-of-devops.png' + }, + { + title: 'Microsoft Certified: Dynamics 365 Fundamentals (ERP)', + type: 'Certificación', + from: 'Ene 2023', + to: null, + desc: 'Earners of Dynamics 365 Fundamentals (ERP) demonstrate relevant work experience and exposure to the enterprise resource planning (ERP) capabilities of Dynamics 365. Candidates have a fundamental understanding of how finance and operations apps fit within the overall Microsoft ecosystem.', + techs: ['azure'], + link: 'https://www.credly.com/badges/b3e7e7a0-da29-4bc0-97e3-1b072bfdf4d5' + }, + { + title: 'AWS Cloud Quest: Cloud Practitioner', + type: 'Certificación', + from: 'Ene 2023', + to: null, + desc: 'Earners of this badge have demonstrated basic solution building knowledge using AWS services and have a fundamental understanding of AWS Cloud concepts. Badge earners have acquired hands-on experience with compute, networking, database and security services.', + techs: ['aws'], + link: 'https://www.credly.com/badges/dc7dfe47-5ce1-47fc-b22d-2891a5c3b3d9' + }, + { + title: 'Microsoft Certified: Azure Security Engineer Associate', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2024', + desc: 'Earning Azure Security Engineer Associate certification validates the skills and knowledge to implement security controls and threat protection, manage identity and access, and protect data, applications, and networks in cloud and hybrid environments as part of end-to-end infrastructure.', + techs: ['azure'], + link: 'https://www.credly.com/badges/6f094529-1efa-40ff-8b7d-bca6228b308d' + }, + { + title: 'Microsoft Certified: Azure Solutions Architect Expert', + type: 'Certificación', + from: 'Dic 2022', + to: 'Dic 2023', + desc: 'Earning the Azure Solutions Architect Expert certification demonstrates subject matter expertise in designing cloud and hybrid solutions that run on Microsoft Azure, including compute, network, storage, monitoring, and security. Candidates have advanced experience and knowledge across IT operations, including networking, virtualization, identity, security, business continuity, disaster recovery, data platforms, and governance.', + techs: ['azure'], + link: 'https://www.credly.com/badges/33d8bce2-bf89-4225-b244-cae4add890cf' + }, + { + title: 'AZ-305: Designing Microsoft Azure Infrastructure Solutions', + type: 'Certificación', + from: 'Ago 2022', + to: null, + desc: 'Passing Exam AZ-305: Designing Microsoft Azure Infrastructure Solutions validates the skills and advanced experience and knowledge of IT operations, including networking, virtualization, identity, security, business continuity, disaster recovery, data platforms, and governance. Candidates have experience in Azure administration, Azure development, and DevOps processes.', + techs: ['azure'], + link: 'https://www.credly.com/badges/19451f57-fbf9-4464-8543-d446fa0a4b3d' + }, + { + title: 'Microsoft Certified: DevOps Engineer Expert', + type: 'Certificación', + from: 'Ago 2022', + to: 'Ago 2023', + desc: 'Earning the DevOps Engineer Expert certification demonstrates the ability to combine people, process, and technologies to continuously deliver valuable products and services that meet end user needs and business objectives. DevOps professionals streamline delivery by optimizing practices, improving communications and collaboration, and creating automation.', + techs: ['azure'], + link: 'https://www.credly.com/badges/53cafd70-78b5-47f0-ba79-cda141af4502' + }, + { + title: 'Microsoft Certified: Azure Administrator Associate', + type: 'Certificación', + from: 'Ago 2022', + to: 'Ago 2023', + desc: 'Earning Azure Administrator Associate certification validates the skills and knowledge to implement, manage, and monitor an organization’s Microsoft Azure environment. Candidates have a deep understanding of each implementing, managing, and monitoring identity, governance, storage, compute, and virtual networks in a cloud environment, plus provision, size, monitor, and adjust resources, when needed.', + techs: ['azure'], + link: 'https://www.credly.com/badges/934f07ee-6aaa-47dd-aaa1-95522a7f11ec' + }, + { + title: 'CyberArk Trustee Certification Level-1', + type: 'Certificación', + from: 'Jul 2022', + to: null, + desc: 'The course Introduction to CyberArk Privileged Access Management is designed for anyone who is interested in learning about privileged account management. It is highly recommended for any professional who will be part of a CyberArk project.', + techs: ['cyberark'], + link: 'https://danieljsaldana.dev/certificates/level-1-trustee-exam-certification.pdf' + }, + { + title: 'AZ-400: Designing and Implementing Microsoft DevOps Solutions', + type: 'Certificación', + from: 'Jul 2022', + to: null, + desc: 'Passing exam AZ-400: Designing and Implementing Microsoft DevOps Solutions validates the skills and knowledge to combine people, processes, and technologies to deliver valuable products and services that meet end-user needs and business objectives. Candidates optimize practices, improve communications, and create automation to streamline delivery. They design and implement strategies for application code and infrastructure for continuous integration, testing, delivery, monitoring and feedback.', + techs: ['azure'], + link: 'https://www.credly.com/badges/93d936cb-09f2-4611-ab6a-545ab699faef' + }, + { + title: 'Oracle Cloud Infrastructure Foundations 2021 Associate', + type: 'Certificación', + from: 'Jun 2022', + to: 'Dic 2023', + desc: 'The Oracle Cloud Infrastructure (OCI) Foundations certification is intended for individuals looking to demonstrate fundamental knowledge of public cloud services provided by Oracle Cloud Infrastructure. This certification is targeted towards candidates with non-technical backgrounds such as those involved in selling or procuring cloud solutions, as well as those with a technical background who want to validate their foundational-level knowledge around core OCI services. This exam does not require any hands-on technical experience and is not a prerequisite for taking any other OCI certifications.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=82F0E94E34541E5828584308E88CE4EF27C4EAC6A8AFB80F4A8CA26FC5394F22' + }, + { + title: 'WS Learning: Object Storage', + type: 'Certificación', + from: 'Jun 2022', + to: null, + desc: 'Earners of this badge have developed the technical skills and knowledge of AWS storage services with a focus on Amazon Simple Storage Service (S3).', + techs: ['aws'], + link: 'https://www.credly.com/badges/b634d8af-48ec-4c0c-85e3-0fb6b48f46ba' + }, + { + title: 'Lifelong Learning', + type: 'Certificación', + from: 'May 2022', + to: null, + desc: 'Earners with this badge have proven their unwavering commitment to lifelong learning, vitally important in todays ever-changing and expanding digital world. It also identifies the qualities of an open-minded, disciplined, and constantly evolving mind, capable of using and contributing its knowledge to develop a more equal and better world.', + techs: ['certiprof'], + link: 'https://www.credly.com/badges/73f9cf3d-cf43-4c38-bad0-bb453c3f48e7', + }, + { + title: 'Microsoft Certified: Azure AI Fundamentals', + type: 'Certificación', + from: 'Abr 2022', + to: null, + desc: 'Earners of the Azure AI Fundamentals certification have demonstrated foundational knowledge of machine learning (ML) and artificial intelligence (AI) concepts and related Microsoft Azure services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/b0b84311-ec76-41e6-8482-0de53cbdc4d6', + }, + { + title: 'Microsoft Certified: Power Platform Fundamentals', + type: 'Certificación', + from: 'Abr 2022', + to: null, + desc: 'Earners of the Power Platform Fundamentals certification are users who aspire to improve productivity by automating business processes, analyzing data to produce business insights, and acting more effectively by creating simple app experiences.', + techs: ['azure'], + link: 'https://www.credly.com/badges/e8a1e70c-34a8-435b-b9c4-1a49de62fa40', + }, + { + title: 'Microsoft Certified: Azure Data Fundamentals', + type: 'Certificación', + from: 'Mar 2022', + to: null, + desc: 'Earners of the Azure Data Fundamentals certification have demonstrated foundational knowledge of core data concepts and how they are implemented using Microsoft Azure data services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/7382e0e7-1bcb-4995-8031-7b5eb5dce1b3', + }, + { + title: 'LFS169: Introduction to GitOps', + type: 'Certificación', + from: 'Ene 2022', + to: null, + desc: 'Earners of the LFS169: Introduction to GitOp badge can explain what GitOps is, along with its key principles, practices and technologies within the context of setting up Continuous Delivery on Kubernetes. They understand the two reconciliation models and three main tools used to implement GitOps on Kubernetes. They understand the benefits of GitOps: how to set up infrastructure, roll out applications and recover from a disaster, all using developer-friendly git-based workflows.', + techs: ['linux_foundation'], + link: null, + }, + { + title: 'Microsoft Certified: Security, Compliance, and Identity Fundamentals', + type: 'Certificación', + from: 'Ene 2022', + to: null, + desc: 'Earners of the Security, Compliance, and Identity Fundamentals demonstrate a functional understanding of security, compliance, and identity (SCI) across cloud-based and related Microsoft services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/659ab939-293b-440f-9b1b-69520a68a88f', + }, + { + title: 'Cybersecurity Essentials', + type: 'Certificación', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has a foundational knowledge of cybersecurity, including the basics of network security, DevSecOps (Development, Security, Operations), encryption and cybersecurity laws. The holder has been introduced to tactics and techniques used by Black Hats, and the principles of Confidentiality, Integrity and Availability (CIA) used by White Hats to defend networks. This credential also certifies that the holder has practiced critical thinking and problem solving skills.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/b188b838-136f-44e4-8ca9-6ae5e2d6b072', + }, + { + title: 'Introduction to Cybersecurity', + type: 'Certificación', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has introductory knowledge of cybersecurity, including the global implications of cyber threats, the impact of cyber attacks on industries, and why cybersecurity is a growing profession. The holder has an understanding of the ways in which networks are vulnerable to attack and Cisco’s approach to threat detection and defense. They also have insight into opportunities available for pursuing network security certifications.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/af81e96b-c04e-4201-96c2-c5155747720d', + }, + { + title: 'Introduction to IoT', + type: 'Certificación', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has introductory knowledge of Internet of Things and has an understanding how it enables the Digital Transformation along with emerging technologies such as data analytics, artificial intelligence and the increased attention to cybersecurity. The holder understands the importance of the new Intent Based Networking that uses a software-driven approach and machine learning to be able to connect and secure tens of billions of new devices with ease.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/db40e633-3a87-4617-a0a7-ff5aa6b4cf94', + }, + { + title: 'Networking Essentials', + type: 'Certificación', + from: 'Nov 2021', + to: null, + desc: 'Cisco verifies the earner of this badge successfully completed the Networking Essentials course and achieved this student level credential. Earner has knowledge of fundamentals of networking, how devices communicate, network addressing and services, how to build a home or small office network and configure basic security, basics of configuring Cisco devices, and the basics of testing and troubleshooting network problems. Participated in up to 19 labs and 24 Cisco Packet Tracer activities.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/147c24cf-3c8b-4faf-a5fa-2a3291f650d2', + }, + { + title: 'Scrum Fundamentals Certified (SFC™)', + type: 'Certificación', + from: 'Nov 2021', + to: null, + desc: 'Scrum Fundamentals Certified course is tailored to help anyone interested to know more about Scrum; learn about key concepts in Scrum as defined in the SBOK® Guide; and to get a basic understanding of how Scrum framework works in delivering successful projects. ', + techs: [''], + link: 'https://www.scrumstudy.com/certification/verify?type=SFC&number=882413', + }, + { + title: 'confluent Fundamentals Accreditation', + type: 'Certificación', + from: 'Oct 2021', + to: null, + desc: 'confluent Fundamentals Accreditation', + techs: ['confluent'], + link: 'https://www.credential.net/b92d85bf-b725-4a03-9b98-c7a9147c0b18', + }, + { + title: 'Microsoft Certified: Azure Fundamentals', + type: 'Certificación', + from: 'Sep 2021', + to: null, + desc: 'Earners of the Azure Fundamentals certification have demonstrated foundational level knowledge of cloud services and how those services are provided with Microsoft Azure.', + techs: ['azure'], + link: 'https://www.credly.com/badges/93cbe9df-0c1d-40e2-93a8-25edfc31242d', + }, + { + title: 'AWS Certified Solutions Architect – Associate', + type: 'Certificación', + from: 'Sep 2021', + to: 'Sep 2024', + desc: 'Earners of this certification have a comprehensive understanding of AWS services and technologies. They demonstrated the ability to build secure and robust solutions using architectural design principles based on customer requirements. Badge owners are able to strategically design well-architected distributed systems that are scalable, resilient, efficient, and fault-tolerant.', + techs: ['aws'], + link: 'https://www.credly.com/badges/cb1af97f-cab2-4504-8f1f-b8abb4c6ca0e', + }, + { + title: 'AWS Certified Cloud Practitioner', + type: 'Certificación', + from: 'Sep 2021', + to: 'Sep 2024', + desc: 'Earners of this certification have a fundamental understanding of IT services and their uses in the AWS Cloud. They demonstrated cloud fluency and foundational AWS knowledge. Badge owners are able to identify essential AWS services necessary to set up AWS-focused projects.', + techs: ['aws'], + link: 'https://www.credly.com/badges/4070db58-f1fd-4a48-a0b4-ef4aa5e36e21', + }, + { + title: 'Associate Cloud Engineer', + type: 'Certificación', + from: 'Oct 2021', + to: 'Oct 2023', + desc: 'Un Associate Cloud Engineer se encarga de implementar aplicaciones, supervisar operaciones y administrar soluciones empresariales. También sabe cómo usar Google Cloud Console y la interfaz de línea de comandos para realizar tareas comunes en la plataforma a fin de mantener una o más soluciones implementadas que aprovechen los servicios administrados por Google o autoadministrados que se encuentran en Google Cloud.', + techs: ['gcp'], + link: 'https://www.credential.net/7ab2a600-a1da-4359-9d45-a900024233c7', + }, + { + title: 'Dynatrace Partner Foundation Certification', + type: 'Certificación', + from: 'Ago 2021', + to: 'Ago 2023', + desc: 'Dynatrace Partner Foundation Certification', + techs: ['dynatrace'], + link: 'https://www.credly.com/badges/18fbdec5-b709-4a5d-8fcd-e107fe39d239', + }, + ], + 'en' : [ + { + title: 'Microsoft Certified: Azure AI Engineer Associate', + type: 'Certificación', + from: 'Sep 2023', + to: 'Sep 2024', + desc: 'As a Microsoft Azure AI engineer, you will create AI solutions using Azure Cognitive Services and Applied AI Services, covering all development phases. Proficiency in Python and C#, utilizing SDK/REST APIs, and applying responsible AI principles are required.', + techs: ['azure'], + link: 'https://learn.microsoft.com/en-us/users/danieljsaldana/credentials/1655b468218af0a' + }, + { + title: 'Microsoft Certified: Azure Cosmos DB Developer Specialty', + type: 'Certificación', + from: 'Aug 2023', + to: 'Aug 2024', + desc: 'This certification signifies a profound grasp of crafting strategic technical solutions to meet specific business goals. Demonstrating an adept balance of best practices and contextual trade-offs, holders excel in designing cross-platform solutions, with a specialized emphasis on harnessing Microsoft Azure Cosmos DBs capabilities for cloud-native applications.', + techs: ['azure'], + link: 'https://learn.microsoft.com/en-us/users/danieljsaldana/credentials/e9d53a8fc378fb76' + }, + { + title: 'AWS Certified Solutions Architect – Professional', + type: 'Certificación', + from: 'Aug 2023', + to: 'Aug 2026', + desc: 'Earners of this certification have an extensive understanding of designing technical strategies to accomplish specific business goals. They demonstrated the ability to balance best practices and trade-offs based on business context. Badge owners are able to design solutions across multiple platforms and providers.', + techs: ['aws'], + link: 'https://www.credly.com/badges/872b2f1a-a56d-4351-a901-d6ca6904e11f' + }, + { + title: 'Oracle Cloud Infrastructure 2023 Multicloud Architect Certified Associate', + type: 'Certificación', + from: 'Abr 2023', + to: 'Jun 2025', + desc: 'The Oracle Cloud Infrastructure 2023 Multicloud Architect Associate certification is designed to test an individuals expertise in designing and implementing Oracle Cloud Infrastructure (OCI) multicloud solutions. This certification aims to evaluate the candidates ability to use a combination of cloud services to build a multicloud environment.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=CFE2F62ECAB9B9D9C63A6578116C6AF3546F990058223C6D66E9543E4645A7A0' + }, + { + title: 'Oracle Cloud Infrastructure 2023 Certified Foundations Associate', + type: 'Certificación', + from: 'Abr 2023', + to: 'Jun 2025', + desc: 'The Oracle Cloud Infrastructure (OCI) Foundations certification is for individuals who intend to demonstrate fundamental knowledge of public cloud services provided by Oracle Cloud Infrastructure (OCI). This certification is for candidates with non-technical backgrounds, such as those involved in selling or procuring cloud solutions, as well as those with a technical background who want to validate their foundational-level knowledge around core OCI services. This exam does not require any hands-on technical experience and is not a prerequisite for taking any other OCI certifications.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=524190EC86E8752386E9DB188282F849565A8A488AD6DD98C038FF6E2F88591A' + }, + { + title: 'Microsoft Certified: Cybersecurity Architect Expert', + type: 'Certificación', + from: 'Abr 2023', + to: 'Abr 2024', + desc: 'Earning Cybersecurity Architect Expert validates subject matter expertise in designing and evolving the cybersecurity strategy to protect an organization’s mission and business processes across all aspects of the enterprise architecture.', + techs: ['azure'], + link: 'https://www.credly.com/badges/1c2bfadf-23e9-4472-a76e-83844cddf5e3' + }, + { + title: 'SC-100: Microsoft Cybersecurity Architect', + type: 'Certificación', + from: 'Abr 2023', + to: null, + desc: 'Passing Exam SC-100: Microsoft Cybersecurity Architect validates the skills and advanced experience and knowledge in a wide range of security engineering areas, including identity and access, platform protection, security operations, securing data, and securing applications. Candidates have experience with hybrid and cloud implementations.', + techs: ['azure'], + link: 'https://www.credly.com/badges/0a508fed-e128-4e2b-b4e2-7940e0c07936' + }, + { + title: 'Intermediate Flux', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Flux is a data language used in the InfluxDB time series platform. This course provides a hands-on introduction to the Flux data language. Using an IoT use case, this intermediate course teaches more advanced principles and functions for working in Flux. Participants learn to write their own Flux queries, visualize data, and apply these principles to a real-world problem.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/efeab75b-818c-4ebb-a6fa-d0ec60885242' + }, + { + title: 'Data Collection with Telegraf', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Telegraf is an open source data collection agent that allows users to collect time series data from hundreds of different sources. This course covers the fundamentals of what Telegraf is, how to install and configure it, how to perform data transformations and finally some tips and tricks on how to avoid common mistakes.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/628395d3-ffd3-4373-852e-8b3db4fc0f7d' + }, + { + title: 'Beginner Flux', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'Flux is a data language used in the InfluxDB time series platform. This course provides a hands-on introduction to the Flux data language. Using an IoT use case, this course teaches some of the basic principles and functions for working in Flux. Participants learn to write their own Flux queries, visualize data, and apply these principles to a real-world problem.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/f0d8e099-776e-421d-8d34-e86fa480346b' + }, + { + title: 'Exploring InfluxDB Cloud', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'This course covers the basics of the InfluxDB Cloud time series data platform including a tour of the user interface components and basic administration. It also teaches how to ingest and visualize data as well as how to replicate data from the edge. Learners must complete a hands-on assignment to show their comprehension of the skills presented in the course.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/26a84329-bd56-45e3-a1e6-4bc98a853f4a' + }, + { + title: 'InfluxDB Essentials', + type: 'Certificación', + from: 'Mar 2023', + to: null, + desc: 'This course covers the fundamentals of InfluxDB. It walks through the various components of the platform, and introduces the InfluxDB data model and how to map raw data onto it. You will also learn about Flux, a scripting and querying language, and how to use it for basic transformation and analysis of time series data. Finally, it examines different methods for visualizing data in InfluxDB and how to use tasks to automate different workflows and processes.', + techs: ['influxdata'], + link: 'https://www.credly.com/badges/7dcc3341-1e9a-4fb7-b18e-b0a862c84bc8' + }, + { + title: 'Microsoft Certified: Azure Network Engineer Associate', + type: 'Certificación', + from: 'Apr 2023', + to: 'Apr 2024', + desc: 'Earning Azure Network Engineer Associate validates skills and subject matter expertise in planning, implementing, and maintaining Azure networking solutions, including hybrid networking, connectivity, routing, security, and private access to Azure services. Professionals in this role deploy networking solutions using Azure Portal and other methods, including PowerShell, Azure Command-Line Interface (CLI), and Azure Resource Manager templates (ARM templates).', + techs: ['azure'], + link: 'https://www.credly.com/badges/27d26914-5bf5-4b00-914d-2063240481ed' + }, + { + title: '(ISC)² Candidate', + type: 'Certificación', + from: 'Mar 2023', + to: 'Mar 2024', + desc: '(ISC)² Candidates are individuals pursuing or considering a cybersecurity certification. To become a Candidate, the individual must apply online and provide minimum identifying information, as well as affirm that they will abide by the (ISC)² Code of Ethics and Privacy Policy.', + techs: ['(ISC)²'], + link: 'https://www.credly.com/badges/15402b80-2c68-47c5-9ddb-365ad471b84d' + }, + { + title: 'Microsoft Certified: Information Protection Administrator Associate', + type: 'Certificación', + from: 'Mar 2024', + to: 'Mar 2024', + desc: 'Earning the Information Protection Administrator Associate certification validates the skills and knowledge to plan and implement controls that meet organizational compliance needs. Candidates are responsible for translating requirements and compliance controls into technical implementation. They are responsible for creating policies and rules for content classification, data loss prevention, governance, and protection.', + techs: ['azure'], + link: 'https://www.credly.com/badges/0d84a1b7-e11b-4378-a7c3-1d4cf777a21b' + }, + { + title: 'Microsoft Certified: Dynamics 365 Fundamentals (CRM)', + type: 'Certificación', + from: 'Mar 2024', + to: null, + desc: 'Earners of Dynamics 365 Fundamentals (CRM) demonstrate relevant work experience in an Information Technology (IT) environment. Candidates have a fundamental understanding of the customer engagement capabilities of Dynamics 365.', + techs: ['azure'], + link: 'https://www.credly.com/badges/44216d31-d4cc-404a-b6bc-e879553ff0dc' + }, + { + title: 'Microsoft 365 Certified: Fundamentals', + type: 'Certificación', + from: 'Ene 2024', + to: null, + desc: 'Earning the Microsoft 365 Fundamentals certification demonstrates an understanding of the options available in Microsoft 365 and the benefits of adopting cloud services, the Software as a Service (SaaS) cloud model, and implementing Microsoft 365 cloud service.', + techs: ['azure'], + link: 'https://www.credly.com/badges/c1cf03d4-a8cd-40c6-b81b-62ad58bee529' + }, + { + title: 'Achieve CI&CD With Jenkins', + type: 'Certificación', + from: 'Ene 2024', + to: 'Ene 2025', + desc: 'This course introduces the basic concepts, features and benifits of CI/CD compared with traditional software developing mode. Then we have a detailed introduction about the features and benefits of Jenkins software and also the installation of Jenkins based on Ubuntu operating system. Finally we introduced the detailed operations on Jenkins console with a brief demonstration.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/achieve-ci-cd-with-jenkins.png' + }, + { + title: 'Alibaba Cloud Analysis Architecture and Case Studies', + type: 'Certificación', + from: 'Ene 2024', + to: 'Ene 2025', + desc: 'Through this course, you will learn the core services of Alibaba Cloud Analysis Architecture (E-MapReduce, MaxCompute, Table Store). By studying some classic use cases, you can understand how to build an analysis architecture in Alibaba Cloud.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-cloud-analysis-architecture-and-case-studies.png' + }, + { + title: 'Alibaba Hybrid Cloud Solution', + type: 'Certificación', + from: 'Ene 2024', + to: 'Ene 2025', + desc: 'This course helps you undertsand the components and services in Alibaba Cloud that will help you build a Hybrid Cloud solution. The course will also introduce 4 Hybrid reference architectures.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-hybrid-cloud-solution.png' + }, + { + title: 'Alibaba Cloud Fundamental Architecture and Case Analysis', + type: 'Certificación', + from: 'Ene 2024', + to: 'Ene 2025', + desc: 'Through this course, you will learn the core services of Alibaba Cloud Fundamental Architecture (ECS, SLB, OSS and RDS). By studying some classic use cases, you can understand how to build a basic architecture in Alibaba Cloud.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/alibaba-cloud-fundamental-architecture-and-case-analysis.png' + }, + { + title: 'Operate and Manage a Cloud Server', + type: 'Certificación', + from: 'Ene 2024', + to: 'Ene 2025', + desc: 'Understand the advantage of a cloud server. Learn how to purchase ECS on Alibaba Cloud, manage the server on our console, backup critical data and ensure your system can adjust according to business needs.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/operate-and-manage-a-cloud-server.png' + }, + { + title: 'An Introduction of DevOps', + type: 'Certificación', + from: 'Ene 2023', + to: 'Ene 2023', + desc: 'What is DevOps? Its a combination of cultural philosophies, practices, and tools that increases a team’s ability to rapidly deliver services. In this clouder course, you’ll learn the concept and history of DevOps, how it works compared with traditional methodology, tools that support DevOps and recap the ideas with some classic case studies.', + techs: ['alibabacloud'], + link: 'https://danieljsaldana.dev/certificates/an-introduction-of-devops.png' + }, + { + title: 'Microsoft Certified: Dynamics 365 Fundamentals (ERP)', + type: 'Certificación', + from: 'Jan 2023', + to: null, + desc: 'Earners of Dynamics 365 Fundamentals (ERP) demonstrate relevant work experience and exposure to the enterprise resource planning (ERP) capabilities of Dynamics 365. Candidates have a fundamental understanding of how finance and operations apps fit within the overall Microsoft ecosystem.', + techs: ['azure'], + link: 'https://www.credly.com/badges/b3e7e7a0-da29-4bc0-97e3-1b072bfdf4d5' + }, + { + title: 'AWS Cloud Quest: Cloud Practitioner', + type: 'Certification', + from: 'Jan 2023', + to: null, + desc: 'Earners of this badge have demonstrated basic solution building knowledge using AWS services and have a fundamental understanding of AWS Cloud concepts. Badge earners have acquired hands-on experience with compute, networking, database and security services.', + techs: ['aws'], + link: 'https://www.credly.com/badges/dc7dfe47-5ce1-47fc-b22d-2891a5c3b3d9' + }, + { + title: 'Microsoft Certified: Azure Security Engineer Associate', + type: 'Certification', + from: 'Jan 2023', + to: 'Jan 2024', + desc: 'Earning Azure Security Engineer Associate certification validates the skills and knowledge to implement security controls and threat protection, manage identity and access, and protect data, applications, and networks in cloud and hybrid environments as part of end-to-end infrastructure.', + techs: ['azure'], + link: 'https://www.credly.com/badges/6f094529-1efa-40ff-8b7d-bca6228b308d' + }, + { + title: 'Microsoft Certified: Azure Solutions Architect Expert', + type: 'Certification', + from: 'Dec 2022', + to: 'Dec 2023', + desc: 'Earning the Azure Solutions Architect Expert certification demonstrates subject matter expertise in designing cloud and hybrid solutions that run on Microsoft Azure, including compute, network, storage, monitoring, and security. Candidates have advanced experience and knowledge across IT operations, including networking, virtualization, identity, security, business continuity, disaster recovery, data platforms, and governance.', + techs: ['azure'], + link: 'https://www.credly.com/badges/33d8bce2-bf89-4225-b244-cae4add890cf' + }, + { + title: 'AZ-305: Designing Microsoft Azure Infrastructure Solutions', + type: 'Certification', + from: 'Aug 2022', + to: null, + desc: 'Passing Exam AZ-305: Designing Microsoft Azure Infrastructure Solutions validates the skills and advanced experience and knowledge of IT operations, including networking, virtualization, identity, security, business continuity, disaster recovery, data platforms, and governance. Candidates have experience in Azure administration, Azure development, and DevOps processes.', + techs: ['azure'], + link: 'https://www.credly.com/badges/19451f57-fbf9-4464-8543-d446fa0a4b3d' + }, + { + title: 'Microsoft Certified: DevOps Engineer Expert', + type: 'Certificación', + from: 'Aug 2022', + to: 'Aug 2023', + desc: 'Earning the DevOps Engineer Expert certification demonstrates the ability to combine people, process, and technologies to continuously deliver valuable products and services that meet end user needs and business objectives. DevOps professionals streamline delivery by optimizing practices, improving communications and collaboration, and creating automation.', + techs: ['azure'], + link: 'https://www.credly.com/badges/53cafd70-78b5-47f0-ba79-cda141af4502' + }, + { + title: 'Microsoft Certified: Azure Administrator Associate', + type: 'Certification', + from: 'Aug 2022', + to: 'Aug 2023', + desc: 'Earning Azure Administrator Associate certification validates the skills and knowledge to implement, manage, and monitor an organization’s Microsoft Azure environment. Candidates have a deep understanding of each implementing, managing, and monitoring identity, governance, storage, compute, and virtual networks in a cloud environment, plus provision, size, monitor, and adjust resources, when needed.', + techs: ['azure'], + link: 'https://www.credly.com/badges/934f07ee-6aaa-47dd-aaa1-95522a7f11ec' + }, + { + title: 'CyberArk Trustee Certification Level-1', + type: 'Certification', + from: 'Jul 2022', + to: null, + desc: 'The course Introduction to CyberArk Privileged Access Management is designed for anyone who is interested in learning about privileged account management. It is highly recommended for any professional who will be part of a CyberArk project.', + techs: ['cyberark'], + link: 'https://danieljsaldana.dev/certificates/level-1-trustee-exam-certification.pdf' + }, + { + title: 'AZ-400: Designing and Implementing Microsoft DevOps Solutions', + type: 'Certification', + from: 'Jul 2022', + to: null, + desc: 'Passing exam AZ-400: Designing and Implementing Microsoft DevOps Solutions validates the skills and knowledge to combine people, processes, and technologies to deliver valuable products and services that meet end-user needs and business objectives. Candidates optimize practices, improve communications, and create automation to streamline delivery. They design and implement strategies for application code and infrastructure for continuous integration, testing, delivery, monitoring and feedback.', + techs: ['azure'], + link: 'https://www.credly.com/badges/93d936cb-09f2-4611-ab6a-545ab699faef' + }, + { + title: 'Oracle Cloud Infrastructure Foundations 2021 Associate', + type: 'Certification', + from: 'Jun 2022', + to: 'Dic 2023', + desc: 'The Oracle Cloud Infrastructure (OCI) Foundations certification is intended for individuals looking to demonstrate fundamental knowledge of public cloud services provided by Oracle Cloud Infrastructure. This certification is targeted towards candidates with non-technical backgrounds such as those involved in selling or procuring cloud solutions, as well as those with a technical background who want to validate their foundational-level knowledge around core OCI services. This exam does not require any hands-on technical experience and is not a prerequisite for taking any other OCI certifications.', + techs: ['oracle'], + link: 'https://catalog-education.oracle.com/pls/certview/sharebadge?id=82F0E94E34541E5828584308E88CE4EF27C4EAC6A8AFB80F4A8CA26FC5394F22' + }, + { + title: 'WS Learning: Object Storage', + type: 'Certificación', + from: 'Jun 2022', + to: null, + desc: 'Earners of this badge have developed the technical skills and knowledge of AWS storage services with a focus on Amazon Simple Storage Service (S3).', + techs: ['aws'], + link: 'https://www.credly.com/badges/b634d8af-48ec-4c0c-85e3-0fb6b48f46ba' + }, + { + title: 'Lifelong Learning', + type: 'Certification', + from: 'May 2022', + to: null, + desc: 'Earners with this badge have proven their unwavering commitment to lifelong learning, vitally important in todays ever-changing and expanding digital world. It also identifies the qualities of an open-minded, disciplined, and constantly evolving mind, capable of using and contributing its knowledge to develop a more equal and better world.', + techs: ['certiprof'], + link: 'https://www.credly.com/badges/73f9cf3d-cf43-4c38-bad0-bb453c3f48e7', + }, + { + title: 'Microsoft Certified: Azure AI Fundamentals', + type: 'Certification', + from: 'Apr 2022', + to: null, + desc: 'Earners of the Azure AI Fundamentals certification have demonstrated foundational knowledge of machine learning (ML) and artificial intelligence (AI) concepts and related Microsoft Azure services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/b0b84311-ec76-41e6-8482-0de53cbdc4d6', + }, + { + title: 'Microsoft Certified: Power Platform Fundamentals', + type: 'Certification', + from: 'Apr 2022', + to: null, + desc: 'Earners of the Power Platform Fundamentals certification are users who aspire to improve productivity by automating business processes, analyzing data to produce business insights, and acting more effectively by creating simple app experiences.', + techs: ['azure'], + link: 'https://www.credly.com/badges/e8a1e70c-34a8-435b-b9c4-1a49de62fa40', + }, + { + title: 'Microsoft Certified: Azure Data Fundamentals', + type: 'Certification', + from: 'Mar 2022', + to: null, + desc: 'Earners of the Azure Data Fundamentals certification have demonstrated foundational knowledge of core data concepts and how they are implemented using Microsoft Azure data services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/7382e0e7-1bcb-4995-8031-7b5eb5dce1b3', + }, + { + title: 'LFS169: Introduction to GitOps', + type: 'Certification', + from: 'Jan 2022', + to: null, + desc: 'Earners of the LFS169: Introduction to GitOp badge can explain what GitOps is, along with its key principles, practices and technologies within the context of setting up Continuous Delivery on Kubernetes. They understand the two reconciliation models and three main tools used to implement GitOps on Kubernetes. They understand the benefits of GitOps: how to set up infrastructure, roll out applications and recover from a disaster, all using developer-friendly git-based workflows.', + techs: ['linux_foundation'], + link: null, + }, + { + title: 'Microsoft Certified: Security, Compliance, and Identity Fundamentals', + type: 'Certification', + from: 'Jan 2022', + to: null, + desc: 'Earners of the Security, Compliance, and Identity Fundamentals demonstrate a functional understanding of security, compliance, and identity (SCI) across cloud-based and related Microsoft services.', + techs: ['azure'], + link: 'https://www.credly.com/badges/659ab939-293b-440f-9b1b-69520a68a88f', + }, + { + title: 'Cybersecurity Essentials', + type: 'Certification', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has a foundational knowledge of cybersecurity, including the basics of network security, DevSecOps (Development, Security, Operations), encryption and cybersecurity laws. The holder has been introduced to tactics and techniques used by Black Hats, and the principles of Confidentiality, Integrity and Availability (CIA) used by White Hats to defend networks. This credential also certifies that the holder has practiced critical thinking and problem solving skills.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/b188b838-136f-44e4-8ca9-6ae5e2d6b072', + }, + { + title: 'Introduction to Cybersecurity', + type: 'Certification', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has introductory knowledge of cybersecurity, including the global implications of cyber threats, the impact of cyber attacks on industries, and why cybersecurity is a growing profession. The holder has an understanding of the ways in which networks are vulnerable to attack and Cisco’s approach to threat detection and defense. They also have insight into opportunities available for pursuing network security certifications.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/af81e96b-c04e-4201-96c2-c5155747720d', + }, + { + title: 'Introduction to IoT', + type: 'Certification', + from: 'Nov 2021', + to: null, + desc: 'The holder of this credential has introductory knowledge of Internet of Things and has an understanding how it enables the Digital Transformation along with emerging technologies such as data analytics, artificial intelligence and the increased attention to cybersecurity. The holder understands the importance of the new Intent Based Networking that uses a software-driven approach and machine learning to be able to connect and secure tens of billions of new devices with ease.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/db40e633-3a87-4617-a0a7-ff5aa6b4cf94', + }, + { + title: 'Networking Essentials', + type: 'Certification', + from: 'Nov 2021', + to: null, + desc: 'Cisco verifies the earner of this badge successfully completed the Networking Essentials course and achieved this student level credential. Earner has knowledge of fundamentals of networking, how devices communicate, network addressing and services, how to build a home or small office network and configure basic security, basics of configuring Cisco devices, and the basics of testing and troubleshooting network problems. Participated in up to 19 labs and 24 Cisco Packet Tracer activities.', + techs: ['cisco'], + link: 'https://www.credly.com/badges/147c24cf-3c8b-4faf-a5fa-2a3291f650d2', + }, + { + title: 'Scrum Fundamentals Certified (SFC™)', + type: 'Certification', + from: 'Nov 2021', + to: null, + desc: 'Scrum Fundamentals Certified course is tailored to help anyone interested to know more about Scrum; learn about key concepts in Scrum as defined in the SBOK® Guide; and to get a basic understanding of how Scrum framework works in delivering successful projects. ', + techs: [''], + link: 'https://www.scrumstudy.com/certification/verify?type=SFC&number=882413', + }, + { + title: 'confluent Fundamentals Accreditation', + type: 'Certification', + from: 'Oct 2021', + to: null, + desc: 'confluent Fundamentals Accreditation', + techs: ['confluent'], + link: 'https://www.credential.net/b92d85bf-b725-4a03-9b98-c7a9147c0b18', + }, + { + title: 'Microsoft Certified: Azure Fundamentals', + type: 'Certification', + from: 'Sep 2021', + to: null, + desc: 'Earners of the Azure Fundamentals certification have demonstrated foundational level knowledge of cloud services and how those services are provided with Microsoft Azure.', + techs: ['azure'], + link: 'https://www.credly.com/badges/93cbe9df-0c1d-40e2-93a8-25edfc31242d', + }, + { + title: 'AWS Certified Solutions Architect – Associate', + type: 'Certification', + from: 'Sep 2021', + to: 'Sep 2024', + desc: 'Earners of this certification have a comprehensive understanding of AWS services and technologies. They demonstrated the ability to build secure and robust solutions using architectural design principles based on customer requirements. Badge owners are able to strategically design well-architected distributed systems that are scalable, resilient, efficient, and fault-tolerant.', + techs: ['aws'], + link: 'https://www.credly.com/badges/cb1af97f-cab2-4504-8f1f-b8abb4c6ca0e', + }, + { + title: 'AWS Certified Cloud Practitioner', + type: 'Certification', + from: 'Sep 2021', + to: 'Sep 2024', + desc: 'Earners of this certification have a fundamental understanding of IT services and their uses in the AWS Cloud. They demonstrated cloud fluency and foundational AWS knowledge. Badge owners are able to identify essential AWS services necessary to set up AWS-focused projects.', + techs: ['aws'], + link: 'https://www.credly.com/badges/4070db58-f1fd-4a48-a0b4-ef4aa5e36e21', + }, + { + title: 'Associate Cloud Engineer', + type: 'Certification', + from: 'Oct 2021', + to: 'Oct 2023', + desc: 'Un Associate Cloud Engineer se encarga de implementar aplicaciones, supervisar operaciones y administrar soluciones empresariales. También sabe cómo usar Google Cloud Console y la interfaz de línea de comandos para realizar tareas comunes en la plataforma a fin de mantener una o más soluciones implementadas que aprovechen los servicios administrados por Google o autoadministrados que se encuentran en Google Cloud.', + techs: ['gcp'], + link: 'https://www.credential.net/7ab2a600-a1da-4359-9d45-a900024233c7', + }, + { + title: 'Dynatrace Partner Foundation Certification', + type: 'Certification', + from: 'Aug 2021', + to: 'Aug 2023', + desc: 'Dynatrace Partner Foundation Certification', + techs: ['dynatrace'], + link: 'https://www.credly.com/badges/18fbdec5-b709-4a5d-8fcd-e107fe39d239', + }, + ], +} + +export default projects diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..aafef95 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/src/langs/about_me.ts b/src/langs/about_me.ts new file mode 100644 index 0000000..7013f03 --- /dev/null +++ b/src/langs/about_me.ts @@ -0,0 +1,41 @@ +import { Langs } from '../types/langs' + +const about_me : Langs = { + 'es' : { + 'hi' : '👋 Hola, mi nombre es', + 'develop' : 'Product Onwer.', + 'years_exp' : 'Años de experiencia', + 'certifications_success' : 'Certificaciones', + 'course_finished' : 'Cursos', + 'love_coding' : 'Perseverancia', + 'about_me' : 'Sobre Mi', + 'am_sre_devops' : `Soy Product Onwer🔥, con un background de Software Arquitect, DevOp, SRE, SysAdmin y especializado en provedores Cloud como AWS, + Azure y GCP. Dispongo de un fuerte dominio de Arquitectura Cloud y Diseño de modelos de CI/CD.`, + 'live_in' : `Vivo en Almería, España 🌍 tengo`, + 'years' : 'años', + 'studies' : 'Educación', + 'college_expert_cloud' : 'Experto Universitario en Cloud Computing. Arquitecturas y Soluciones (AWS y Azure)', + 'college_expert_devops' : 'Experto Universitario en Devops & Cloud', + 'chat' : '¡Hablemos!', + 'sorry' : 'Perdón, tu navegador no soporta videos embebidos.' + }, + 'en' : { + 'hi' : '👋 Hello, my name is', + 'develop' : 'Product Onwer.', + 'years_exp' : 'Experience years', + 'certifications_success' : 'Certifications', + 'course_finished' : 'Course', + 'love_coding' : 'Perseverance', + 'about_me' : 'About Me', + 'am_sre_devops' : `I am Product Onwer🔥, with a background of Software Arquitect,DevOp, SRE, SysAdmin and specialized in Cloud providers such as AWS , + Azure and GCP. I have a strong command of Cloud Architecture and Model Design of CI/CD.`, + 'live_in' : `I am currently living in Almería, Spain 🌍
I am`, + 'years' : 'years old', + 'studies' : 'Studies', + 'college_expert_cloud' : 'University Expert in Cloud Computing. Architectures and Solutions (AWS and Azure)', + 'college_expert_devops' : 'University Expert in Devops & Cloud', + 'chat' : 'Let\'s talk!', + 'sorry' : 'Sorry, your browser does not support embedded videos.' + } +} +export default about_me \ No newline at end of file diff --git a/src/langs/certificates_list.ts b/src/langs/certificates_list.ts new file mode 100644 index 0000000..1ee2def --- /dev/null +++ b/src/langs/certificates_list.ts @@ -0,0 +1,17 @@ +import { Langs } from '../types/langs' + +const certificates_list : Langs = { + 'es' : { + 'certificates' : 'Cursos', + 'all' : 'Todas mis cursos en orden cronológico.', + 'load_more' : 'Cargar más', + 'see' : 'Ver Curso', + }, + 'en' : { + 'certificates' : 'Courses', + 'all' : 'All my courses in chronological order.', + 'load_more' : 'Load more', + 'see' : 'See Course', + } +} +export default certificates_list \ No newline at end of file diff --git a/src/langs/my_experience.ts b/src/langs/my_experience.ts new file mode 100644 index 0000000..7b65ae6 --- /dev/null +++ b/src/langs/my_experience.ts @@ -0,0 +1,55 @@ +import { Langs } from '../types/langs' + +const my_experience : Langs = { + 'es' : { + 'my_exp' : 'Mi Experiencia', + 'productowner' : 'Product Owner', + 'now' : 'Actualidad', + 'productowner_exp' : `Como Product Owner, mi liderazgo 🚀 guía el diseño y desarrollo de la arquitectura tecnológica, seleccionando software adecuado 🛠️ y supervisando implementaciones. Coordinando la resolución de problemas, cada paso se planifica meticulosamente para construir una sólida base técnica 💡. Soy el puente entre la visión y la ejecución, asegurando un camino exitoso en la construcción de nuestra arquitectura.`, + 'softwarearquitect' : 'Software Arquitect', + 'softwarearquitect_exp' : `Toma decisiones de diseño de alto nivel y dicta estándares técnicos 📋, incluyendo estándares de codificación de software, herramientas y plataformas. + Dirijo el diseño y desarrollo de la arquitectura tecnológica de un sistema 🏗️, aplicación o plataforma. + Para ello, me encargo de seleccionar el software adecuado para cada función, vigilar la implementación y coordinar la resolución de los problemas técnicos que puedan surgir, + planificando técnicamente cada paso a seguir en la construcción de esa arquitectura 💬.`, + 'sre' : 'Site Reliability Engineering', + 'sre_exp' : `Automatización de tareas operativas, creación de pipeline 🚀, diseño level design para garantizar la + disponibilidad de las aplicaciones 🏗️, explotación de métricas e identificar, diagnosticar y resolver los + problemas de aplicaciones 🧪.`, + 'devops' : 'DevOps Engineer', + 'devops_exp' : `Desarrollo automatizaciones en la solución CI/CD interna 🔧. Cooperación con los equipos de Arquitectura en la + fase de design thinking así como en las distintas fases de desarrollo de evolutivo 🗒️. Miembro del equipo de estrategia del + Dominio de Ingeniera para definir nuevos procedimientos y modelos de trabajo ✍️.`, + 'sysadmin_linux' : 'SysAdmin Linux', + 'sysadmin_linux_exp' : `Resolución de incidencias 🔴, automatización de procedimientos, creación y configuración + de máquinas virtuales 🖥️, gestión de todo la infraestructura interna de la organización 🧮.`, + 'sysadmin' : 'SysAdmin Linux/Windows', + 'sysadmin_exp' : `Intervenciones en máquinas físicas y virtuales y entornos de servidores compartidos ☁️, + gestión en clusters de correo ✉️, implementación de reglas de seguridad 🔐.` + }, + 'en' : { + 'my_exp' : 'My Experience', + 'productowner' : 'Product Owner', + 'now' : 'Actualidad', + 'productowner_exp' : `As a Product Owner, my leadership 🚀 guides the design and development of technological architecture, selecting appropriate software 🛠️ and overseeing implementations. Coordinating the resolution of issues, each step is meticulously planned to build a strong technical foundation 💡. I serve as the bridge between vision and execution, ensuring a successful path in constructing our architecture.∫`, + 'softwarearquitect' : 'Software Arquitect', + 'softwarearquitect_exp' : `Make high-level design decisions and dictate technical standards 📋, including software coding standards, tools, and platforms. + I direct the design and development of the technological architecture of a system 🏗️, application or platform. + To do this, I am in charge of selecting the appropriate software for each function, monitoring the implementation and coordinating the resolution of any technical problems that may arise, + technically planning each step to follow in the construction of that architecture 💬.`, + 'sre' : 'Site Reliability Engineering', + 'sre_exp' : `Automation of operational tasks, pipeline creation 🚀, level design to guarantee the + availability of applications 🏗️, exploitation of metrics and identify, diagnose and solve problems + app problems 🧪.`, + 'devops' : 'DevOps Engineer', + 'devops_exp' : `I develop automations in the internal CI/CD solution 🔧. Cooperation with the Architecture teams in the + design thinking phase as well as the different phases of evolutionary development 🗒️. Member of the strategy team + Engineering domain to define new procedures and work models ✍️.`, + 'sysadmin_linux' : 'SysAdmin Linux', + 'sysadmin_linux_exp' : `Resolution of incidents 🔴, automation of procedures, creation and configuration + of virtual machines 🖥️, management of all the internal infrastructure of the organization 🧮.`, + 'sysadmin' : 'SysAdmin Linux/Windows', + 'sysadmin_exp' : `Interventions on physical and virtual machines and shared server environments ☁️, + management in mail clusters ✉️, implementation of security rules 🔐.` + } +} +export default my_experience \ No newline at end of file diff --git a/src/langs/page_footer.ts b/src/langs/page_footer.ts new file mode 100644 index 0000000..5b42547 --- /dev/null +++ b/src/langs/page_footer.ts @@ -0,0 +1,16 @@ +import { Langs } from '../types/langs' +import { version } from '../../package.json' + +const page_footer : Langs = { + 'es' : { + 'develop' : 'Desarrollado <con VueJS🔥>', + 'version' : '<Version ⛩️ ' + version + '>', + 'back_up' : '☝️ Regresar arriba', + }, + 'en' : { + 'develop' : 'Developed <with VueJS🔥>', + 'version' : '<Version ⛩️ ' + version + '>', + 'back_up' : '☝️ Back to heaven', + } +} +export default page_footer \ No newline at end of file diff --git a/src/langs/posts_lists.ts b/src/langs/posts_lists.ts new file mode 100644 index 0000000..ec1d38c --- /dev/null +++ b/src/langs/posts_lists.ts @@ -0,0 +1,17 @@ +import { Langs } from '../types/langs' + +const posts_list : Langs = { + 'es' : { + 'posts' : 'Artículos', + 'all' : 'Todos mis artículos en orden cronológico.', + 'load_more' : 'Cargar más', + 'see' : 'Ver Artículo', + }, + 'en' : { + 'posts' : 'Articles', + 'all' : 'All my article in chronological order.', + 'load_more' : 'Load more', + 'see' : 'See Article', + } +} +export default posts_list \ No newline at end of file diff --git a/src/langs/professional_skills.ts b/src/langs/professional_skills.ts new file mode 100644 index 0000000..d2ace30 --- /dev/null +++ b/src/langs/professional_skills.ts @@ -0,0 +1,17 @@ +import { Langs } from '../types/langs' + +const professional_skills : Langs = { + 'es' : { + 'cloud_publica' : 'Cloud Publicas', + 'tech' : 'Cloud Computing', + 'db' : 'Bases de Datos', + 'tools' : 'Herramientas', + }, + 'en' : { + 'cloud_publica' : 'Public Cloud', + 'tech' : 'Cloud Computing', + 'db' : 'Database', + 'tools' : 'Tools', + } +} +export default professional_skills \ No newline at end of file diff --git a/src/langs/projects_time_line.ts b/src/langs/projects_time_line.ts new file mode 100644 index 0000000..609d2d2 --- /dev/null +++ b/src/langs/projects_time_line.ts @@ -0,0 +1,15 @@ +import { Langs } from '../types/langs' + +const projects_time_line : Langs = { + 'es' : { + 'projects' : 'Certificaciones', + 'a_line' : 'Una línea de tiempo de las certificaciones que he realizado.', + 'load_more' : 'Cargar más', + }, + 'en' : { + 'projects' : 'Certifications', + 'a_line' : 'A timeline of the certifications I have completed.', + 'load_more' : 'Load more', + } +} +export default projects_time_line \ No newline at end of file diff --git a/src/langs/soft_skills.ts b/src/langs/soft_skills.ts new file mode 100644 index 0000000..e58c391 --- /dev/null +++ b/src/langs/soft_skills.ts @@ -0,0 +1,21 @@ +import { Langs } from '../types/langs' + +const soft_skills : Langs = { + 'es' : { + 'skills' : 'Habilidades', + 'resp' : 'Responsable', + 'dec' : 'Resolutivo', + 'team' : 'Trabajo en equipo', + 'pro' : 'Proactivo', + 'eng' : 'Comprometido', + }, + 'en' : { + 'skills' : 'Soft Skills', + 'resp' : 'Responsible', + 'dec' : 'Decisive', + 'team' : 'Teamwork', + 'pro' : 'Proactive', + 'eng' : 'Engaged', + } +} +export default soft_skills \ No newline at end of file diff --git a/src/langs/top_nav.ts b/src/langs/top_nav.ts new file mode 100644 index 0000000..f9a8ee4 --- /dev/null +++ b/src/langs/top_nav.ts @@ -0,0 +1,19 @@ +import { Langs } from '../types/langs' + +const top_nav : Langs = { + 'es' : { + 'about_me' : 'Sobre Mí', + 'projects' : 'Certificaciones', + 'certificates' : 'Cursos', + 'blog' : 'Blog', + 'api' : 'API' + }, + 'en' : { + 'about_me' : 'About me', + 'projects' : 'Certifications', + 'certificates' : 'Courses', + 'blog' : 'Blog', + 'api' : 'API' + } +} +export default top_nav \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..b6c7385 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,6 @@ +import { createApp } from 'vue' +import store from './store' +import './sass/main.scss' +import App from './App.vue' + +createApp(App).use(store).mount('#__vue3') diff --git a/src/sass/animations/blink.scss b/src/sass/animations/blink.scss new file mode 100644 index 0000000..3b12aee --- /dev/null +++ b/src/sass/animations/blink.scss @@ -0,0 +1,9 @@ +.blink { + animation: blinker 2s linear infinite; +} + +@keyframes blinker { + 50% { + opacity: 0; + } +} \ No newline at end of file diff --git a/src/sass/animations/entry_component.scss b/src/sass/animations/entry_component.scss new file mode 100644 index 0000000..75ab940 --- /dev/null +++ b/src/sass/animations/entry_component.scss @@ -0,0 +1,12 @@ +.v-enter-active { + transition: all 0.1s ease-in; +} + +.v-enter-from { + transform: translateY(-20px); + opacity: 0; +} + +.v-leave-to { + opacity: 0; +} \ No newline at end of file diff --git a/src/sass/components/about.scss b/src/sass/components/about.scss new file mode 100644 index 0000000..926dd95 --- /dev/null +++ b/src/sass/components/about.scss @@ -0,0 +1,205 @@ +.about { + position: relative; + @include flex_column; + + .about__presentation { + margin-bottom: 40px; + text-align: center; + + h4 { + font-size: 20px; + margin-bottom: 24px; + } + + h1 { + font-size: 64px; + color: $black; + } + + // Móvil + @media only screen and (max-width: 575px) { + h1 { + font-size: 55px; + } + } + } + + .about__profile { + position: relative; + width: 100%; + max-width: 1150px; + + // Tablas, Desktop + @media only screen and (min-width: 576px) { + height: 659.23px; + @include flex_row(space-between); + } + + .about__education, .about__stats { + max-width: 310px; + } + + .about__photo { + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + text-align: center; + + figure { + margin-bottom: 23.77px; + + video { + border-radius: 30px; + } + } + + small { + color: $black_8; + font-size: 1rem; + font-weight: 400; + } + } + + .about__stats { + margin-left: 60px; + ul { + li { + margin-bottom: 48px; + + &:last-of-type { + margin-bottom: 0; + } + } + } + } + + .about__education { + .box { + margin-bottom: 21px; + + &:last-of-type { + margin-bottom: 0; + } + + .subtitle { + a { + font-size: 14px; + color: #000; + font-weight: 600; + } + } + } + + margin-bottom: 60px; + } + + // Móvil + @media only screen and (max-width: 575px) { + height: 100%; + padding-top: 720px; + @include flex_column_reverse(flex-start); + + .about__stats { + margin-left: 0; + margin-bottom: 50px; + + ul { + display: flex; + flex-wrap: wrap; + } + } + } + + // iPad vertical + @media only screen and (min-width: 768px) and (max-width: 991px) { + .about__stats { + margin-left: 0px; + + .stat { + max-width: 170px; + } + } + .about__education { + max-width: 140px; + + .education { + position: absolute; + bottom: -176px; + left: 50%; + transform: translateX(-50%); + text-align: center; + + .title { + display: none; + } + } + + .second_educ { + bottom: -269px; + } + } + } + + // iPad horizontal + @media only screen and (min-width: 992px) and (max-width: 1199px) { + .about__stats { + margin-left: 70px; + } + .about__education { + max-width: 270px; + } + } + + + } + + .lets-talk { + position: absolute; + top: 107px; + right: 117px; + + @media only screen and (max-width: 1300px) { + display: none; + } + + a { + width: 140px; + height: 140px; + background-color: $blue; + border-radius: 50%; + @include flex_column; + transition: all 0.2s ease-in-out; + + span { + margin-top: 10px; + color: $white; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 0.02em; + } + } + + .border { + width: 184px; + height: 184px; + background-color: transparent; + border: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + top: -22px; + right: -21px; + border-radius: 50%; + z-index: -1; + transition: all 0.2s ease-in-out; + } + + &:hover { + a { + transform: scale(1.1); + } + .border { + transform: scale(0.85); + } + } + } +} \ No newline at end of file diff --git a/src/sass/components/certificates.scss b/src/sass/components/certificates.scss new file mode 100644 index 0000000..7651d23 --- /dev/null +++ b/src/sass/components/certificates.scss @@ -0,0 +1,41 @@ +.certificates { + @include flex_column; + + h1 { + font-size: 48px; + font-weight: bold; + color: $black; + } + + > p { + max-width: 630px; + width: 100%; + text-align: center; + line-height: 28px; + margin-bottom: 56px; + } + + // Móvil + @media only screen and (max-width: 575px) { + margin-top: 0; + + h1 { + text-align: center; + } + + .list-of-certificates { + padding: 10px; + } + } + + // iPad vertical + @media only screen and (min-width: 768px) and (max-width: 991px) { + margin-top: 70px; + } + + + .load_more { + margin-top: 24px; + } + margin-bottom: 80px; +} \ No newline at end of file diff --git a/src/sass/components/chat.scss b/src/sass/components/chat.scss new file mode 100644 index 0000000..ad4b379 --- /dev/null +++ b/src/sass/components/chat.scss @@ -0,0 +1,102 @@ +.chatContainer { + position: fixed; + bottom: 20px; + right: 20px; + + .chat { + width: 70px; + height: 70px; + border-radius: 50%; + background-color: #EDEDED; + padding: 8px; + position: fixed; + bottom: 20px; + right: 20px; + display: flex; + justify-content: center; + align-items: center; + user-select: none; + cursor: pointer; + + > div { + background-color: #FCFCFC; + box-shadow: 0px 4px 4px rgb(0 0 0 / 10%); + width: 50px; + height: 50px; + border-radius: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + > img { + width: 25px; + height: 25px; + object-fit: contain; + } + } + } + + .mensajes { + position: fixed; + background-color: $blue; + border-top-right-radius: 7px; + border-top-left-radius: 7px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + box-shadow: 0px 4px 4px rgb(0 0 0 / 10%); + color: $black; + width: calc(100vw - 10px); + height: calc(100% - 150px); + right: 50%; + transform: translateX(50%); + bottom: 100px; + + @media (min-width: 1024px) { + width: 400px; + right: 230px; + height: 670px; + } + + .list_de_mensajes { + background-color: transparent; + height: calc(100% - 60px); + padding: 20px; + overflow-y: scroll; + padding-bottom: 50px; + display: flex; + flex-direction: column; + + > li { + background-color: $white; + color: $black; + border-radius: 5px; + box-shadow: 0px 4px 4px rgb(0 0 0 / 10%); + margin-bottom: 20px; + padding: 10px; + width: fit-content; + align-self: flex-end; + + &:nth-child(2n) { + background-color: rgba(139, 134, 134, 0.0509803922); + color: $white; + align-self: flex-start; + } + } + } + + .input_de_mensajes { + position: absolute; + width: calc(100% - 20px); + height: 40px; + bottom: 10px; + right: 10px; + background-color: $white; + border: 0; + border-radius: 5px; + color: #fcfcfc; + padding: 0 10px; + outline: none; + } + } +} \ No newline at end of file diff --git a/src/sass/components/experience.scss b/src/sass/components/experience.scss new file mode 100644 index 0000000..f241f9d --- /dev/null +++ b/src/sass/components/experience.scss @@ -0,0 +1,52 @@ +.experience { + margin-top: 90px; + @include flex_column; + + > div { + @include flex_column; + margin-bottom: 40px; + + &:last-of-type { + margin-bottom: 0; + } + } + + h3 { + text-transform: uppercase; + font-size: 14px; + margin-bottom: 32px; + } + + h1 { + font-size: 48px; + font-weight: bold; + color: $black; + } + + small { + margin-bottom: 16px; + } + + p { + max-width: 630px; + width: 100%; + text-align: center; + line-height: 28px; + } + + // Móvil + @media only screen and (max-width: 575px) { + margin-top: 0; + + h1, h3 { + text-align: center; + } + } + + // iPad vertical + @media only screen and (min-width: 768px) and (max-width: 991px) { + margin-top: 320px; + } + + margin-bottom: 60px; +} \ No newline at end of file diff --git a/src/sass/components/footer.scss b/src/sass/components/footer.scss new file mode 100644 index 0000000..6592f71 --- /dev/null +++ b/src/sass/components/footer.scss @@ -0,0 +1,23 @@ +.footer { + padding: 50px; + width: 100%; + line-height: 1.8; + @include flex_row(space-between); + + a { + color: $black; + + &:hover { + color: $blue; + } + } + + // Móvil + @media only screen and (max-width: 575px) { + @include flex_column(center); + + a { + margin-top: 20px; + } + } +} \ No newline at end of file diff --git a/src/sass/components/posts.scss b/src/sass/components/posts.scss new file mode 100644 index 0000000..19a48e8 --- /dev/null +++ b/src/sass/components/posts.scss @@ -0,0 +1,9 @@ +#posts { + + figure { + img { + height: 100px; + } + } + +} \ No newline at end of file diff --git a/src/sass/components/professional_skills.scss b/src/sass/components/professional_skills.scss new file mode 100644 index 0000000..e11b5cc --- /dev/null +++ b/src/sass/components/professional_skills.scss @@ -0,0 +1,28 @@ +.professional_skills { + @include flex_column; + + .switch { + height: 64px; + + div { + height: 48px; + } + + margin-bottom: 35px; + } + + // Movil + @media only screen and (max-width: 575px) { + padding: 2px; + + .switch { + width: 95%; + flex-wrap: wrap; + height: auto; + border-radius: 40px; + } + + } + + margin-bottom: 90px; +} \ No newline at end of file diff --git a/src/sass/components/projects.scss b/src/sass/components/projects.scss new file mode 100644 index 0000000..c0d5782 --- /dev/null +++ b/src/sass/components/projects.scss @@ -0,0 +1,90 @@ +.projects { + @include flex_column; + + h1 { + font-size: 48px; + font-weight: bold; + color: $black; + } + + p { + max-width: 630px; + width: 100%; + text-align: center; + line-height: 28px; + } + + // Móvil + @media only screen and (max-width: 575px) { + margin-top: 0; + + h1 { + text-align: center; + } + } + + // iPad vertical + @media only screen and (min-width: 768px) and (max-width: 991px) { + margin-top: 70px; + } + + .time_line { + margin-top: 88px; + } + + .load_more { + margin-top: 50px; + } + + padding-bottom: 80px; + + .shields { + max-width: 830px; + width: 100%; + display: flex; + justify-content: center; + align-content: center; + align-items: center; + flex-direction: row; + flex-wrap: wrap; + margin: 0 auto; + gap: 20px; + padding-top: 30px; + + // Movil + @media only screen and (max-width: 575px) { + flex-direction: column; + } + + .shield { + position: relative; + width: 200px; + height: 200px; + background: #FFFFFF; + border: 1px solid rgba(0,0,0,.1); + border-radius: 10px; + display: flex; + justify-content: center; + align-content: center; + align-items: center; + flex-direction: column; + + > img { + width: 100px; + height: auto; + margin-bottom: 23px; + } + + .number-shield { + font-size: 18px; + color: $black_8; + font-family: Consolas,sans-serif; + } + } + } + +} +.projects-border { + border-bottom: 1px solid $black_1; + margin-bottom: 80px; +} \ No newline at end of file diff --git a/src/sass/components/soft_skills.scss b/src/sass/components/soft_skills.scss new file mode 100644 index 0000000..4b030cd --- /dev/null +++ b/src/sass/components/soft_skills.scss @@ -0,0 +1,127 @@ +.soft_skills { + @include flex_column; + margin-bottom: 60px; + + // Móvil + @media only screen and (max-width: 575px) { + align-items: flex-start; + margin-left: 10px; + } + + + .soft_skills_title { + @include flex_column; + + position: relative; + background: $black; + border-radius: 30px; + padding: 16px 24px; + color: #FFF; + text-transform: uppercase; + font-weight: bold; + width: 155px; + margin-bottom: 70px; + + // Tablas, Desktop + @media only screen and (min-width: 576px) { + &::before { + content: ""; + width: 546px; + height: 1px; + border-bottom: 2px dashed #000; + position: absolute; + left: 50%; + bottom: -24px; + transform: translate(-50%) + } + + &::after { + content: ""; + bottom: -23px; + left: 50%; + transform: translate(-50%); + width: 1px; + height: 24px; + position: absolute; + border-left: 2px dashed #000; + } + } + + // Móvil + @media only screen and (max-width: 575px) { + margin-bottom: 10px; + + &::before { + content: ""; + width: 1px; + height: 225px; + border-left: 2px dashed #000; + position: absolute; + left: 25px; + bottom: -221px; + } + } + + } + + .soft_skills_lines { + @include flex_column; + + .words { + margin-top: 8px; + width: 110%; + + // Tablas, Desktop + @media only screen and (min-width: 576px) { + @include flex_row(space-between); + } + + span { + position: relative; + color: #000; + font-weight: bold; + font-size: 14px; + width: 121px; + text-align: center; + + // Tablas, Desktop + @media only screen and (min-width: 576px) { + &::before { + content: ""; + top: -54px; + left: 50%; + transform: translate(-50%); + width: 1px; + height: 46px; + position: absolute; + border-left: 2px dashed #000; + } + } + + } + + // Móvil + @media only screen and (max-width: 575px) { + @include flex_column(flex-start); + margin-left: 80px; + + span { + text-align: left; + margin-bottom: 30px; + + &::before { + content: ""; + left: -54px; + top: 50%; + transform: translateY(-50%); + width: 46px; + height: 1px; + position: absolute; + border-bottom: 2px dashed #000; + } + } + } + } + + } +} diff --git a/src/sass/components/topnav.scss b/src/sass/components/topnav.scss new file mode 100644 index 0000000..699d3a9 --- /dev/null +++ b/src/sass/components/topnav.scss @@ -0,0 +1,81 @@ +header.container { + padding-top: 41px; + margin-bottom: 109.7px; + height: 46px; + + // Movil + @media only screen and (max-width: 575px) { + margin-bottom: 50px; + } + + > nav.top_nav { + // Tablas, Desktop + @media only screen and (min-width: 576px) { + @include flex_row(space-between); + } + + // Movil + @media only screen and (max-width: 575px) { + @include flex_row(center); + } + + ul.menu { + @include flex_row; + + // Movil + @media only screen and (max-width: 575px) { + display: none; + } + + li { + margin-right: 40px; + + &:last-of-type { + margin-right: 0; + } + + a { + color: $black_4; + font-weight: 600; + + &:hover, &.active { + color: $black; + } + } + } + } + + div.net-and-lang { + @include flex_row(flex-start); + + ul.networks { + @include flex_row; + + li { + margin-right: 27px; + + a { + img { + width: 19.5px; + height: 19.5px; + transition: all 0.1s ease; + } + + &:hover { + img { + transform: translateY(-2px); + } + } + } + + &:last-of-type { + margin-right: 28.65px; + } + } + + } + + + } + } +} \ No newline at end of file diff --git a/src/sass/elements/arrow.scss b/src/sass/elements/arrow.scss new file mode 100644 index 0000000..cbc60f0 --- /dev/null +++ b/src/sass/elements/arrow.scss @@ -0,0 +1,74 @@ +$easing: cubic-bezier(.25,1.7,.35,.8); +$duration: 0.5s; + +.arrow { + height: 2.8em; + width: 2.8em; + display: block; + padding: 0.5em; + margin: 1em auto; + border-radius: 4px; + position: absolute; + + .left-bar { + position: absolute; + background-color: transparent; + top: 0; + left: 0; + width: 40px; + height: 10px; + display: block; + transform: rotate(35deg); + float: right; + border-radius: 2px; + + &:after { + content: ""; + background-color: $black; + width: 40px; + height: 10px; + display: block; + float: right; + border-radius: 6px 10px 10px 6px; + transition: all $duration $easing; + z-index: -1; + } + } + + .right-bar { + position: absolute; + background-color: transparent; + top: 0px; + left: 26px; + width: 40px; + height: 10px; + display: block; + transform: rotate(-35deg); + float: right; + border-radius: 2px; + + &:after { + content: ""; + background-color: $black; + width: 40px; + height: 10px; + display: block; + float: right; + border-radius: 10px 6px 6px 10px; + transition: all $duration $easing; + z-index: -1; + } + } + + &.open { + .left-bar:after { + transform-origin: center center; + transform: rotate(-70deg); + } + + .right-bar:after { + transform-origin: center center; + transform: rotate(70deg); + } + } +} diff --git a/src/sass/elements/bg.scss b/src/sass/elements/bg.scss new file mode 100644 index 0000000..b4b15fc --- /dev/null +++ b/src/sass/elements/bg.scss @@ -0,0 +1,58 @@ +.bg { + padding: 0 5px; + color: $white; + + &.bg--aws { + background-color: #232f3e; + color: #fffffe; + } + + &.bg--azure { + background-color: #0078d4; + color: white; + } + + &.bg--gcp { + background-color: #5f6368; + color: white; + } + + &.bg--cloud { + background-color: #73d0e0; + color: #1d5665; + } + + &.bg--cicd { + background-color: #faaf24; + color: $black; + } + + &.bg--backend { + background-color: $blue; + } + + &.bg--frontend { + background-color: $green; + } + + &.bg--golang { + background-color: #6ad7e5; + color: #FFF; + } + &.bg--php { + background-color: #8993c1; + color: #20222f; + } + &.bg--js { + background-color: #efd81d; + color: #000; + } + &.bg--vue { + background-color: #3fb27f; + color: #32475b; + } + &.bg--react { + background-color: #20232a; + color: #61dafb; + } +} \ No newline at end of file diff --git a/src/sass/elements/box.scss b/src/sass/elements/box.scss new file mode 100644 index 0000000..43427c3 --- /dev/null +++ b/src/sass/elements/box.scss @@ -0,0 +1,25 @@ +.box { + span.title { + font-weight: bold; + text-transform: uppercase; + color: $black; + font-size: 14px; + display: block; + margin-bottom: 20px; + } + + p { + line-height: 28px; + text-align: justify; + } + + figure { + margin-bottom: 16px; + } + + span.subtitle { + font-size: 14px; + color: $black; + font-weight: 600; + } +} \ No newline at end of file diff --git a/src/sass/elements/button.scss b/src/sass/elements/button.scss new file mode 100644 index 0000000..fe0c6b8 --- /dev/null +++ b/src/sass/elements/button.scss @@ -0,0 +1,19 @@ +.button { + width: auto; + max-width: 356px; + height: 64px; + background-color: $blue; + border: 1px solid $blue; + border-radius: 10px; + transition: all 0.1s ease; + color: #FFF; + font-weight: bold; + font-size: 20px; + padding: 0 100px; + + @include flex_column; + + &:hover { + transform: translateY(-3px); + } +} \ No newline at end of file diff --git a/src/sass/elements/certified.scss b/src/sass/elements/certified.scss new file mode 100644 index 0000000..5f7a019 --- /dev/null +++ b/src/sass/elements/certified.scss @@ -0,0 +1,75 @@ +.certified { + width: 100%; + max-width: 945px; + height: auto; + min-height: 147px; + background: #FFFFFF; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 10px; + padding: 24px; + margin-bottom: 16px; + @include flex_row(flex-start); + + figure { + margin-right: 24px; + } + + .certified_content { + width: 100%; + @include flex_row(space-between); + + .title { + font-weight: bold; + font-size: 20px; + margin-bottom: 12px; + color: $black; + margin-right: 20px; + } + + .certifier { + color: $black_6; + } + + // Móvil + @media only screen and (max-width: 575px) { + @include flex_column; + + .certified_data { + @include flex_column; + + .title { + text-align: center; + margin-right: 0; + } + } + } + } + + .certified_time { + @include flex_column; + + span { + color: $black_4; + font-size: 14px; + font-weight: 600; + margin-bottom: 10px; + display: block; + } + + a { + background-color: white; + border: 1px solid $blue; + color: $blue; + border-radius: 4px; + @include flex_row; + padding: 10px 20px; + width: 155px; + + &:hover { + background-color: $blue; + color: white; + } + } + + } +} \ No newline at end of file diff --git a/src/sass/elements/container.scss b/src/sass/elements/container.scss new file mode 100644 index 0000000..25d5988 --- /dev/null +++ b/src/sass/elements/container.scss @@ -0,0 +1,32 @@ +.container { + width: 100%; + @include flex_row; + + > * { + width: 100%; + + @media only screen and (max-width: 575px) { + max-width: 100%; + } + + @media only screen and (min-width: 576px) and (max-width: 767px) { + max-width: 540px; + } + + @media only screen and (min-width: 768px) and (max-width: 991px) { + max-width: 720px; + } + + @media only screen and (min-width: 992px) and (max-width: 1199px) { + max-width: 960px; + } + + @media only screen and (min-width: 1200px) and (max-width: 1439px) { + max-width: 1140px; + } + + @media only screen and (min-width: 1440px) { + max-width: 1420px; + } + } +} \ No newline at end of file diff --git a/src/sass/elements/squared_list.scss b/src/sass/elements/squared_list.scss new file mode 100644 index 0000000..39e64a7 --- /dev/null +++ b/src/sass/elements/squared_list.scss @@ -0,0 +1,31 @@ +.squared_list { + max-width: 740px; + width: 100%; + @include flex_row; + flex-wrap: wrap; + margin: 0 auto; + gap: 20px; + + .square { + width: 170px; + height: 145px; + background: #FFFFFF; + border: 1px solid $black_1; + border-radius: 10px; + @include flex_column; + + figure { + margin-bottom: 23px; + } + + small { + color: $black_8; + } + + &.empty { + border: none; + background: transparent!important; + height: 0; + } + } +} \ No newline at end of file diff --git a/src/sass/elements/stat.scss b/src/sass/elements/stat.scss new file mode 100644 index 0000000..a1a247a --- /dev/null +++ b/src/sass/elements/stat.scss @@ -0,0 +1,17 @@ +.stat { + width: 250px; + + .quantity { + font-weight: bold; + font-size: 40px; + color: $black; + margin-bottom: 10px; + } + .subtitle { + font-weight: 600; + font-size: 1rem; + color: $black_6; + text-transform: uppercase; + letter-spacing: 0.06em; + } +} diff --git a/src/sass/elements/switch.scss b/src/sass/elements/switch.scss new file mode 100644 index 0000000..693b8f5 --- /dev/null +++ b/src/sass/elements/switch.scss @@ -0,0 +1,37 @@ +.switch { + background-color: $gray; + border-radius: 100px; + padding: 8px; + @include flex_row; + width: auto; + + div { + color: $black; + padding: 8px 16px; + height: 30px; + font-weight: 600; + cursor: default; + user-select: none; + border-radius: 30px; + @include flex_row(center); + margin-left: 5px; + + &:first-of-type { + margin-left: 0; + } + + &.selected { + background-color: $white; + box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1); + + + &:hover { + background-color: #fcfcfc6b; + } + } + + &:hover { + background-color: #fcfcfc6b; + } + } +} \ No newline at end of file diff --git a/src/sass/elements/terminal.scss b/src/sass/elements/terminal.scss new file mode 100644 index 0000000..947202e --- /dev/null +++ b/src/sass/elements/terminal.scss @@ -0,0 +1,156 @@ +.terminal { + background-color: #282a36; + color: $white; + border-top-right-radius: 7px; + border-top-left-radius: 7px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + padding-bottom: 8px; + + .line-in-terminal { + @include flex_row(flex-start); + + .apple { + width: 10px; + height: auto; + margin-right: 5px; + } + + .folder { + height: 10px; + width: auto; + margin-right: 5px; + } + + span { + font-family: "Consolas", sans-serif!important; + + &.green { + color: #fcfcfc; + } + &.blue { + color: #4baef8; + } + } + + ul { + @include flex_row(flex-start); + padding: 3px 11px 3px 10px; + background-color: #282a36; + position: relative; + + &::before { + position: absolute; + border: solid black; + border-width: 0 3px 3px 0; + display: inline-block; + padding: 3px; + right: 0; + bottom: 0; + transform: rotate(-45deg); + } + + li { + color: $white; + font-size: 13px; + font-family: "Consolas", sans-serif!important; + color: #fcfcfc; + @include flex_row; + } + } + + // Móvil + @media only screen and (max-width: 575px) { + margin-top: 15px; + margin-bottom: 15px; + } + } + + .barra_title { + @include flex_row(flex-start); + background-color: #efeff0; + width: 100%; + border-top-right-radius: 7px; + border-top-left-radius: 7px; + border: 1px solid #b8b9ba; + height: 25px; + position: relative; + user-select: none; + + .actions { + @include flex_row; + padding-left: 10px; + + div { + width: 10px; + height: 10px; + border-radius: 50%; + background-color: red; + margin-right: 3px; + + &.close { + background-color: #ed6a5e; + } + + &.maxim { + background-color: #61c354; + } + + &.mini { + background-color: #f5bf4f; + } + } + } + + .title { + position: absolute; + margin: 0 auto; + left: 50%; + transform: translateX(-50%); + color: #747577; + font-family: "Consolas", sans-serif; + } + } + + .tabs_content { + // Desde tabla para arriba + @media only screen and (min-width: 576px) { + padding: 10px; + } + + } + + .square { + background-color: #8b86860d; + small { + color: $white; + } + } + + .switch { + justify-content: flex-start; + background-color: transparent; + padding: 0; + align-items: flex-start; + margin-bottom: 0!important; + + @media only screen and (max-width: 575px) { + justify-content: center; + gap: 3px; + } + + div { + background-color: #2d2f3a; + box-shadow: none; + border-radius: 0; + margin-left: 0; + color: #c9cacc; + font-weight: normal; + + &.selected { + background-color: transparent; + color: $white; + } + } + } +} \ No newline at end of file diff --git a/src/sass/elements/time_line.scss b/src/sass/elements/time_line.scss new file mode 100644 index 0000000..7dc1fb9 --- /dev/null +++ b/src/sass/elements/time_line.scss @@ -0,0 +1,172 @@ +@mixin left_part($circle : -56px) { + &::after { + right: unset; + left: -3px; + box-shadow: -2px -3px 3px rgb(0 0 0 / 10%) + } + &::before { + right: unset; + left: $circle; + } +} + +.time_line { + width: 100%; + @include flex_column; + position: relative; + + &::before { + content: ""; + position: absolute; + width: 1px; + height: 100%; + border-left: 2px solid $black_1; + top: 0; + left: 50%; + transform: translateX(-50%); + } + + .time_line_section { + width: 100%; + max-width: 1145px; + + .time_line__item { + width: 100%; + max-width: 530px; + // Hasta tablets + @media only screen and (max-width: 1199px) { + max-width: 100%; + } + height: auto; + background: #FFF; + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); + border-radius: 20px; + padding: 40px; + position: relative; + + &::after { + content: ""; + width: 10px; + height: 10px; + transform: rotate(-45deg); + background: #fff; + position: absolute; + box-shadow: 2px 3px 3px rgb(0 0 0 / 10%); + top: 51px; + right: -3px; + } + + &::before { + content: ""; + background-color: $gray_dark_2; + width: 18px; + height: 18px; + border: 4px solid $white; + border-radius: 50%; + position: absolute; + top: 44px; + right: -56px; + } + + header { + position: relative; + user-select: none; + + .arrow { + top: -18px; + right: -32px; + transform: scale(0.2); + } + } + + h5 { + margin-bottom: 16px; + font-size: 24px; + font-size: bold; + } + + small { + letter-spacing: 0.05em; + text-transform: uppercase; + color: $black_6; + } + + p { + margin-top: 24px; + color: $gray_dark; + text-align: justify; + line-height: 24px; + } + + footer { + @include flex_row(space-between); + margin-top: 35px; + + ul { + @include flex_row(flex-start); + flex-wrap: wrap; + gap: 16px; + + img { + height: 32px; + width: auto; + } + } + + a { + width: 48px; + height: 48px; + border: 1px solid $gray_dark_2; + border-radius: 8px; + @include flex_column; + } + + } + } + + @include flex_row(flex-start); + + &:nth-child(2n) { + justify-content: flex-end; + + .time_line__item { + @include left_part + } + } + + } + + // Hasta tablas + @media only screen and (max-width: 1199px) { + padding-right: 10px; + + &::before { + left: 15px; + } + + .time_line_section { + + .time_line__item { + margin-left: 40px; + margin-bottom: 25px; + + @include left_part(-37px) + } + + &:last-child { + margin-bottom: 0px; + } + + &:nth-child(2n) { + justify-content: flex-start; + + .time_line__item { + @include left_part(-37px) + } + } + + + } + + } +} \ No newline at end of file diff --git a/src/sass/main.scss b/src/sass/main.scss new file mode 100644 index 0000000..0d34bff --- /dev/null +++ b/src/sass/main.scss @@ -0,0 +1,27 @@ +@import './tools/mixins.scss'; +@import './settings/colors.scss'; +@import './settings/format.scss'; +@import './settings/typography.scss'; +@import './animations/blink.scss'; +@import './animations/entry_component.scss'; +@import './elements/container.scss'; +@import './elements/stat.scss'; +@import './elements/bg.scss'; +@import './elements/box.scss'; +@import './elements/switch.scss'; +@import './elements/squared_list.scss'; +@import './elements/time_line.scss'; +@import './elements/arrow.scss'; +@import './elements/button.scss'; +@import './elements/certified.scss'; +@import './elements/terminal.scss'; +@import './components/topnav.scss'; +@import './components/about.scss'; +@import './components/experience.scss'; +@import './components/soft_skills.scss'; +@import './components/professional_skills.scss'; +@import './components/projects.scss'; +@import './components/certificates.scss'; +@import './components/chat.scss'; +@import './components/posts.scss'; +@import './components/footer.scss'; \ No newline at end of file diff --git a/src/sass/settings/colors.scss b/src/sass/settings/colors.scss new file mode 100644 index 0000000..3192e8b --- /dev/null +++ b/src/sass/settings/colors.scss @@ -0,0 +1,11 @@ +$white : #fff; +$gray: #fbfcfc; +$black: #282d34; +$gray_dark : #747577; +$gray_dark_2 : #D5D5D5; +$black_1: rgba(0, 0, 0, 0.1); +$black_4: rgba(0, 0, 0, 0.4); +$black_6: rgba(0, 0, 0, 0.6); +$black_8: rgba(0, 0, 0, 0.8); +$blue: #282936; +$green: #00cd9a; \ No newline at end of file diff --git a/src/sass/settings/format.scss b/src/sass/settings/format.scss new file mode 100644 index 0000000..c9ef2e9 --- /dev/null +++ b/src/sass/settings/format.scss @@ -0,0 +1,88 @@ +* { + margin : 0; + padding: 0; + box-sizing: border-box; + font-family: 'Gilroy', sans-serif; + font-weight: normal; +} +html { + font-size: 100%; + scroll-behavior: smooth; +} +body { + background-color: $white; + font-size: 1rem; + color: $black_8; + overflow-x:hidden!important; + + .__noise { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: -1; + display: block; + width: 100%; + height: 100%; + justify-content: center; + align-items: center; + background-image: url('/images/noise.gif'); + background-size: 100px 100px; + opacity: .24; + } +} +small, h4 { + font-family: 'Consolas', sans-serif; +} +h1, h2 { + font-weight: 900; +} +h3, h4 { + font-weight: bold; +} +h5, h6 { + font-weight: 600; +} +h3 { + color: $black_4; +} +h5 { + color: $black; +} +ul { + list-style: none; +} +a { + transition: all 0.2s ease-in-out; + text-decoration: none; +} +strong { + font-weight: 600; +} +::-webkit-scrollbar { + width: 4px; +} +::-webkit-scrollbar-track { + box-shadow: inset 0 0 5px rgb(218, 216, 216); +} +::-webkit-scrollbar-thumb { + background: $blue; +} +::-webkit-scrollbar-thumb:hover { + background: $blue; +} +::selection { + background: $blue; /* WebKit/Blink Browsers */ + color: $white; +} +::-moz-selection { + background: $blue; /* Gecko Browsers */ + color: $white; +} +// Móvil +@media only screen and (max-width: 575px) { + .no-mobile { + display: none!important; + } +} \ No newline at end of file diff --git a/src/sass/settings/typography.scss b/src/sass/settings/typography.scss new file mode 100644 index 0000000..1f9a9f7 --- /dev/null +++ b/src/sass/settings/typography.scss @@ -0,0 +1,49 @@ +@font-face { + font-family: 'Gilroy'; + font-style: normal; + font-weight: lighter; + src: url('/fonts/Gilroy-Light.ttf'); + font-display: swap; +} +@font-face { + font-family: 'Gilroy'; + font-style: normal; + font-weight: normal; + src: url('/fonts/Gilroy-Regular.ttf'); + font-display: swap; +} +@font-face { + font-family: 'Gilroy'; + font-style: normal; + font-weight: 600; + src: url('/fonts/Gilroy-SemiBold.ttf'); + font-display: swap; +} +@font-face { + font-family: 'Gilroy'; + font-style: normal; + font-weight: bold; + src: url('/fonts/Gilroy-Bold.ttf'); + font-display: swap; +} +@font-face { + font-family: 'Gilroy'; + font-style: normal; + font-weight: 900; + src: url('/fonts/Gilroy-Heavy.ttf'); + font-display: swap; +} +@font-face { + font-family: 'Consolas'; + font-style: normal; + font-weight: normal; + src: url('/fonts/CONSOLA.TTF'); + font-display: swap; +} +@font-face { + font-family: 'Consolas'; + font-style: normal; + font-weight: bold; + src: url('/fonts/CONSOLAB.TTF'); + font-display: swap; +} diff --git a/src/sass/tools/mixins.scss b/src/sass/tools/mixins.scss new file mode 100644 index 0000000..e4a54e0 --- /dev/null +++ b/src/sass/tools/mixins.scss @@ -0,0 +1,23 @@ +@mixin flex_row($justify: center) { + display: flex; + justify-content: $justify; + align-content: center; + align-items: center; + flex-direction: row; +} + +@mixin flex_column($justify: center) { + display: flex; + justify-content: $justify; + align-content: center; + align-items: center; + flex-direction: column; +} + +@mixin flex_column_reverse($justify: center) { + display: flex; + justify-content: $justify; + align-content: center; + align-items: center; + flex-direction: column-reverse; +} \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..90d7758 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,25 @@ +import { createStore } from 'vuex' + +const LANG_LOCAL_STORAGE_NAME = '____page_language____' + +export default createStore({ + state: { + lang: localStorage.getItem(LANG_LOCAL_STORAGE_NAME) || import.meta.env.VITE_APP_DEFAULT_LANGUAGE, + }, + getters: { + lang(state) { + if (['es','en'].indexOf(state.lang) != -1) { + return state.lang + } + + return import.meta.env.VITE_APP_DEFAULT_LANGUAGE + }, + }, + mutations: { + change_language(state, lang : 'es'|'en') { + state.lang = lang + localStorage.setItem(LANG_LOCAL_STORAGE_NAME, lang); + }, + }, + actions: {}, +}) diff --git a/src/tests/App.test.ts b/src/tests/App.test.ts new file mode 100644 index 0000000..c924dbd --- /dev/null +++ b/src/tests/App.test.ts @@ -0,0 +1,17 @@ +import mockStore from './store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import App from '../App.vue' + +describe('App.vue', () => { + const wrapper = mount(App, { + global: { + plugins: [mockStore], + } + }) + + it('it should render __noise div class', async () => { + const div = wrapper.get('div.__noise') + expect(div.html()).to.equal('
') + }) +}) \ No newline at end of file diff --git a/src/tests/components/AboutMe.test.ts b/src/tests/components/AboutMe.test.ts new file mode 100644 index 0000000..59d6fe0 --- /dev/null +++ b/src/tests/components/AboutMe.test.ts @@ -0,0 +1,19 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import about_me from '../../langs/about_me' +import AboutMe from '../../components/AboutMe.vue' + +describe('components/AboutMe.vue', () => { + const wrapper = mount(AboutMe, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const div = wrapper.get('h1.js-web-developer') + expect(div.text()).to.equal(about_me.es.develop) + }) + +}) \ No newline at end of file diff --git a/src/tests/components/CertificatesList.test.ts b/src/tests/components/CertificatesList.test.ts new file mode 100644 index 0000000..8d10d2b --- /dev/null +++ b/src/tests/components/CertificatesList.test.ts @@ -0,0 +1,55 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import CertificatesList from '../../components/CertificatesList.vue' +import certificates_list from '../../langs/certificates_list' +import certificates from '../../data/certificates' + +describe('components/CertificatesList.vue', () => { + const wrapper = mount(CertificatesList, { + global: { + plugins: [mockStore], + } + }) + + const MAX_CERTIFICATES_SHOWN_BY_DEFAULT = 5 + const CERTIFICATES_FOR_EACH_CLICK = 4 + + it('It should render', async () => { + const div = wrapper.get('h1') + expect(div.text()).to.equal(certificates_list['es'].certificates) + }) + + it('It should get 6 certificates, after click show more button, see 10 certificates', async () => { + // get list of certificates + let div = wrapper.findAll('.certified') + expect(div.length).to.equal(MAX_CERTIFICATES_SHOWN_BY_DEFAULT) // 5 first + + // load more click + const button = wrapper.find('button.button') + await button.trigger('click') + + // get certificates again + div = wrapper.findAll('.certified') + expect(div.length).to.equal(MAX_CERTIFICATES_SHOWN_BY_DEFAULT + CERTIFICATES_FOR_EACH_CLICK) // 4 more + }) + + it('It should disable the load more button when the certificates shown are equal to total certificates', async () => { + // count the total clicks + const clicks = Math.ceil((certificates.length - MAX_CERTIFICATES_SHOWN_BY_DEFAULT) / CERTIFICATES_FOR_EACH_CLICK) + + // get the button + const button = wrapper.find('button.button') + + // load more clicks + for (let i = 0; i < clicks; i++) { + await button.trigger('click') + } + + // in this point should be disappear the load more button + const div_button = wrapper.find('div.load_more') + const attr = div_button.attributes() + expect(attr.style).to.equal('display: none;') + }) + +}) \ No newline at end of file diff --git a/src/tests/components/MyExperience.test.ts b/src/tests/components/MyExperience.test.ts new file mode 100644 index 0000000..8d33bdd --- /dev/null +++ b/src/tests/components/MyExperience.test.ts @@ -0,0 +1,18 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import MyExperience from '../../components/MyExperience.vue' +import my_experience from '../../langs/my_experience' + +describe('components/MyExperience.vue', () => { + const wrapper = mount(MyExperience, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const h1 = wrapper.get('h1') // Change this line to get 'h1' element + expect(h1.text()).to.equal(my_experience['es'].my_exp) + }) +}) diff --git a/src/tests/components/PageFooter.test.ts b/src/tests/components/PageFooter.test.ts new file mode 100644 index 0000000..e7228b3 --- /dev/null +++ b/src/tests/components/PageFooter.test.ts @@ -0,0 +1,18 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import PageFooter from '../../components/PageFooter.vue' +import page_footer from '../../langs/page_footer' + +describe('components/PageFooter.vue', () => { + const wrapper = mount(PageFooter, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const anchor = wrapper.find('a') // Change this line to find 'a' element without specifying id + expect(anchor.text()).to.equal(page_footer['es'].back_up) + }) +}) diff --git a/src/tests/components/ProfessionalSkills.test.ts b/src/tests/components/ProfessionalSkills.test.ts new file mode 100644 index 0000000..e4ecc18 --- /dev/null +++ b/src/tests/components/ProfessionalSkills.test.ts @@ -0,0 +1,31 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import ProfessionalSkills from '../../components/ProfessionalSkills.vue' +import professional_skills from '../../langs/professional_skills' + +describe('components/ProfessionalSkills.vue', () => { + const wrapper = mount(ProfessionalSkills, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const div = wrapper.get('div.js-front-tab') + expect(div.text()).to.equal(professional_skills['es'].cloud_publica) + }) + + it.concurrent('It change the tab', async () => { + // get the tools tab button + let div = wrapper.find('div.js-tools-tab') + + // click him + await div.trigger('click') + + // selected should be tools + div = wrapper.find('div.selected') + expect(div.text()).to.equal(professional_skills['es'].tools) // 4 more + }) + +}) \ No newline at end of file diff --git a/src/tests/components/ProjectsTimeLine.test.ts b/src/tests/components/ProjectsTimeLine.test.ts new file mode 100644 index 0000000..dc83c36 --- /dev/null +++ b/src/tests/components/ProjectsTimeLine.test.ts @@ -0,0 +1,55 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import ProjectsTimeLine from '../../components/ProjectsTimeLine.vue' +import projects_time_line from '../../langs/projects_time_line' +import projects from '../../data/projects' + +describe('components/ProjectsTimeLine.vue', () => { + const wrapper = mount(ProjectsTimeLine, { + global: { + plugins: [mockStore], + } + }) + + const MAX_PROJECTS_SHOWN_BY_DEFAULT = 6 + const PROJECTS_FOR_EACH_CLICK = 4 + + it('It should render', async () => { + const div = wrapper.get('h1') + expect(div.text()).to.equal(projects_time_line['es'].projects) + }) + + it('It should get 6 projects, after click show more button, see 10 projects', async () => { + // get list of projects + let div = wrapper.findAll('.time_line_section') + expect(div.length).to.equal(MAX_PROJECTS_SHOWN_BY_DEFAULT) + + // load more click + const button = wrapper.find('button.button') + await button.trigger('click') + + // get projects again + div = wrapper.findAll('.time_line_section') + expect(div.length).to.equal(MAX_PROJECTS_SHOWN_BY_DEFAULT + PROJECTS_FOR_EACH_CLICK) + }) + + it('It should disable the load more button when the projects shown are equal to total projects', async () => { + // count the total clicks + const clicks = Math.ceil((projects.es.length - MAX_PROJECTS_SHOWN_BY_DEFAULT) / PROJECTS_FOR_EACH_CLICK) + + // get the button + const button = wrapper.find('button.button') + + // load more clicks + for (let i = 0; i < clicks; i++) { + await button.trigger('click') + } + + // in this point should be disappear the load more button + const div_button = wrapper.find('div.load_more') + const attr = div_button.attributes() + expect(attr.style).to.equal('display: none;') + }) + +}) \ No newline at end of file diff --git a/src/tests/components/SoftSkills.test.ts b/src/tests/components/SoftSkills.test.ts new file mode 100644 index 0000000..40155e2 --- /dev/null +++ b/src/tests/components/SoftSkills.test.ts @@ -0,0 +1,19 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import soft_skills from '../../langs/soft_skills' +import SoftSkills from '../../components/SoftSkills.vue' + +describe('components/SoftSkills.vue', () => { + const wrapper = mount(SoftSkills, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const div = wrapper.get('.soft_skills_title') + expect(div.text()).to.equal(soft_skills['es'].skills) + }) + +}) \ No newline at end of file diff --git a/src/tests/components/TopNav.test.ts b/src/tests/components/TopNav.test.ts new file mode 100644 index 0000000..7e87e3b --- /dev/null +++ b/src/tests/components/TopNav.test.ts @@ -0,0 +1,34 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import TopNav from '../../components/TopNav.vue' + +describe('components/TopNav.vue', () => { + const wrapper = mount(TopNav, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const div = wrapper.get('header') + const attr = div.attributes() + expect(attr.id).to.equal('heaven') + }) + + it.concurrent('It should change the language', async () => { + let expected = '
English
' + + // get button + let div = wrapper.find('.js-change-lang-en') + expect(div.html()).not.to.equal(expected) + + // change lang click + await div.trigger('click') + + // get projects again + div = wrapper.find('div.selected') + expect(div.html()).to.equal(expected) + }) + +}) \ No newline at end of file diff --git a/src/tests/components/projects/Project.test.ts b/src/tests/components/projects/Project.test.ts new file mode 100644 index 0000000..5095c47 --- /dev/null +++ b/src/tests/components/projects/Project.test.ts @@ -0,0 +1,48 @@ +import mockStore from '../../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import Project from '../../../components/projects/Project.vue' + +describe('components/projects/Project.vue', () => { + const mockProject = { + title : 'test name of project', + type: 'test', + desc: 'test description of project', + from: 'test', + to: null, + techs: ['php'], + link: null, + } + + const wrapper = mount(Project, { + global: { + plugins: [mockStore], + }, + props: { + p : mockProject + } + }) + + it('It should render', async () => { + const div = wrapper.get('h5') + expect(div.text()).to.equal(mockProject.title) + }) + + it.concurrent('It should show the description of project', async () => { + let div = wrapper.get('p.js-project-description') + let attr = div.attributes() + expect(attr.style).to.equal('display: none;') + + // button + const header = wrapper.get('header') + + // click + await header.trigger('click') + + // check again + div = wrapper.get('p.js-project-description') + attr = div.attributes() + expect(attr.style).to.equal(undefined) + }) + +}) \ No newline at end of file diff --git a/src/tests/store_mock.ts b/src/tests/store_mock.ts new file mode 100644 index 0000000..730edc3 --- /dev/null +++ b/src/tests/store_mock.ts @@ -0,0 +1,24 @@ +import { createStore } from 'vuex' + +const mockStore = createStore({ + state: { + lang: 'es', + }, + getters: { + lang(state) { + if (['es','en'].indexOf(state.lang) != -1) { + return state.lang + } + + return 'es' + }, + }, + mutations: { + change_language(state, lang : 'es'|'en') { + state.lang = lang + }, + }, + actions: {}, +}) + +export default mockStore \ No newline at end of file diff --git a/src/tests/utils/increaser.test.ts b/src/tests/utils/increaser.test.ts new file mode 100644 index 0000000..610dfda --- /dev/null +++ b/src/tests/utils/increaser.test.ts @@ -0,0 +1,12 @@ +import { describe, it, expect } from 'vitest' +import { ref, Ref } from '@vue/runtime-core' +import { useIncreaser } from "../../utils/increaser" + +describe('utils/increaser.ts', () => { + it('it should increase the number', async () => { + const INCREASE_EXPECTED = 10 + const reactive : Ref = ref(0) + await useIncreaser(reactive, INCREASE_EXPECTED, 5) + expect(reactive.value).to.equal(INCREASE_EXPECTED) + }) +}) \ No newline at end of file diff --git a/src/tests/utils/langs.test.ts b/src/tests/utils/langs.test.ts new file mode 100644 index 0000000..7375fe1 --- /dev/null +++ b/src/tests/utils/langs.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect } from 'vitest' +import { useLang } from "../../utils/langs" +import { Langs } from '../../types/langs' + +describe('utils/langs.ts', () => { + const mockLang : Langs = { + 'es' : { + 'test' : 'test en español' + }, + 'en' : { + 'test' : 'test in english' + } + } + + it('it should do change depend of the lang', async () => { + let result = useLang(mockLang, 'es') + expect(result.test).to.equal(mockLang.es.test) + + result = useLang(mockLang, 'en') + expect(result.test).to.equal(mockLang.en.test) + }) +}) \ No newline at end of file diff --git a/src/tests/utils/writer.test.ts b/src/tests/utils/writer.test.ts new file mode 100644 index 0000000..2ec5018 --- /dev/null +++ b/src/tests/utils/writer.test.ts @@ -0,0 +1,24 @@ +import { describe, it, expect } from 'vitest' +import { ref, Ref } from '@vue/runtime-core' +import { useWriter } from "../../utils/writer" + +describe('utils/writer.ts', () => { + it('it should fill the string', async () => { + const FULL_STRING_EXPECTED = 'this is a test' + + const reactive : Ref = ref('') + + await useWriter(reactive, FULL_STRING_EXPECTED, false, 5) + expect(reactive.value).to.equal(FULL_STRING_EXPECTED) + }) + + it.concurrent('it should fill the string with blink _', async () => { + const FULL_STRING_FILL = 'this is a test' + const FULL_STRING_EXPECTED = FULL_STRING_FILL + '_' + + const reactive : Ref = ref('') + + await useWriter(reactive, FULL_STRING_FILL, true, 5) + expect(reactive.value).to.equal(FULL_STRING_EXPECTED) + }) +}) \ No newline at end of file diff --git a/src/tests/views/LandingView.test.ts b/src/tests/views/LandingView.test.ts new file mode 100644 index 0000000..b7be1c2 --- /dev/null +++ b/src/tests/views/LandingView.test.ts @@ -0,0 +1,19 @@ +import mockStore from '../store_mock' +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import LandingView from '../../views/LandingView.vue' + +describe('components/LandingView.vue', () => { + const wrapper = mount(LandingView, { + global: { + plugins: [mockStore], + } + }) + + it('It should render', async () => { + const div = wrapper.get('main') + const attr = div.attributes() + expect(attr.class).to.equal("LandingView_Layout") + }) + +}) \ No newline at end of file diff --git a/src/types/langs.ts b/src/types/langs.ts new file mode 100644 index 0000000..2c52567 --- /dev/null +++ b/src/types/langs.ts @@ -0,0 +1,7 @@ +interface Lang { + [key: string] : string +} + +export type Langs = { + [key in 'es' | 'en']: Lang +} \ No newline at end of file diff --git a/src/utils/increaser.ts b/src/utils/increaser.ts new file mode 100644 index 0000000..45f714b --- /dev/null +++ b/src/utils/increaser.ts @@ -0,0 +1,9 @@ +import { Ref } from '@vue/runtime-core' + +export async function useIncreaser(reactive : Ref, to : number, speed : number = 80) { + reactive.value = 0 + for (let i = 0; i < to; i++) { + reactive.value++ + await new Promise(r => setTimeout(r, speed)); + } +} \ No newline at end of file diff --git a/src/utils/langs.ts b/src/utils/langs.ts new file mode 100644 index 0000000..3e85da3 --- /dev/null +++ b/src/utils/langs.ts @@ -0,0 +1,5 @@ +import { Langs } from '../types/langs' + +export function useLang(l : Langs, actual_lang : 'es'|'en') { + return l[ actual_lang ] +} \ No newline at end of file diff --git a/src/utils/writer.ts b/src/utils/writer.ts new file mode 100644 index 0000000..ece7bba --- /dev/null +++ b/src/utils/writer.ts @@ -0,0 +1,23 @@ +import { Ref, computed } from '@vue/runtime-core' + +const EMPTY_REACTIVE_VALUE = "" + +export async function useWriter(reactive : Ref, filled : string, blink : boolean = false, speed : number = 30) { + reactive.value = EMPTY_REACTIVE_VALUE + + for (let i = 0; i < filled.length; i++) { + await new Promise(r => setTimeout(r, speed)); + + // Avoid write in $reactive when $filled has changed but the promise do not resolve yet + if (i > 0 && reactive.value == EMPTY_REACTIVE_VALUE) { + return + } + + reactive.value += filled.charAt(i) + + if (blink && i == (filled.length - 1)) { + reactive.value += '_' + } + + } +} \ No newline at end of file diff --git a/src/views/LandingView.vue b/src/views/LandingView.vue new file mode 100644 index 0000000..d7f79c7 --- /dev/null +++ b/src/views/LandingView.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/staticwebapp.config.json b/staticwebapp.config.json new file mode 100644 index 0000000..3bee48f --- /dev/null +++ b/staticwebapp.config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://aka.ms/azure/static-web-apps-cli/schema", + "platform": { + "apiRuntime": "node:18" + }, + "configurations": { + "portfolio-vitest": { + "appLocation": "./portfolio-vitest", + "outputLocation": "./portfolio-vitest/dist", + "appBuildCommand": "npm run build", + "run": "npm run dev", + "appDevserverUrl": "http://localhost:3000" + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..bcc4abd --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "skipLibCheck": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..e993792 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..19a4079 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + + +export default defineConfig({ + plugins: [vue()], + server: { + port: 3000 + }, +})